summaryrefslogblamecommitdiff
path: root/doc/mob_skill_db.md
blob: 8198446d3fb25af35d278b13ce62d9e0bfa0524b (plain) (tree)
















































































































































































                                                                                                                                                                                                                                             
                                                              













































                                                                                                                  
# Monster skill database

<!--
## Copyright
> This file is part of Hercules.
> http://herc.ws - http://github.com/HerculesWS/Hercules
> 
> Copyright (C) 2020 Hercules Dev Team
> Copyright (C) Zarbony
> Copyright (C) Kenpachi
> 
> Hercules is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
> 
> This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
> See the GNU General Public License for more details.
>
> You should have received a copy of the GNU General Public License along with this program.  
> If not, see <http://www.gnu.org/licenses/>.
-->

## Description
This file is a documentation for the monster skill database files.
 * [db/mob_skill_db2.conf](../db/mob_skill_db2.conf)
 * [db/pre-re/mob_skill_db.conf](../db/pre-re/mob_skill_db.conf)
 * [db/re/mob_skill_db.conf](../db/re/mob_skill_db.conf)

--------------------------------------------------------------

## Entry structure
```
	<Monster_Constant>: {
		<Skill_Constant>: {
			ClearSkills:
			SkillLevel:
			SkillState:
			SkillTarget:
			Rate:
			CastTime:
			Delay:
			Cancelable:
			CastCondition:
			ConditionData:
			val0:
			val1:
			val2:
			val3:
			val4:
			Emotion:
			ChatMsgID:
		}
	}
```

--------------------------------------------------------------

## Field list

Name             | Data type | Default value
:--------------- | :-------- | :------------
Monster_Constant | constant  | No default value
Skill_Constant   | constant  | No default value
ClearSkills      | boolean   | false
SkillLevel       | int       | 1
SkillState       | string    | "MSS_ANY"
SkillTarget      | string    | "MST_TARGET"
Rate             | int       | 1
CastTime         | int       | 0
Delay            | int       | 0
Cancelable       | boolean   | false
CastCondition    | string    | "MSC_ALWAYS"
ConditionData    | int       | 0
val0             | int       | 0
val1             | int       | 0
val2             | int       | 0
val3             | int       | 0
val4             | int       | 0
Emotion          | int       | -1
ChatMsgID        | int       | 0

--------------------------------------------------------------

## Field explanation

### Monster_Constant
The monster's name constant, found in [mob_db.conf](../db/re/mob_db.conf) as *SpriteName*.  
There are 3 special constants for global skill assignment:  
* `ALL_MOBS`: Add skills to all monsters.
* `ALL_MOBS_BOSS`: Add skills to all boss monsters.
* `ALL_MOBS_NONBOSS`: Add skills to all non-boss monsters.

### Skill_Constant
The skill's name constant, found in [skill_db.conf](../db/re/skill_db.conf) as *Name*.  
Note: You can add multiple Skill_Constant blocks.

### ClearSkills
If set to `true`, all previously defined skills for this monster will be removed.

### SkillLevel
The skill level which should be used.  
Minimum value is `1`. Maximum value is `mob_max_skilllvl` from [conf/map/battle/skill.conf](../conf/map/battle/skill.conf#L318).

### SkillState
Defines in which state the monster is able to cast the skill.
State         | Description
:------------ | :----------
MSS_ANY       | Monster is in any state except `MSS_DEAD`.
MSS_IDLE      | Monster has no target and isn't walking.
MSS_WALK      | Monster is walking.
MSS_LOOT      | Monster is looting or walking to loot.
MSS_DEAD      | Monster is dying.
MSS_BERSERK   | Monster is attacking after starting the battle.
MSS_ANGRY     | Monster is attacking after being attacked.
MSS_RUSH      | Monster is following an enemy after being attacked.
MSS_FOLLOW    | Monster is following an enemy without being attacked.
MSS_ANYTARGET | Same as `MSS_ANY` but monster must have a target.

### SkillTarget
Defines the skill's target.
Target      | Description
:---------- | :----------
MST_TARGET  | The monster's current target.
MST_RANDOM  | A random enemy within skill range.
MST_SELF    | The monster itself.
MST_FRIEND  | A random friend within skill range. If no friend was found, `MST_SELF` is used.
MST_MASTER  | The monster's master. If no master was found, `MST_FRIEND` is used.
MST_AROUND1 | Random cell within a range of `1`. (Affects ground skills only.)
MST_AROUND2 | Random cell within a range of `2`. (Affects ground skills only.)
MST_AROUND3 | Random cell within a range of `3`. (Affects ground skills only.)
MST_AROUND4 | Random cell within a range of `4`. (Affects ground skills only.)
MST_AROUND5 | Same as `MST_AROUND1`, but the monster's current target must be in skill range.
MST_AROUND6 | Same as `MST_AROUND2`, but the monster's current target must be in skill range.
MST_AROUND7 | Same as `MST_AROUND3`, but the monster's current target must be in skill range.
MST_AROUND8 | Same as `MST_AROUND4`, but the monster's current target must be in skill range.
MST_AROUND  | Same as `MST_AROUND4`.

### Rate
The chance of successfully casting the skill if the condition is fulfilled. (10000 = 100%)  
Minimum value is `1`. Maximum value is `10000`.

### CastTime
The skill's cast time in milliseconds.  
Minimum value is `0`. Maximum value is `MOB_MAX_CASTTIME` from [src/map/mob.c](../src/map/mob.c#L81).

### Delay
The time in milliseconds before attempting to cast the same skill again.  
Minimum value is `0`. Maximum value is `MOB_MAX_DELAY` from [src/map/mob.c](../src/map/mob.c#L82).

### Cancelable
Defines whether the skill is cancelable or not.

### CastCondition
Defines the condition to successfully cast the skill.
Condition             | Description
:-------------------- | :----------
MSC_ALWAYS            | No condition.
MSC_MYHPLTMAXRATE     | Monster's HP in percent is less than or equal to `ConditionData`.
MSC_MYHPINRATE        | Monster's HP in percent is greater than or equal to `ConditionData` and less than or equal to `val0`.
MSC_FRIENDHPLTMAXRATE | Friend's HP in percent is less than or equal to `ConditionData`.
MSC_FRIENDHPINRATE    | Friend's HP in percent is greater than or equal to `ConditionData` and less than or equal to `val0`.
MSC_MYSTATUSON        | Monster has status change `ConditionData` enabled. (See [doc/constants.md](./constants.md#Status-Changes) for a list of available status changes.)
MSC_MYSTATUSOFF       | Monster has status change `ConditionData` disabled. (See [doc/constants.md](./constants.md#Status-Changes) for a list of available status changes.)
MSC_FRIENDSTATUSON    | Friend has status change `ConditionData` enabled. (See [doc/constants.md](./constants.md#Status-Changes) for a list of available status changes.)
MSC_FRIENDSTATUSOFF   | Friend has status change `ConditionData` disabled. (See [doc/constants.md](./constants.md#Status-Changes) for a list of available status changes.)
MSC_ATTACKPCGT        | Monster is attacked by more than `ConditionData` units.
MSC_ATTACKPCGE        | Monster is attacked by `ConditionData` or more units.
MSC_SLAVELT           | Monster has less than `ConditionData` slaves.
MSC_SLAVELE           | Monster has `ConditionData` or less active slaves.
MSC_CLOSEDATTACKED    | Monster is melee attacked.
MSC_LONGRANGEATTACKED | Monster is range attacked.
MSC_AFTERSKILL        | Monster has used skill `ConditionData`. (If `ConditionData` is `0`, all skills are triggered.)
MSC_SKILLUSED         | Skill `ConditionData` was used on the monster. (If `ConditionData` is `0`, all skills are triggered.)
MSC_CASTTARGETED      | A skill is being cast on the monster.
MSC_RUDEATTACKED      | Monster was rude attacked `RUDE_ATTACKED_COUNT` times. ([src/map/mob.c#L84](../src/map/mob.c))
MSC_MASTERHPLTMAXRATE | The monster master's HP in percent is less than `ConditionData`.
MSC_MASTERATTACKED    | The monster's master is attacked.
MSC_ALCHEMIST         | The monster was summoned by an Alchemist class character.
MSC_SPAWN             | The monster spawns.
MSC_MAGICATTACKED     | The monster has received magic damage.

### ConditionData
Additional cast condition data. Meaning depends on the situation. See `CastCondition` table.

### val0
Additional data. Meaning depends on the situation.
 * `MSC_MYHPINRATE`/`MSC_FRIENDHPINRATE`: See `CastCondition` table.
 * `NPC_SUMMONMONSTER`: Slave monster ID.
 * `NPC_SUMMONSLAVE`: Slave monster ID.
 * `NPC_METAMORPHOSIS`: Transform monster ID.
 * `NPC_EMOTION`: Emotion ID. (See [doc/constants.md](./constants.md#emotes) for a list of available emotions.)
 * `NPC_EMOTION_ON`: Emotion ID. (See [doc/constants.md](./constants.md#emotes) for a list of available emotions.)

### val1
Additional data. Meaning depends on the situation.
 * `NPC_SUMMONMONSTER`: Slave monster ID.
 * `NPC_SUMMONSLAVE`: Slave monster ID.
 * `NPC_METAMORPHOSIS`: Transform monster ID.
 * `NPC_EMOTION`: Monster's mode is changed to specified value.
 * `NPC_EMOTION_ON`: Monster's mode is changed to specified value.

### val2
Additional data. Meaning depends on the situation.
 * `NPC_SUMMONMONSTER`: Slave monster ID.
 * `NPC_SUMMONSLAVE`: Slave monster ID.
 * `NPC_METAMORPHOSIS`: Transform monster ID.

### val3
Additional data. Meaning depends on the situation.
 * `NPC_SUMMONMONSTER`: Slave monster ID.
 * `NPC_SUMMONSLAVE`: Slave monster ID.
 * `NPC_METAMORPHOSIS`: Transform monster ID.

### val4
Additional data. Meaning depends on the situation.
 * `NPC_SUMMONMONSTER`: Slave monster ID.
 * `NPC_SUMMONSLAVE`: Slave monster ID.
 * `NPC_METAMORPHOSIS`: Transform monster ID.

### Emotion
The ID of the emotion the monster will use when casting the skill.  
(See [doc/constants.md](./constants.md#emotes) for a list of available emotions.)

### ChatMsgID
The ID of the message the monster will say when casting the skill.
(See [db/mob_chat_db.txt](../db/mob_chat_db.txt) for a list of available messages.)