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 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.menu (thus, this cannot be done in
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.
(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.
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
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.
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.
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.
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