skill.h 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102
  1. // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef _SKILL_H_
  4. #define _SKILL_H_
  5. #include "../common/mmo.h" // MAX_SKILL, struct square
  6. #include "../common/db.h"
  7. #include "map.h" // struct block_list
  8. struct map_session_data;
  9. struct homun_data;
  10. struct skill_unit;
  11. struct skill_unit_group;
  12. struct status_change_entry;
  13. #define MAX_SKILL_PRODUCE_DB 270 /// Max Produce DB
  14. #define MAX_PRODUCE_RESOURCE 12 /// Max Produce requirements
  15. #define MAX_SKILL_ARROW_DB 150 /// Max Arrow Creation DB
  16. #define MAX_ARROW_RESULT 5 /// Max Arrow results/created
  17. #define MAX_SKILL_ABRA_DB 160 /// Max Skill list of Abracadabra DB
  18. #define MAX_SKILL_IMPROVISE_DB 30 /// Max Skill for Improvise
  19. #define MAX_SKILL_LEVEL 10 /// Max Skill Level (for skill_db storage)
  20. #define MAX_MOBSKILL_LEVEL 100 /// Max monster skill level (on skill usage)
  21. #define MAX_SKILL_CRIMSON_MARKER 3 /// Max Crimson Marker targets (RL_C_MARKER)
  22. #define SKILL_NAME_LENGTH 31 /// Max Skill Name length
  23. #define SKILL_DESC_LENGTH 31 /// Max Skill Desc length
  24. DBMap* skilldb_name2id;
  25. /// Constants to identify a skill's nk value (damage properties)
  26. /// The NK value applies only to non INF_GROUND_SKILL skills
  27. /// when determining skill castend function to invoke.
  28. enum e_skill_nk {
  29. NK_NO_DAMAGE = 0x01,
  30. NK_SPLASH = 0x02|0x04, // 0x4 = splash & split
  31. NK_SPLASHSPLIT = 0x04,
  32. NK_NO_CARDFIX_ATK = 0x08,
  33. NK_NO_ELEFIX = 0x10,
  34. NK_IGNORE_DEF = 0x20,
  35. NK_IGNORE_FLEE = 0x40,
  36. NK_NO_CARDFIX_DEF = 0x80,
  37. };
  38. /// Constants to identify the skill's inf value:
  39. enum e_skill_inf {
  40. INF_ATTACK_SKILL = 0x01,
  41. INF_GROUND_SKILL = 0x02,
  42. INF_SELF_SKILL = 0x04, // Skills casted on self where target is automatically chosen
  43. // 0x08 not assigned
  44. INF_SUPPORT_SKILL = 0x10,
  45. INF_TARGET_TRAP = 0x20,
  46. };
  47. /// A skill with 3 would be no damage + splash: area of effect.
  48. /// Constants to identify a skill's inf2 value.
  49. enum e_skill_inf2 {
  50. INF2_QUEST_SKILL = 0x00001,
  51. INF2_NPC_SKILL = 0x00002, //NPC skills are those that players can't have in their skill tree.
  52. INF2_WEDDING_SKILL = 0x00004,
  53. INF2_SPIRIT_SKILL = 0x00008,
  54. INF2_GUILD_SKILL = 0x00010,
  55. INF2_SONG_DANCE = 0x00020,
  56. INF2_ENSEMBLE_SKILL = 0x00040,
  57. INF2_TRAP = 0x00080,
  58. INF2_TARGET_SELF = 0x00100, //Refers to ground placed skills that will target the caster as well (like Grandcross)
  59. INF2_NO_TARGET_SELF = 0x00200,
  60. INF2_PARTY_ONLY = 0x00400,
  61. INF2_GUILD_ONLY = 0x00800,
  62. INF2_NO_ENEMY = 0x01000,
  63. INF2_AUTOSHADOWSPELL = 0x02000, // Skill that available for SC_AUTOSHADOWSPELL
  64. INF2_CHORUS_SKILL = 0x04000, // Chorus skill
  65. INF2_NO_BG_DMG = 0x08000, // Skill that ignore bg reduction
  66. INF2_NO_GVG_DMG = 0x10000, // Skill that ignore gvg reduction
  67. INF2_NO_NEARNPC = 0x20000, // disable to cast skill if near with NPC [Cydh]
  68. };
  69. /// Skill info type 3
  70. enum e_skill_inf3 {
  71. INF3_NOLP = 0x00001, // Skill that can ignore Land Protector
  72. INF3_NOENDCAMOUFLAGE = 0x00002, // Skill that doesn't end camouflage
  73. INF3_USABLE_HIDING = 0x00004, // Skill that can be use in hiding
  74. INF3_USABLE_DANCE = 0x00008, // Skill that can be use while in dancing state
  75. INF3_HIT_EMP = 0x00010, // Skill that could hit emperium
  76. INF3_STATIS_BL = 0x00020, // Skill blocked by statis
  77. INF3_KAGEHUMI_BL = 0x00040, // Skill blocked by kagehumi
  78. INF3_EFF_VULTURE = 0x00080, // Skill range affected by AC_VULTURE
  79. INF3_EFF_SNAKEEYE = 0x00100, // Skill range affected by GS_SNAKEEYE
  80. INF3_EFF_SHADOWJUMP = 0x00200, // Skill range affected by NJ_SHADOWJUMP
  81. INF3_EFF_RADIUS = 0x00400, // Skill range affected by WL_RADIUS
  82. INF3_EFF_RESEARCHTRAP = 0x00800, // Skill range affected by RA_RESEARCHTRAP
  83. INF3_NO_EFF_HOVERING = 0x01000, // Skill that does not affect user that has SC_HOVERING active
  84. INF3_USABLE_WARG = 0x02000, // Skill that can be use while riding warg
  85. INF3_DIS_MADO = 0x04000, // Skill that can't be used while in mado
  86. INF3_USABLE_MANHOLE = 0x08000, // Skill that can be used to target while under SC__MANHOLE effect
  87. INF3_HIT_HIDING = 0x10000, // Skill that affects hidden targets
  88. INF3_SC_GLOOMYDAY_SK = 0x20000, // Skill that affects SC_GLOOMYDAY_SK
  89. };
  90. /// Walk intervals at which chase-skills are attempted to be triggered.
  91. /// If you change this, make sure it's an odd value (for icewall block behavior).
  92. #define WALK_SKILL_INTERVAL 5
  93. /// Flags passed to skill_attack/skill_area_sub
  94. enum e_skill_display {
  95. SD_LEVEL = 0x1000, // skill_attack will send -1 instead of skill level (affects display of some skills)
  96. SD_ANIMATION = 0x2000, // skill_attack will use '5' instead of the skill's 'type' (this makes skills show an animation). Also being used in skill_attack for splash skill (NK_SPLASH) to check status_check_skilluse
  97. SD_SPLASH = 0x4000, // skill_area_sub will count targets in skill_area_temp[2]
  98. SD_PREAMBLE = 0x8000, // skill_area_sub will transmit a 'magic' damage packet (-30000 dmg) for the first target selected
  99. };
  100. #define MAX_SKILL_ITEM_REQUIRE 10 /// Maximum required items
  101. #define MAX_SKILL_STATUS_REQUIRE 3 /// Maximum required statuses
  102. #define MAX_SKILL_EQUIP_REQUIRE 10 /// Maximum required equipped item
  103. /// Single skill requirement. !TODO: Cleanup the variable types
  104. struct skill_condition {
  105. int16 hp; ///< HP cost
  106. int16 mhp; ///< Max HP to trigger
  107. int16 sp; /// SP cost
  108. int16 hp_rate; /// HP cost (%)
  109. int16 sp_rate; /// SP cost (%)
  110. uint32 zeny; /// Zeny cost
  111. uint32 weapon; /// Weapon type. Combined bitmask of enum weapon_type (1<<weapon)
  112. uint16 ammo; /// Ammo type. Combine bitmask of enum ammo_type (1<<ammo)
  113. int8 ammo_qty; /// Amount of ammo
  114. uint8 state; /// State/condition. @see enum e_require_state
  115. int8 spiritball; /// Spiritball cost
  116. uint16 itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item
  117. uint16 amount[MAX_SKILL_ITEM_REQUIRE]; /// Amount of item
  118. uint16 *eqItem; /// List of equipped item
  119. enum sc_type *status; /// List of Status required (SC)
  120. uint8 status_count, /// Count of SC
  121. eqItem_count; /// Count of equipped item
  122. };
  123. /// Skill requirement structure. !TODO: Cleanup the variable types that use array [MAX_SKILL_LEVEL]
  124. struct s_skill_require {
  125. int hp[MAX_SKILL_LEVEL]; ///< HP cost
  126. int mhp[MAX_SKILL_LEVEL]; ///< Max HP to trigger
  127. int sp[MAX_SKILL_LEVEL]; /// SP cost
  128. int hp_rate[MAX_SKILL_LEVEL]; /// HP cost (%)
  129. int sp_rate[MAX_SKILL_LEVEL]; /// SP cost (%)
  130. int zeny[MAX_SKILL_LEVEL]; /// Zeny cost
  131. uint32 weapon; /// Weapon type. Combined bitmask of enum weapon_type (1<<weapon)
  132. uint16 ammo; /// Ammo type. Combine bitmask of enum ammo_type (1<<ammo)
  133. int ammo_qty[MAX_SKILL_LEVEL]; /// Amount of ammo
  134. uint8 state; /// State/condition. @see enum e_require_state
  135. int spiritball[MAX_SKILL_LEVEL]; /// Spiritball cost
  136. int itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item
  137. int amount[MAX_SKILL_ITEM_REQUIRE]; /// Amount of item
  138. uint16 *eqItem; /// List of equipped item
  139. enum sc_type *status; /// List of Status required (SC)
  140. uint8 status_count, /// Count of SC
  141. eqItem_count; /// Count of equipped item
  142. };
  143. /// Database skills. !TODO: Cleanup the variable types that use array [MAX_SKILL_LEVEL]
  144. struct s_skill_db {
  145. // skill_db.txt
  146. uint16 nameid; ///< Skill ID
  147. char name[SKILL_NAME_LENGTH]; ///< AEGIS_Name
  148. char desc[SKILL_DESC_LENGTH]; ///< English Name
  149. int range[MAX_SKILL_LEVEL]; ///< Range
  150. int8 hit; ///< Hit type
  151. uint8 inf; ///< Inf: 0- passive, 1- enemy, 2- place, 4- self, 16- friend, 32- trap
  152. int element[MAX_SKILL_LEVEL]; ///< Element
  153. uint8 nk; ///< Damage properties
  154. int splash[MAX_SKILL_LEVEL]; ///< Splash effect
  155. uint8 max; ///< Max level
  156. int num[MAX_SKILL_LEVEL]; ///< Number of hit
  157. bool castcancel; ///< Cancel cast when being hit
  158. int16 cast_def_rate; ///< Def rate during cast a skill
  159. uint16 skill_type; ///< Skill type
  160. int blewcount[MAX_SKILL_LEVEL]; ///< Blew count
  161. uint32 inf2; ///<
  162. uint32 inf3; ///<
  163. int maxcount[MAX_SKILL_LEVEL]; ///< Max number skill can be casted in same map
  164. // skill_castnodex_db.txt
  165. uint8 castnodex; ///< 1 - Not affected by dex, 2 - Not affected by SC, 4 - Not affected by item
  166. uint8 delaynodex; ///< 1 - Not affected by dex, 2 - Not affected by SC, 4 - Not affected by item
  167. // skill_nocast_db.txt
  168. uint32 nocast; ///< Skill cannot be casted at this zone
  169. // skill_unit_db.txt
  170. uint16 unit_id[2]; ///< Unit ID. @see enum s_skill_unit_id
  171. int unit_layout_type[MAX_SKILL_LEVEL]; ///< Layout type. -1 is special layout, others are square with lenght*width: (val*2+1)^2
  172. int unit_range[MAX_SKILL_LEVEL]; ///< Unit cell effect range
  173. int16 unit_interval; ///< Interval
  174. uint32 unit_target; ///< Unit target. @see enum e_battle_check_target
  175. uint32 unit_flag; ///< Unit flags. @see enum e_skill_unit_flag
  176. // skill_cast_db.txt
  177. int cast[MAX_SKILL_LEVEL]; ///< Variable casttime
  178. #ifdef RENEWAL_CAST
  179. int fixed_cast[MAX_SKILL_LEVEL]; ///< If -1 means 20% than 'cast'
  180. #endif
  181. int walkdelay[MAX_SKILL_LEVEL]; ///< Delay to walk after casting
  182. int delay[MAX_SKILL_LEVEL]; ///< Global delay (delay before reusing all skills)
  183. int cooldown[MAX_SKILL_LEVEL]; ///< Cooldown (delay before reusing same skill)
  184. int upkeep_time[MAX_SKILL_LEVEL]; ///< Duration
  185. int upkeep_time2[MAX_SKILL_LEVEL]; ///< Duration2
  186. // skill_require_db.txt
  187. struct s_skill_require require; ///< Skill requirement
  188. // skill_nonearnpc_db.txt
  189. uint8 unit_nonearnpc_range; //additional range for UF_NONEARNPC or INF2_NO_NEARNPC [Cydh]
  190. uint8 unit_nonearnpc_type; //type of NPC [Cydh]
  191. // skill_damage_db.txt
  192. #ifdef ADJUST_SKILL_DAMAGE
  193. struct s_skill_damage damage;
  194. #endif
  195. // skill_copyable_db.txt
  196. struct s_copyable { // [Cydh]
  197. uint8 option;
  198. uint16 joballowed, req_opt;
  199. } copyable;
  200. };
  201. extern struct s_skill_db **skill_db;
  202. #define MAX_SKILL_UNIT_LAYOUT 52
  203. #define MAX_SKILL_UNIT_LAYOUT2 17
  204. #define MAX_SQUARE_LAYOUT 5 // 11*11 Placement of a maximum unit
  205. #define MAX_SKILL_UNIT_COUNT ((MAX_SQUARE_LAYOUT*2+1)*(MAX_SQUARE_LAYOUT*2+1))
  206. struct s_skill_unit_layout {
  207. int count;
  208. int dx[MAX_SKILL_UNIT_COUNT];
  209. int dy[MAX_SKILL_UNIT_COUNT];
  210. };
  211. struct s_skill_nounit_layout {
  212. int count;
  213. int dx[MAX_SKILL_UNIT_COUNT];
  214. int dy[MAX_SKILL_UNIT_COUNT];
  215. };
  216. #define MAX_SKILLTIMERSKILL 15
  217. struct skill_timerskill {
  218. int timer;
  219. int src_id;
  220. int target_id;
  221. int map;
  222. short x,y;
  223. uint16 skill_id,skill_lv;
  224. int type; // a BF_ type (NOTE: some places use this as general-purpose storage...)
  225. int flag;
  226. };
  227. #define MAX_SKILLUNITGROUP 25 /// Maximum skill unit group (for same skill each source)
  228. /// Skill unit group
  229. struct skill_unit_group {
  230. int src_id; /// Caster ID/RID, if player is account_id
  231. int party_id; /// Party ID
  232. int guild_id; /// Guild ID
  233. int bg_id; /// Battleground ID
  234. int map; /// Map
  235. int target_flag; /// Holds BCT_* flag for battle_check_target
  236. int bl_flag; /// Holds BL_* flag for map_foreachin* functions
  237. unsigned int tick; /// Tick when skill unit initialized
  238. int limit, /// Life time
  239. interval; /// Timer interval
  240. uint16 skill_id, /// Skill ID
  241. skill_lv; /// Skill level
  242. int val1, val2, val3; /// Values
  243. char *valstr; /// String value, used for HT_TALKIEBOX & RG_GRAFFITI
  244. int unit_id; /// Unit ID (for client effect)
  245. int group_id; /// Skill Group ID
  246. int link_group_id; /// Linked group that should be deleted if this one is deleted
  247. int unit_count, /// Number of unit at this group
  248. alive_count; /// Number of alive unit
  249. int item_id; /// Store item used.
  250. struct skill_unit *unit; /// Skill Unit
  251. struct {
  252. unsigned ammo_consume : 1; // Need to consume ammo
  253. unsigned song_dance : 2; //0x1 Song/Dance, 0x2 Ensemble
  254. unsigned guildaura : 1; // Guild Aura
  255. } state;
  256. };
  257. /// Skill unit
  258. struct skill_unit {
  259. struct block_list bl;
  260. struct skill_unit_group *group; /// Skill group reference
  261. int limit;
  262. int val1, val2;
  263. short alive, range;
  264. };
  265. #define MAX_SKILLUNITGROUPTICKSET 25
  266. struct skill_unit_group_tickset {
  267. unsigned int tick;
  268. int id;
  269. };
  270. enum e_skill_unit_flag {
  271. UF_DEFNOTENEMY = 0x00001, // If 'defunit_not_enemy' is set, the target is changed to 'friend'
  272. UF_NOREITERATION = 0x00002, // Spell cannot be stacked
  273. UF_NOFOOTSET = 0x00004, // Spell cannot be cast near/on targets
  274. UF_NOOVERLAP = 0x00008, // Spell effects do not overlap
  275. UF_PATHCHECK = 0x00010, // Only cells with a shootable path will be placed
  276. UF_NOPC = 0x00020, // May not target players
  277. UF_NOMOB = 0x00040, // May not target mobs
  278. UF_SKILL = 0x00080, // May target skills
  279. UF_DANCE = 0x00100, // Dance
  280. UF_ENSEMBLE = 0x00200, // Duet
  281. UF_SONG = 0x00400, // Song
  282. UF_DUALMODE = 0x00800, // Spells should trigger both ontimer and onplace/onout/onleft effects.
  283. UF_NOKNOCKBACK = 0x01000, // Skill unit cannot be knocked back
  284. UF_RANGEDSINGLEUNIT = 0x02000, // hack for ranged layout, only display center
  285. UF_REM_CRAZYWEED = 0x04000, // removed by Crazyweed
  286. UF_REM_FIRERAIN = 0x08000, // removed by Fire Rain
  287. UF_KNOCKBACK_GROUP = 0x10000, // knockback skill unit with its group instead of single unit
  288. };
  289. /// Create Database item
  290. struct s_skill_produce_db {
  291. unsigned short nameid; /// Product ID
  292. unsigned short req_skill; /// Required Skill
  293. unsigned char req_skill_lv, /// Required Skill Level
  294. itemlv; /// Item Level
  295. unsigned short mat_id[MAX_PRODUCE_RESOURCE], /// Materials needed
  296. mat_amount[MAX_PRODUCE_RESOURCE]; /// Amount of each materials
  297. };
  298. extern struct s_skill_produce_db skill_produce_db[MAX_SKILL_PRODUCE_DB];
  299. /// Creating database arrow
  300. struct s_skill_arrow_db {
  301. unsigned short nameid, /// Material ID
  302. cre_id[MAX_ARROW_RESULT], /// Arrow created
  303. cre_amount[MAX_ARROW_RESULT]; /// Amount of each arrow created
  304. };
  305. extern struct s_skill_arrow_db skill_arrow_db[MAX_SKILL_ARROW_DB];
  306. /// Abracadabra database
  307. struct s_skill_abra_db {
  308. uint16 skill_id; /// Skill ID
  309. char name[SKILL_NAME_LENGTH]; /// Shouted skill name
  310. int per[MAX_SKILL_LEVEL]; /// Probability summoned
  311. };
  312. extern struct s_skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB];
  313. extern unsigned short skill_abra_count;
  314. void do_init_skill(void);
  315. void do_final_skill(void);
  316. /// Cast type
  317. enum { CAST_GROUND, CAST_DAMAGE, CAST_NODAMAGE };
  318. /// Returns the cast type of the skill: ground cast, castend damage, castend no damage
  319. int skill_get_casttype(uint16 skill_id); //[Skotlex]
  320. const char* skill_get_name( uint16 skill_id ); // [Skotlex]
  321. const char* skill_get_desc( uint16 skill_id ); // [Skotlex]
  322. int skill_tree_get_max( uint16 skill_id, int b_class ); // Celest
  323. // Accessor to the skills database
  324. int skill_get_index_( uint16 skill_id, bool silent, const char *func, const char *file, int line );
  325. #define skill_get_index(skill_id) skill_get_index_((skill_id), false, __FUNCTION__, __FILE__, __LINE__) /// Get skill index from skill_id (common usage on source)
  326. #define skill_get_index2(skill_id) skill_get_index_((skill_id), true, __FUNCTION__, __FILE__, __LINE__) /// Get skill index from skill_id (used when reading skill_db files)
  327. int skill_get_type( uint16 skill_id );
  328. int skill_get_hit( uint16 skill_id );
  329. int skill_get_inf( uint16 skill_id );
  330. int skill_get_ele( uint16 skill_id , uint16 skill_lv );
  331. int skill_get_nk( uint16 skill_id );
  332. int skill_get_max( uint16 skill_id );
  333. int skill_get_range( uint16 skill_id , uint16 skill_lv );
  334. int skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv);
  335. int skill_get_splash( uint16 skill_id , uint16 skill_lv );
  336. int skill_get_num( uint16 skill_id ,uint16 skill_lv );
  337. int skill_get_cast( uint16 skill_id ,uint16 skill_lv );
  338. int skill_get_delay( uint16 skill_id ,uint16 skill_lv );
  339. int skill_get_walkdelay( uint16 skill_id ,uint16 skill_lv );
  340. int skill_get_time( uint16 skill_id ,uint16 skill_lv );
  341. int skill_get_time2( uint16 skill_id ,uint16 skill_lv );
  342. int skill_get_castnodex( uint16 skill_id );
  343. int skill_get_castdef( uint16 skill_id );
  344. int skill_get_nocast( uint16 skill_id );
  345. int skill_get_unit_id(uint16 skill_id,int flag);
  346. int skill_get_inf2( uint16 skill_id );
  347. int skill_get_castcancel( uint16 skill_id );
  348. int skill_get_maxcount( uint16 skill_id ,uint16 skill_lv );
  349. int skill_get_blewcount( uint16 skill_id ,uint16 skill_lv );
  350. int skill_get_unit_flag( uint16 skill_id );
  351. int skill_get_unit_target( uint16 skill_id );
  352. int skill_get_inf3( uint16 skill_id );
  353. // Accessor for skill requirements
  354. int skill_get_hp( uint16 skill_id ,uint16 skill_lv );
  355. int skill_get_mhp( uint16 skill_id ,uint16 skill_lv );
  356. int skill_get_sp( uint16 skill_id ,uint16 skill_lv );
  357. int skill_get_status_count( uint16 skill_id );
  358. int skill_get_hp_rate( uint16 skill_id, uint16 skill_lv );
  359. int skill_get_sp_rate( uint16 skill_id, uint16 skill_lv );
  360. int skill_get_zeny( uint16 skill_id ,uint16 skill_lv );
  361. int skill_get_weapontype( uint16 skill_id );
  362. int skill_get_ammotype( uint16 skill_id );
  363. int skill_get_ammo_qty( uint16 skill_id, uint16 skill_lv );
  364. int skill_get_state(uint16 skill_id);
  365. //int skill_get_status( uint16 skill_id, int idx );
  366. int skill_get_status_count( uint16 skill_id );
  367. int skill_get_spiritball( uint16 skill_id, uint16 skill_lv );
  368. int skill_get_itemid( uint16 skill_id, int idx );
  369. int skill_get_itemqty( uint16 skill_id, int idx );
  370. int skill_name2id(const char* name);
  371. uint16 skill_idx2id(uint16 idx);
  372. uint16 SKILL_MAX_DB(void);
  373. int skill_isammotype(struct map_session_data *sd, unsigned short skill_id);
  374. int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data);
  375. int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data);
  376. int skill_castend_map( struct map_session_data *sd,uint16 skill_id, const char *map);
  377. int skill_cleartimerskill(struct block_list *src);
  378. int skill_addtimerskill(struct block_list *src,unsigned int tick,int target,int x,int y,uint16 skill_id,uint16 skill_lv,int type,int flag);
  379. // Results? Added
  380. int skill_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,int dmg_lv,unsigned int tick);
  381. int skill_counter_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,unsigned int tick);
  382. short skill_blown(struct block_list* src, struct block_list* target, char count, int8 dir, unsigned char flag);
  383. int skill_break_equip(struct block_list *src,struct block_list *bl, unsigned short where, int rate, int flag);
  384. int skill_strip_equip(struct block_list *src,struct block_list *bl, unsigned short where, int rate, int lv, int time);
  385. // Skills unit
  386. struct skill_unit_group *skill_id2group(int group_id);
  387. struct skill_unit_group *skill_unitsetting(struct block_list* src, uint16 skill_id, uint16 skill_lv, short x, short y, int flag);
  388. struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2);
  389. int skill_delunit(struct skill_unit *unit);
  390. struct skill_unit_group *skill_initunitgroup(struct block_list* src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval);
  391. int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int line, const char* func);
  392. #define skill_delunitgroup(group) skill_delunitgroup_(group,__FILE__,__LINE__,__func__)
  393. void skill_clear_unitgroup(struct block_list *src);
  394. int skill_clear_group(struct block_list *bl, int flag);
  395. void ext_skill_unit_onplace(struct skill_unit *unit, struct block_list *bl, unsigned int tick);
  396. int64 skill_unit_ondamaged(struct skill_unit *unit,int64 damage);
  397. int skill_castfix( struct block_list *bl, uint16 skill_id, uint16 skill_lv);
  398. int skill_castfix_sc( struct block_list *bl, int time);
  399. #ifdef RENEWAL_CAST
  400. int skill_vfcastfix( struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv);
  401. #endif
  402. int skill_delayfix( struct block_list *bl, uint16 skill_id, uint16 skill_lv);
  403. // Skill conditions check and remove [Inkfish]
  404. bool skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
  405. bool skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
  406. int skill_check_condition_char_sub (struct block_list *bl, va_list ap);
  407. void skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type);
  408. struct skill_condition skill_get_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
  409. int skill_disable_check(struct status_change *sc, uint16 skill_id);
  410. int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16 *skill_lv, int range, int cast_flag);
  411. // -- moonsoul (added skill_check_unit_cell)
  412. int skill_check_unit_cell(uint16 skill_id,int16 m,int16 x,int16 y,int unit_id);
  413. int skill_unit_out_all( struct block_list *bl,unsigned int tick,int range);
  414. int skill_unit_move(struct block_list *bl,unsigned int tick,int flag);
  415. void skill_unit_move_unit_group( struct skill_unit_group *group, int16 m,int16 dx,int16 dy);
  416. void skill_unit_move_unit(struct block_list *bl, int dx, int dy);
  417. struct skill_unit_group *skill_check_dancing( struct block_list *src );
  418. // Chant canceled
  419. int skill_castcancel(struct block_list *bl,int type);
  420. int skill_sit (struct map_session_data *sd, int type);
  421. void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 skill_id, uint16 skill_lv, unsigned int tick, int flag);
  422. void skill_overbrand(struct block_list* src, uint16 skill_id, uint16 skill_lv, uint16 x, uint16 y, unsigned int tick, int flag);
  423. void skill_repairweapon(struct map_session_data *sd, int idx);
  424. void skill_identify(struct map_session_data *sd,int idx);
  425. void skill_weaponrefine(struct map_session_data *sd,int idx); // [Celest]
  426. int skill_autospell(struct map_session_data *md,uint16 skill_id);
  427. int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal);
  428. bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce);
  429. // Abnormal status
  430. void skill_enchant_elemental_end(struct block_list *bl, int type);
  431. bool skill_isNotOk(uint16 skill_id, struct map_session_data *sd);
  432. bool skill_isNotOk_hom(uint16 skill_id, struct homun_data *hd);
  433. bool skill_isNotOk_mercenary(uint16 skill_id, struct mercenary_data *md);
  434. bool skill_isNotOk_npcRange(struct block_list *src, uint16 skill_id, uint16 skill_lv, int pos_x, int pos_y);
  435. // Item creation
  436. short skill_can_produce_mix( struct map_session_data *sd, unsigned short nameid, int trigger, int qty);
  437. bool skill_produce_mix( struct map_session_data *sd, uint16 skill_id, unsigned short nameid, int slot1, int slot2, int slot3, int qty );
  438. bool skill_arrow_create( struct map_session_data *sd, unsigned short nameid);
  439. // skills for the mob
  440. int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,unsigned int tick,int flag );
  441. int skill_castend_damage_id( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,unsigned int tick,int flag );
  442. int skill_castend_pos2( struct block_list *src, int x,int y,uint16 skill_id,uint16 skill_lv,unsigned int tick,int flag);
  443. int skill_blockpc_start(struct map_session_data*, int, int);
  444. int skill_blockpc_get(struct map_session_data *sd, int skillid);
  445. int skill_blockpc_clear(struct map_session_data *sd);
  446. int skill_blockpc_end(int tid, unsigned int tick, int id, intptr_t data);
  447. int skill_blockhomun_start (struct homun_data*,uint16 skill_id,int);
  448. int skill_blockmerc_start (struct mercenary_data*,uint16 skill_id,int);
  449. // (Epoque:) To-do: replace this macro with some sort of skill tree check (rather than hard-coded skill names)
  450. #define skill_ischangesex(id) ( \
  451. ((id) >= BD_ADAPTATION && (id) <= DC_SERVICEFORYOU) || ((id) >= CG_ARROWVULCAN && (id) <= CG_MARIONETTE) || \
  452. ((id) >= CG_LONGINGFREEDOM && (id) <= CG_TAROTCARD) || ((id) >= WA_SWING_DANCE && (id) <= WM_UNLIMITED_HUMMING_VOICE))
  453. // Skill action, (return dmg,heal)
  454. int64 skill_attack( int attack_type, struct block_list* src, struct block_list *dsrc,struct block_list *bl,uint16 skill_id,uint16 skill_lv,unsigned int tick,int flag );
  455. void skill_reload(void);
  456. /// List of State Requirements
  457. enum e_require_state {
  458. ST_NONE,
  459. ST_HIDDEN,
  460. ST_RIDING,
  461. ST_FALCON,
  462. ST_CART,
  463. ST_SHIELD,
  464. ST_RECOV_WEIGHT_RATE,
  465. ST_MOVE_ENABLE,
  466. ST_WATER,
  467. ST_RIDINGDRAGON,
  468. ST_WUG,
  469. ST_RIDINGWUG,
  470. ST_MADO,
  471. ST_ELEMENTALSPIRIT,
  472. ST_PECO,
  473. };
  474. /// List of Skills
  475. enum e_skill {
  476. NV_BASIC = 1,
  477. SM_SWORD,
  478. SM_TWOHAND,
  479. SM_RECOVERY,
  480. SM_BASH,
  481. SM_PROVOKE,
  482. SM_MAGNUM,
  483. SM_ENDURE,
  484. MG_SRECOVERY,
  485. MG_SIGHT,
  486. MG_NAPALMBEAT,
  487. MG_SAFETYWALL,
  488. MG_SOULSTRIKE,
  489. MG_COLDBOLT,
  490. MG_FROSTDIVER,
  491. MG_STONECURSE,
  492. MG_FIREBALL,
  493. MG_FIREWALL,
  494. MG_FIREBOLT,
  495. MG_LIGHTNINGBOLT,
  496. MG_THUNDERSTORM,
  497. AL_DP,
  498. AL_DEMONBANE,
  499. AL_RUWACH,
  500. AL_PNEUMA,
  501. AL_TELEPORT,
  502. AL_WARP,
  503. AL_HEAL,
  504. AL_INCAGI,
  505. AL_DECAGI,
  506. AL_HOLYWATER,
  507. AL_CRUCIS,
  508. AL_ANGELUS,
  509. AL_BLESSING,
  510. AL_CURE,
  511. MC_INCCARRY,
  512. MC_DISCOUNT,
  513. MC_OVERCHARGE,
  514. MC_PUSHCART,
  515. MC_IDENTIFY,
  516. MC_VENDING,
  517. MC_MAMMONITE,
  518. AC_OWL,
  519. AC_VULTURE,
  520. AC_CONCENTRATION,
  521. AC_DOUBLE,
  522. AC_SHOWER,
  523. TF_DOUBLE,
  524. TF_MISS,
  525. TF_STEAL,
  526. TF_HIDING,
  527. TF_POISON,
  528. TF_DETOXIFY,
  529. ALL_RESURRECTION,
  530. KN_SPEARMASTERY,
  531. KN_PIERCE,
  532. KN_BRANDISHSPEAR,
  533. KN_SPEARSTAB,
  534. KN_SPEARBOOMERANG,
  535. KN_TWOHANDQUICKEN,
  536. KN_AUTOCOUNTER,
  537. KN_BOWLINGBASH,
  538. KN_RIDING,
  539. KN_CAVALIERMASTERY,
  540. PR_MACEMASTERY,
  541. PR_IMPOSITIO,
  542. PR_SUFFRAGIUM,
  543. PR_ASPERSIO,
  544. PR_BENEDICTIO,
  545. PR_SANCTUARY,
  546. PR_SLOWPOISON,
  547. PR_STRECOVERY,
  548. PR_KYRIE,
  549. PR_MAGNIFICAT,
  550. PR_GLORIA,
  551. PR_LEXDIVINA,
  552. PR_TURNUNDEAD,
  553. PR_LEXAETERNA,
  554. PR_MAGNUS,
  555. WZ_FIREPILLAR,
  556. WZ_SIGHTRASHER,
  557. WZ_FIREIVY,
  558. WZ_METEOR,
  559. WZ_JUPITEL,
  560. WZ_VERMILION,
  561. WZ_WATERBALL,
  562. WZ_ICEWALL,
  563. WZ_FROSTNOVA,
  564. WZ_STORMGUST,
  565. WZ_EARTHSPIKE,
  566. WZ_HEAVENDRIVE,
  567. WZ_QUAGMIRE,
  568. WZ_ESTIMATION,
  569. BS_IRON,
  570. BS_STEEL,
  571. BS_ENCHANTEDSTONE,
  572. BS_ORIDEOCON,
  573. BS_DAGGER,
  574. BS_SWORD,
  575. BS_TWOHANDSWORD,
  576. BS_AXE,
  577. BS_MACE,
  578. BS_KNUCKLE,
  579. BS_SPEAR,
  580. BS_HILTBINDING,
  581. BS_FINDINGORE,
  582. BS_WEAPONRESEARCH,
  583. BS_REPAIRWEAPON,
  584. BS_SKINTEMPER,
  585. BS_HAMMERFALL,
  586. BS_ADRENALINE,
  587. BS_WEAPONPERFECT,
  588. BS_OVERTHRUST,
  589. BS_MAXIMIZE,
  590. HT_SKIDTRAP,
  591. HT_LANDMINE,
  592. HT_ANKLESNARE,
  593. HT_SHOCKWAVE,
  594. HT_SANDMAN,
  595. HT_FLASHER,
  596. HT_FREEZINGTRAP,
  597. HT_BLASTMINE,
  598. HT_CLAYMORETRAP,
  599. HT_REMOVETRAP,
  600. HT_TALKIEBOX,
  601. HT_BEASTBANE,
  602. HT_FALCON,
  603. HT_STEELCROW,
  604. HT_BLITZBEAT,
  605. HT_DETECTING,
  606. HT_SPRINGTRAP,
  607. AS_RIGHT,
  608. AS_LEFT,
  609. AS_KATAR,
  610. AS_CLOAKING,
  611. AS_SONICBLOW,
  612. AS_GRIMTOOTH,
  613. AS_ENCHANTPOISON,
  614. AS_POISONREACT,
  615. AS_VENOMDUST,
  616. AS_SPLASHER,
  617. NV_FIRSTAID,
  618. NV_TRICKDEAD,
  619. SM_MOVINGRECOVERY,
  620. SM_FATALBLOW,
  621. SM_AUTOBERSERK,
  622. AC_MAKINGARROW,
  623. AC_CHARGEARROW,
  624. TF_SPRINKLESAND,
  625. TF_BACKSLIDING,
  626. TF_PICKSTONE,
  627. TF_THROWSTONE,
  628. MC_CARTREVOLUTION,
  629. MC_CHANGECART,
  630. MC_LOUD,
  631. AL_HOLYLIGHT,
  632. MG_ENERGYCOAT,
  633. NPC_PIERCINGATT,
  634. NPC_MENTALBREAKER,
  635. NPC_RANGEATTACK,
  636. NPC_ATTRICHANGE,
  637. NPC_CHANGEWATER,
  638. NPC_CHANGEGROUND,
  639. NPC_CHANGEFIRE,
  640. NPC_CHANGEWIND,
  641. NPC_CHANGEPOISON,
  642. NPC_CHANGEHOLY,
  643. NPC_CHANGEDARKNESS,
  644. NPC_CHANGETELEKINESIS,
  645. NPC_CRITICALSLASH,
  646. NPC_COMBOATTACK,
  647. NPC_GUIDEDATTACK,
  648. NPC_SELFDESTRUCTION,
  649. NPC_SPLASHATTACK,
  650. NPC_SUICIDE,
  651. NPC_POISON,
  652. NPC_BLINDATTACK,
  653. NPC_SILENCEATTACK,
  654. NPC_STUNATTACK,
  655. NPC_PETRIFYATTACK,
  656. NPC_CURSEATTACK,
  657. NPC_SLEEPATTACK,
  658. NPC_RANDOMATTACK,
  659. NPC_WATERATTACK,
  660. NPC_GROUNDATTACK,
  661. NPC_FIREATTACK,
  662. NPC_WINDATTACK,
  663. NPC_POISONATTACK,
  664. NPC_HOLYATTACK,
  665. NPC_DARKNESSATTACK,
  666. NPC_TELEKINESISATTACK,
  667. NPC_MAGICALATTACK,
  668. NPC_METAMORPHOSIS,
  669. NPC_PROVOCATION,
  670. NPC_SMOKING,
  671. NPC_SUMMONSLAVE,
  672. NPC_EMOTION,
  673. NPC_TRANSFORMATION,
  674. NPC_BLOODDRAIN,
  675. NPC_ENERGYDRAIN,
  676. NPC_KEEPING,
  677. NPC_DARKBREATH,
  678. NPC_DARKBLESSING,
  679. NPC_BARRIER,
  680. NPC_DEFENDER,
  681. NPC_LICK,
  682. NPC_HALLUCINATION,
  683. NPC_REBIRTH,
  684. NPC_SUMMONMONSTER,
  685. RG_SNATCHER,
  686. RG_STEALCOIN,
  687. RG_BACKSTAP,
  688. RG_TUNNELDRIVE,
  689. RG_RAID,
  690. RG_STRIPWEAPON,
  691. RG_STRIPSHIELD,
  692. RG_STRIPARMOR,
  693. RG_STRIPHELM,
  694. RG_INTIMIDATE,
  695. RG_GRAFFITI,
  696. RG_FLAGGRAFFITI,
  697. RG_CLEANER,
  698. RG_GANGSTER,
  699. RG_COMPULSION,
  700. RG_PLAGIARISM,
  701. AM_AXEMASTERY,
  702. AM_LEARNINGPOTION,
  703. AM_PHARMACY,
  704. AM_DEMONSTRATION,
  705. AM_ACIDTERROR,
  706. AM_POTIONPITCHER,
  707. AM_CANNIBALIZE,
  708. AM_SPHEREMINE,
  709. AM_CP_WEAPON,
  710. AM_CP_SHIELD,
  711. AM_CP_ARMOR,
  712. AM_CP_HELM,
  713. AM_BIOETHICS,
  714. AM_BIOTECHNOLOGY,
  715. AM_CREATECREATURE,
  716. AM_CULTIVATION,
  717. AM_FLAMECONTROL,
  718. AM_CALLHOMUN,
  719. AM_REST,
  720. AM_DRILLMASTER,
  721. AM_HEALHOMUN,
  722. AM_RESURRECTHOMUN,
  723. CR_TRUST,
  724. CR_AUTOGUARD,
  725. CR_SHIELDCHARGE,
  726. CR_SHIELDBOOMERANG,
  727. CR_REFLECTSHIELD,
  728. CR_HOLYCROSS,
  729. CR_GRANDCROSS,
  730. CR_DEVOTION,
  731. CR_PROVIDENCE,
  732. CR_DEFENDER,
  733. CR_SPEARQUICKEN,
  734. MO_IRONHAND,
  735. MO_SPIRITSRECOVERY,
  736. MO_CALLSPIRITS,
  737. MO_ABSORBSPIRITS,
  738. MO_TRIPLEATTACK,
  739. MO_BODYRELOCATION,
  740. MO_DODGE,
  741. MO_INVESTIGATE,
  742. MO_FINGEROFFENSIVE,
  743. MO_STEELBODY,
  744. MO_BLADESTOP,
  745. MO_EXPLOSIONSPIRITS,
  746. MO_EXTREMITYFIST,
  747. MO_CHAINCOMBO,
  748. MO_COMBOFINISH,
  749. SA_ADVANCEDBOOK,
  750. SA_CASTCANCEL,
  751. SA_MAGICROD,
  752. SA_SPELLBREAKER,
  753. SA_FREECAST,
  754. SA_AUTOSPELL,
  755. SA_FLAMELAUNCHER,
  756. SA_FROSTWEAPON,
  757. SA_LIGHTNINGLOADER,
  758. SA_SEISMICWEAPON,
  759. SA_DRAGONOLOGY,
  760. SA_VOLCANO,
  761. SA_DELUGE,
  762. SA_VIOLENTGALE,
  763. SA_LANDPROTECTOR,
  764. SA_DISPELL,
  765. SA_ABRACADABRA,
  766. SA_MONOCELL,
  767. SA_CLASSCHANGE,
  768. SA_SUMMONMONSTER,
  769. SA_REVERSEORCISH,
  770. SA_DEATH,
  771. SA_FORTUNE,
  772. SA_TAMINGMONSTER,
  773. SA_QUESTION,
  774. SA_GRAVITY,
  775. SA_LEVELUP,
  776. SA_INSTANTDEATH,
  777. SA_FULLRECOVERY,
  778. SA_COMA,
  779. BD_ADAPTATION,
  780. BD_ENCORE,
  781. BD_LULLABY,
  782. BD_RICHMANKIM,
  783. BD_ETERNALCHAOS,
  784. BD_DRUMBATTLEFIELD,
  785. BD_RINGNIBELUNGEN,
  786. BD_ROKISWEIL,
  787. BD_INTOABYSS,
  788. BD_SIEGFRIED,
  789. BD_RAGNAROK,
  790. BA_MUSICALLESSON,
  791. BA_MUSICALSTRIKE,
  792. BA_DISSONANCE,
  793. BA_FROSTJOKER,
  794. BA_WHISTLE,
  795. BA_ASSASSINCROSS,
  796. BA_POEMBRAGI,
  797. BA_APPLEIDUN,
  798. DC_DANCINGLESSON,
  799. DC_THROWARROW,
  800. DC_UGLYDANCE,
  801. DC_SCREAM,
  802. DC_HUMMING,
  803. DC_DONTFORGETME,
  804. DC_FORTUNEKISS,
  805. DC_SERVICEFORYOU,
  806. NPC_RANDOMMOVE,
  807. NPC_SPEEDUP,
  808. NPC_REVENGE,
  809. WE_MALE,
  810. WE_FEMALE,
  811. WE_CALLPARTNER,
  812. ITM_TOMAHAWK,
  813. NPC_DARKCROSS,
  814. NPC_GRANDDARKNESS,
  815. NPC_DARKSTRIKE,
  816. NPC_DARKTHUNDER,
  817. NPC_STOP,
  818. NPC_WEAPONBRAKER,
  819. NPC_ARMORBRAKE,
  820. NPC_HELMBRAKE,
  821. NPC_SHIELDBRAKE,
  822. NPC_UNDEADATTACK,
  823. NPC_CHANGEUNDEAD,
  824. NPC_POWERUP,
  825. NPC_AGIUP,
  826. NPC_SIEGEMODE,
  827. NPC_CALLSLAVE,
  828. NPC_INVISIBLE,
  829. NPC_RUN,
  830. LK_AURABLADE,
  831. LK_PARRYING,
  832. LK_CONCENTRATION,
  833. LK_TENSIONRELAX,
  834. LK_BERSERK,
  835. LK_FURY,
  836. HP_ASSUMPTIO,
  837. HP_BASILICA,
  838. HP_MEDITATIO,
  839. HW_SOULDRAIN,
  840. HW_MAGICCRASHER,
  841. HW_MAGICPOWER,
  842. PA_PRESSURE,
  843. PA_SACRIFICE,
  844. PA_GOSPEL,
  845. CH_PALMSTRIKE,
  846. CH_TIGERFIST,
  847. CH_CHAINCRUSH,
  848. PF_HPCONVERSION,
  849. PF_SOULCHANGE,
  850. PF_SOULBURN,
  851. ASC_KATAR,
  852. ASC_HALLUCINATION,
  853. ASC_EDP,
  854. ASC_BREAKER,
  855. SN_SIGHT,
  856. SN_FALCONASSAULT,
  857. SN_SHARPSHOOTING,
  858. SN_WINDWALK,
  859. WS_MELTDOWN,
  860. WS_CREATECOIN,
  861. WS_CREATENUGGET,
  862. WS_CARTBOOST,
  863. WS_SYSTEMCREATE,
  864. ST_CHASEWALK,
  865. ST_REJECTSWORD,
  866. ST_STEALBACKPACK,
  867. CR_ALCHEMY,
  868. CR_SYNTHESISPOTION,
  869. CG_ARROWVULCAN,
  870. CG_MOONLIT,
  871. CG_MARIONETTE,
  872. LK_SPIRALPIERCE,
  873. LK_HEADCRUSH,
  874. LK_JOINTBEAT,
  875. HW_NAPALMVULCAN,
  876. CH_SOULCOLLECT,
  877. PF_MINDBREAKER,
  878. PF_MEMORIZE,
  879. PF_FOGWALL,
  880. PF_SPIDERWEB,
  881. ASC_METEORASSAULT,
  882. ASC_CDP,
  883. WE_BABY,
  884. WE_CALLPARENT,
  885. WE_CALLBABY,
  886. TK_RUN,
  887. TK_READYSTORM,
  888. TK_STORMKICK,
  889. TK_READYDOWN,
  890. TK_DOWNKICK,
  891. TK_READYTURN,
  892. TK_TURNKICK,
  893. TK_READYCOUNTER,
  894. TK_COUNTER,
  895. TK_DODGE,
  896. TK_JUMPKICK,
  897. TK_HPTIME,
  898. TK_SPTIME,
  899. TK_POWER,
  900. TK_SEVENWIND,
  901. TK_HIGHJUMP,
  902. SG_FEEL,
  903. SG_SUN_WARM,
  904. SG_MOON_WARM,
  905. SG_STAR_WARM,
  906. SG_SUN_COMFORT,
  907. SG_MOON_COMFORT,
  908. SG_STAR_COMFORT,
  909. SG_HATE,
  910. SG_SUN_ANGER,
  911. SG_MOON_ANGER,
  912. SG_STAR_ANGER,
  913. SG_SUN_BLESS,
  914. SG_MOON_BLESS,
  915. SG_STAR_BLESS,
  916. SG_DEVIL,
  917. SG_FRIEND,
  918. SG_KNOWLEDGE,
  919. SG_FUSION,
  920. SL_ALCHEMIST,
  921. AM_BERSERKPITCHER,
  922. SL_MONK,
  923. SL_STAR,
  924. SL_SAGE,
  925. SL_CRUSADER,
  926. SL_SUPERNOVICE,
  927. SL_KNIGHT,
  928. SL_WIZARD,
  929. SL_PRIEST,
  930. SL_BARDDANCER,
  931. SL_ROGUE,
  932. SL_ASSASIN,
  933. SL_BLACKSMITH,
  934. BS_ADRENALINE2,
  935. SL_HUNTER,
  936. SL_SOULLINKER,
  937. SL_KAIZEL,
  938. SL_KAAHI,
  939. SL_KAUPE,
  940. SL_KAITE,
  941. SL_KAINA,
  942. SL_STIN,
  943. SL_STUN,
  944. SL_SMA,
  945. SL_SWOO,
  946. SL_SKE,
  947. SL_SKA,
  948. SM_SELFPROVOKE,
  949. NPC_EMOTION_ON,
  950. ST_PRESERVE,
  951. ST_FULLSTRIP,
  952. WS_WEAPONREFINE,
  953. CR_SLIMPITCHER,
  954. CR_FULLPROTECTION,
  955. PA_SHIELDCHAIN,
  956. HP_MANARECHARGE,
  957. PF_DOUBLECASTING,
  958. HW_GANBANTEIN,
  959. HW_GRAVITATION,
  960. WS_CARTTERMINATION,
  961. WS_OVERTHRUSTMAX,
  962. CG_LONGINGFREEDOM,
  963. CG_HERMODE,
  964. CG_TAROTCARD,
  965. CR_ACIDDEMONSTRATION,
  966. CR_CULTIVATION,
  967. ITEM_ENCHANTARMS,
  968. TK_MISSION,
  969. SL_HIGH,
  970. KN_ONEHAND,
  971. AM_TWILIGHT1,
  972. AM_TWILIGHT2,
  973. AM_TWILIGHT3,
  974. HT_POWER,
  975. GS_GLITTERING,
  976. GS_FLING,
  977. GS_TRIPLEACTION,
  978. GS_BULLSEYE,
  979. GS_MADNESSCANCEL,
  980. GS_ADJUSTMENT,
  981. GS_INCREASING,
  982. GS_MAGICALBULLET,
  983. GS_CRACKER,
  984. GS_SINGLEACTION,
  985. GS_SNAKEEYE,
  986. GS_CHAINACTION,
  987. GS_TRACKING,
  988. GS_DISARM,
  989. GS_PIERCINGSHOT,
  990. GS_RAPIDSHOWER,
  991. GS_DESPERADO,
  992. GS_GATLINGFEVER,
  993. GS_DUST,
  994. GS_FULLBUSTER,
  995. GS_SPREADATTACK,
  996. GS_GROUNDDRIFT,
  997. NJ_TOBIDOUGU,
  998. NJ_SYURIKEN,
  999. NJ_KUNAI,
  1000. NJ_HUUMA,
  1001. NJ_ZENYNAGE,
  1002. NJ_TATAMIGAESHI,
  1003. NJ_KASUMIKIRI,
  1004. NJ_SHADOWJUMP,
  1005. NJ_KIRIKAGE,
  1006. NJ_UTSUSEMI,
  1007. NJ_BUNSINJYUTSU,
  1008. NJ_NINPOU,
  1009. NJ_KOUENKA,
  1010. NJ_KAENSIN,
  1011. NJ_BAKUENRYU,
  1012. NJ_HYOUSENSOU,
  1013. NJ_SUITON,
  1014. NJ_HYOUSYOURAKU,
  1015. NJ_HUUJIN,
  1016. NJ_RAIGEKISAI,
  1017. NJ_KAMAITACHI,
  1018. NJ_NEN,
  1019. NJ_ISSEN,
  1020. MB_FIGHTING,
  1021. MB_NEUTRAL,
  1022. MB_TAIMING_PUTI,
  1023. MB_WHITEPOTION,
  1024. MB_MENTAL,
  1025. MB_CARDPITCHER,
  1026. MB_PETPITCHER,
  1027. MB_BODYSTUDY,
  1028. MB_BODYALTER,
  1029. MB_PETMEMORY,
  1030. MB_M_TELEPORT,
  1031. MB_B_GAIN,
  1032. MB_M_GAIN,
  1033. MB_MISSION,
  1034. MB_MUNAKKNOWLEDGE,
  1035. MB_MUNAKBALL,
  1036. MB_SCROLL,
  1037. MB_B_GATHERING,
  1038. MB_M_GATHERING,
  1039. MB_B_EXCLUDE,
  1040. MB_B_DRIFT,
  1041. MB_B_WALLRUSH,
  1042. MB_M_WALLRUSH,
  1043. MB_B_WALLSHIFT,
  1044. MB_M_WALLCRASH,
  1045. MB_M_REINCARNATION,
  1046. MB_B_EQUIP,
  1047. SL_DEATHKNIGHT,
  1048. SL_COLLECTOR,
  1049. SL_NINJA,
  1050. SL_GUNNER,
  1051. AM_TWILIGHT4,
  1052. DA_RESET,
  1053. DE_BERSERKAIZER,
  1054. DA_DARKPOWER,
  1055. DE_PASSIVE,
  1056. DE_PATTACK,
  1057. DE_PSPEED,
  1058. DE_PDEFENSE,
  1059. DE_PCRITICAL,
  1060. DE_PHP,
  1061. DE_PSP,
  1062. DE_RESET,
  1063. DE_RANKING,
  1064. DE_PTRIPLE,
  1065. DE_ENERGY,
  1066. DE_NIGHTMARE,
  1067. DE_SLASH,
  1068. DE_COIL,
  1069. DE_WAVE,
  1070. DE_REBIRTH,
  1071. DE_AURA,
  1072. DE_FREEZER,
  1073. DE_CHANGEATTACK,
  1074. DE_PUNISH,
  1075. DE_POISON,
  1076. DE_INSTANT,
  1077. DE_WARNING,
  1078. DE_RANKEDKNIFE,
  1079. DE_RANKEDGRADIUS,
  1080. DE_GAUGE,
  1081. DE_GTIME,
  1082. DE_GPAIN,
  1083. DE_GSKILL,
  1084. DE_GKILL,
  1085. DE_ACCEL,
  1086. DE_BLOCKDOUBLE,
  1087. DE_BLOCKMELEE,
  1088. DE_BLOCKFAR,
  1089. DE_FRONTATTACK,
  1090. DE_DANGERATTACK,
  1091. DE_TWINATTACK,
  1092. DE_WINDATTACK,
  1093. DE_WATERATTACK,
  1094. DA_ENERGY,
  1095. DA_CLOUD,
  1096. DA_FIRSTSLOT,
  1097. DA_HEADDEF,
  1098. DA_SPACE,
  1099. DA_TRANSFORM,
  1100. DA_EXPLOSION,
  1101. DA_REWARD,
  1102. DA_CRUSH,
  1103. DA_ITEMREBUILD,
  1104. DA_ILLUSION,
  1105. DA_NUETRALIZE,
  1106. DA_RUNNER,
  1107. DA_TRANSFER,
  1108. DA_WALL,
  1109. DA_ZENY,
  1110. DA_REVENGE,
  1111. DA_EARPLUG,
  1112. DA_CONTRACT,
  1113. DA_BLACK,
  1114. DA_DREAM,
  1115. DA_MAGICCART,
  1116. DA_COPY,
  1117. DA_CRYSTAL,
  1118. DA_EXP,
  1119. DA_CARTSWING,
  1120. DA_REBUILD,
  1121. DA_JOBCHANGE,
  1122. DA_EDARKNESS,
  1123. DA_EGUARDIAN,
  1124. DA_TIMEOUT,
  1125. ALL_TIMEIN,
  1126. DA_ZENYRANK,
  1127. DA_ACCESSORYMIX,
  1128. NPC_EARTHQUAKE,
  1129. NPC_FIREBREATH,
  1130. NPC_ICEBREATH,
  1131. NPC_THUNDERBREATH,
  1132. NPC_ACIDBREATH,
  1133. NPC_DARKNESSBREATH,
  1134. NPC_DRAGONFEAR,
  1135. NPC_BLEEDING,
  1136. NPC_PULSESTRIKE,
  1137. NPC_HELLJUDGEMENT,
  1138. NPC_WIDESILENCE,
  1139. NPC_WIDEFREEZE,
  1140. NPC_WIDEBLEEDING,
  1141. NPC_WIDESTONE,
  1142. NPC_WIDECONFUSE,
  1143. NPC_WIDESLEEP,
  1144. NPC_WIDESIGHT,
  1145. NPC_EVILLAND,
  1146. NPC_MAGICMIRROR,
  1147. NPC_SLOWCAST,
  1148. NPC_CRITICALWOUND,
  1149. NPC_EXPULSION,
  1150. NPC_STONESKIN,
  1151. NPC_ANTIMAGIC,
  1152. NPC_WIDECURSE,
  1153. NPC_WIDESTUN,
  1154. NPC_VAMPIRE_GIFT,
  1155. NPC_WIDESOULDRAIN,
  1156. ALL_INCCARRY,
  1157. NPC_TALK,
  1158. NPC_HELLPOWER,
  1159. NPC_WIDEHELLDIGNITY,
  1160. NPC_INVINCIBLE,
  1161. NPC_INVINCIBLEOFF,
  1162. NPC_ALLHEAL,
  1163. GM_SANDMAN,
  1164. CASH_BLESSING,
  1165. CASH_INCAGI,
  1166. CASH_ASSUMPTIO,
  1167. ALL_CATCRY,
  1168. ALL_PARTYFLEE,
  1169. ALL_ANGEL_PROTECT,
  1170. ALL_DREAM_SUMMERNIGHT,
  1171. NPC_CHANGEUNDEAD2,
  1172. ALL_REVERSEORCISH,
  1173. ALL_WEWISH,
  1174. ALL_SONKRAN,
  1175. NPC_WIDEHEALTHFEAR,
  1176. NPC_WIDEBODYBURNNING,
  1177. NPC_WIDEFROSTMISTY,
  1178. NPC_WIDECOLD,
  1179. NPC_WIDE_DEEP_SLEEP,
  1180. NPC_WIDESIREN,
  1181. NPC_VENOMFOG,
  1182. NPC_MILLENNIUMSHIELD,
  1183. NPC_COMET,
  1184. NPC_ICEMINE,
  1185. NPC_ICEEXPLO,
  1186. NPC_FLAMECROSS,
  1187. NPC_PULSESTRIKE2,
  1188. NPC_DANCINGBLADE,
  1189. NPC_DANCINGBLADE_ATK,
  1190. NPC_DARKPIERCING,
  1191. NPC_MAXPAIN,
  1192. NPC_MAXPAIN_ATK,
  1193. NPC_DEATHSUMMON,
  1194. NPC_HELLBURNING,
  1195. NPC_JACKFROST,
  1196. NPC_WIDEWEB,
  1197. NPC_WIDESUCK,
  1198. NPC_STORMGUST2,
  1199. NPC_FIRESTORM,
  1200. NPC_REVERBERATION,
  1201. NPC_REVERBERATION_ATK,
  1202. NPC_LEX_AETERNA,
  1203. KN_CHARGEATK = 1001,
  1204. CR_SHRINK,
  1205. AS_SONICACCEL,
  1206. AS_VENOMKNIFE,
  1207. RG_CLOSECONFINE,
  1208. WZ_SIGHTBLASTER,
  1209. SA_CREATECON,
  1210. SA_ELEMENTWATER,
  1211. HT_PHANTASMIC,
  1212. BA_PANGVOICE,
  1213. DC_WINKCHARM,
  1214. BS_UNFAIRLYTRICK,
  1215. BS_GREED,
  1216. PR_REDEMPTIO,
  1217. MO_KITRANSLATION,
  1218. MO_BALKYOUNG,
  1219. SA_ELEMENTGROUND,
  1220. SA_ELEMENTFIRE,
  1221. SA_ELEMENTWIND,
  1222. RK_ENCHANTBLADE = 2001,
  1223. RK_SONICWAVE,
  1224. RK_DEATHBOUND,
  1225. RK_HUNDREDSPEAR,
  1226. RK_WINDCUTTER,
  1227. RK_IGNITIONBREAK,
  1228. RK_DRAGONTRAINING,
  1229. RK_DRAGONBREATH,
  1230. RK_DRAGONHOWLING,
  1231. RK_RUNEMASTERY,
  1232. RK_MILLENNIUMSHIELD,
  1233. RK_CRUSHSTRIKE,
  1234. RK_REFRESH,
  1235. RK_GIANTGROWTH,
  1236. RK_STONEHARDSKIN,
  1237. RK_VITALITYACTIVATION,
  1238. RK_STORMBLAST,
  1239. RK_FIGHTINGSPIRIT,
  1240. RK_ABUNDANCE,
  1241. RK_PHANTOMTHRUST,
  1242. GC_VENOMIMPRESS,
  1243. GC_CROSSIMPACT,
  1244. GC_DARKILLUSION,
  1245. GC_RESEARCHNEWPOISON,
  1246. GC_CREATENEWPOISON,
  1247. GC_ANTIDOTE,
  1248. GC_POISONINGWEAPON,
  1249. GC_WEAPONBLOCKING,
  1250. GC_COUNTERSLASH,
  1251. GC_WEAPONCRUSH,
  1252. GC_VENOMPRESSURE,
  1253. GC_POISONSMOKE,
  1254. GC_CLOAKINGEXCEED,
  1255. GC_PHANTOMMENACE,
  1256. GC_HALLUCINATIONWALK,
  1257. GC_ROLLINGCUTTER,
  1258. GC_CROSSRIPPERSLASHER,
  1259. AB_JUDEX,
  1260. AB_ANCILLA,
  1261. AB_ADORAMUS,
  1262. AB_CLEMENTIA,
  1263. AB_CANTO,
  1264. AB_CHEAL,
  1265. AB_EPICLESIS,
  1266. AB_PRAEFATIO,
  1267. AB_ORATIO,
  1268. AB_LAUDAAGNUS,
  1269. AB_LAUDARAMUS,
  1270. AB_EUCHARISTICA,
  1271. AB_RENOVATIO,
  1272. AB_HIGHNESSHEAL,
  1273. AB_CLEARANCE,
  1274. AB_EXPIATIO,
  1275. AB_DUPLELIGHT,
  1276. AB_DUPLELIGHT_MELEE,
  1277. AB_DUPLELIGHT_MAGIC,
  1278. AB_SILENTIUM,
  1279. WL_WHITEIMPRISON = 2201,
  1280. WL_SOULEXPANSION,
  1281. WL_FROSTMISTY,
  1282. WL_JACKFROST,
  1283. WL_MARSHOFABYSS,
  1284. WL_RECOGNIZEDSPELL,
  1285. WL_SIENNAEXECRATE,
  1286. WL_RADIUS,
  1287. WL_STASIS,
  1288. WL_DRAINLIFE,
  1289. WL_CRIMSONROCK,
  1290. WL_HELLINFERNO,
  1291. WL_COMET,
  1292. WL_CHAINLIGHTNING,
  1293. WL_CHAINLIGHTNING_ATK,
  1294. WL_EARTHSTRAIN,
  1295. WL_TETRAVORTEX,
  1296. WL_TETRAVORTEX_FIRE,
  1297. WL_TETRAVORTEX_WATER,
  1298. WL_TETRAVORTEX_WIND,
  1299. WL_TETRAVORTEX_GROUND,
  1300. WL_SUMMONFB,
  1301. WL_SUMMONBL,
  1302. WL_SUMMONWB,
  1303. WL_SUMMON_ATK_FIRE,
  1304. WL_SUMMON_ATK_WIND,
  1305. WL_SUMMON_ATK_WATER,
  1306. WL_SUMMON_ATK_GROUND,
  1307. WL_SUMMONSTONE,
  1308. WL_RELEASE,
  1309. WL_READING_SB,
  1310. WL_FREEZE_SP,
  1311. RA_ARROWSTORM,
  1312. RA_FEARBREEZE,
  1313. RA_RANGERMAIN,
  1314. RA_AIMEDBOLT,
  1315. RA_DETONATOR,
  1316. RA_ELECTRICSHOCKER,
  1317. RA_CLUSTERBOMB,
  1318. RA_WUGMASTERY,
  1319. RA_WUGRIDER,
  1320. RA_WUGDASH,
  1321. RA_WUGSTRIKE,
  1322. RA_WUGBITE,
  1323. RA_TOOTHOFWUG,
  1324. RA_SENSITIVEKEEN,
  1325. RA_CAMOUFLAGE,
  1326. RA_RESEARCHTRAP,
  1327. RA_MAGENTATRAP,
  1328. RA_COBALTTRAP,
  1329. RA_MAIZETRAP,
  1330. RA_VERDURETRAP,
  1331. RA_FIRINGTRAP,
  1332. RA_ICEBOUNDTRAP,
  1333. NC_MADOLICENCE,
  1334. NC_BOOSTKNUCKLE,
  1335. NC_PILEBUNKER,
  1336. NC_VULCANARM,
  1337. NC_FLAMELAUNCHER,
  1338. NC_COLDSLOWER,
  1339. NC_ARMSCANNON,
  1340. NC_ACCELERATION,
  1341. NC_HOVERING,
  1342. NC_F_SIDESLIDE,
  1343. NC_B_SIDESLIDE,
  1344. NC_MAINFRAME,
  1345. NC_SELFDESTRUCTION,
  1346. NC_SHAPESHIFT,
  1347. NC_EMERGENCYCOOL,
  1348. NC_INFRAREDSCAN,
  1349. NC_ANALYZE,
  1350. NC_MAGNETICFIELD,
  1351. NC_NEUTRALBARRIER,
  1352. NC_STEALTHFIELD,
  1353. NC_REPAIR,
  1354. NC_TRAININGAXE,
  1355. NC_RESEARCHFE,
  1356. NC_AXEBOOMERANG,
  1357. NC_POWERSWING,
  1358. NC_AXETORNADO,
  1359. NC_SILVERSNIPER,
  1360. NC_MAGICDECOY,
  1361. NC_DISJOINT,
  1362. SC_FATALMENACE,
  1363. SC_REPRODUCE,
  1364. SC_AUTOSHADOWSPELL,
  1365. SC_SHADOWFORM,
  1366. SC_TRIANGLESHOT,
  1367. SC_BODYPAINT,
  1368. SC_INVISIBILITY,
  1369. SC_DEADLYINFECT,
  1370. SC_ENERVATION,
  1371. SC_GROOMY,
  1372. SC_IGNORANCE,
  1373. SC_LAZINESS,
  1374. SC_UNLUCKY,
  1375. SC_WEAKNESS,
  1376. SC_STRIPACCESSARY,
  1377. SC_MANHOLE,
  1378. SC_DIMENSIONDOOR,
  1379. SC_CHAOSPANIC,
  1380. SC_MAELSTROM,
  1381. SC_BLOODYLUST,
  1382. SC_FEINTBOMB,
  1383. LG_CANNONSPEAR = 2307,
  1384. LG_BANISHINGPOINT,
  1385. LG_TRAMPLE,
  1386. LG_SHIELDPRESS,
  1387. LG_REFLECTDAMAGE,
  1388. LG_PINPOINTATTACK,
  1389. LG_FORCEOFVANGUARD,
  1390. LG_RAGEBURST,
  1391. LG_SHIELDSPELL,
  1392. LG_EXEEDBREAK,
  1393. LG_OVERBRAND,
  1394. LG_PRESTIGE,
  1395. LG_BANDING,
  1396. LG_MOONSLASHER,
  1397. LG_RAYOFGENESIS,
  1398. LG_PIETY,
  1399. LG_EARTHDRIVE,
  1400. LG_HESPERUSLIT,
  1401. LG_INSPIRATION,
  1402. SR_DRAGONCOMBO,
  1403. SR_SKYNETBLOW,
  1404. SR_EARTHSHAKER,
  1405. SR_FALLENEMPIRE,
  1406. SR_TIGERCANNON,
  1407. SR_HELLGATE,
  1408. SR_RAMPAGEBLASTER,
  1409. SR_CRESCENTELBOW,
  1410. SR_CURSEDCIRCLE,
  1411. SR_LIGHTNINGWALK,
  1412. SR_KNUCKLEARROW,
  1413. SR_WINDMILL,
  1414. SR_RAISINGDRAGON,
  1415. SR_GENTLETOUCH,
  1416. SR_ASSIMILATEPOWER,
  1417. SR_POWERVELOCITY,
  1418. SR_CRESCENTELBOW_AUTOSPELL,
  1419. SR_GATEOFHELL,
  1420. SR_GENTLETOUCH_QUIET,
  1421. SR_GENTLETOUCH_CURE,
  1422. SR_GENTLETOUCH_ENERGYGAIN,
  1423. SR_GENTLETOUCH_CHANGE,
  1424. SR_GENTLETOUCH_REVITALIZE,
  1425. WA_SWING_DANCE = 2350,
  1426. WA_SYMPHONY_OF_LOVER,
  1427. WA_MOONLIT_SERENADE,
  1428. MI_RUSH_WINDMILL = 2381,
  1429. MI_ECHOSONG,
  1430. MI_HARMONIZE,
  1431. WM_LESSON = 2412,
  1432. WM_METALICSOUND,
  1433. WM_REVERBERATION,
  1434. WM_REVERBERATION_MELEE,
  1435. WM_REVERBERATION_MAGIC,
  1436. WM_DOMINION_IMPULSE,
  1437. WM_SEVERE_RAINSTORM,
  1438. WM_POEMOFNETHERWORLD,
  1439. WM_VOICEOFSIREN,
  1440. WM_DEADHILLHERE,
  1441. WM_LULLABY_DEEPSLEEP,
  1442. WM_SIRCLEOFNATURE,
  1443. WM_RANDOMIZESPELL,
  1444. WM_GLOOMYDAY,
  1445. WM_GREAT_ECHO,
  1446. WM_SONG_OF_MANA,
  1447. WM_DANCE_WITH_WUG,
  1448. WM_SOUND_OF_DESTRUCTION,
  1449. WM_SATURDAY_NIGHT_FEVER,
  1450. WM_LERADS_DEW,
  1451. WM_MELODYOFSINK,
  1452. WM_BEYOND_OF_WARCRY,
  1453. WM_UNLIMITED_HUMMING_VOICE,
  1454. SO_FIREWALK = 2443,
  1455. SO_ELECTRICWALK,
  1456. SO_SPELLFIST,
  1457. SO_EARTHGRAVE,
  1458. SO_DIAMONDDUST,
  1459. SO_POISON_BUSTER,
  1460. SO_PSYCHIC_WAVE,
  1461. SO_CLOUD_KILL,
  1462. SO_STRIKING,
  1463. SO_WARMER,
  1464. SO_VACUUM_EXTREME,
  1465. SO_VARETYR_SPEAR,
  1466. SO_ARRULLO,
  1467. SO_EL_CONTROL,
  1468. SO_SUMMON_AGNI,
  1469. SO_SUMMON_AQUA,
  1470. SO_SUMMON_VENTUS,
  1471. SO_SUMMON_TERA,
  1472. SO_EL_ACTION,
  1473. SO_EL_ANALYSIS,
  1474. SO_EL_SYMPATHY,
  1475. SO_EL_CURE,
  1476. SO_FIRE_INSIGNIA,
  1477. SO_WATER_INSIGNIA,
  1478. SO_WIND_INSIGNIA,
  1479. SO_EARTH_INSIGNIA,
  1480. GN_TRAINING_SWORD = 2474,
  1481. GN_REMODELING_CART,
  1482. GN_CART_TORNADO,
  1483. GN_CARTCANNON,
  1484. GN_CARTBOOST,
  1485. GN_THORNS_TRAP,
  1486. GN_BLOOD_SUCKER,
  1487. GN_SPORE_EXPLOSION,
  1488. GN_WALLOFTHORN,
  1489. GN_CRAZYWEED,
  1490. GN_CRAZYWEED_ATK,
  1491. GN_DEMONIC_FIRE,
  1492. GN_FIRE_EXPANSION,
  1493. GN_FIRE_EXPANSION_SMOKE_POWDER,
  1494. GN_FIRE_EXPANSION_TEAR_GAS,
  1495. GN_FIRE_EXPANSION_ACID,
  1496. GN_HELLS_PLANT,
  1497. GN_HELLS_PLANT_ATK,
  1498. GN_MANDRAGORA,
  1499. GN_SLINGITEM,
  1500. GN_CHANGEMATERIAL,
  1501. GN_MIX_COOKING,
  1502. GN_MAKEBOMB,
  1503. GN_S_PHARMACY,
  1504. GN_SLINGITEM_RANGEMELEEATK,
  1505. AB_SECRAMENT = 2515,
  1506. WM_SEVERE_RAINSTORM_MELEE,
  1507. SR_HOWLINGOFLION,
  1508. SR_RIDEINLIGHTNING,
  1509. LG_OVERBRAND_BRANDISH,
  1510. LG_OVERBRAND_PLUSATK,
  1511. ALL_ODINS_RECALL = 2533,
  1512. RETURN_TO_ELDICASTES,
  1513. ALL_BUYING_STORE,
  1514. ALL_GUARDIAN_RECALL,
  1515. ALL_ODINS_POWER,
  1516. BEER_BOTTLE_CAP,
  1517. NPC_ASSASSINCROSS,
  1518. NPC_DISSONANCE,
  1519. NPC_UGLYDANCE,
  1520. ALL_TETANY,
  1521. ALL_RAY_OF_PROTECTION,
  1522. MC_CARTDECORATE,
  1523. GM_ITEM_ATKMAX,
  1524. GM_ITEM_ATKMIN,
  1525. GM_ITEM_MATKMAX,
  1526. GM_ITEM_MATKMIN,
  1527. RL_GLITTERING_GREED = 2551,
  1528. RL_RICHS_COIN,
  1529. RL_MASS_SPIRAL,
  1530. RL_BANISHING_BUSTER,
  1531. RL_B_TRAP,
  1532. RL_FLICKER,
  1533. RL_S_STORM,
  1534. RL_E_CHAIN,
  1535. RL_QD_SHOT,
  1536. RL_C_MARKER,
  1537. RL_FIREDANCE,
  1538. RL_H_MINE,
  1539. RL_P_ALTER,
  1540. RL_FALLEN_ANGEL,
  1541. RL_R_TRIP,
  1542. RL_D_TAIL,
  1543. RL_FIRE_RAIN,
  1544. RL_HEAT_BARREL,
  1545. RL_AM_BLAST,
  1546. RL_SLUGSHOT,
  1547. RL_HAMMER_OF_GOD,
  1548. RL_R_TRIP_PLUSATK,
  1549. RL_B_FLICKER_ATK,
  1550. RL_GLITTERING_GREED_ATK,
  1551. KO_YAMIKUMO = 3001,
  1552. KO_RIGHT,
  1553. KO_LEFT,
  1554. KO_JYUMONJIKIRI,
  1555. KO_SETSUDAN,
  1556. KO_BAKURETSU,
  1557. KO_HAPPOKUNAI,
  1558. KO_MUCHANAGE,
  1559. KO_HUUMARANKA,
  1560. KO_MAKIBISHI,
  1561. KO_MEIKYOUSISUI,
  1562. KO_ZANZOU,
  1563. KO_KYOUGAKU,
  1564. KO_JYUSATSU,
  1565. KO_KAHU_ENTEN,
  1566. KO_HYOUHU_HUBUKI,
  1567. KO_KAZEHU_SEIRAN,
  1568. KO_DOHU_KOUKAI,
  1569. KO_KAIHOU,
  1570. KO_ZENKAI,
  1571. KO_GENWAKU,
  1572. KO_IZAYOI,
  1573. KG_KAGEHUMI,
  1574. KG_KYOMU,
  1575. KG_KAGEMUSYA,
  1576. OB_ZANGETSU,
  1577. OB_OBOROGENSOU,
  1578. OB_OBOROGENSOU_TRANSITION_ATK,
  1579. OB_AKAITSUKI,
  1580. ECL_SNOWFLIP = 3031,
  1581. ECL_PEONYMAMY,
  1582. ECL_SADAGUI,
  1583. ECL_SEQUOIADUST,
  1584. ECLAGE_RECALL,
  1585. GC_DARKCROW = 5001,
  1586. RA_UNLIMIT,
  1587. GN_ILLUSIONDOPING,
  1588. RK_DRAGONBREATH_WATER,
  1589. RK_LUXANIMA,
  1590. NC_MAGMA_ERUPTION,
  1591. WM_FRIGG_SONG,
  1592. SO_ELEMENTAL_SHIELD,
  1593. SR_FLASHCOMBO,
  1594. SC_ESCAPE,
  1595. AB_OFFERTORIUM,
  1596. WL_TELEKINESIS_INTENSE,
  1597. LG_KINGS_GRACE,
  1598. ALL_FULL_THROTTLE,
  1599. SR_FLASHCOMBO_ATK_STEP1,
  1600. SR_FLASHCOMBO_ATK_STEP2,
  1601. SR_FLASHCOMBO_ATK_STEP3,
  1602. SR_FLASHCOMBO_ATK_STEP4,
  1603. HLIF_HEAL = 8001,
  1604. HLIF_AVOID,
  1605. HLIF_BRAIN,
  1606. HLIF_CHANGE,
  1607. HAMI_CASTLE,
  1608. HAMI_DEFENCE,
  1609. HAMI_SKIN,
  1610. HAMI_BLOODLUST,
  1611. HFLI_MOON,
  1612. HFLI_FLEET,
  1613. HFLI_SPEED,
  1614. HFLI_SBR44,
  1615. HVAN_CAPRICE,
  1616. HVAN_CHAOTIC,
  1617. HVAN_INSTRUCT,
  1618. HVAN_EXPLOSION,
  1619. MUTATION_BASEJOB,
  1620. MH_SUMMON_LEGION,
  1621. MH_NEEDLE_OF_PARALYZE,
  1622. MH_POISON_MIST,
  1623. MH_PAIN_KILLER,
  1624. MH_LIGHT_OF_REGENE,
  1625. MH_OVERED_BOOST,
  1626. MH_ERASER_CUTTER,
  1627. MH_XENO_SLASHER,
  1628. MH_SILENT_BREEZE,
  1629. MH_STYLE_CHANGE,
  1630. MH_SONIC_CRAW,
  1631. MH_SILVERVEIN_RUSH,
  1632. MH_MIDNIGHT_FRENZY,
  1633. MH_STAHL_HORN,
  1634. MH_GOLDENE_FERSE,
  1635. MH_STEINWAND,
  1636. MH_HEILIGE_STANGE,
  1637. MH_ANGRIFFS_MODUS,
  1638. MH_TINDER_BREAKER,
  1639. MH_CBC,
  1640. MH_EQC,
  1641. MH_MAGMA_FLOW,
  1642. MH_GRANITIC_ARMOR,
  1643. MH_LAVA_SLIDE,
  1644. MH_PYROCLASTIC,
  1645. MH_VOLCANIC_ASH,
  1646. MS_BASH = 8201,
  1647. MS_MAGNUM,
  1648. MS_BOWLINGBASH,
  1649. MS_PARRYING,
  1650. MS_REFLECTSHIELD,
  1651. MS_BERSERK,
  1652. MA_DOUBLE,
  1653. MA_SHOWER,
  1654. MA_SKIDTRAP,
  1655. MA_LANDMINE,
  1656. MA_SANDMAN,
  1657. MA_FREEZINGTRAP,
  1658. MA_REMOVETRAP,
  1659. MA_CHARGEARROW,
  1660. MA_SHARPSHOOTING,
  1661. ML_PIERCE,
  1662. ML_BRANDISH,
  1663. ML_SPIRALPIERCE,
  1664. ML_DEFENDER,
  1665. ML_AUTOGUARD,
  1666. ML_DEVOTION,
  1667. MER_MAGNIFICAT,
  1668. MER_QUICKEN,
  1669. MER_SIGHT,
  1670. MER_CRASH,
  1671. MER_REGAIN,
  1672. MER_TENDER,
  1673. MER_BENEDICTION,
  1674. MER_RECUPERATE,
  1675. MER_MENTALCURE,
  1676. MER_COMPRESS,
  1677. MER_PROVOKE,
  1678. MER_AUTOBERSERK,
  1679. MER_DECAGI,
  1680. MER_SCAPEGOAT,
  1681. MER_LEXDIVINA,
  1682. MER_ESTIMATION,
  1683. MER_KYRIE,
  1684. MER_BLESSING,
  1685. MER_INCAGI,
  1686. MER_INVINCIBLEOFF2,
  1687. EL_CIRCLE_OF_FIRE = 8401,
  1688. EL_FIRE_CLOAK,
  1689. EL_FIRE_MANTLE,
  1690. EL_WATER_SCREEN,
  1691. EL_WATER_DROP,
  1692. EL_WATER_BARRIER,
  1693. EL_WIND_STEP,
  1694. EL_WIND_CURTAIN,
  1695. EL_ZEPHYR,
  1696. EL_SOLID_SKIN,
  1697. EL_STONE_SHIELD,
  1698. EL_POWER_OF_GAIA,
  1699. EL_PYROTECHNIC,
  1700. EL_HEATER,
  1701. EL_TROPIC,
  1702. EL_AQUAPLAY,
  1703. EL_COOLER,
  1704. EL_CHILLY_AIR,
  1705. EL_GUST,
  1706. EL_BLAST,
  1707. EL_WILD_STORM,
  1708. EL_PETROLOGY,
  1709. EL_CURSED_SOIL,
  1710. EL_UPHEAVAL,
  1711. EL_FIRE_ARROW,
  1712. EL_FIRE_BOMB,
  1713. EL_FIRE_BOMB_ATK,
  1714. EL_FIRE_WAVE,
  1715. EL_FIRE_WAVE_ATK,
  1716. EL_ICE_NEEDLE,
  1717. EL_WATER_SCREW,
  1718. EL_WATER_SCREW_ATK,
  1719. EL_TIDAL_WEAPON,
  1720. EL_WIND_SLASH,
  1721. EL_HURRICANE,
  1722. EL_HURRICANE_ATK,
  1723. EL_TYPOON_MIS,
  1724. EL_TYPOON_MIS_ATK,
  1725. EL_STONE_HAMMER,
  1726. EL_ROCK_CRUSHER,
  1727. EL_ROCK_CRUSHER_ATK,
  1728. EL_STONE_RAIN,
  1729. };
  1730. /// The client view ids for land skills.
  1731. enum s_skill_unit_id {
  1732. UNT_SAFETYWALL = 0x7e,
  1733. UNT_FIREWALL,
  1734. UNT_WARP_WAITING,
  1735. UNT_WARP_ACTIVE,
  1736. UNT_BENEDICTIO, //TODO
  1737. UNT_SANCTUARY,
  1738. UNT_MAGNUS,
  1739. UNT_PNEUMA,
  1740. UNT_DUMMYSKILL, //These show no effect on the client
  1741. UNT_FIREPILLAR_WAITING,
  1742. UNT_FIREPILLAR_ACTIVE,
  1743. UNT_HIDDEN_TRAP, //TODO
  1744. UNT_TRAP, //TODO
  1745. UNT_HIDDEN_WARP_NPC, //TODO
  1746. UNT_USED_TRAPS,
  1747. UNT_ICEWALL,
  1748. UNT_QUAGMIRE,
  1749. UNT_BLASTMINE,
  1750. UNT_SKIDTRAP,
  1751. UNT_ANKLESNARE,
  1752. UNT_VENOMDUST,
  1753. UNT_LANDMINE,
  1754. UNT_SHOCKWAVE,
  1755. UNT_SANDMAN,
  1756. UNT_FLASHER,
  1757. UNT_FREEZINGTRAP,
  1758. UNT_CLAYMORETRAP,
  1759. UNT_TALKIEBOX,
  1760. UNT_VOLCANO,
  1761. UNT_DELUGE,
  1762. UNT_VIOLENTGALE,
  1763. UNT_LANDPROTECTOR,
  1764. UNT_LULLABY,
  1765. UNT_RICHMANKIM,
  1766. UNT_ETERNALCHAOS,
  1767. UNT_DRUMBATTLEFIELD,
  1768. UNT_RINGNIBELUNGEN,
  1769. UNT_ROKISWEIL,
  1770. UNT_INTOABYSS,
  1771. UNT_SIEGFRIED,
  1772. UNT_DISSONANCE,
  1773. UNT_WHISTLE,
  1774. UNT_ASSASSINCROSS,
  1775. UNT_POEMBRAGI,
  1776. UNT_APPLEIDUN,
  1777. UNT_UGLYDANCE,
  1778. UNT_HUMMING,
  1779. UNT_DONTFORGETME,
  1780. UNT_FORTUNEKISS,
  1781. UNT_SERVICEFORYOU,
  1782. UNT_GRAFFITI,
  1783. UNT_DEMONSTRATION,
  1784. UNT_CALLFAMILY,
  1785. UNT_GOSPEL,
  1786. UNT_BASILICA,
  1787. UNT_MOONLIT,
  1788. UNT_FOGWALL,
  1789. UNT_SPIDERWEB,
  1790. UNT_GRAVITATION,
  1791. UNT_HERMODE,
  1792. UNT_KAENSIN, //TODO
  1793. UNT_SUITON,
  1794. UNT_TATAMIGAESHI,
  1795. UNT_KAEN,
  1796. UNT_GROUNDDRIFT_WIND,
  1797. UNT_GROUNDDRIFT_DARK,
  1798. UNT_GROUNDDRIFT_POISON,
  1799. UNT_GROUNDDRIFT_WATER,
  1800. UNT_GROUNDDRIFT_FIRE,
  1801. UNT_DEATHWAVE, //TODO
  1802. UNT_WATERATTACK, //TODO
  1803. UNT_WINDATTACK, //TODO
  1804. UNT_EARTHQUAKE, //TODO
  1805. UNT_EVILLAND,
  1806. UNT_DARK_RUNNER, //TODO
  1807. UNT_DARK_TRANSFER, //TODO
  1808. UNT_EPICLESIS,
  1809. UNT_EARTHSTRAIN,
  1810. UNT_MANHOLE,
  1811. UNT_DIMENSIONDOOR,
  1812. UNT_CHAOSPANIC,
  1813. UNT_MAELSTROM,
  1814. UNT_BLOODYLUST,
  1815. UNT_FEINTBOMB,
  1816. UNT_MAGENTATRAP,
  1817. UNT_COBALTTRAP,
  1818. UNT_MAIZETRAP,
  1819. UNT_VERDURETRAP,
  1820. UNT_FIRINGTRAP,
  1821. UNT_ICEBOUNDTRAP,
  1822. UNT_ELECTRICSHOCKER,
  1823. UNT_CLUSTERBOMB,
  1824. UNT_REVERBERATION,
  1825. UNT_SEVERE_RAINSTORM,
  1826. UNT_FIREWALK,
  1827. UNT_ELECTRICWALK,
  1828. UNT_NETHERWORLD,
  1829. UNT_PSYCHIC_WAVE,
  1830. UNT_CLOUD_KILL,
  1831. UNT_POISONSMOKE,
  1832. UNT_NEUTRALBARRIER,
  1833. UNT_STEALTHFIELD,
  1834. UNT_WARMER,
  1835. UNT_THORNS_TRAP,
  1836. UNT_WALLOFTHORN,
  1837. UNT_DEMONIC_FIRE,
  1838. UNT_FIRE_EXPANSION_SMOKE_POWDER,
  1839. UNT_FIRE_EXPANSION_TEAR_GAS,
  1840. UNT_HELLS_PLANT,
  1841. UNT_VACUUM_EXTREME,
  1842. UNT_BANDING,
  1843. UNT_FIRE_MANTLE,
  1844. UNT_WATER_BARRIER,
  1845. UNT_ZEPHYR,
  1846. UNT_POWER_OF_GAIA,
  1847. UNT_FIRE_INSIGNIA,
  1848. UNT_WATER_INSIGNIA,
  1849. UNT_WIND_INSIGNIA,
  1850. UNT_EARTH_INSIGNIA,
  1851. UNT_POISON_MIST,
  1852. UNT_LAVA_SLIDE,
  1853. UNT_VOLCANIC_ASH,
  1854. UNT_ZENKAI_WATER,
  1855. UNT_ZENKAI_LAND,
  1856. UNT_ZENKAI_FIRE,
  1857. UNT_ZENKAI_WIND,
  1858. UNT_MAKIBISHI,
  1859. UNT_VENOMFOG,
  1860. UNT_ICEMINE,
  1861. UNT_FLAMECROSS,
  1862. UNT_HELLBURNING,
  1863. UNT_MAGMA_ERUPTION,
  1864. UNT_KINGS_GRACE,
  1865. UNT_GLITTERING_GREED,
  1866. UNT_B_TRAP,
  1867. UNT_FIRE_RAIN,
  1868. /**
  1869. * Guild Auras
  1870. **/
  1871. UNT_GD_LEADERSHIP = 0xc1,
  1872. UNT_GD_GLORYWOUNDS = 0xc2,
  1873. UNT_GD_SOULCOLD = 0xc3,
  1874. UNT_GD_HAWKEYES = 0xc4,
  1875. UNT_MAX = 0x190
  1876. };
  1877. /**
  1878. * Skill Unit Save
  1879. **/
  1880. void skill_usave_add(struct map_session_data * sd, uint16 skill_id, uint16 skill_lv);
  1881. void skill_usave_trigger(struct map_session_data *sd);
  1882. /**
  1883. * Warlock
  1884. **/
  1885. #define MAX_SKILL_SPELLBOOK_DB 17
  1886. enum wl_spheres {
  1887. WLS_FIRE = 0x44,
  1888. WLS_WIND,
  1889. WLS_WATER,
  1890. WLS_STONE,
  1891. };
  1892. struct s_skill_spellbook_db {
  1893. unsigned short nameid;
  1894. unsigned short skill_id;
  1895. unsigned short point;
  1896. };
  1897. extern struct s_skill_spellbook_db skill_spellbook_db[MAX_SKILL_SPELLBOOK_DB];
  1898. extern unsigned short skill_spellbook_count;
  1899. void skill_spellbook (struct map_session_data *sd, unsigned short nameid);
  1900. int skill_block_check(struct block_list *bl, enum sc_type type, uint16 skill_id);
  1901. /**
  1902. * Guilottine Cross
  1903. **/
  1904. #define MAX_SKILL_MAGICMUSHROOM_DB 25
  1905. struct s_skill_magicmushroom_db {
  1906. uint16 skill_id;
  1907. };
  1908. extern struct s_skill_magicmushroom_db skill_magicmushroom_db[MAX_SKILL_MAGICMUSHROOM_DB];
  1909. extern unsigned short skill_magicmushroom_count;
  1910. int skill_maelstrom_suction(struct block_list *bl, va_list ap);
  1911. bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit);
  1912. /**
  1913. * Ranger
  1914. **/
  1915. int skill_detonator(struct block_list *bl, va_list ap);
  1916. bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce);
  1917. /**
  1918. * Mechanic
  1919. **/
  1920. int skill_magicdecoy(struct map_session_data *sd, unsigned short nameid);
  1921. /**
  1922. * Guiltoine Cross
  1923. **/
  1924. int skill_poisoningweapon( struct map_session_data *sd, unsigned short nameid);
  1925. /**
  1926. * Auto Shadow Spell (Shadow Chaser)
  1927. **/
  1928. int skill_select_menu(struct map_session_data *sd,uint16 skill_id);
  1929. int skill_elementalanalysis(struct map_session_data *sd, int n, uint16 skill_lv, unsigned short *item_list); // Sorcerer Four Elemental Analisys.
  1930. int skill_changematerial(struct map_session_data *sd, int n, unsigned short *item_list); // Genetic Change Material.
  1931. int skill_get_elemental_type(uint16 skill_id, uint16 skill_lv);
  1932. bool skill_is_combo(uint16 skill_id);
  1933. void skill_combo_toogle_inf(struct block_list* bl, uint16 skill_id, int inf);
  1934. void skill_combo(struct block_list* src,struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int tick);
  1935. #ifdef ADJUST_SKILL_DAMAGE
  1936. /// Skill Damage target
  1937. enum e_skill_damage_caster {
  1938. SDC_PC = 0x01,
  1939. SDC_MOB = 0x02,
  1940. SDC_PET = 0x04,
  1941. SDC_HOM = 0x08,
  1942. SDC_MER = 0x10,
  1943. SDC_ELEM = 0x20,
  1944. SDC_ALL = SDC_PC|SDC_MOB|SDC_PET|SDC_HOM|SDC_MER|SDC_ELEM,
  1945. };
  1946. #endif
  1947. /// Variable name of copied skill by Plagiarism
  1948. #define SKILL_VAR_PLAGIARISM "CLONE_SKILL"
  1949. /// Variable name of copied skill level by Plagiarism
  1950. #define SKILL_VAR_PLAGIARISM_LV "CLONE_SKILL_LV"
  1951. /// Variable name of copied skill by Reproduce
  1952. #define SKILL_VAR_REPRODUCE "REPRODUCE_SKILL"
  1953. /// Variable name of copied skill level by Reproduce
  1954. #define SKILL_VAR_REPRODUCE_LV "REPRODUCE_SKILL_LV"
  1955. #define SKILL_CHK_HOMUN(skill_id) ( (skill_id) >= HM_SKILLBASE && (skill_id) < HM_SKILLBASE+MAX_HOMUNSKILL )
  1956. #define SKILL_CHK_MERC(skill_id) ( (skill_id) >= MC_SKILLBASE && (skill_id) < MC_SKILLBASE+MAX_MERCSKILL )
  1957. #define SKILL_CHK_ELEM(skill_id) ( (skill_id) >= EL_SKILLBASE && (skill_id) < EL_SKILLBASE+MAX_ELEMENTALSKILL )
  1958. #define SKILL_CHK_GUILD(skill_id) ( (skill_id) >= GD_SKILLBASE && (skill_id) < GD_SKILLBASE+MAX_GUILDSKILL )
  1959. #endif /* _SKILL_H_ */