//================= Hercules Database ===================================== //= _ _ _ //= | | | | | | //= | |_| | ___ _ __ ___ _ _| | ___ ___ //= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| //= | | | | __/ | | (__| |_| | | __/\__ \ //= \_| |_/\___|_| \___|\__,_|_|\___||___/ //================= License =============================================== //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= //= Copyright (C) 2018 Hercules Dev Team //= //= 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 . //========================================================================= //= Monster Skill Database //========================================================================= mob_skill_db:( { /************************************************************************** ************* Entry structure ******************************************** ************************************************************************** : { : { ClearSkills: (boolean, defaults to false) allows cleaning all previous defined skills for the mob. SkillLevel: (int, defaults to 1) SkillState: (string, defaults to "MSS_ANY") SkillTarget: (string, defaults to "MST_TARGET") Rate: (int, defaults to 1) Rate refers to the chance of the skill being casted when the condition is fulfilled.(10000 = 100%) CastTime: (int, defaults to 0) CastTime is the time in milliseconds that has to be pass to casting skill Delay: (int, defaults to 0) Delay is the time in milliseconds that has to be pass before recasting the same skill. Cancelable: (boolean, defaults to false) CastCondition: (string, defaults to "MSC_ALWAYS") ConditionData: (int, defaults to 0) val0: (int, defaults to 0) val1: (int, defaults to 0) val2: (int, defaults to 0) val3: (int, defaults to 0) val4: (int, defaults to 0) Emotion: (int, defaults to -1) ChatMsgID: (int, defaults to 0) } } // STATE: // any (except dead) / idle (in standby) / walk (in movement) / dead (on killed) / // loot /attack / angry (like attack, except player has not attacked mob yet) / // chase (following target, after being attacked) / follow (following target, // without being attacked) / anytarget (attack+angry+chase+follow) SKILL_STATES = { "any": "MSS_ANY", "idle": "MSS_IDLE", "walk": "MSS_WALK", "loot": "MSS_LOOT", "dead": "MSS_DEAD", "attack": "MSS_BERSERK", "angry": "MSS_ANGRY", "chase": "MSS_RUSH", "follow": "MSS_FOLLOW", "anytarget": "MSS_ANYTARGET" } // TARGET: // target (current target) / self / friend / master / randomtarget (any enemy within skill's range) // // The following are for ground-skills, a random target tile is selected from the specified area: // around1 (3x3 area around self) / around2 (5x5 area around self) / // around3 (7x7 area around self) / around4 (9x9 area around self) / // around5 (3x3 area around target) / around6 (5x5 area around target) / // around7 (7x7 area around target) / around8 (9x9 area around target) / // around = around4 SKILL_TARGET = { "target": "MST_TARGET", "randomtarget": "MST_RANDOM", "self": "MST_SELF", "friend": "MST_FRIEND", "master": "MST_MASTER", "around5": "MST_AROUND5", "around6": "MST_AROUND6", "around7": "MST_AROUND7", "around8": "MST_AROUND8", "around1": "MST_AROUND1", "around2": "MST_AROUND2", "around3": "MST_AROUND3", "around4": "MST_AROUND4", "around": "MST_AROUND" } // CONDITION: // always Unconditional (no condition value). // onspawn When mob spawns/respawns (no condition value). // myhpltmaxrate When mob's HP drops to the specified %. // myhpinrate When mob's HP is in a certain % range (condition value = lower bound, val1 = upper bound). // mystatuson If mob has the specified abnormality in status. // mystatusoff If mob has ended the specified abnormality in status. // friendhpltmaxrate When mob's friend's HP drops to the specified %. // friendhpinrate When mob's friend's HP is in a certain % range (condition value = lower bound, val1 = upper bound). // friendstatuson If friend has the specified abnormality in status. // friendstatusoff If friend has ended the specified abnormality in status. // attackpcgt When attack PCs become greater than specified number. // attackpcge When attack PCs become greater than or equal to the specified number. // slavelt When number of slaves is less than the original specified number. // slavele When number of slaves is less than or equal to the original specified number. // closedattacked When close range melee attacked (no condition value). // longrangeattacked When long range attacked, ex. bows, guns, ranged skills (no condition value). // skillused When the specified skill is used on the mob. // afterskill After mob casts the specified skill. // casttargeted When a target is in cast range (no condition value). // rudeattacked When mob is rude attacked (no condition value). SKILL_COND1 = { "always": "MSC_ALWAYS", "myhpltmaxrate": "MSC_MYHPLTMAXRATE", "myhpinrate": "MSC_MYHPINRATE", "friendhpltmaxrate": "MSC_FRIENDHPLTMAXRATE", "friendhpinrate": "MSC_FRIENDHPINRATE", "mystatuson": "MSC_MYSTATUSON", "mystatusoff": "MSC_MYSTATUSOFF", "friendstatuson": "MSC_FRIENDSTATUSON", "friendstatusoff": "MSC_FRIENDSTATUSOFF", "attackpcgt": "MSC_ATTACKPCGT", "attackpcge": "MSC_ATTACKPCGE", "slavelt": "MSC_SLAVELT", "slavele": "MSC_SLAVELE", "closedattacked": "MSC_CLOSEDATTACKED", "longrangeattacked": "MSC_LONGRANGEATTACKED", "skillused": "MSC_SKILLUSED", "afterskill": "MSC_AFTERSKILL", "casttargeted": "MSC_CASTTARGETED", "rudeattacked": "MSC_RUDEATTACKED", "masterhpltmaxrate": "MSC_MASTERHPLTMAXRATE", "masterattacked": "MSC_MASTERATTACKED", "alchemist": "MSC_ALCHEMIST", "onspawn": "MSC_SPAWN" } // Status abnormalities specified through the statuson/statusoff system: // anybad (any type of state change) / stone / freeze / stun / sleep / // poison / curse / silence / confusion / blind / hiding / sight (unhidden) // // Note: if a negative MobID is provided, the skill will be treated as 'global': // -1: added for all boss types. // -2: added for all normal types. // -4: added for all mobs. SKILL_COND2 = { "anybad": "MSC_ANY", "stone": "SC_STONE", "freeze": "SC_FREEZE", "stun": "SC_STUN", "sleep": "SC_SLEEP", "poison": "SC_POISON", "curse": "SC_CURSE", "silence": "SC_SILENCE", "confusion": "SC_CONFUSION", "blind": "SC_BLIND", "hiding": "SC_HIDING", "sight": "SC_SIGHT" } **************************************************************************/ SlimeBlast: { NPC_SELFDESTRUCTION: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 10000 CastTime: 100 Delay: 500 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_ALWAYS" } } /**********************************************************************/ BlueSlime: { // TODO: use NPC_SUMMONMONSTER? NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 8000 CastTime: 1200 Delay: 18000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 1 val0: 1090 } } /**********************************************************************/ WhiteSlime: { NPC_SELFDESTRUCTION: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 10000 CastTime: 100 Delay: 500 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_ALWAYS" } } /**********************************************************************/ SantaSlime: { NPC_EMOTION: { SkillState: "MSS_LOOT" SkillLevel: 1 Rate: 10000 SkillTarget: "MST_SELF" CastCondition: "MSC_ALWAYS" val0: 101 } NPC_EMOTION: { SkillState: "MSS_WALK" SkillLevel: 1 Rate: 5000 SkillTarget: "MST_SELF" CastCondition: "MSC_ALWAYS" val0: 5 } NPC_EMOTION: { SkillState: "MSS_IDLE" SkillLevel: 1 Rate: 5000 SkillTarget: "MST_SELF" CastCondition: "MSC_ALWAYS" val0: 7 } NPC_SUMMONSLAVE: { SkillState: "MSS_BERSERK" SkillLevel: 5 Rate: 10000 CastTime: 2000 Delay: 60000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELE" ConditionData: 3 val0: 1016 } NPC_SUMMONSLAVE: { SkillState: "MSS_IDLE" SkillLevel: 5 Rate: 10000 CastTime: 2000 Delay: 60000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELE" ConditionData: 3 val0: 1016 } } /**********************************************************************/ GreenSlimeMother: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 2 Rate: 8000 CastTime: 700 Delay: 8000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 2 val0: 1110 } } /**********************************************************************/ SeaSlimeMother: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 2 Rate: 8000 CastTime: 700 Delay: 8000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 2 val0: 1109 } } /**********************************************************************/ PinkFlower: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 10000 CastTime: 1000 Delay: 60000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 4 val0: 1049 } NPC_BLINDATTACK: { SkillState: "MSS_BERSERK" SkillLevel: 5 Rate: 10000 CastTime: 1000 Delay: 300000 SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } } /**********************************************************************/ // Note: Cannot explode if poisoned BallLightning: { NPC_SELFDESTRUCTION: { SkillState: "MSS_BERSERK" SkillLevel: 3 Rate: 10000 CastTime: 500 Delay: 3000 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_MYSTATUSOFF" ConditionData: "SC_POISON" } } /**********************************************************************/ Luvia: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 10000 CastTime: 1000 Delay: 60000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 32 val0: 1103 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 2 Rate: 10000 CastTime: 10 Delay: 5000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 7 val0: 1101 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 10000 CastTime: 10 Delay: 20000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 64 val0: 1101 } } /**********************************************************************/ FeyElement: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 5000 CastTime: 100 Delay: 500 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 6 val0: 1083 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 5000 CastTime: 100 Delay: 500 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 6 val0: 1084 } } /**********************************************************************/ Tormenta: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 10000 CastTime: 1000 Delay: 150000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 32 val0: 1022 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 2 Rate: 10000 CastTime: 1000 Delay: 70000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 7 val0: 1103 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 2 Rate: 10000 CastTime: 10 Delay: 15000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 7 val0: 1101 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 10000 CastTime: 10 Delay: 32000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 64 val0: 1101 } NPC_WIDECURSE: { SkillState: "MSS_BERSERK" SkillLevel: 3 Rate: 620 CastTime: 10 Delay: 1000 SkillTarget: "MST_SELF" CastCondition: "MSC_MYHPLTMAXRATE" ConditionData: 40 } } /**********************************************************************/ SUSAN: { NPC_EMOTION: { SkillState: "MSS_IDLE" SkillLevel: 1 Rate: 5000 SkillTarget: "MST_SELF" CastCondition: "MSC_ALWAYS" val0: 118 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 9 Rate: 1000 CastTime: 1000 Delay: 18000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 69 val0: 1135 Emotion: 104 } } /**********************************************************************/ Reaper: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 8000 CastTime: 1000 Delay: 5000 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 1 val0: 1070 } NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 8000 CastTime: 1000 Delay: 5000 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 2 val0: 1070 // TODO: Scythe } } /**********************************************************************/ TheLost: { NPC_SUMMONSLAVE: { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 8000 CastTime: 1000 Delay: 5000 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 2 val0: 1106 } NPC_WIDESILENCE: { SkillState: "MSS_BERSERK" SkillLevel: 5 Rate: 8000 CastTime: 1000 Delay: 90000 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_ALWAYS" } NPC_WIDESOULDRAIN: { SkillState: "MSS_BERSERK" SkillLevel: 3 Rate: 8000 CastTime: 1000 Delay: 180000 Cancelable: true SkillTarget: "MST_SELF" CastCondition: "MSC_MYHPLTMAXRATE" ConditionData: 60 } } } )