From The Mana World
m (Text replacement - "Legacy" to "Classic")
 
(24 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Status Under Construction|'''The examples and most information belong to Athena servers and Ragnarok content, They will be progressively replaced with TMW Content.'''}}
{{Status_green}}
This page Is mainly copied from the [http://eathena.ws/wiki/index.php?title=Custom_Mobs '''eathena.ws''' "Custom Mobs" wiki page]
{{Category Classicplayerinfo}}
=Server side=
{{Status Under Construction|Please note that this page is still under contruction. You can use it as reference, but note the red marked comments for unclear points.}}
==Making Custom Mobs==


You can have up to 10,000 mob IDs. I wrote the guide without testing it again on SVN, last time I tried to avail another mob beyond ID #2000 was in RC5.


Well, its pretty easy if you do it correctly and go step by step without rushing. Let's take a look at the structure:
This page shows how monsters are designed. Therefore two main points are relevant:


<pre>
* '''server-data''' which defines stats like HP and DEF, but also the behavior or walk and attack speed of the mob
ID,Name,JName,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,
* and '''client-data''' which includes everything the client shows while playing like the graphic of a mob itself or sparkling particle effects and a file naming the authors of a graphic.
Race,Element,Mode,Speed,ADelay,aMotion,dMotion,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,
Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,Drop9id,Drop9per,
DropCardid,DropCardper,MEXP,ExpPer,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per
</pre>
 
'''''NOTE: I had to cut the mob_db structure so it could fit. It's a whole line, not 4 lines.'''''
 
Pretty long eh? But its not that hard! Let's begin:


<br>'''<u>ID</u>''': ID of the mob.
<br>'''<u>Name</u>''': This first name is the DB name. When you use @spawn/@summon and you know the name of the mob, but not the ID, type this name instead. Try making the normal name the same as this so you wont get confused.
<br>'''<u>JName</u>''': This is the name the server shows. There's another way to change it, but I'll explain that later.
<br>'''<u>LV</u>''': Level of the mob.
<br>'''<u>HP</u>''': HP of the mob
<br>'''<u>SP</u>''': SP of the mob
<br>'''<u>EXP</u>''': Exp granted by the mob
<br>'''<u>JEXP</u>''': Job exp granted by the mob
<br>'''<u>Range1</u>''': Range of the mob attack. If set to 1 or 2, it will melee. 3 or more than 3 will set it to ranged.
<br>'''<u>ATK1</u>''': minimum attack of the mob
<br>'''<u>ATK2</u>''': maximum attack of the mob. If no maximum attack defined here, the minimum attack will count as the absolute attack.
<br>'''<u>DEF</u>''': Defence of the mob (Tip: 100 def = Invulnerability below 8K attack. Watch out, only melee/ranged attacks, but generally direct hits attacks are drastically reduced. Setting this high enough may make monks pretty cheap to level because of of Psychic Wave/Occult Impact/Investigate.)
<br>'''<u>MDEF</u>''': Magic Defence of the mob (Hint: 100 mdef = golden thief bug effect below 9K magic attack. It's for all magic-using skills.)
<br>'''<u>STR</u>''': Strength of the mob
<br>'''<u>AGI</u>''': Agility of the mob. This also defines the mob flee rate.
<br>'''<u>VIT</u>''': Vitality of the mob
<br>'''<u>INT</u>''': Intelligence of the mob. This also defines its MATK.
<br>'''<u>DEX</u>''': Dexterity of the mob. This also defines the mob hit rate.
<br>'''<u>LUK</u>''': Luck of the mob. This also defines the mob perfect dodge/lucky flee/perfect flee/lucky dodge rate.
<br>'''<u>Range2</u>''': READ AT THE BOTTOM OF THIS GUIDE FOR THIS ONE.
<br>'''<u>Range3</u>''': SAME AS ABOVE.
<br>'''<u>Scale</u>''': 0 if its Small, 1 if its Medium, 2 if its Large
<br>'''<u>Race</u>''': 0=formless, 1=undead, 2=animal, 3=plant, 4=insect, 5=fish, 6=demon, 7=demihuman, 8=angel, 9=dragon.
<br>'''<u>Element</u>''': This is the tricky part. The element number has 2 parts, let's call them:


'''x'''''y'' '''x=level of the element''', and ''y=element number''
=[https://github.com/themanaworld/tmwa-server-data server-data]=
The required files in server-data list all kind of numbers that don't have anything to do with how a mob looks like (this is in client-data).


'''X=Being for lvl 1 = 2, for lvl 2 = 4, for lvl 3 = 6, for lvl 4 = 8.'''
Only two files are relevant for this: the appropriate '''mob_db''' and '''mob_points.txt'''.
''Y= being for neutral = 0, water = 1, earth = 2, fire = 3, wind = 4, poison = 5, holy = 6, shadow = 7, ghost = 8, undead = 9''
And now, to make the element, just grab the number of the lvl you want it to be, and the number of the element you want it to be. Let's say we want a lvl 3 fire mob. We grab the 6 for the first number and the 3 for the second, being <B>6 = lvl 3</B> and ''3 = fire''. It will look like = '''6'''''3''


<br>'''<u>Mode</u>''': This defines the mob behaves. The numbers are these:
Additionally you can look at how other mobs are created as a reference.
<pre>canMove: 1
Boss:32
plant: 64
castsensor: 16
assist: 8
aggresive: 4
looter: 2
canAttack: 128
detector: 256
changetarget: 512
These are the basic modes. You add them up to make the ones below:


64: Plant
128: Immobile being, passive (ie: pupa)
129: normal
131: looter
132: Immobile being, attacker (ie: hydra)
133: aggressive
137: supportive (wolves)
139: supportive & looter (thief bugs)
141: aggressive & supportive
145: detectors (Giearth)
149: aggresive & detectors (Hunter Fly)
171: Boss type and looter (Golden Thief Bug)
181: Boss type</pre>


Thanks to Wallex for these modes.
==mob_db==
* Path: '''[https://github.com/themanaworld/tmwa-server-data/tree/master/world/map/db tmwa-server-data/world/map/db]'''


<br>'''<u>Speed</u>''': Walking speed of the mob. 1 is the fastest, 1000 is the lowest. 100 is the normal walking speed.
In this folder you will see the following files:
<br>'''<u>ADelay</u>''': ADelay= Attack Delay, also known as ASPD. This one will change the aspd of the mob. The lower the faster, but don't make it too low or it will lag when mobbed by several of these.
* [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/db/0_19_mob_db.txt 0_19_mob_db.txt]
<br>'''<u>aMotion</u>''': Attack animation motion. Lower this value and the mob's attack will be displayed in higher fps (making it shorter, too) (Thanks to Wallex for this)
* [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/db/20_39_mob_db.txt 20_39_mob_db.txt]
<br>'''<u>dMotion</u>''': Damage animation motion, same as aMotion but used to display the "I am hit" animation. Coincidentally, this same value is used to determine how long it is before the mob/player can move again. Endure is dMotion = 0, obviously.(thanks to Wallex for this one)
* [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/db/40_59_mob_db.txt 40_59_mob_db.txt]
* [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/db/60_79_mob_db.txt 60_79_mob_db.txt]
* [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/db/80_99_mob_db.txt 80_99_mob_db.txt]
* [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/db/over_100_mob_db.txt over_100_mob_db.txt]


From now on, the following fields are for drops and drops rate. Remember that these are in percentages, it means 100 = 100%
All information about stats like mob name, HP, DEF, but also walking and attack speed are listed in these mob_db.txt files. The numbers represent the level of the mobs listed in the files. So if you want to add a mob with level 75 you choose ''60_79_mob_db.txt''.


<br>'''<u>Drop1ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop1per</u>''': the rate of being dropped goes here


<br>'''<u>Drop2ID</u>''': The Item ID of the drop goes here
The mob_db.txt files have following structure:
<br>'''<u>Drop2per</u>''': the rate of being dropped goes here
 
<br>'''<u>Drop3ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop3per</u>''': the rate of being dropped goes here
 
<br>'''<u>Drop4ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop4per</u>''': the rate of being dropped goes here
 
<br>'''<u>Drop5ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop5per</u>''': the rate of being dropped goes here
 
<br>'''<u>Drop6ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop6per</u>''': the rate of being dropped goes here
 
<br>'''<u>Drop7ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop7per</u>''': the rate of being dropped goes here
 
<br>'''<u>Drop8ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop8per</u>''': the rate of being dropped goes here
 
<br>'''<u>Drop9ID</u>''': The Item ID of the drop goes here
<br>'''<u>Drop9per</u>''': the rate of being dropped goes here
 
As an add, there are a field for Drop Card:
 
<br>'''<u>DropCardid</u>''': ID of a card or item. You can make this mob drop another mob's card, even.
<br>'''<u>DropCardper</u>''': The chance of the card being dropped goes ere.
 
MVP exp: This exp is a percentage of the exp the monster gives.
 
<br>'''<u>MEXP</u>''': The MVP exp the mob gives when it is defeated (to the player who got the MVP reward)
<br>'''<u>ExpPer</u>''': I'm not sure bout this one, but I think it takes a certain percentage of the exp you earn from the kill and adds it to the MVP exp. Someone correct me if I'm wrong, please.
 
Now, these correspond to MVP drop rates. I'm not sure if the mode for these drops to work are 171 or 181; I haven't tested it. I think they have to be either 171 or 181 so the server will recognize them as MVPs:
 
<br>'''<u>MVP1id</u>''': The Item ID of the MVP drop goes here
<br>'''<u>MVP1per</u>''': The rate of being dropped goes here
 
<br>'''<u>MVP2id</u>''': The Item ID of the MVP drop goes here
<br>'''<u>MVP2per</u>''': The rate of being dropped goes here
 
<br>'''<u>MVP3id</u>''': The Item ID of the MVP drop goes here
<br>'''<u>MVP3per</u>''': The rate of being dropped goes here
 
Now the mob is finished, almost. But where to put it? Either in two files, as I said before: mob_db.txt or mob_db2.txt
 
Now you start your server, go happy doing @spawn <ID> and BAM!! Gravity Handler Error! Oh no! But wait, it's because it doesn't have a sprite X_X! What now?To solve such issue, we could use a View ID... but wait, there's no field for View ID! So, what else?
 
If you look closely to your db folder, you will find a file called mob_avail.txt. When you create a new mobs, it needs a sprite to be displayed, thus needing an avail from another mob, so it would look like it. There are 2 ways to use the mob avail:
 
1st A mob looking like another mob: To do so, you have to make a line like this pattern:
 
<pre>
mob_id,sprite_id,equip #
</pre>
 
The confusion comes here if you go alone, but its not hard at all.
 
<br>'''<u>mob_id</u>''': This is your mob ID.
<br>'''<u>sprite_id</u>''': This is the mob ID you want the sprite to be taken from. Lets say you want your mob to look like a poring, well, put 1002 and it will look like one =3 *tip tip* I dont know if you already realized it but, Did you know that you can also use NPC Sprite's ID? A complete Sprite List is in Here. Thanks to Fredzilla for this one ;3 You can also put the ID here of an already availed mob, so try combinations ;o *tip tip*
<br>'''<u>equip #</u>''':equip # was only used for old mobs, but it has no uses now. Put a 0 here or test it out if you like =3
 
So YaY! our mobs looks like another =D! But, did you also know there's a second way to avail a mob? to make it look like... like a player?! O_O!! Yes! its possible. You can make your mobs looks like normal players, with their own headgears and hair/clothes dyes *-* YaY!!
 
2nd A mob looking like a player:
 
Lets look at the structure:


<pre>
<pre>
MobID,SpriteID,Sex,Hair,Hair_Color,Weapon,Shield,Head_Top,Head_Middle,Head_Bottom,Option,Dye_Color
//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK,
Range2, Range3, Scale, Race, Element, Mode, Speed, Adelay, Amotion, Dmotion, Drop1id, Drop1per, Drop2id,
Drop2%, Drop3id, Drop3%, Drop4id, Drop4%, Drop5id, Drop5%, Drop6id, Drop6%, Drop7id, Drop7%, Drop8id, Drop8%,
Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per, MVP2id, MVP2per, MVP3id, MVP3per, mutationcount, mutationstrength
</pre>
</pre>


<br>'''<u>MobID</u>''': Your mob id /ok
'''Note:''' In this wiki page it shows four lines, while it's one single line in the mob_db itself.
<br>'''<u>SpriteID</u>''': The Job number you want it to look like. They are:
<pre>Job_Novice 0
Job_Swordman 1
Job_Mage 2
Job_Archer 3
Job_Acolyte 4
Job_Merchant 5
Job_Thief 6
Job_Knight 7
Job_Priest 8
Job_Wizard 9
Job_Blacksmith 10
Job_Hunter 11
Job_Assassin 12
Job_Knight2 13
Job_Crusader 14
Job_Monk 15
Job_Sage 16
Job_Rogue 17
Job_Alchem 18
Job_Bard 19
Job_Dancer 20
Job_Crusader2 21
Job_SuperNovice 23
 
Job_Novice_High 4001
Job_Swordman_High 4002
Job_Mage_High 4003
Job_Archer_High 4004
Job_Acolyte_High 4005
Job_Merchant_High 4006
Job_Thief_High 4007
Job_Lord_Knight 4008
Job_High_Priest 4009
Job_High_Wizard 4010
Job_Whitesmith 4011
Job_Sniper 4012
Job_Assassin_Cross 4013
Job_Lord_Knight2 4014
Job_Paladin 4015
Job_Champion 4016
Job_Professor 4017
Job_Stalker 4018
Job_Creator 4019
Job_Clown 4020
Job_Gypsy 4021
Job_Paladin2 4022
 
Job_Baby 4023
Job_Baby_Swordman 4024
Job_Baby_Mage 4025
Job_Baby_Archer 4026
Job_Baby_Acolyte 4027
Job_Baby_Merchant 4028
Job_Baby_Thief 4029
Job_Baby_Knight 4030
Job_Baby_Priest 4031
Job_Baby_Wizard 4032
Job_Baby_Blacksmith 4033
Job_Baby_Hunter  4034
Job_Baby_Assassin 4035
Job_Baby_Knight2 4036
Job_Baby_Crusader 4037
Job_Baby_Monk 4038
Job_Baby_Sage 4039
Job_Baby_Rogue 4040
Job_Baby_Alchem 4041
Job_Baby_Bard 4042
Job_Baby_Dancer 4043
Job_Baby_Crusader2 4044
Job_Super_Baby 4045
 
Job_Taekwon 4046
Job_Star_Gladiator 4047
Job_Star_Gladiator2 4048
Job_Soul_Linker 4049</pre>
 
 
They can also be found on [[http://eathena-project.googlecode.com/svn/trunk/db/const.txt http://eathena-project.googlecode.com/svn/trunk/db/const.txt]] file =3


<br>'''<u>Sex</u>''': 0 for female, 1 for male
<br>'''<u>Hair</u>''': The mob hair style, goes from 1 to 23
<br>'''<u>Hair_Color</u>''': The mob Hair color. Goes from 0 to, generally, 8 or 10 or so, depends on your pallete files and the user palletes, but they are the official hair dyes./ok
<br>'''<u>Weapon</u>''':Go to my other faq: Guide Into Making Custom Items ;3! and search for View. Then, grab the ID of the Weapon you want. Also read at the end of the pre if you cant find the headgear you want. Same for the following tabs:
<br>'''<u>Shield</u>''': Same as above
<br>'''<u>Head_Top</u>''': Same as above
<br>'''<u>Head_Middle</u>''': Same as above
<br>'''<u>Head_Bottom</u>''': Same as above
<br>'''<u>Option</u>''': this option parameter will make the mob change its status, as well as give them carts, pecopecos, and falcons. In other words, this will change the visual effects of your mobs. The options are these*:
<pre>
1 Sight            32 Peco Peco riding  2048 Orc Head
2 Hide              64 GM Perfect Hide    4096 Wedding Sprites
4 Cloak            128 Level 2 Cart      8192 Ruwach
8 Level 1 Cart    256 Level 3 Cart
16 Falcon          512 Level 4 Cart
                  1024 Level 5 Cart
</pre>


<br>'''<u>Dye_Color</u>''': Same as Hair color. It goes from 0 to 77
The columns mean:
* '''<u>ID</u>''': ID of the mob. It's not sure if the maximum possible number of IDs is 1,000 or 10,000.
* '''<u>Name</u>''': This first name is the DB name. When you use @spawn/@summon and you know the name of the mob, but not the ID, type this name instead. Try making the normal name the same as this so you wont get confused.
* '''<u>JName</u>''': This is the name the server shows. Actually it's always the same as '''<u>Name</u>'''.
* '''<u>LV</u>''': Level of the mob. It is added to DEX for "to hit" and to AGI for "flee".
* '''<u>HP</u>''': HP of the mob. Note that maximum is 65535 HP, if you enter more it starts from 0 again (e.g. 80000 HP will be 14464 HP then).
* '''<u>SP</u>''': SP of the mob, but currently unused (even though e.g. Luvia has 60 SP which have no effect). Please leave "0" here.
* '''<u>EXP</u>''': EXP granted by the mob, but this is calculated automatically. There are a few exceptions though.
* '''<u>JEXP</u>''': Job EXP granted by the mob. They are calculated by a tool.
* '''<u>Range1</u>''': Range of the mob attack. If set to 1 or 2, it will melee. 3 or more than 3 will set it to ranged.
* '''<u>ATK1</u>''': Minimum attack of the mob.
* '''<u>ATK2</u>''': Maximum attack of the mob. If no maximum attack defined here, the minimum attack will count as the absolute attack.
* '''<u>DEF</u>''': Defence of the mob in % against melee and ranged attacks.
* '''<u>MDEF</u>''': Magic Defence of the mob in %.
* '''<u>STR</u>''': Strength of the mob. It increases the minimum/maximum attack of the mob on a one-to-one basis.
* '''<u>AGI</u>''': Agility of the mob. This also defines the mob flee rate.
* '''<u>VIT</u>''': Vitality of the mob. 80% of this value is removed from damage taken after '''<u>DEF</u>''' is applied.
* '''<u>INT</u>''': Intelligence of the mob. This also defines its Magic Attack.
* '''<u>DEX</u>''': Dexterity of the mob. This also defines its hit rate.
* '''<u>LUK</u>''': Luck of the mob. This also defines its perfect dodge/lucky flee/perfect flee/lucky dodge rate (those are various combat chances shown in client as "miss" and "dodge").
* '''<u>Range2</u>''': Currently unused. It's said to be the maximum range for skills. Please leave "1" here.
* '''<u>Range3</u>''': Currently unused. It's said to be the sight limit for mobs. If set to 1000 or beyond, mobs will follow you all over the map. Please leave "1" here.
* '''<u>Scale</u>''': Currently unused. Please leave "1" here.
* '''<u>Race</u>''': Defines the mob's race, see below:
** "0" = formless
** "1" = undead
** "2" = animal
** "3" = plant
** "4" = insect
** "5" = fish
** "6" = demon
** "7" = demihuman
** "8" = angel
** "9" = dragon
* '''<u>Element</u>''': Defines the mob's element and the level of this element. The element number has 2 digits: <span style="color:#0000FF">x</span><span style="color:#008000">y</span>, <span style="color:#0000FF">x = level of the element</span> and <span style="color:#008000">y = element</span>, see below:
** <span style="color:#0000FF">x = "2" for element level 1</span>
** <span style="color:#0000FF">x = "4" for element level 2</span>
** <span style="color:#0000FF">x = "6" for element level 3</span>
** <span style="color:#0000FF">x = "8" for element level 4</span>
** <span style="color:#008000">y = "0" for '''neutral''' element</span>
** <span style="color:#008000">y = "1" for '''water''' element</span>
** <span style="color:#008000">y = "2" for '''earth''' element</span>
** <span style="color:#008000">y = "3" for '''fire''' element</span>
** <span style="color:#008000">y = "4" for '''wind''' element</span>
** <span style="color:#008000">y = "5" for '''poison''' element</span>
** <span style="color:#008000">y = "6" for '''holy''' element</span>
** <span style="color:#008000">y = "7" for '''shadow''' element</span>
** <span style="color:#008000">y = "8" for '''ghost''' element</span>
** <span style="color:#008000">y = "9" for '''undead''' element</span>
-> e.g. for a level 3 fire mob grab the "6" for the element level 3 and the "3" for the fire element -> '''Element = 63'''.
* '''<u>Mode</u>''': This defines the mob's behavior, see below:
<pre>Those are the basic numbers:
canMove:        1
looter:        2 (picks up drops if not aggravated)
aggressive:    4
assist:        8 (helps another mob of its kind that got aggravated)
castsensor:    16 (currently without any effect)
Boss:          32 (effect unknown)
plant:        64 (infinite defense)
canAttack:    128
detector:    256 (currently without any effect)
changetarget: 512 (currently without any effect)


YAY =D Now our mob has a sprite, and is running around killing helpless noobs BWHAHAH (ok sorry for that =Pu) But, everytime we want to fight it, we need to use @spawn, and it gets pretty tedious sleep.gifu So, why not giving it a spawn point? =D! *WARNING* Using Advanced/Babies Class ID's might give you an error, cuz of missing the weapon sprite. To fix it, find the sprite name on your sprite folder, they're generally on data\sprite\Àΰ£Á•*WARNING*
You add them up to make mob, e.g those:


Lets look at the pattern of a mob spawn point:
Plant:                        64    64 for plant (can't attack (128) and can't move (1))                  Example: Mauve Plant, Cobalt Plant, etc.
 
Immobile, peaceful mob:       128    128 for canAttack (but not aggressive (4) and not able to move (1))    Example: Pink Flower
<pre>
Standard, peaceful mob:      129    128 for canAttack + 1 for canMove                                      Example: Fluffy
<map name>,<x1>,<y1>,<x2>,<y2>%TAB%monster%TAB%
Standard, aggressive mob:    133    128 for canAttack + 4 for aggressive + 1 for canMove                    Example: Snake
<monster name>%TAB%<mob id>,<amount>,<delay1>,<delay2>,<event>
Peaceful, assisting mob:      137    128 for canAttack + 8 for assist + 1 for canMove                        Example: Moggun
Peaceful looter:              131    128 for canAttack + 2 for looter + 1 for canMove                        Example: Yellow Slime 
Aggressive looter:            135    128 for canAttack + 4 for aggressive + 2 for looter + 1 for canMove    Example: Red Slime
Boss mob:                    165    133 (128+4+1) for standard aggressive mob + 32 for Boss                Example: Reaper
</pre>
</pre>
* '''<u>Speed</u>''': Walking speed of the mob. "1" is the fastest, "1000" is the lowest. "100" is the normal walking speed.
* '''<u>Adelay</u>''': Attack Delay, also known as ASPD. This defines how fast the mob hits. The lower the faster, but making it too low will cause lag when several mobs attack.
* '''<u>Amotion</u>''': Attack animation motion. Lower this value and the mob's attack will be displayed in higher fps (making it shorter, too).
* '''<u>Dmotion</u>''': Damage animation motion, same as Amotion but used to display the "I am hit" animation. Coincidentally, this same value is used to determine how long it is before the mob/player can move again. Endure is dMotion = "0".
* '''<u>Drop1id</u>''': The ID of an item the mob can drop.
* '''<u>Drop1per</u>''': The drop rate of '''<u>Drop1ID</u>'''. "10000" = 100%, "1000" = 10%, "100" = 1", "10" = 0.1%, "1" = 0.01%, etc.
* Same counts for '''<u>Drop2ID</u>''' & '''<u>Drop2per</u>''', '''<u>Drop3ID</u>''' & '''<u>Drop3per</u>''', etc.
* '''<u>Item1</u>''': Currently unused. Please leave "0" here.
* '''<u>Item2</u>''': Currently unused. Please leave "0" here.
* '''<u>MEXP</u>''': Currently unused. Please leave "0" here.
* '''<u>ExpPer</u>''': Currently unused. Please leave "0" here.
* '''<u>MVP1id</u>''': Currently unused. Please leave "0" here.
* '''<u>MVP1per</u>''': Currently unused. Please leave "0" here.
* Same counts for '''<u>MVP2id</u>''' & '''<u>MVP2per</u>''' and '''<u>MVP3id</u>''' & '''<u>MVP3per</u>'''.
* '''<u>mutationcount</u>''': Defines how many attributes can increase. Those attributes can be LV, HP, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Speed, Adelay, HP (double chance to modify hp, no chance to modify base EXP).
* '''<u>mutationstrength</u>''': Defines how much attributes can increase, e.g. "50" = 50%.


'''''NOTE: I had to cut the mob spawn point structure so it could fit. It's a whole line, not 2 lines.'''''
==mob_points.txt==
 
* Path: '''[https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/npc/functions/mob_points.txt tmwa-server-data/world/map/npc/functions/mob_points.txt]'''
Only the things between <> are changed. Do not remove or change monster after the coordinates, cuz that's what tells the server that this line is a monster spawn script.
 
<br>'''<u>map name</u>''': name of the map o..o including the .gat Use /where along with the following coordinates
<br>'''<u>x1</u>''': X axis coordinates. It start from the left side of the map, and the higher it gets, the more it gets closer to the right side of the map.
<br>'''<u>y1</u>''': Y axis coordinates. It start from the bottom, and the higher it gets, the more it gets closer to the top of the map.
<br>'''<u>x2</u>''': X axis coordinates. It start from the left side of the map, and the higher it gets, the more it gets closer to the right side of the map.
<br>'''<u>y2</u>''': Y axis coordinates. It start from the bottom, and the higher it gets, the more it gets closer to the top of the map.
<br>These 4 coordinates will make a spawn area where the mob will spawn, however it wont limit its movement, so lets say you put 120,150 on the first pair, and 130,160 pair- That's a 10x10 cell area where the mob will spawn randomly.
<br>*tip tip* If you are as lazy as me, to set a lot of coordinates for your mob, use 0 on all of them. Since the maps doesn't have a walkable cell (0,0), the mobs will spawn randomly all around the map ;3 *tip tip*
<br>'''<u>monster name</u>''': The name of the mob you want to be shown (You can also use --ja-- in place of a name to display the name provided in "Japanese Name" from your Mob DB)
<br>'''<u>mob id</u>''': the ID of your mob =D!
<br>'''<u>amount</u>''': how many mobs you want to be spawned
<br>'''<u>delay1</u>''': counts the time since a monster defined in this spawn was last respawned.
<br>'''<u>delay2</u>''': counts the time since the monster of this spawn was last killed.
<br>That was extracted from {{svn|trunk/doc/script_commands.txt}} file. Pretty much like gibberish eh? XD! Ok I'll explain it. These two values are used to define the minimum time it must pass before the monster respawn. The times are given in 1/1000ths of a second. It means 1000 = 1 second. One thing is, if delay2 - delay1 = -1 The mob wont respawn till restart o..o
<br>'''<u>event</u>''': this piece of code is generally used with addons, that i'll explain later ;3 that's for advanced scripters ;3. Another thing. From what i read in the /doc/script_commands.txt files, this is the mob lvl, which you can use to change it quickly then @reloadscript to reload it, w/o reloading the whole map server ;3
 
zOMG, look where we are º-º! We've created a mob, given it a sprite, and even set a spawn point! Now we can play with around but.. the mob only melee... using his bow/dagger/sword/staff.... its pretty much boring eh?.... Wait, what if we give skills to the mob? =D! That would rox a lot X3!!! Lets make a few skills for our mobs ;3....
 
Go to your db folder and open the mob_skill_db.txt file.
 
Lets look at the structure of a mob skill:
 
<pre>
MOB_ID, a unused dummy character sequence (for information only), STATE, SKILL_ID, SKILL_LV,
rate (10000 = 100%), casttime, delay, cancelable, a target, a condition type, a condition value,
a value 1, a value 2, a value 3, a value 4, a value 5, emotion
</pre>
 
<br>'''''
NOTE: I had to cut the mob_avail structure so it could fit.
It's a whole line, not 3 lines.
'''''
 
<br>'''<u>MOD_ID</u>''': your mob ID =D!
<br>'''<u>an unused.. etc etc</u>''': you can put any text here you want, its just for information and to know what does this do.* tip tip*You will see inside this file things like Poring@TF_POISON. Well, you could use this too. It would tell you: mob_name@DB_Skill_Name. *tip tip*
<br>'''<u>state</u>''': this is the state that the mob must accomplish before being able to use this skill. The states are:
 
<pre>
any, idle (in standby), walk (in movement), attack, dead (on killed), loot, chase (following target),
counterattack.
</pre>
 
Extracted from the mob_skill_db.txt itself. It's at the very beginning.
 
<br>'''<u>SKILL_ID</u>''': the ID of the skill goes here. To look for one, go to your db folder and open the skill_db.txt file. You will see a lot of lines like this one:
 
<pre>2,0,0,0,0,0,10,0,no,0,0,0,weapon,0 //SM_SWORD#Œ•C—û#</pre>
 
And the structure is:
 
<pre>
id,range,hit,inf,pl,nk,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count
</pre>
 
so, the ID of the SM_SWORD, which is the Swordman's Sword Mastery by the way, is 2:
 
<pre>'''2''',0,0,0,0,0,10,0,no,0,0,0,weapon,0 //SM_SWORD#Œ•C—û#</pre>
 
<br>'''<u>SKILL_LV</u>''': now this is the funny part /gg You can put the skill level as high as you want. It doesnt matter the level of the skill in your skill_db.txt >=3
<br>'''<u>rate</u>''': self-explainable eh? How frequent will the mob use the skill.
<br>'''<u>casttime</u>''': self-explainable <,<!
<br>'''<u>delay</u>''': how much time between skill use. Each 1000 is 1 sec.
<br>'''<u>cancelable</u>''': if the skill cast can be interrupted. Set it either "yes" or "no" (without " " <_<!)
<br>'''<u>a target</u>''': the target of the skill. It can be:
<pre>
target (you, basically), self (the mob itself), friend (a minion, aka the mobs that this mob have
(if it has mob summoning skill)
</pre>
 
<br>'''<u>a condition type</u>''':a condition that also must be fulfilled before the mob is able to use this skill. There are two kind of conditions:
 
1st Mob Condition:
<pre>//conditions: (condition type) (value which specifies a condition value)
// always            unconditional
// myhpltmaxrate    when the mob's hp drops to a certain %
// mystatuson        If the mob has any abnormalities in status (condition value),
// mystatusoff      If the mob has ended any abnormalities in status (condition value),
// friendhpltmaxrate when the mobs' friend's hp drops to a certain %
// friendstatuson    If the friend has any abnormalities in status (condition value),
// friendstatusoff  If the friend has ended any abnormalities in status (condition value),
// attackpcgt        Attack PC becomes more than the  number of specification
// attackpcge        Attack PC becomes equal or more than the number of specification.
// slavelt          when the number of slaves is lower than the original number of specification.
// slavele          when the number of slaves is lower or equal than the original number of specification.
// closedattacked    when melee attacked (close range attack)
// longrangeattacked when long ranged attacked (like bows and far range weapons)
// skillused        when a skill is used on the mob
// casttargeted      when a target is in cast range.
// rudeattacked      when a target is rude attacked
// hiding            when a target is hidden *not implemented yet*
</pre>
 
 
2nd Character
<pre>
// The character's state which can be specified to be a condition value
// by the statuson/statusoff system
//
// anybad      any type of state change
// stone      condition of being in stone state
// freeze      condition of being in frozen state
// stan        condition of being in stunned state
// sleep      condition of being in sleep state
// poison      condition of being in poisoned state
// curse      condition of being in cursed state
// silence    condition of being in silenced state
// confusion  condition of being in confusion state
// blind      condition of being in blind state
// hiding      condition of being in hidden state
// sight      condition of being in unhidden state
</pre>
 
You can use only ONE of these conditions.
 
<br>'''<u>value1,value2,value3,value4,value5</u>''': Basically they're only the same but, when you want your mob using the same condition to trigger the skill, but in different times, in case of the myhpltmaxrate when the hp is being decreased, you can set them in a decreasing order, like:
 
<pre>80,60,40,20,10</pre>
 
<br>'''<u>emotion</u>''': This is a new add, which im glad they finally did!. This let your mob use an emotion, at random times. The emotions ID are:
 
<pre>
e_gasp 0
e_what 1
e_ho 2
e_lv 3
e_swt 4
e_ic 5
e_an 6
e_ag 7
e_cash 8
e_dots 9
e_scissors 10
e_rock 11
e_paper 12
e_korea 13
e_lv2 14
e_thx 15
e_wah 16
e_sry 17
e_heh 18
e_swt2 19
e_hmm 20
e_no1 21
e_no 22
e_omg 23
e_oh 24
e_X 25
e_hlp 26
e_go 27
e_sob 28
e_gg 29
e_kis 30
e_kis2 31
e_pif 32
e_ok 33
e_bzz 36
e_rice 37
e_awsm 38
e_meh 39
e_shy 40
e_pat 41
e_mp 42
e_slur 43
e_com 44
e_yawn 45
e_grat 46
e_hp 47
e_philippines 48
e_usa 49
e_indonesia 50
e_brazil 51
</pre>
 
For more info, go to your {{svn|trunk/db/const.txt}} file.
 
WoW We finally finished! Our mob has custom stats, its own sprite (from a player sprite or another mob sprite ;3), has a spawn point, uses skills and even do emoticons! *-* What else can we ask? Turn them into NPC?.... Yeah... It can be done too but.. I'll add it later ;3 For now, I think this is all you need to know to make your own customized mob =D!


Ok, since i said i would show how to make your mob look like a npc, i'll write it now =3!


First than anything, we need to set the Cygwin Bash Shell. How so? Well, we go to http://www.cygwin.com and download their setup.exe file. Once it's down. we will go to the following site: .:World of eAthena:. and read STEP BY STEP, then do it STEP BY STEP.'''*tip tip* Dont choose the FTP the guy says on the webpage, choose one below it or above, but not that one.*tip tip**WARNING*Beware 56kers. It's a lot of downloads..... and isnt resumeable, cuz it has to be installed at once.*WARNING*.'''
At the top ~120 lines (number will increase with each new mob) all mobs are listed that give monster points for [[Aidan And Ishi's Monster Points]]. Usually there is a line saying "// Add more here", showing that new entries should be added above. Please ignore the lower part in this file as it's used to define which mobs [[Sagatha]] considers as good or evil.


Once you finish downloading all the things they say (dont uncheck anything that pops up being checked when you check one of the things. That means it comes with the files needed, thus that one is a file needed) try it out =3. Open it, a shortcut should be on your desktop. when you're there follow the steps that the site above has. Also their suggestions, such as placing your server folder on an easy location, such as C:\RO server.*tip tip*Always, before starting the compiling process, type make clean to erase the cygwin cache from the last compile process. Then either type make txt for TXT eAthena users or make sql for SQL eAthena users.*tip tip*


Once it finish recompiling, you can tell it when it leaves ladmin folder, go to your cygwin\bin folder and COPY the cygwin1.dll and cygz.dll, do not cut them, then paste them on your Server folder, OVERWRITING the currents. Do this everytime you compile your eAthena =3!
'''Note:''' Currently the array is full which means that no new mobs can be added here. Please better ask if you can add a mob here or if there is some other solution.


Ok, once we made that test, and got that Cygwin rolling fine ;o! We'll go to Lordalfa's Post, remember to leave a comment there ;3. Once you finish making all the source modifying stuff, recompile and add the new cygwin1.dll and cygz.dll files on your Server folder. Remember they're on the cygwin\bin folder.


Now, to make them as a npc. We go to the header of a npc script:
=[https://github.com/themanaworld/tmwa-client-data client-data]=
As mentioned at the top of this page client-data includes everything the client shows while playing and a file naming the authors and licenses of graphics.


prontera.gat,100,200,4    script    Test    '''90''',{


See that bolded number? That's the NPC ID right? well, to make your mob as a npc, simply replace that ID with your mob ID. Example:
This escpecially means '''graphics''' like monster sprites, '''XML files''' that define how the graphics are used (e.g. using a certain part of a graphic when a mob attacks but another part when it dies), '''accessories''' that can be put on a mob (e.g. a Reinboo is nothing else than a Mouboo with several accessories like Antlers), '''particle effects''' like the Demonic Mouboo's black smoke and the '''monster.xml''' that puts all those pieces together and defines the mob's name shown by the client.


Suppose our mob ID is 1800. All we do is :


prontera.gat,100,200,4    script    Test    90,{


v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v
==Graphics (sprites) and license.txt==
* Path: '''[https://github.com/themanaworld/tmwa-client-data/tree/master/graphics/sprites/monsters tmwa-client-data/graphics/sprites/monsters]'''


prontera.gat,100,200,4    script    Test    1800,{
* Path: '''[https://github.com/themanaworld/tmwa-client-data/license.txt tmwa-client-data/license.txt]'''


Then, our npc should look like that mob =3 Remember doing the mob spawn Script part of Lordalfa's guide to link them to this npc.


Thanks to EvilPeri79 for this suggestion:
Please save finished graphics as .png with transparent background and name the license of them (dual licensing [http://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] and [http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html GPLv2] are required - if you have questions please ask in our [https://web.libera.chat/?channels=#themanaworld-dev IRC development channel]).


Many people have asked me if there's a way to implement custom sprites, and i gave them a few choices:
1st: Hex your client and change the mob sprite name for those ID • -•u
2nd: Keep using mob avails =/!
3rd: Or, try this...


Find an unused mob sprite (such as Mastering and the Magma Dungeon mobs, since no1 goes there ._.!), extract it on your data folder from your data.grf, using GRF Tool, and rename your mob sprite with one of those sprites.
'''Note:''' This is the only point of monster design pure pixel artists have to take care of as they're "job" is only creating graphics, not making monster design. Everything else can be done by content developers or other contributors.


Example:


Lets say your mob is named Kapha_mod.spr and Kapha_mod.act. And you have, lets say, explosion.act and explosion.spr. Simply exchange names:
The content developer who creates a pull request for the mob will add the author and license(s) in license.txt.


<pre>explosion.spr        Kapha_mod.spr
      v                          v
explosion.spr        explosion1.spr
      v                          v
Kapha_mod.spr    explosion1.spr
      v                          v
Kapha_mod.spr    explosion.spr</pre>


==XML files for the monster sprites==
* Path: '''[https://github.com/themanaworld/tmwa-client-data/tree/master/graphics/sprites/monsters tmwa-client-data/graphics/sprites/monsters]'''
This is the same path as the graphics/sprites of mobs as they belong together.


And so on with the act file:


<pre>explosion.act        Kapha_mod.act
These XML files define which part of a sprite is used for which movement of a mob.
      v                          v
explosion.act        explosion1.act
      v                          v
Kapha_mod.act    explosion1.act
      v                          v
Kapha_mod.act    explosion.act</pre>




And voila, your custom sprite mob on an already existing sprite. All you have to do now is avail your mob with the explosion sprite and it should have your custom sprite. Make sure your players also have it or they will see the normal explosion =3 And besides, these changes are permanents since they're game files already established =3! As long as you keep those name file and Mob ID the same, they're ok ;3!
''(more information will follow)''


Another add, suggested by chronocrosser_x and Fenrir Soarblade:


Well, i believe you have seen some mobs on your server talking when certain things happens. I never saw them again talking, dont know why but they used to talk. I believe they still do it.
==Optional: accessories and particle effects==
* Path: '''[https://github.com/themanaworld/tmwa-client-data/tree/master/graphics/sprites/monsters/accessories tmwa-client-data/graphics/sprites/monsters/accessories]'''


Ok, go to your Data folder. If you look in the files, you should find a file called monstertalktable. If there isnt, we will create one with Wordpad =3!. If there is, open it with Wordpad, not Notepad.
* Path: '''[https://github.com/themanaworld/tmwa-client-data/tree/master/graphics/particles tmwa-client-data/graphics/particles]'''
Both graphics and XML files of accessories or particle effects are saved under the appropriate path.


Once there, we will copy and paste this:


<pre><nowiki><?xml version="1.0" encoding="euc-kr" ?> 
Sometimes accessories and/or particle effects are used for creating a new mob. For example the Demonics Mouboo uses Antlers as accessory and a black smoke particle effect.


<enemy_monster_talk_table> 


<mob_db_name_here>
''(more information will follow)''
  <discovery></discovery>
  <attack></attack>
  <hp50></hp50>
  <hp25></hp25>
  <kill></kill>
  <dead></dead>
</mob_db_name_here>
</enemy_monster_talk_table></nowiki></pre>


Well, lets see step by step =3!:


<br>'''<u><enemy_monster_talk_table></u>''': This is the start of the monster talk table. Leave it as it is =3!
==monsters.xml==
<br>'''<u><mob_db_name_here></u>''': The mob_db.txt first name you see, after the ID, goes here =3! Its used to identify the mob
* Path: '''[https://github.com/themanaworld/tmwa-client-data/blob/master/monsters.xml tmwa-client-data/monsters.xml]'''
<br>'''<u><discovery>%TAB%Text Here%TAB%</discovery></u>''': This is an event, same as the one below. When a monster see you, this one will be displayed =3!
<br>'''<u><attack>%TAB%Text Here%TAB%</attack></u>''': When a monster attacks you, this one will be displayed O_O!
<br>'''<u><hp50>%TAB%Text Here%TAB%</hp50></u>''': When a monster's hp is at 50%, this one will be displayed o..o!
<br>'''<u><hp25>%TAB%Text Here%TAB%</hp25></u>''': When a monster's hp is at 25%, this one will be displayed x,x
<br>'''<u><kill>%TAB%Text Here%TAB%</kill></u>''': When a monster kills a character/player, this one will be displayed T~T!
<br>'''<u><dead>%TAB%Text Here%TAB%</dead></u>''': When a monster dies by player hand, this one will be displayed ^__^!
<br>'''<u></mob_db_name_here></u>''': The same name of the mob_db.txt, the one after the ID.
<br>'''<u></enemy_monster_talk_table></u>''': Keep it like this.


I never messed with this, but i think its ok =3! Also for those spaces other than the messages spaces, use TAB, not the Space Bar for it ._.!
In monsters.xml all pieces of a mob are put together so the client knows which files it should use for which mob. This includes the monster sprite, sfx, accessories and particle effects. Also it defines the mob's ID which is a different one than in the mob_db in server-data. For examples, descriptions and further information please check and compare with other entries in the monsters.xml and visit the [http://manaplus.org/monsters.xml wiki page of Manaplus].


<br><u>'''Notes from above'''</u>:
[[Category:Development]]
<br>Range 2 and Range 3.... There's a little confusion on these for me, I'd like some explanation if any1 knows the truth. So far i've seen that Range 2 is always bigger than Range 3, and since there must be a range for sight and skills, i think that:
<br>'''<u>Range 2</u>''': maximum range for skills
<br>'''<u>Range 3</u>''': Sight limit for mobs. If set to 1000 or beyond, mobs will follow you all over the map. Thanks to _shadow_ for this explanation =3!
=Client side=
==Graphics==
==XML==

Latest revision as of 22:29, 30 December 2022

This article is for reference purpose

The features described in this article are already implemented in the game. The article should describe how a certain aspect of the game currently works. You may of course edit this article to improve the description of the circumstances. Your opinions or improvement suggestions about the described aspects themself are of course appreciated, too. But please put these on the discussion page of this article to keep facts and fiction separated.

This article contains information for players or people interested in playing on the Classic server. If you are looking for information for The Mana World, go here The Mana World.
See also the Classic Portal


Construction-worker.png
This article is currently under construction.
Please note that this page is still under contruction. You can use it as reference, but note the red marked comments for unclear points.



This page shows how monsters are designed. Therefore two main points are relevant:

  • server-data which defines stats like HP and DEF, but also the behavior or walk and attack speed of the mob
  • and client-data which includes everything the client shows while playing like the graphic of a mob itself or sparkling particle effects and a file naming the authors of a graphic.


server-data

The required files in server-data list all kind of numbers that don't have anything to do with how a mob looks like (this is in client-data).

Only two files are relevant for this: the appropriate mob_db and mob_points.txt.

Additionally you can look at how other mobs are created as a reference.


mob_db

In this folder you will see the following files:

All information about stats like mob name, HP, DEF, but also walking and attack speed are listed in these mob_db.txt files. The numbers represent the level of the mobs listed in the files. So if you want to add a mob with level 75 you choose 60_79_mob_db.txt.


The mob_db.txt files have following structure:

//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK,
Range2, Range3, Scale, Race, Element, Mode, Speed, Adelay, Amotion, Dmotion, Drop1id, Drop1per, Drop2id,
Drop2%, Drop3id, Drop3%, Drop4id, Drop4%, Drop5id, Drop5%, Drop6id, Drop6%, Drop7id, Drop7%, Drop8id, Drop8%,
Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per, MVP2id, MVP2per, MVP3id, MVP3per, mutationcount, mutationstrength

Note: In this wiki page it shows four lines, while it's one single line in the mob_db itself.


The columns mean:

  • ID: ID of the mob. It's not sure if the maximum possible number of IDs is 1,000 or 10,000.
  • Name: This first name is the DB name. When you use @spawn/@summon and you know the name of the mob, but not the ID, type this name instead. Try making the normal name the same as this so you wont get confused.
  • JName: This is the name the server shows. Actually it's always the same as Name.
  • LV: Level of the mob. It is added to DEX for "to hit" and to AGI for "flee".
  • HP: HP of the mob. Note that maximum is 65535 HP, if you enter more it starts from 0 again (e.g. 80000 HP will be 14464 HP then).
  • SP: SP of the mob, but currently unused (even though e.g. Luvia has 60 SP which have no effect). Please leave "0" here.
  • EXP: EXP granted by the mob, but this is calculated automatically. There are a few exceptions though.
  • JEXP: Job EXP granted by the mob. They are calculated by a tool.
  • Range1: Range of the mob attack. If set to 1 or 2, it will melee. 3 or more than 3 will set it to ranged.
  • ATK1: Minimum attack of the mob.
  • ATK2: Maximum attack of the mob. If no maximum attack defined here, the minimum attack will count as the absolute attack.
  • DEF: Defence of the mob in % against melee and ranged attacks.
  • MDEF: Magic Defence of the mob in %.
  • STR: Strength of the mob. It increases the minimum/maximum attack of the mob on a one-to-one basis.
  • AGI: Agility of the mob. This also defines the mob flee rate.
  • VIT: Vitality of the mob. 80% of this value is removed from damage taken after DEF is applied.
  • INT: Intelligence of the mob. This also defines its Magic Attack.
  • DEX: Dexterity of the mob. This also defines its hit rate.
  • LUK: Luck of the mob. This also defines its perfect dodge/lucky flee/perfect flee/lucky dodge rate (those are various combat chances shown in client as "miss" and "dodge").
  • Range2: Currently unused. It's said to be the maximum range for skills. Please leave "1" here.
  • Range3: Currently unused. It's said to be the sight limit for mobs. If set to 1000 or beyond, mobs will follow you all over the map. Please leave "1" here.
  • Scale: Currently unused. Please leave "1" here.
  • Race: Defines the mob's race, see below:
    • "0" = formless
    • "1" = undead
    • "2" = animal
    • "3" = plant
    • "4" = insect
    • "5" = fish
    • "6" = demon
    • "7" = demihuman
    • "8" = angel
    • "9" = dragon
  • Element: Defines the mob's element and the level of this element. The element number has 2 digits: xy, x = level of the element and y = element, see below:
    • x = "2" for element level 1
    • x = "4" for element level 2
    • x = "6" for element level 3
    • x = "8" for element level 4
    • y = "0" for neutral element
    • y = "1" for water element
    • y = "2" for earth element
    • y = "3" for fire element
    • y = "4" for wind element
    • y = "5" for poison element
    • y = "6" for holy element
    • y = "7" for shadow element
    • y = "8" for ghost element
    • y = "9" for undead element

-> e.g. for a level 3 fire mob grab the "6" for the element level 3 and the "3" for the fire element -> Element = 63.

  • Mode: This defines the mob's behavior, see below:
Those are the basic numbers:
canMove:        1
looter:         2 (picks up drops if not aggravated)
aggressive:     4
assist:         8 (helps another mob of its kind that got aggravated)
castsensor:    16 (currently without any effect)
Boss:          32 (effect unknown)
plant:         64 (infinite defense)
canAttack:    128
detector:     256 (currently without any effect)
changetarget: 512 (currently without any effect)

You add them up to make mob, e.g those:

Plant:                         64     64 for plant (can't attack (128) and can't move (1))                   Example: Mauve Plant, Cobalt Plant, etc.
Immobile, peaceful mob:       128    128 for canAttack (but not aggressive (4) and not able to move (1))     Example: Pink Flower
Standard, peaceful mob:       129    128 for canAttack + 1 for canMove                                       Example: Fluffy
Standard, aggressive mob:     133    128 for canAttack + 4 for aggressive + 1 for canMove                    Example: Snake
Peaceful, assisting mob:      137    128 for canAttack + 8 for assist + 1 for canMove                        Example: Moggun
Peaceful looter:              131    128 for canAttack + 2 for looter + 1 for canMove                        Example: Yellow Slime  
Aggressive looter:            135    128 for canAttack + 4 for aggressive + 2 for looter + 1 for canMove     Example: Red Slime
Boss mob:                     165    133 (128+4+1) for standard aggressive mob + 32 for Boss                 Example: Reaper
  • Speed: Walking speed of the mob. "1" is the fastest, "1000" is the lowest. "100" is the normal walking speed.
  • Adelay: Attack Delay, also known as ASPD. This defines how fast the mob hits. The lower the faster, but making it too low will cause lag when several mobs attack.
  • Amotion: Attack animation motion. Lower this value and the mob's attack will be displayed in higher fps (making it shorter, too).
  • Dmotion: Damage animation motion, same as Amotion but used to display the "I am hit" animation. Coincidentally, this same value is used to determine how long it is before the mob/player can move again. Endure is dMotion = "0".
  • Drop1id: The ID of an item the mob can drop.
  • Drop1per: The drop rate of Drop1ID. "10000" = 100%, "1000" = 10%, "100" = 1", "10" = 0.1%, "1" = 0.01%, etc.
  • Same counts for Drop2ID & Drop2per, Drop3ID & Drop3per, etc.
  • Item1: Currently unused. Please leave "0" here.
  • Item2: Currently unused. Please leave "0" here.
  • MEXP: Currently unused. Please leave "0" here.
  • ExpPer: Currently unused. Please leave "0" here.
  • MVP1id: Currently unused. Please leave "0" here.
  • MVP1per: Currently unused. Please leave "0" here.
  • Same counts for MVP2id & MVP2per and MVP3id & MVP3per.
  • mutationcount: Defines how many attributes can increase. Those attributes can be LV, HP, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Speed, Adelay, HP (double chance to modify hp, no chance to modify base EXP).
  • mutationstrength: Defines how much attributes can increase, e.g. "50" = 50%.

mob_points.txt


At the top ~120 lines (number will increase with each new mob) all mobs are listed that give monster points for Aidan And Ishi's Monster Points. Usually there is a line saying "// Add more here", showing that new entries should be added above. Please ignore the lower part in this file as it's used to define which mobs Sagatha considers as good or evil.


Note: Currently the array is full which means that no new mobs can be added here. Please better ask if you can add a mob here or if there is some other solution.


client-data

As mentioned at the top of this page client-data includes everything the client shows while playing and a file naming the authors and licenses of graphics.


This escpecially means graphics like monster sprites, XML files that define how the graphics are used (e.g. using a certain part of a graphic when a mob attacks but another part when it dies), accessories that can be put on a mob (e.g. a Reinboo is nothing else than a Mouboo with several accessories like Antlers), particle effects like the Demonic Mouboo's black smoke and the monster.xml that puts all those pieces together and defines the mob's name shown by the client.


Graphics (sprites) and license.txt


Please save finished graphics as .png with transparent background and name the license of them (dual licensing CC BY-SA 3.0 and GPLv2 are required - if you have questions please ask in our IRC development channel).


Note: This is the only point of monster design pure pixel artists have to take care of as they're "job" is only creating graphics, not making monster design. Everything else can be done by content developers or other contributors.


The content developer who creates a pull request for the mob will add the author and license(s) in license.txt.


XML files for the monster sprites

This is the same path as the graphics/sprites of mobs as they belong together.


These XML files define which part of a sprite is used for which movement of a mob.


(more information will follow)


Optional: accessories and particle effects

Both graphics and XML files of accessories or particle effects are saved under the appropriate path.


Sometimes accessories and/or particle effects are used for creating a new mob. For example the Demonics Mouboo uses Antlers as accessory and a black smoke particle effect.


(more information will follow)


monsters.xml

In monsters.xml all pieces of a mob are put together so the client knows which files it should use for which mob. This includes the monster sprite, sfx, accessories and particle effects. Also it defines the mob's ID which is a different one than in the mob_db in server-data. For examples, descriptions and further information please check and compare with other entries in the monsters.xml and visit the wiki page of Manaplus.