skill.h 45 KB

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