As of Elona version 1.16 reloaded, it is possible to create custom NPCs for insertion into a game of Elona and into the current map via the F8 menu (thus, this cannot be done in wizard mode). This requires the user to choose an appropriately sized sprite and a text file of the format shown by the example of npc_template.txt in the Elona user folder.
Capture[]
First of all, please note that the *.npc file in the “user” folder is necessary not only for spawning a custom character, but also for continuing to display them correctly. If you recruit a custom character, but then for some reason delete their file (or when transferring your saves to the new version, you will forget to do the same with the custom character files), the characters will turn into a garbage: they will lose not only their sprite (will be replaced with sprite number 1100, the same as the Universe invader), but also each time you change the location their name will change from the one you selected to "a garbage". Returning the required file, by the way, will not automatically change the name to the original name of the custom character; you will need to manually replace the “a garbage” name with something else.
Also, with one exception, any recruitment methods do not work on custom characters on custom maps. This may be due to technical issues, since in order to “appear in the world” Custom NPCs must have their own *.npc file, which it seems the game can create only through using a Summoning crystal (therefore, as a precautionary measure, the use of any recruitment methods on custom maps is completely banned). It is equally likely that this was also done for reasons of balance, however.
- Using a scroll of ally allows you to recruit a CNPC like any other character, but this outcome is completely random. This, however, can be a decent way when you are trying to recruit a “unique” custom character and you know that they are close to your level, however.
- If you use a monster ball in capturing a custom NPC, you will gain a monster ball(user). The specification of which custom NPC captured is not saved, so when the ball is used, it will pick a custom NPC that you've imported/made randomly, rather than summoning the exact NPC you captured.
- Dominating custom NPCs will properly add that NPC to your party. You cannot dominate "allied" (in Elona+ they can be easily identified by the fact that you can see their lifebar without the help of a stethoscope and it is of a different color; in vanilla Elona, recognizing such status can be a more problematic issue, however) or "unique" characters, however.
- You can use a Astral Light Pen (Elona+ only), but like a monster ball it doesn't work well with custom characters: although the character retains the name, sex, age, height and weight of the original character, at the same time in terms of race, class, level and other abilities (the sprite will change after entering the next location, by the way) this is a copy of a random character from the “user” folder, not the one you want to copy (unless, of course, the copied character is the only Custom NPC in your the "user" folder).
- SurvivabilityEXtender (Elona+ only), like the aforementioned Monster Ball and Astral Light Pen, is also not intended for use on custom characters, therefore, like them, it copies a random custom character instead of a specific one. The significant difference from these two methods is that a SurvivabilityEXtender CAN be used on custom maps, although it is not recommended: if there are custom characters in the “user” folder, then the result will be similar to using a monster ball or astral light pen, but if there are no custom characters...
- If you are outside the custom map during childbirth, the result will not be very beautiful, the child will be completely "empty" a garbage without even a race, not to mention things like class, flag bits or AI routine.
- If the character is still on the custom map at the time of birth, then as a result the child will copy one of the custom characters (of course, due to the restrictions on custom characters mentioned at the very beginning, after you leave the map, your child will turn into a garbage) on the map, but with an AI routine from another custom character on the map (unless, of course, there is only one character on the map). Theoretically, you could use this as part of an NPC pregnancy where the baby would be a copy of one of your pets, but with the AI routine of a custom character, but in that case you would have to be prepared to spend a VERY long time on that custom map.
- The use of Floating Cage (Elona+ only) has not been tested, but in theory it has the same limitations as Domination.
Unusual properties[]
(Observed in Elona+ 1.47 and 1.48)
All custom NPCs are represented by "user" creature, so they drop body parts of user. This leads to some unusual behavior. For most purposes they behave like normal NPCs, but during arena, challenge, and panic quests, the type is chosen randomly after entering the map. They are described as unknown monster during challenge quests, user during panic quests and a randomly picked custom NPC of appropriate level in arena. But the type is chosen later. Not a problem during challenge and panic quests because of level scaling, but in arena an offered level 100 monster can instead be level 10 or level 300 (if you have created NPCs of these levels) so be careful in arena. Their quality (normal, miracle, godly...) is hardcoded and overrides spawn setting (don't get godly quality on high arena ranks and during challenge quests unless you have it hardcoded). They don't properly scale in level in The Void, but scale in level during quests, in awakened dungeons and Cradle of Chaos.
Customization[]
author. "Noa" Author of the custom NPC
name. "younger brother,おとおと" Name of the custom NPC, as well as the custom NPC file. The first entry is English, the second is Japanese.
race. "norland" Race
class. "gunner" Class
filter. "/man/" Attributes of the NPC that determines various things. For example, /dragon/ makes the NPC weak to "it deals massive damage to dragons" weapon attribute. You can combine as many filters as you want. Both ends of each flag must be enclosed with slashes (eg, /fire/dragon/). Can be left blank. See filter list for possible values.
level. "16" Initial level
relation. "0" Initial hostility level(-3=hostile -2=nearly hostile -1=indifferent 0=neutral 10=friendship)
sex. "-1" (-1=random 0=male 1=female)
fixLv. "4" Generation level (0=random, 1=bad, 2=normal, 3=good, 4=great, 5=godly, 6=unique)
rare. "100" NPC generation frequency. The lower the value, the less likely it is to appear. (gold bell=5, bomb rock=25, lich=60, yeek=100)
spawnType. "0" Spawn conditions. Leave it at 0, or 5 if you want them to spawn in cities. Other values are rarely used.
aiCalm. "1" Determines non-combat behavior. See aiCalm list for possible values.
aiMove. "80" Chance of moving toward target when target is not at the preferred range. Overrides other combat actions.
aiDist. "2" Preferred range.
aiHeal. "0" Action used when HP is 25% or less. See Actions table for possible values.
aiAct. "-1,-1,-2,651,0" List of main actions used in normal combat. Up to 5 actions are allowed. Repeats are allowed, making that action more likely to be chosen. See Actions table for possible values.
aiActSubFreq. "20" Chance of using sub actions, out of 100. Sub actions override main actions, evolution actions, and AP actions, but not movement.
aiActSub. "610,610,0,0,0" Analagous to aiAct. In the example, the NPC has a 20% chance of choosing to use a sub action, and then a 2/5 chance of using 610 (Poison Breath), for an overall 8% chance of using Poison Breath.
meleeElem. "61,200" Unarmed attack element. The first number is the element, the second number is the element power, which determines chance of inflicting status effects. Note that this will convert physical damage into elemental damage, AFTER PV has already been applied, and then it will be further resisted by elemental resistance, meaning elemental unarmed attacks will almost always do less damage than regular unarmed attacks.
resist. "50,3,51,-2" Specify the resistance of NPCs in the order of resistance ID, magnitude, resistance ID, magnitude, and so on. See elements list for possible values.
bitOn. "5,23" List of NPC bits. See bits list for possible values
Filters[]
man: Counts as human. Eating them is cannibalism, they can spawn as escorts, they don't add limbs when gene engineered.
dragon: Weak to "it deals massive damage to dragons".
undead: Weak to "it deals massive damage to undead".
slime: Counts as slime.
fire: Counts as fire. Summoned by cultists of fire, can spawn in Tower of Fire.
sf:
yeek: Counts as yeek. Summoned by "Summon Yeeks", can spawn in Yeek Nest.
mino: Counts as minotaur. Can spawn in Minotaur's Nest.
wild: Counts as wild. Summoned by "Summon Wild", can spawn on farms.
pawn: Counts as pawn. Summoned by <King>s.
shopguard:
rogue:
cat: Counts as cat. Summoned by <Cacy> the cat tamer.
ether: Counts as ether.
horse: Counts as horse.
spirit: Counts as spirit. Summoned by "Summon Spirit".
nefia0: Can spawn in any nefia.
nefia1: Can spawn in cave nefias./nefia2/: Can spawn in forest nefias.
nefia3: Can spawn in tower nefias.
nefia4: Can spawn in fort nefias.
nefia5: Can spawn in nest nefias.
nefia6: Can spawn in cemetery nefias.
nefia7: Can spawn in mine nefias.
nefia8: Can spawn in lake nefias.
aiCalm[]
1 aiRoam
2 aiDull
3 aiStand
4 aiFollow
5 aiSpecial
6 aiSpecialPer
7 aiSpecialSep
8 aiSpecialDan
9 aiSpecialSna
10 aiSpecialSex
11 aiSpecialBan
Bits[]
CHARA_BIT_FLOAT = 5
CHARA_BIT_INVISIBLE = 6
CHARA_BIT_SEE_INVISIBLE = 7
CHARA_BIT_RES_CONFUSE = 8
CHARA_BIT_RES_BLIND = 9
CHARA_BIT_RES_FEAR = 10
CHARA_BIT_RES_SLEEP = 11
CHARA_BIT_RES_PARALYZE = 12
CHARA_BIT_RES_POISON = 13
CHARA_BIT_EAT_ROTTEN = 14
CHARA_BIT_RES_STEAL = 15
CHARA_BIT_INCOGNITO = 16
CHARA_BIT_DROP_GOLD = 17
CHARA_BIT_SUICIDE = 18
CHARA_BIT_DEATH_MASTER = 19
CHARA_BIT_RAPID_MAGIC = 20
CHARA_BIT_LAY_HANDS = 21
CHARA_BIT_SUPERIOR_RIDING = 22
CHARA_BIT_SPLIT_KEEP_EFFECT = 23
CHARA_BIT_RES_CURSE = 24
CHARA_BIT_INFERIOR_RIDING = 25
CHARA_BIT_RES_ELEMENTAL = 26
CHARA_BIT_SPLIT_NO_EFFECT = 27
CHARA_BIT_METAL = 28
CHARA_BIT_CURE_BLEEDING = 29
CHARA_BIT_BREAK_WALLS = 30
CHARA_BIT_IMMUNE_MINE = 31
CHARA_BIT_TEMPER = 32
CHARA_BIT_ARMOUR = 33
CHARA_BIT_QUICK_SHOOTING = 34
External links[]
- Mini Guide to making Custom NPCs at the Elona forum (archived)
- Custom NPC at the Japanese Elona wiki (Google Translate)