From The Mana World
Revision as of 11:03, 18 December 2013 by Cassy (talk | contribs) (another update...)

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.


Construction-worker.png
This article is currently under construction.
This page is outdated but still can be used as a reference. It is mainly copied from the [eathena.ws "Custom Mobs" wiki page]. Feel free to join our [IRC development channel] for further information



Server side

mob_db

You'll find the mob_db under following path: tmwa-server-data/world/map/db/mob_db.txt


The mob_db has 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,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

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

  • ID: ID of the mob. You can have up to 10,000 mob IDs. Note: Is up to 10,000 up to date? (under construction)
  • 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.
  • HP: HP of the mob.
  • SP: SP of the mob.
  • 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. Note: Adding tool info (under construction).
  • 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. Note: Difference to ATK1/2? (under construction).
  • AGI: Agility of the mob. This also defines the mob flee rate.

(updated until here)

  • VIT: Vitality of the mob.
  • INT: Intelligence of the mob. This also defines its MATK.
  • DEX: Dexterity of the mob. This also defines the mob hit rate.
  • LUK: Luck of the mob. This also defines the mob perfect dodge/lucky flee/perfect flee/lucky dodge rate.
  • Range 2: Currently unused. It's said to be the maximum range for skills.
  • Range 3: 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.
  • Scale: 0 if its Small, 1 if its Medium, 2 if its Large
  • Race: 0=formless, 1=undead, 2=animal, 3=plant, 4=insect, 5=fish, 6=demon, 7=demihuman, 8=angel, 9=dragon.
  • Element: This is the tricky part. The element number has 2 parts, let's call them:

xy x=level of the element, and y=element number

X=Being for lvl 1 = 2, for lvl 2 = 4, for lvl 3 = 6, for lvl 4 = 8. 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 6 = lvl 3 and 3 = fire. It will look like = 63

  • Mode: This defines the mob behaves. The numbers are these:
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

Thanks to Wallex for these modes.

  • Speed: Walking speed of the mob. 1 is the fastest, 1000 is the lowest. 100 is the normal walking speed.
  • ADelay: 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.
  • aMotion: 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)
  • 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, obviously.(thanks to Wallex for this one)

From now on, the following fields are for drops and drops rate. Remember that these are in percentages, it means 100 = 100%

  • Drop1ID: The Item ID of the drop goes here
  • Drop1per: the rate of being dropped goes here

Same counts for Drop2ID & Drop2per, Drop3ID & Drop3per, etc.


As an add, there are a field for Drop Card:


DropCardid: ID of a card or item. You can make this mob drop another mob's card, even.
DropCardper: The chance of the card being dropped goes ere.

MVP exp: This exp is a percentage of the exp the monster gives.


MEXP: The MVP exp the mob gives when it is defeated (to the player who got the MVP reward)
ExpPer: 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:


MVP1id: The Item ID of the MVP drop goes here
MVP1per: The rate of being dropped goes here

Same counts for MVP2id & MVP2per and MVP3id & MVP3per.




As far as I can see everything below (expand) doesn't count for TMW, does it? Cassy (talk) 11:03, 18 December 2013 (UTC)

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:

mob_id,sprite_id,equip #

The confusion comes here if you go alone, but its not hard at all.


mob_id: This is your mob ID.
sprite_id: 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*
equip #: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:

MobID,SpriteID,Sex,Hair,Hair_Color,Weapon,Shield,Head_Top,Head_Middle,Head_Bottom,Option,Dye_Color


MobID: Your mob id /ok
SpriteID: The Job number you want it to look like. They are:

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


They can also be found on [http://eathena-project.googlecode.com/svn/trunk/db/const.txt] file =3


Sex: 0 for female, 1 for male
Hair: The mob hair style, goes from 1 to 23
Hair_Color: 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
Weapon: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:
Shield: Same as above
Head_Top: Same as above
Head_Middle: Same as above
Head_Bottom: Same as above
Option: 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*:

 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


Dye_Color: Same as Hair color. It goes from 0 to 77

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*

Lets look at the pattern of a mob spawn point:

<map name>,<x1>,<y1>,<x2>,<y2>%TAB%monster%TAB%
<monster name>%TAB%<mob id>,<amount>,<delay1>,<delay2>,<event>

NOTE: I had to cut the mob spawn point structure so it could fit. It's a whole line, not 2 lines.

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.


map name: name of the map o..o including the .gat Use /where along with the following coordinates
x1: 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.
y1: Y axis coordinates. It start from the bottom, and the higher it gets, the more it gets closer to the top of the map.
x2: 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.
y2: Y axis coordinates. It start from the bottom, and the higher it gets, the more it gets closer to the top of the map.
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.
*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*
monster name: 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)
mob id: the ID of your mob =D!
amount: how many mobs you want to be spawned
delay1: counts the time since a monster defined in this spawn was last respawned.
delay2: counts the time since the monster of this spawn was last killed.
That was extracted from Template:Svn 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
event: 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:

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


NOTE: I had to cut the mob_avail structure so it could fit. It's a whole line, not 3 lines.



MOD_ID: your mob ID =D!
an unused.. etc etc: 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*
state: this is the state that the mob must accomplish before being able to use this skill. The states are:

any, idle (in standby), walk (in movement), attack, dead (on killed), loot, chase (following target),
counterattack.

Extracted from the mob_skill_db.txt itself. It's at the very beginning.


SKILL_ID: 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:

2,0,0,0,0,0,10,0,no,0,0,0,weapon,0 //SM_SWORD#Œ•C—û#

And the structure is:

id,range,hit,inf,pl,nk,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count

so, the ID of the SM_SWORD, which is the Swordman's Sword Mastery by the way, is 2:

'''2''',0,0,0,0,0,10,0,no,0,0,0,weapon,0 //SM_SWORD#Œ•C—û#


SKILL_LV: 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
rate: self-explainable eh? How frequent will the mob use the skill.
casttime: self-explainable <,<!
delay: how much time between skill use. Each 1000 is 1 sec.
cancelable: if the skill cast can be interrupted. Set it either "yes" or "no" (without " " <_<!)
a target: the target of the skill. It can be:

target (you, basically), self (the mob itself), friend (a minion, aka the mobs that this mob have
(if it has mob summoning skill)


a condition type: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:

//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*


2nd Character

// 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

You can use only ONE of these conditions.


value1,value2,value3,value4,value5: 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:

80,60,40,20,10


emotion: 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:

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

For more info, go to your Template:Svn 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*.

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!

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:

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:

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

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

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:

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.

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:

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


And so on with the act file:

explosion.act        Kapha_mod.act
      v                          v
explosion.act        explosion1.act
      v                          v
Kapha_mod.act    explosion1.act
      v                          v
Kapha_mod.act    explosion.act


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!

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.

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.

Once there, we will copy and paste this:

<?xml version="1.0" encoding="euc-kr" ?>   

<enemy_monster_talk_table>   

<mob_db_name_here> 
  <discovery></discovery>
  <attack></attack>
  <hp50></hp50>
  <hp25></hp25>
  <kill></kill>
  <dead></dead>
</mob_db_name_here> 
</enemy_monster_talk_table>

Well, lets see step by step =3!:


<enemy_monster_talk_table>: This is the start of the monster talk table. Leave it as it is =3!
<mob_db_name_here>: The mob_db.txt first name you see, after the ID, goes here =3! Its used to identify the mob
<discovery>%TAB%Text Here%TAB%</discovery>: This is an event, same as the one below. When a monster see you, this one will be displayed =3!
<attack>%TAB%Text Here%TAB%</attack>: When a monster attacks you, this one will be displayed O_O!
<hp50>%TAB%Text Here%TAB%</hp50>: When a monster's hp is at 50%, this one will be displayed o..o!
<hp25>%TAB%Text Here%TAB%</hp25>: When a monster's hp is at 25%, this one will be displayed x,x
<kill>%TAB%Text Here%TAB%</kill>: When a monster kills a character/player, this one will be displayed T~T!
<dead>%TAB%Text Here%TAB%</dead>: When a monster dies by player hand, this one will be displayed ^__^!
</mob_db_name_here>: The same name of the mob_db.txt, the one after the ID.
</enemy_monster_talk_table>: 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 ._.!


Client side

Graphics

XML