script.hpp 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055
  1. // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef SCRIPT_HPP
  4. #define SCRIPT_HPP
  5. #include "../common/cbasetypes.hpp"
  6. #include "../common/db.hpp"
  7. #include "../common/mmo.hpp"
  8. #include "../common/timer.hpp"
  9. #define NUM_WHISPER_VAR 10
  10. ///////////////////////////////////////////////////////////////////////////////
  11. //## TODO possible enhancements: [FlavioJS]
  12. // - 'callfunc' supporting labels in the current npc "::LabelName"
  13. // - 'callfunc' supporting labels in other npcs "NpcName::LabelName"
  14. // - 'function FuncName;' function declarations reverting to global functions
  15. // if local label isn't found
  16. // - join callfunc and callsub's functionality
  17. // - remove dynamic allocation in add_word()
  18. // - remove GETVALUE / SETVALUE
  19. // - clean up the set_reg / set_val / setd_sub mess
  20. // - detect invalid label references at parse-time
  21. //
  22. // struct script_state* st;
  23. //
  24. /// Returns the script_data at the target index
  25. #define script_getdata(st,i) ( &((st)->stack->stack_data[(st)->start + (i)]) )
  26. /// Returns if the stack contains data at the target index
  27. #define script_hasdata(st,i) ( (st)->end > (st)->start + (i) )
  28. /// Returns the index of the last data in the stack
  29. #define script_lastdata(st) ( (st)->end - (st)->start - 1 )
  30. /// Pushes an int into the stack
  31. #define script_pushint(st,val) push_val((st)->stack, C_INT, (val))
  32. /// Pushes a string into the stack (script engine frees it automatically)
  33. #define script_pushstr(st,val) push_str((st)->stack, C_STR, (val))
  34. /// Pushes a copy of a string into the stack
  35. #define script_pushstrcopy(st,val) push_str((st)->stack, C_STR, aStrdup(val))
  36. /// Pushes a constant string into the stack (must never change or be freed)
  37. #define script_pushconststr(st,val) push_str((st)->stack, C_CONSTSTR, const_cast<char *>(val))
  38. /// Pushes a nil into the stack
  39. #define script_pushnil(st) push_val((st)->stack, C_NOP, 0)
  40. /// Pushes a copy of the data in the target index
  41. #define script_pushcopy(st,i) push_copy((st)->stack, (st)->start + (i))
  42. #define script_isstring(st,i) data_isstring(get_val(st, script_getdata(st,i)))
  43. #define script_isint(st,i) data_isint(get_val(st, script_getdata(st,i)))
  44. #define script_getnum(st,val) conv_num(st, script_getdata(st,val))
  45. #define script_getstr(st,val) conv_str(st, script_getdata(st,val))
  46. #define script_getref(st,val) ( script_getdata(st,val)->ref )
  47. // Returns name of currently running function
  48. #define script_getfuncname(st) ( st->funcname )
  49. // Note: "top" functions/defines use indexes relative to the top of the stack
  50. // -1 is the index of the data at the top
  51. /// Returns the script_data at the target index relative to the top of the stack
  52. #define script_getdatatop(st,i) ( &((st)->stack->stack_data[(st)->stack->sp + (i)]) )
  53. /// Pushes a copy of the data in the target index relative to the top of the stack
  54. #define script_pushcopytop(st,i) push_copy((st)->stack, (st)->stack->sp + (i))
  55. /// Removes the range of values [start,end[ relative to the top of the stack
  56. #define script_removetop(st,start,end) ( pop_stack((st), ((st)->stack->sp + (start)), (st)->stack->sp + (end)) )
  57. //
  58. // struct script_data* data;
  59. //
  60. /// Returns if the script data is a string
  61. #define data_isstring(data) ( (data)->type == C_STR || (data)->type == C_CONSTSTR )
  62. /// Returns if the script data is an int
  63. #define data_isint(data) ( (data)->type == C_INT )
  64. /// Returns if the script data is a reference
  65. #define data_isreference(data) ( (data)->type == C_NAME )
  66. /// Returns if the script data is a label
  67. #define data_islabel(data) ( (data)->type == C_POS )
  68. /// Returns if the script data is an internal script function label
  69. #define data_isfunclabel(data) ( (data)->type == C_USERFUNC_POS )
  70. /// Returns if this is a reference to a constant
  71. #define reference_toconstant(data) ( str_data[reference_getid(data)].type == C_INT )
  72. /// Returns if this a reference to a param
  73. #define reference_toparam(data) ( str_data[reference_getid(data)].type == C_PARAM )
  74. /// Returns if this a reference to a variable
  75. //##TODO confirm it's C_NAME [FlavioJS]
  76. #define reference_tovariable(data) ( str_data[reference_getid(data)].type == C_NAME )
  77. /// Returns the unique id of the reference (id and index)
  78. #define reference_getuid(data) ( (data)->u.num )
  79. /// Returns the id of the reference
  80. #define reference_getid(data) ( (int32)(int64)(reference_getuid(data) & 0xffffffff) )
  81. /// Returns the array index of the reference
  82. #define reference_getindex(data) ( (uint32)(int64)((reference_getuid(data) >> 32) & 0xffffffff) )
  83. /// Returns the name of the reference
  84. #define reference_getname(data) ( str_buf + str_data[reference_getid(data)].str )
  85. /// Returns the linked list of uid-value pairs of the reference (can be NULL)
  86. #define reference_getref(data) ( (data)->ref )
  87. /// Returns the value of the constant
  88. #define reference_getconstant(data) ( str_data[reference_getid(data)].val )
  89. /// Returns the type of param
  90. #define reference_getparamtype(data) ( str_data[reference_getid(data)].val )
  91. /// Composes the uid of a reference from the id and the index
  92. #define reference_uid(id,idx) ( (int64) ((uint64)(id) & 0xFFFFFFFF) | ((uint64)(idx) << 32) )
  93. /// Checks whether two references point to the same variable (or array)
  94. #define is_same_reference(data1, data2) \
  95. ( reference_getid(data1) == reference_getid(data2) \
  96. && ( (data1->ref == data2->ref && data1->ref == NULL) \
  97. || (data1->ref != NULL && data2->ref != NULL && data1->ref->vars == data2->ref->vars \
  98. ) ) )
  99. #define script_getvarid(var) ( (int32)(int64)(var & 0xFFFFFFFF) )
  100. #define script_getvaridx(var) ( (uint32)(int64)((var >> 32) & 0xFFFFFFFF) )
  101. #define not_server_variable(prefix) ( (prefix) != '$' && (prefix) != '.' && (prefix) != '\'')
  102. #define is_string_variable(name) ( (name)[strlen(name) - 1] == '$' )
  103. #define FETCH(n, t) \
  104. if( script_hasdata(st,n) ) \
  105. (t)=script_getnum(st,n);
  106. /// Maximum amount of elements in script arrays
  107. #define SCRIPT_MAX_ARRAYSIZE (UINT_MAX - 1)
  108. enum script_cmd_result {
  109. SCRIPT_CMD_SUCCESS = 0, ///when a buildin cmd was correctly done
  110. SCRIPT_CMD_FAILURE = 1, ///when an errors appear in cmd, show_debug will follow
  111. };
  112. #define SCRIPT_BLOCK_SIZE 512
  113. enum e_labelType { LABEL_NEXTLINE = 1, LABEL_START };
  114. struct map_session_data;
  115. struct eri;
  116. extern int potion_flag; //For use on Alchemist improved potions/Potion Pitcher. [Skotlex]
  117. extern int potion_hp, potion_per_hp, potion_sp, potion_per_sp;
  118. extern int potion_target;
  119. extern unsigned int *generic_ui_array;
  120. extern unsigned int generic_ui_array_size;
  121. struct Script_Config {
  122. unsigned warn_func_mismatch_argtypes : 1;
  123. unsigned warn_func_mismatch_paramnum : 1;
  124. int check_cmdcount;
  125. int check_gotocount;
  126. int input_min_value;
  127. int input_max_value;
  128. // PC related
  129. const char *die_event_name;
  130. const char *kill_pc_event_name;
  131. const char *kill_mob_event_name;
  132. const char *login_event_name;
  133. const char *logout_event_name;
  134. const char *loadmap_event_name;
  135. const char *baselvup_event_name;
  136. const char *joblvup_event_name;
  137. const char *stat_calc_event_name;
  138. // NPC related
  139. const char* ontouch_event_name;
  140. const char* ontouch2_event_name;
  141. const char* ontouchnpc_event_name;
  142. const char* onwhisper_event_name;
  143. const char* oncommand_event_name;
  144. const char* onbuy_event_name;
  145. const char* onsell_event_name;
  146. // Init related
  147. const char* init_event_name;
  148. const char* inter_init_event_name;
  149. const char* inter_init_once_event_name;
  150. // Guild related
  151. const char* guild_break_event_name;
  152. const char* agit_start_event_name;
  153. const char* agit_init_event_name;
  154. const char* agit_end_event_name;
  155. const char* agit_start2_event_name;
  156. const char* agit_init2_event_name;
  157. const char* agit_end2_event_name;
  158. const char* agit_start3_event_name;
  159. const char* agit_init3_event_name;
  160. const char* agit_end3_event_name;
  161. // Timer related
  162. const char* timer_event_name;
  163. const char* timer_quit_event_name;
  164. const char* timer_minute_event_name;
  165. const char* timer_hour_event_name;
  166. const char* timer_clock_event_name;
  167. const char* timer_day_event_name;
  168. const char* timer_sunday_event_name;
  169. const char* timer_monday_event_name;
  170. const char* timer_tuesday_event_name;
  171. const char* timer_wednesday_event_name;
  172. const char* timer_thursday_event_name;
  173. const char* timer_friday_event_name;
  174. const char* timer_saturday_event_name;
  175. // Instance related
  176. const char* instance_init_event_name;
  177. const char* instance_destroy_event_name;
  178. };
  179. extern struct Script_Config script_config;
  180. typedef enum c_op {
  181. C_NOP, // end of script/no value (nil)
  182. C_POS,
  183. C_INT, // number
  184. C_PARAM, // parameter variable (see pc_readparam/pc_setparam)
  185. C_FUNC, // buildin function call
  186. C_STR, // string (free'd automatically)
  187. C_CONSTSTR, // string (not free'd)
  188. C_ARG, // start of argument list
  189. C_NAME,
  190. C_EOL, // end of line (extra stack values are cleared)
  191. C_RETINFO,
  192. C_USERFUNC, // internal script function
  193. C_USERFUNC_POS, // internal script function label
  194. C_REF, // the next call to c_op2 should push back a ref to the left operand
  195. // operators
  196. C_OP3, // a ? b : c
  197. C_LOR, // a || b
  198. C_LAND, // a && b
  199. C_LE, // a <= b
  200. C_LT, // a < b
  201. C_GE, // a >= b
  202. C_GT, // a > b
  203. C_EQ, // a == b
  204. C_NE, // a != b
  205. C_XOR, // a ^ b
  206. C_OR, // a | b
  207. C_AND, // a & b
  208. C_ADD, // a + b
  209. C_SUB, // a - b
  210. C_MUL, // a * b
  211. C_DIV, // a / b
  212. C_MOD, // a % b
  213. C_NEG, // - a
  214. C_LNOT, // ! a
  215. C_NOT, // ~ a
  216. C_R_SHIFT, // a >> b
  217. C_L_SHIFT, // a << b
  218. C_ADD_POST, // a++
  219. C_SUB_POST, // a--
  220. C_ADD_PRE, // ++a
  221. C_SUB_PRE, // --a
  222. } c_op;
  223. /**
  224. * Generic reg database abstraction to be used with various types of regs/script variables.
  225. */
  226. struct reg_db {
  227. struct DBMap *vars;
  228. struct DBMap *arrays;
  229. };
  230. struct script_retinfo {
  231. struct reg_db scope; ///< scope variables
  232. struct script_code* script; ///< script code
  233. int pos; ///< script location
  234. int nargs; ///< argument count
  235. int defsp; ///< default stack pointer
  236. };
  237. struct script_data {
  238. enum c_op type;
  239. union script_data_val {
  240. int64 num;
  241. char *str;
  242. struct script_retinfo* ri;
  243. } u;
  244. struct reg_db *ref;
  245. };
  246. // Moved defsp from script_state to script_stack since
  247. // it must be saved when script state is RERUNLINE. [Eoe / jA 1094]
  248. struct script_code {
  249. int script_size;
  250. unsigned char* script_buf;
  251. struct reg_db local;
  252. unsigned short instances;
  253. };
  254. struct script_stack {
  255. int sp; ///< number of entries in the stack
  256. int sp_max; ///< capacity of the stack
  257. int defsp;
  258. struct script_data *stack_data; ///< stack
  259. struct reg_db scope; ///< scope variables
  260. };
  261. //
  262. // Script state
  263. //
  264. enum e_script_state { RUN,STOP,END,RERUNLINE,GOTO,RETFUNC,CLOSE };
  265. struct script_state {
  266. struct script_stack* stack;
  267. int start,end;
  268. int pos;
  269. enum e_script_state state;
  270. int rid,oid;
  271. struct script_code *script;
  272. struct sleep_data {
  273. int tick,timer,charid;
  274. } sleep;
  275. //For backing up purposes
  276. struct script_state *bk_st;
  277. int bk_npcid;
  278. unsigned freeloop : 1;// used by buildin_freeloop
  279. unsigned op2ref : 1;// used by op_2
  280. unsigned npc_item_flag : 1;
  281. unsigned mes_active : 1; // Store if invoking character has a NPC dialog box open.
  282. char* funcname; // Stores the current running function name
  283. unsigned int id;
  284. };
  285. struct script_reg {
  286. int64 index;
  287. int data;
  288. };
  289. struct script_regstr {
  290. int64 index;
  291. char* data;
  292. };
  293. struct script_array {
  294. unsigned int id; ///< the first 32b of the 64b uid, aka the id
  295. unsigned int size; ///< how many members
  296. unsigned int *members; ///< member list
  297. };
  298. enum script_parse_options {
  299. SCRIPT_USE_LABEL_DB = 0x1,// records labels in scriptlabel_db
  300. SCRIPT_IGNORE_EXTERNAL_BRACKETS = 0x2,// ignores the check for {} brackets around the script
  301. SCRIPT_RETURN_EMPTY_SCRIPT = 0x4// returns the script object instead of NULL for empty scripts
  302. };
  303. enum monsterinfo_types {
  304. MOB_NAME = 0,
  305. MOB_LV,
  306. MOB_MAXHP,
  307. MOB_BASEEXP,
  308. MOB_JOBEXP,
  309. MOB_ATK1,
  310. MOB_ATK2,
  311. MOB_DEF,
  312. MOB_MDEF,
  313. MOB_STR,
  314. MOB_AGI,
  315. MOB_VIT,
  316. MOB_INT,
  317. MOB_DEX,
  318. MOB_LUK,
  319. MOB_RANGE,
  320. MOB_RANGE2,
  321. MOB_RANGE3,
  322. MOB_SIZE,
  323. MOB_RACE,
  324. MOB_ELEMENT,
  325. MOB_MODE,
  326. MOB_MVPEXP
  327. };
  328. enum petinfo_types {
  329. PETINFO_ID = 0,
  330. PETINFO_CLASS,
  331. PETINFO_NAME,
  332. PETINFO_INTIMATE,
  333. PETINFO_HUNGRY,
  334. PETINFO_RENAMED,
  335. PETINFO_LEVEL,
  336. PETINFO_BLOCKID,
  337. PETINFO_EGGID,
  338. PETINFO_FOODID
  339. };
  340. enum questinfo_types {
  341. QTYPE_QUEST = 0,
  342. QTYPE_QUEST2,
  343. QTYPE_JOB,
  344. QTYPE_JOB2,
  345. QTYPE_EVENT,
  346. QTYPE_EVENT2,
  347. QTYPE_WARG,
  348. QTYPE_CLICKME = QTYPE_WARG,
  349. QTYPE_DAILYQUEST,
  350. QTYPE_WARG2,
  351. QTYPE_EVENT3 = QTYPE_WARG2,
  352. QTYPE_JOBQUEST,
  353. QTYPE_JUMPING_PORING,
  354. // 11 - 9998 = free
  355. QTYPE_NONE = 9999
  356. };
  357. #ifndef WIN32
  358. // These are declared in wingdi.h
  359. /* Font Weights */
  360. #define FW_DONTCARE 0
  361. #define FW_THIN 100
  362. #define FW_EXTRALIGHT 200
  363. #define FW_LIGHT 300
  364. #define FW_NORMAL 400
  365. #define FW_MEDIUM 500
  366. #define FW_SEMIBOLD 600
  367. #define FW_BOLD 700
  368. #define FW_EXTRABOLD 800
  369. #define FW_HEAVY 900
  370. #endif
  371. enum unitdata_mobtypes {
  372. UMOB_SIZE = 0,
  373. UMOB_LEVEL,
  374. UMOB_HP,
  375. UMOB_MAXHP,
  376. UMOB_MASTERAID,
  377. UMOB_MAPID,
  378. UMOB_X,
  379. UMOB_Y,
  380. UMOB_SPEED,
  381. UMOB_MODE,
  382. UMOB_AI,
  383. UMOB_SCOPTION,
  384. UMOB_SEX,
  385. UMOB_CLASS,
  386. UMOB_HAIRSTYLE,
  387. UMOB_HAIRCOLOR,
  388. UMOB_HEADBOTTOM,
  389. UMOB_HEADMIDDLE,
  390. UMOB_HEADTOP,
  391. UMOB_CLOTHCOLOR,
  392. UMOB_SHIELD,
  393. UMOB_WEAPON,
  394. UMOB_LOOKDIR,
  395. UMOB_CANMOVETICK,
  396. UMOB_STR,
  397. UMOB_AGI,
  398. UMOB_VIT,
  399. UMOB_INT,
  400. UMOB_DEX,
  401. UMOB_LUK,
  402. UMOB_SLAVECPYMSTRMD,
  403. UMOB_DMGIMMUNE,
  404. UMOB_ATKRANGE,
  405. UMOB_ATKMIN,
  406. UMOB_ATKMAX,
  407. UMOB_MATKMIN,
  408. UMOB_MATKMAX,
  409. UMOB_DEF,
  410. UMOB_MDEF,
  411. UMOB_HIT,
  412. UMOB_FLEE,
  413. UMOB_PDODGE,
  414. UMOB_CRIT,
  415. UMOB_RACE,
  416. UMOB_ELETYPE,
  417. UMOB_ELELEVEL,
  418. UMOB_AMOTION,
  419. UMOB_ADELAY,
  420. UMOB_DMOTION,
  421. UMOB_TARGETID,
  422. };
  423. enum unitdata_homuntypes {
  424. UHOM_SIZE = 0,
  425. UHOM_LEVEL,
  426. UHOM_HP,
  427. UHOM_MAXHP,
  428. UHOM_SP,
  429. UHOM_MAXSP,
  430. UHOM_MASTERCID,
  431. UHOM_MAPID,
  432. UHOM_X,
  433. UHOM_Y,
  434. UHOM_HUNGER,
  435. UHOM_INTIMACY,
  436. UHOM_SPEED,
  437. UHOM_LOOKDIR,
  438. UHOM_CANMOVETICK,
  439. UHOM_STR,
  440. UHOM_AGI,
  441. UHOM_VIT,
  442. UHOM_INT,
  443. UHOM_DEX,
  444. UHOM_LUK,
  445. UHOM_DMGIMMUNE,
  446. UHOM_ATKRANGE,
  447. UHOM_ATKMIN,
  448. UHOM_ATKMAX,
  449. UHOM_MATKMIN,
  450. UHOM_MATKMAX,
  451. UHOM_DEF,
  452. UHOM_MDEF,
  453. UHOM_HIT,
  454. UHOM_FLEE,
  455. UHOM_PDODGE,
  456. UHOM_CRIT,
  457. UHOM_RACE,
  458. UHOM_ELETYPE,
  459. UHOM_ELELEVEL,
  460. UHOM_AMOTION,
  461. UHOM_ADELAY,
  462. UHOM_DMOTION,
  463. UHOM_TARGETID,
  464. };
  465. enum unitdata_pettypes {
  466. UPET_SIZE = 0,
  467. UPET_LEVEL,
  468. UPET_HP,
  469. UPET_MAXHP,
  470. UPET_MASTERAID,
  471. UPET_MAPID,
  472. UPET_X,
  473. UPET_Y,
  474. UPET_HUNGER,
  475. UPET_INTIMACY,
  476. UPET_SPEED,
  477. UPET_LOOKDIR,
  478. UPET_CANMOVETICK,
  479. UPET_STR,
  480. UPET_AGI,
  481. UPET_VIT,
  482. UPET_INT,
  483. UPET_DEX,
  484. UPET_LUK,
  485. UPET_DMGIMMUNE,
  486. UPET_ATKRANGE,
  487. UPET_ATKMIN,
  488. UPET_ATKMAX,
  489. UPET_MATKMIN,
  490. UPET_MATKMAX,
  491. UPET_DEF,
  492. UPET_MDEF,
  493. UPET_HIT,
  494. UPET_FLEE,
  495. UPET_PDODGE,
  496. UPET_CRIT,
  497. UPET_RACE,
  498. UPET_ELETYPE,
  499. UPET_ELELEVEL,
  500. UPET_AMOTION,
  501. UPET_ADELAY,
  502. UPET_DMOTION,
  503. };
  504. enum unitdata_merctypes {
  505. UMER_SIZE = 0,
  506. UMER_HP,
  507. UMER_MAXHP,
  508. UMER_MASTERCID,
  509. UMER_MAPID,
  510. UMER_X,
  511. UMER_Y,
  512. UMER_KILLCOUNT,
  513. UMER_LIFETIME,
  514. UMER_SPEED,
  515. UMER_LOOKDIR,
  516. UMER_CANMOVETICK,
  517. UMER_STR,
  518. UMER_AGI,
  519. UMER_VIT,
  520. UMER_INT,
  521. UMER_DEX,
  522. UMER_LUK,
  523. UMER_DMGIMMUNE,
  524. UMER_ATKRANGE,
  525. UMER_ATKMIN,
  526. UMER_ATKMAX,
  527. UMER_MATKMIN,
  528. UMER_MATKMAX,
  529. UMER_DEF,
  530. UMER_MDEF,
  531. UMER_HIT,
  532. UMER_FLEE,
  533. UMER_PDODGE,
  534. UMER_CRIT,
  535. UMER_RACE,
  536. UMER_ELETYPE,
  537. UMER_ELELEVEL,
  538. UMER_AMOTION,
  539. UMER_ADELAY,
  540. UMER_DMOTION,
  541. UMER_TARGETID,
  542. };
  543. enum unitdata_elemtypes {
  544. UELE_SIZE = 0,
  545. UELE_HP,
  546. UELE_MAXHP,
  547. UELE_SP,
  548. UELE_MAXSP,
  549. UELE_MASTERCID,
  550. UELE_MAPID,
  551. UELE_X,
  552. UELE_Y,
  553. UELE_LIFETIME,
  554. UELE_MODE,
  555. UELE_SPEED,
  556. UELE_LOOKDIR,
  557. UELE_CANMOVETICK,
  558. UELE_STR,
  559. UELE_AGI,
  560. UELE_VIT,
  561. UELE_INT,
  562. UELE_DEX,
  563. UELE_LUK,
  564. UELE_DMGIMMUNE,
  565. UELE_ATKRANGE,
  566. UELE_ATKMIN,
  567. UELE_ATKMAX,
  568. UELE_MATKMIN,
  569. UELE_MATKMAX,
  570. UELE_DEF,
  571. UELE_MDEF,
  572. UELE_HIT,
  573. UELE_FLEE,
  574. UELE_PDODGE,
  575. UELE_CRIT,
  576. UELE_RACE,
  577. UELE_ELETYPE,
  578. UELE_ELELEVEL,
  579. UELE_AMOTION,
  580. UELE_ADELAY,
  581. UELE_DMOTION,
  582. UELE_TARGETID,
  583. };
  584. enum unitdata_npctypes {
  585. UNPC_DISPLAY = 0,
  586. UNPC_LEVEL,
  587. UNPC_HP,
  588. UNPC_MAXHP,
  589. UNPC_MAPID,
  590. UNPC_X,
  591. UNPC_Y,
  592. UNPC_LOOKDIR,
  593. UNPC_STR,
  594. UNPC_AGI,
  595. UNPC_VIT,
  596. UNPC_INT,
  597. UNPC_DEX,
  598. UNPC_LUK,
  599. UNPC_PLUSALLSTAT,
  600. UNPC_DMGIMMUNE,
  601. UNPC_ATKRANGE,
  602. UNPC_ATKMIN,
  603. UNPC_ATKMAX,
  604. UNPC_MATKMIN,
  605. UNPC_MATKMAX,
  606. UNPC_DEF,
  607. UNPC_MDEF,
  608. UNPC_HIT,
  609. UNPC_FLEE,
  610. UNPC_PDODGE,
  611. UNPC_CRIT,
  612. UNPC_RACE,
  613. UNPC_ELETYPE,
  614. UNPC_ELELEVEL,
  615. UNPC_AMOTION,
  616. UNPC_ADELAY,
  617. UNPC_DMOTION,
  618. };
  619. enum navigation_service {
  620. NAV_NONE = 0, ///< 0
  621. NAV_AIRSHIP_ONLY = 1, ///< 1 (actually 1-9)
  622. NAV_SCROLL_ONLY = 10, ///< 10
  623. NAV_AIRSHIP_AND_SCROLL = NAV_AIRSHIP_ONLY + NAV_SCROLL_ONLY, ///< 11 (actually 11-99)
  624. NAV_KAFRA_ONLY = 100, ///< 100
  625. NAV_KAFRA_AND_AIRSHIP = NAV_KAFRA_ONLY + NAV_AIRSHIP_ONLY, ///< 101 (actually 101-109)
  626. NAV_KAFRA_AND_SCROLL = NAV_KAFRA_ONLY + NAV_SCROLL_ONLY, ///< 110
  627. NAV_ALL = NAV_AIRSHIP_ONLY + NAV_SCROLL_ONLY + NAV_KAFRA_ONLY ///< 111 (actually 111-255)
  628. };
  629. enum random_option_attribute {
  630. ROA_ID = 0,
  631. ROA_VALUE,
  632. ROA_PARAM,
  633. };
  634. enum instance_info_type {
  635. IIT_ID,
  636. IIT_TIME_LIMIT,
  637. IIT_IDLE_TIMEOUT,
  638. IIT_ENTER_MAP,
  639. IIT_ENTER_X,
  640. IIT_ENTER_Y,
  641. IIT_MAPCOUNT,
  642. IIT_MAP
  643. };
  644. enum e_instance_live_info_type : uint8 {
  645. ILI_NAME,
  646. ILI_MODE,
  647. ILI_OWNER
  648. };
  649. enum vip_status_type {
  650. VIP_STATUS_ACTIVE = 1,
  651. VIP_STATUS_EXPIRE,
  652. VIP_STATUS_REMAINING
  653. };
  654. enum e_special_effects {
  655. EF_NONE = -1,
  656. EF_HIT1,
  657. EF_HIT2,
  658. EF_HIT3,
  659. EF_HIT4,
  660. EF_HIT5,
  661. EF_HIT6,
  662. EF_ENTRY,
  663. EF_EXIT,
  664. EF_WARP,
  665. EF_ENHANCE,
  666. EF_COIN,
  667. EF_ENDURE,
  668. EF_BEGINSPELL,
  669. EF_GLASSWALL,
  670. EF_HEALSP,
  671. EF_SOULSTRIKE,
  672. EF_BASH,
  673. EF_MAGNUMBREAK,
  674. EF_STEAL,
  675. EF_HIDING,
  676. EF_PATTACK,
  677. EF_DETOXICATION,
  678. EF_SIGHT,
  679. EF_STONECURSE,
  680. EF_FIREBALL,
  681. EF_FIREWALL,
  682. EF_ICEARROW,
  683. EF_FROSTDIVER,
  684. EF_FROSTDIVER2,
  685. EF_LIGHTBOLT,
  686. EF_THUNDERSTORM,
  687. EF_FIREARROW,
  688. EF_NAPALMBEAT,
  689. EF_RUWACH,
  690. EF_TELEPORTATION,
  691. EF_READYPORTAL,
  692. EF_PORTAL,
  693. EF_INCAGILITY,
  694. EF_DECAGILITY,
  695. EF_AQUA,
  696. EF_SIGNUM,
  697. EF_ANGELUS,
  698. EF_BLESSING,
  699. EF_INCAGIDEX,
  700. EF_SMOKE,
  701. EF_FIREFLY,
  702. EF_SANDWIND,
  703. EF_TORCH,
  704. EF_SPRAYPOND,
  705. EF_FIREHIT,
  706. EF_FIRESPLASHHIT,
  707. EF_COLDHIT,
  708. EF_WINDHIT,
  709. EF_POISONHIT,
  710. EF_BEGINSPELL2,
  711. EF_BEGINSPELL3,
  712. EF_BEGINSPELL4,
  713. EF_BEGINSPELL5,
  714. EF_BEGINSPELL6,
  715. EF_BEGINSPELL7,
  716. EF_LOCKON,
  717. EF_WARPZONE,
  718. EF_SIGHTRASHER,
  719. EF_BARRIER,
  720. EF_ARROWSHOT,
  721. EF_INVENOM,
  722. EF_CURE,
  723. EF_PROVOKE,
  724. EF_MVP,
  725. EF_SKIDTRAP,
  726. EF_BRANDISHSPEAR,
  727. EF_CONE,
  728. EF_SPHERE,
  729. EF_BOWLINGBASH,
  730. EF_ICEWALL,
  731. EF_GLORIA,
  732. EF_MAGNIFICAT,
  733. EF_RESURRECTION,
  734. EF_RECOVERY,
  735. EF_EARTHSPIKE,
  736. EF_SPEARBMR,
  737. EF_PIERCE,
  738. EF_TURNUNDEAD,
  739. EF_SANCTUARY,
  740. EF_IMPOSITIO,
  741. EF_LEXAETERNA,
  742. EF_ASPERSIO,
  743. EF_LEXDIVINA,
  744. EF_SUFFRAGIUM,
  745. EF_STORMGUST,
  746. EF_LORD,
  747. EF_BENEDICTIO,
  748. EF_METEORSTORM,
  749. EF_YUFITEL,
  750. EF_YUFITELHIT,
  751. EF_QUAGMIRE,
  752. EF_FIREPILLAR,
  753. EF_FIREPILLARBOMB,
  754. EF_HASTEUP,
  755. EF_FLASHER,
  756. EF_REMOVETRAP,
  757. EF_REPAIRWEAPON,
  758. EF_CRASHEARTH,
  759. EF_PERFECTION,
  760. EF_MAXPOWER,
  761. EF_BLASTMINE,
  762. EF_BLASTMINEBOMB,
  763. EF_CLAYMORE,
  764. EF_FREEZING,
  765. EF_BUBBLE,
  766. EF_GASPUSH,
  767. EF_SPRINGTRAP,
  768. EF_KYRIE,
  769. EF_MAGNUS,
  770. EF_BOTTOM,
  771. EF_BLITZBEAT,
  772. EF_WATERBALL,
  773. EF_WATERBALL2,
  774. EF_FIREIVY,
  775. EF_DETECTING,
  776. EF_CLOAKING,
  777. EF_SONICBLOW,
  778. EF_SONICBLOWHIT,
  779. EF_GRIMTOOTH,
  780. EF_VENOMDUST,
  781. EF_ENCHANTPOISON,
  782. EF_POISONREACT,
  783. EF_POISONREACT2,
  784. EF_OVERTHRUST,
  785. EF_SPLASHER,
  786. EF_TWOHANDQUICKEN,
  787. EF_AUTOCOUNTER,
  788. EF_GRIMTOOTHATK,
  789. EF_FREEZE,
  790. EF_FREEZED,
  791. EF_ICECRASH,
  792. EF_SLOWPOISON,
  793. EF_BOTTOM2,
  794. EF_FIREPILLARON,
  795. EF_SANDMAN,
  796. EF_REVIVE,
  797. EF_PNEUMA,
  798. EF_HEAVENSDRIVE,
  799. EF_SONICBLOW2,
  800. EF_BRANDISH2,
  801. EF_SHOCKWAVE,
  802. EF_SHOCKWAVEHIT,
  803. EF_EARTHHIT,
  804. EF_PIERCESELF,
  805. EF_BOWLINGSELF,
  806. EF_SPEARSTABSELF,
  807. EF_SPEARBMRSELF,
  808. EF_HOLYHIT,
  809. EF_CONCENTRATION,
  810. EF_REFINEOK,
  811. EF_REFINEFAIL,
  812. EF_JOBCHANGE,
  813. EF_LVUP,
  814. EF_JOBLVUP,
  815. EF_TOPRANK,
  816. EF_PARTY,
  817. EF_RAIN,
  818. EF_SNOW,
  819. EF_SAKURA,
  820. EF_STATUS_STATE,
  821. EF_BANJJAKII,
  822. EF_MAKEBLUR,
  823. EF_TAMINGSUCCESS,
  824. EF_TAMINGFAILED,
  825. EF_ENERGYCOAT,
  826. EF_CARTREVOLUTION,
  827. EF_VENOMDUST2,
  828. EF_CHANGEDARK,
  829. EF_CHANGEFIRE,
  830. EF_CHANGECOLD,
  831. EF_CHANGEWIND,
  832. EF_CHANGEFLAME,
  833. EF_CHANGEEARTH,
  834. EF_CHAINGEHOLY,
  835. EF_CHANGEPOISON,
  836. EF_HITDARK,
  837. EF_MENTALBREAK,
  838. EF_MAGICALATTHIT,
  839. EF_SUI_EXPLOSION,
  840. EF_DARKATTACK,
  841. EF_SUICIDE,
  842. EF_COMBOATTACK1,
  843. EF_COMBOATTACK2,
  844. EF_COMBOATTACK3,
  845. EF_COMBOATTACK4,
  846. EF_COMBOATTACK5,
  847. EF_GUIDEDATTACK,
  848. EF_POISONATTACK,
  849. EF_SILENCEATTACK,
  850. EF_STUNATTACK,
  851. EF_PETRIFYATTACK,
  852. EF_CURSEATTACK,
  853. EF_SLEEPATTACK,
  854. EF_TELEKHIT,
  855. EF_PONG,
  856. EF_LEVEL99,
  857. EF_LEVEL99_2,
  858. EF_LEVEL99_3,
  859. EF_GUMGANG,
  860. EF_POTION1,
  861. EF_POTION2,
  862. EF_POTION3,
  863. EF_POTION4,
  864. EF_POTION5,
  865. EF_POTION6,
  866. EF_POTION7,
  867. EF_POTION8,
  868. EF_DARKBREATH,
  869. EF_DEFFENDER,
  870. EF_KEEPING,
  871. EF_SUMMONSLAVE,
  872. EF_BLOODDRAIN,
  873. EF_ENERGYDRAIN,
  874. EF_POTION_CON,
  875. EF_POTION_,
  876. EF_POTION_BERSERK,
  877. EF_POTIONPILLAR,
  878. EF_DEFENDER,
  879. EF_GANBANTEIN,
  880. EF_WIND,
  881. EF_VOLCANO,
  882. EF_GRANDCROSS,
  883. EF_INTIMIDATE,
  884. EF_CHOOKGI,
  885. EF_CLOUD,
  886. EF_CLOUD2,
  887. EF_MAPPILLAR,
  888. EF_LINELINK,
  889. EF_CLOUD3,
  890. EF_SPELLBREAKER,
  891. EF_DISPELL,
  892. EF_DELUGE,
  893. EF_VIOLENTGALE,
  894. EF_LANDPROTECTOR,
  895. EF_BOTTOM_VO,
  896. EF_BOTTOM_DE,
  897. EF_BOTTOM_VI,
  898. EF_BOTTOM_LA,
  899. EF_FASTMOVE,
  900. EF_MAGICROD,
  901. EF_HOLYCROSS,
  902. EF_SHIELDCHARGE,
  903. EF_MAPPILLAR2,
  904. EF_PROVIDENCE,
  905. EF_SHIELDBOOMERANG,
  906. EF_SPEARQUICKEN,
  907. EF_DEVOTION,
  908. EF_REFLECTSHIELD,
  909. EF_ABSORBSPIRITS,
  910. EF_STEELBODY,
  911. EF_FLAMELAUNCHER,
  912. EF_FROSTWEAPON,
  913. EF_LIGHTNINGLOADER,
  914. EF_SEISMICWEAPON,
  915. EF_MAPPILLAR3,
  916. EF_MAPPILLAR4,
  917. EF_GUMGANG2,
  918. EF_TEIHIT1,
  919. EF_GUMGANG3,
  920. EF_TEIHIT2,
  921. EF_TANJI,
  922. EF_TEIHIT1X,
  923. EF_CHIMTO,
  924. EF_STEALCOIN,
  925. EF_STRIPWEAPON,
  926. EF_STRIPSHIELD,
  927. EF_STRIPARMOR,
  928. EF_STRIPHELM,
  929. EF_CHAINCOMBO,
  930. EF_RG_COIN,
  931. EF_BACKSTAP,
  932. EF_TEIHIT3,
  933. EF_BOTTOM_DISSONANCE,
  934. EF_BOTTOM_LULLABY,
  935. EF_BOTTOM_RICHMANKIM,
  936. EF_BOTTOM_ETERNALCHAOS,
  937. EF_BOTTOM_DRUMBATTLEFIELD,
  938. EF_BOTTOM_RINGNIBELUNGEN,
  939. EF_BOTTOM_ROKISWEIL,
  940. EF_BOTTOM_INTOABYSS,
  941. EF_BOTTOM_SIEGFRIED,
  942. EF_BOTTOM_WHISTLE,
  943. EF_BOTTOM_ASSASSINCROSS,
  944. EF_BOTTOM_POEMBRAGI,
  945. EF_BOTTOM_APPLEIDUN,
  946. EF_BOTTOM_UGLYDANCE,
  947. EF_BOTTOM_HUMMING,
  948. EF_BOTTOM_DONTFORGETME,
  949. EF_BOTTOM_FORTUNEKISS,
  950. EF_BOTTOM_SERVICEFORYOU,
  951. EF_TALK_FROSTJOKE,
  952. EF_TALK_SCREAM,
  953. EF_POKJUK,
  954. EF_THROWITEM,
  955. EF_THROWITEM2,
  956. EF_CHEMICALPROTECTION,
  957. EF_POKJUK_SOUND,
  958. EF_DEMONSTRATION,
  959. EF_CHEMICAL2,
  960. EF_TELEPORTATION2,
  961. EF_PHARMACY_OK,
  962. EF_PHARMACY_FAIL,
  963. EF_FORESTLIGHT,
  964. EF_THROWITEM3,
  965. EF_FIRSTAID,
  966. EF_SPRINKLESAND,
  967. EF_LOUD,
  968. EF_HEAL,
  969. EF_HEAL2,
  970. EF_EXIT2,
  971. EF_GLASSWALL2,
  972. EF_READYPORTAL2,
  973. EF_PORTAL2,
  974. EF_BOTTOM_MAG,
  975. EF_BOTTOM_SANC,
  976. EF_HEAL3,
  977. EF_WARPZONE2,
  978. EF_FORESTLIGHT2,
  979. EF_FORESTLIGHT3,
  980. EF_FORESTLIGHT4,
  981. EF_HEAL4,
  982. EF_FOOT,
  983. EF_FOOT2,
  984. EF_BEGINASURA,
  985. EF_TRIPLEATTACK,
  986. EF_HITLINE,
  987. EF_HPTIME,
  988. EF_SPTIME,
  989. EF_MAPLE,
  990. EF_BLIND,
  991. EF_POISON,
  992. EF_GUARD,
  993. EF_JOBLVUP50,
  994. EF_ANGEL2,
  995. EF_MAGNUM2,
  996. EF_CALLZONE,
  997. EF_PORTAL3,
  998. EF_COUPLECASTING,
  999. EF_HEARTCASTING,
  1000. EF_ENTRY2,
  1001. EF_SAINTWING,
  1002. EF_SPHEREWIND,
  1003. EF_COLORPAPER,
  1004. EF_LIGHTSPHERE,
  1005. EF_WATERFALL,
  1006. EF_WATERFALL_90,
  1007. EF_WATERFALL_SMALL,
  1008. EF_WATERFALL_SMALL_90,
  1009. EF_WATERFALL_T2,
  1010. EF_WATERFALL_T2_90,
  1011. EF_WATERFALL_SMALL_T2,
  1012. EF_WATERFALL_SMALL_T2_90,
  1013. EF_MINI_TETRIS,
  1014. EF_GHOST,
  1015. EF_BAT,
  1016. EF_BAT2,
  1017. EF_SOULBREAKER,
  1018. EF_LEVEL99_4,
  1019. EF_VALLENTINE,
  1020. EF_VALLENTINE2,
  1021. EF_PRESSURE,
  1022. EF_BASH3D,
  1023. EF_AURABLADE,
  1024. EF_REDBODY,
  1025. EF_LKCONCENTRATION,
  1026. EF_BOTTOM_GOSPEL,
  1027. EF_ANGEL,
  1028. EF_DEVIL,
  1029. EF_DRAGONSMOKE,
  1030. EF_BOTTOM_BASILICA,
  1031. EF_ASSUMPTIO,
  1032. EF_HITLINE2,
  1033. EF_BASH3D2,
  1034. EF_ENERGYDRAIN2,
  1035. EF_TRANSBLUEBODY,
  1036. EF_MAGICCRASHER,
  1037. EF_LIGHTSPHERE2,
  1038. EF_LIGHTBLADE,
  1039. EF_ENERGYDRAIN3,
  1040. EF_LINELINK2,
  1041. EF_LINKLIGHT,
  1042. EF_TRUESIGHT,
  1043. EF_FALCONASSAULT,
  1044. EF_TRIPLEATTACK2,
  1045. EF_PORTAL4,
  1046. EF_MELTDOWN,
  1047. EF_CARTBOOST,
  1048. EF_REJECTSWORD,
  1049. EF_TRIPLEATTACK3,
  1050. EF_SPHEREWIND2,
  1051. EF_LINELINK3,
  1052. EF_PINKBODY,
  1053. EF_LEVEL99_5,
  1054. EF_LEVEL99_6,
  1055. EF_BASH3D3,
  1056. EF_BASH3D4,
  1057. EF_NAPALMVALCAN,
  1058. EF_PORTAL5,
  1059. EF_MAGICCRASHER2,
  1060. EF_BOTTOM_SPIDER,
  1061. EF_BOTTOM_FOGWALL,
  1062. EF_SOULBURN,
  1063. EF_SOULCHANGE,
  1064. EF_BABY,
  1065. EF_SOULBREAKER2,
  1066. EF_RAINBOW,
  1067. EF_PEONG,
  1068. EF_TANJI2,
  1069. EF_PRESSEDBODY,
  1070. EF_SPINEDBODY,
  1071. EF_KICKEDBODY,
  1072. EF_AIRTEXTURE,
  1073. EF_HITBODY,
  1074. EF_DOUBLEGUMGANG,
  1075. EF_REFLECTBODY,
  1076. EF_BABYBODY,
  1077. EF_BABYBODY2,
  1078. EF_GIANTBODY,
  1079. EF_GIANTBODY2,
  1080. EF_ASURABODY,
  1081. EF_4WAYBODY,
  1082. EF_QUAKEBODY,
  1083. EF_ASURABODY_MONSTER,
  1084. EF_HITLINE3,
  1085. EF_HITLINE4,
  1086. EF_HITLINE5,
  1087. EF_HITLINE6,
  1088. EF_ELECTRIC,
  1089. EF_ELECTRIC2,
  1090. EF_HITLINE7,
  1091. EF_STORMKICK,
  1092. EF_HALFSPHERE,
  1093. EF_ATTACKENERGY,
  1094. EF_ATTACKENERGY2,
  1095. EF_CHEMICAL3,
  1096. EF_ASSUMPTIO2,
  1097. EF_BLUECASTING,
  1098. EF_RUN,
  1099. EF_STOPRUN,
  1100. EF_STOPEFFECT,
  1101. EF_JUMPBODY,
  1102. EF_LANDBODY,
  1103. EF_FOOT3,
  1104. EF_FOOT4,
  1105. EF_TAE_READY,
  1106. EF_GRANDCROSS2,
  1107. EF_SOULSTRIKE2,
  1108. EF_YUFITEL2,
  1109. EF_NPC_STOP,
  1110. EF_DARKCASTING,
  1111. EF_GUMGANGNPC,
  1112. EF_AGIUP,
  1113. EF_JUMPKICK,
  1114. EF_QUAKEBODY2,
  1115. EF_STORMKICK1,
  1116. EF_STORMKICK2,
  1117. EF_STORMKICK3,
  1118. EF_STORMKICK4,
  1119. EF_STORMKICK5,
  1120. EF_STORMKICK6,
  1121. EF_STORMKICK7,
  1122. EF_SPINEDBODY2,
  1123. EF_BEGINASURA1,
  1124. EF_BEGINASURA2,
  1125. EF_BEGINASURA3,
  1126. EF_BEGINASURA4,
  1127. EF_BEGINASURA5,
  1128. EF_BEGINASURA6,
  1129. EF_BEGINASURA7,
  1130. EF_AURABLADE2,
  1131. EF_DEVIL1,
  1132. EF_DEVIL2,
  1133. EF_DEVIL3,
  1134. EF_DEVIL4,
  1135. EF_DEVIL5,
  1136. EF_DEVIL6,
  1137. EF_DEVIL7,
  1138. EF_DEVIL8,
  1139. EF_DEVIL9,
  1140. EF_DEVIL10,
  1141. EF_DOUBLEGUMGANG2,
  1142. EF_DOUBLEGUMGANG3,
  1143. EF_BLACKDEVIL,
  1144. EF_FLOWERCAST,
  1145. EF_FLOWERCAST2,
  1146. EF_FLOWERCAST3,
  1147. EF_MOCHI,
  1148. EF_LAMADAN,
  1149. EF_EDP,
  1150. EF_SHIELDBOOMERANG2,
  1151. EF_RG_COIN2,
  1152. EF_GUARD2,
  1153. EF_SLIM,
  1154. EF_SLIM2,
  1155. EF_SLIM3,
  1156. EF_CHEMICALBODY,
  1157. EF_CASTSPIN,
  1158. EF_PIERCEBODY,
  1159. EF_SOULLINK,
  1160. EF_CHOOKGI2,
  1161. EF_MEMORIZE,
  1162. EF_SOULLIGHT,
  1163. EF_MAPAE,
  1164. EF_ITEMPOKJUK,
  1165. EF_05VAL,
  1166. EF_BEGINASURA11,
  1167. EF_NIGHT,
  1168. EF_CHEMICAL2DASH,
  1169. EF_GROUNDSAMPLE,
  1170. EF_GI_EXPLOSION,
  1171. EF_CLOUD4,
  1172. EF_CLOUD5,
  1173. EF_BOTTOM_HERMODE,
  1174. EF_CARTTER,
  1175. EF_ITEMFAST,
  1176. EF_SHIELDBOOMERANG3,
  1177. EF_DOUBLECASTBODY,
  1178. EF_GRAVITATION,
  1179. EF_TAROTCARD1,
  1180. EF_TAROTCARD2,
  1181. EF_TAROTCARD3,
  1182. EF_TAROTCARD4,
  1183. EF_TAROTCARD5,
  1184. EF_TAROTCARD6,
  1185. EF_TAROTCARD7,
  1186. EF_TAROTCARD8,
  1187. EF_TAROTCARD9,
  1188. EF_TAROTCARD10,
  1189. EF_TAROTCARD11,
  1190. EF_TAROTCARD12,
  1191. EF_TAROTCARD13,
  1192. EF_TAROTCARD14,
  1193. EF_ACIDDEMON,
  1194. EF_GREENBODY,
  1195. EF_THROWITEM4,
  1196. EF_BABYBODY_BACK,
  1197. EF_THROWITEM5,
  1198. EF_BLUEBODY,
  1199. EF_HATED,
  1200. EF_REDLIGHTBODY,
  1201. EF_RO2YEAR,
  1202. EF_SMA_READY,
  1203. EF_STIN,
  1204. EF_RED_HIT,
  1205. EF_BLUE_HIT,
  1206. EF_QUAKEBODY3,
  1207. EF_SMA,
  1208. EF_SMA2,
  1209. EF_STIN2,
  1210. EF_HITTEXTURE,
  1211. EF_STIN3,
  1212. EF_SMA3,
  1213. EF_BLUEFALL,
  1214. EF_BLUEFALL_90,
  1215. EF_FASTBLUEFALL,
  1216. EF_FASTBLUEFALL_90,
  1217. EF_BIG_PORTAL,
  1218. EF_BIG_PORTAL2,
  1219. EF_SCREEN_QUAKE,
  1220. EF_HOMUNCASTING,
  1221. EF_HFLIMOON1,
  1222. EF_HFLIMOON2,
  1223. EF_HFLIMOON3,
  1224. EF_HO_UP,
  1225. EF_HAMIDEFENCE,
  1226. EF_HAMICASTLE,
  1227. EF_HAMIBLOOD,
  1228. EF_HATED2,
  1229. EF_TWILIGHT1,
  1230. EF_TWILIGHT2,
  1231. EF_TWILIGHT3,
  1232. EF_ITEM_THUNDER,
  1233. EF_ITEM_CLOUD,
  1234. EF_ITEM_CURSE,
  1235. EF_ITEM_ZZZ,
  1236. EF_ITEM_RAIN,
  1237. EF_ITEM_LIGHT,
  1238. EF_ANGEL3,
  1239. EF_M01,
  1240. EF_M02,
  1241. EF_M03,
  1242. EF_M04,
  1243. EF_M05,
  1244. EF_M06,
  1245. EF_M07,
  1246. EF_KAIZEL,
  1247. EF_KAAHI,
  1248. EF_CLOUD6,
  1249. EF_FOOD01,
  1250. EF_FOOD02,
  1251. EF_FOOD03,
  1252. EF_FOOD04,
  1253. EF_FOOD05,
  1254. EF_FOOD06,
  1255. EF_SHRINK,
  1256. EF_THROWITEM6,
  1257. EF_SIGHT2,
  1258. EF_QUAKEBODY4,
  1259. EF_FIREHIT2,
  1260. EF_NPC_STOP2,
  1261. EF_NPC_STOP2_DEL,
  1262. EF_FVOICE,
  1263. EF_WINK,
  1264. EF_COOKING_OK,
  1265. EF_COOKING_FAIL,
  1266. EF_TEMP_OK,
  1267. EF_TEMP_FAIL,
  1268. EF_HAPGYEOK,
  1269. EF_THROWITEM7,
  1270. EF_THROWITEM8,
  1271. EF_THROWITEM9,
  1272. EF_THROWITEM10,
  1273. EF_BUNSINJYUTSU,
  1274. EF_KOUENKA,
  1275. EF_HYOUSENSOU,
  1276. EF_BOTTOM_SUITON,
  1277. EF_STIN4,
  1278. EF_THUNDERSTORM2,
  1279. EF_CHEMICAL4,
  1280. EF_STIN5,
  1281. EF_MADNESS_BLUE,
  1282. EF_MADNESS_RED,
  1283. EF_RG_COIN3,
  1284. EF_BASH3D5,
  1285. EF_CHOOKGI3,
  1286. EF_KIRIKAGE,
  1287. EF_TATAMI,
  1288. EF_KASUMIKIRI,
  1289. EF_ISSEN,
  1290. EF_KAEN,
  1291. EF_BAKU,
  1292. EF_HYOUSYOURAKU,
  1293. EF_DESPERADO,
  1294. EF_LIGHTNING_S,
  1295. EF_BLIND_S,
  1296. EF_POISON_S,
  1297. EF_FREEZING_S,
  1298. EF_FLARE_S,
  1299. EF_RAPIDSHOWER,
  1300. EF_MAGICALBULLET,
  1301. EF_SPREADATTACK,
  1302. EF_TRACKCASTING,
  1303. EF_TRACKING,
  1304. EF_TRIPLEACTION,
  1305. EF_BULLSEYE,
  1306. EF_MAP_MAGICZONE,
  1307. EF_MAP_MAGICZONE2,
  1308. EF_DAMAGE1,
  1309. EF_DAMAGE1_2,
  1310. EF_DAMAGE1_3,
  1311. EF_UNDEADBODY,
  1312. EF_UNDEADBODY_DEL,
  1313. EF_GREEN_NUMBER,
  1314. EF_BLUE_NUMBER,
  1315. EF_RED_NUMBER,
  1316. EF_PURPLE_NUMBER,
  1317. EF_BLACK_NUMBER,
  1318. EF_WHITE_NUMBER,
  1319. EF_YELLOW_NUMBER,
  1320. EF_PINK_NUMBER,
  1321. EF_BUBBLE_DROP,
  1322. EF_NPC_EARTHQUAKE,
  1323. EF_DA_SPACE,
  1324. EF_DRAGONFEAR,
  1325. EF_BLEEDING,
  1326. EF_WIDECONFUSE,
  1327. EF_BOTTOM_RUNNER,
  1328. EF_BOTTOM_TRANSFER,
  1329. EF_CRYSTAL_BLUE,
  1330. EF_BOTTOM_EVILLAND,
  1331. EF_GUARD3,
  1332. EF_NPC_SLOWCAST,
  1333. EF_CRITICALWOUND,
  1334. EF_GREEN99_3,
  1335. EF_GREEN99_5,
  1336. EF_GREEN99_6,
  1337. EF_MAPSPHERE,
  1338. EF_POK_LOVE,
  1339. EF_POK_WHITE,
  1340. EF_POK_VALEN,
  1341. EF_POK_BIRTH,
  1342. EF_POK_CHRISTMAS,
  1343. EF_MAP_MAGICZONE3,
  1344. EF_MAP_MAGICZONE4,
  1345. EF_DUST,
  1346. EF_TORCH_RED,
  1347. EF_TORCH_GREEN,
  1348. EF_MAP_GHOST,
  1349. EF_GLOW1,
  1350. EF_GLOW2,
  1351. EF_GLOW4,
  1352. EF_TORCH_PURPLE,
  1353. EF_CLOUD7,
  1354. EF_CLOUD8,
  1355. EF_FLOWERLEAF,
  1356. EF_MAPSPHERE2,
  1357. EF_GLOW11,
  1358. EF_GLOW12,
  1359. EF_CIRCLELIGHT,
  1360. EF_ITEM315,
  1361. EF_ITEM316,
  1362. EF_ITEM317,
  1363. EF_ITEM318,
  1364. EF_STORM_MIN,
  1365. EF_POK_JAP,
  1366. EF_MAP_GREENLIGHT,
  1367. EF_MAP_MAGICWALL,
  1368. EF_MAP_GREENLIGHT2,
  1369. EF_YELLOWFLY1,
  1370. EF_YELLOWFLY2,
  1371. EF_BOTTOM_BLUE,
  1372. EF_BOTTOM_BLUE2,
  1373. EF_WEWISH,
  1374. EF_FIREPILLARON2,
  1375. EF_FORESTLIGHT5,
  1376. EF_SOULBREAKER3,
  1377. EF_ADO_STR,
  1378. EF_IGN_STR,
  1379. EF_CHIMTO2,
  1380. EF_WINDCUTTER,
  1381. EF_DETECT2,
  1382. EF_FROSTMYSTY,
  1383. EF_CRIMSON_STR,
  1384. EF_HELL_STR,
  1385. EF_SPR_MASH,
  1386. EF_SPR_SOULE,
  1387. EF_DHOWL_STR,
  1388. EF_EARTHWALL,
  1389. EF_SOULBREAKER4,
  1390. EF_CHAINL_STR,
  1391. EF_CHOOKGI_FIRE,
  1392. EF_CHOOKGI_WIND,
  1393. EF_CHOOKGI_WATER,
  1394. EF_CHOOKGI_GROUND,
  1395. EF_MAGENTA_TRAP,
  1396. EF_COBALT_TRAP,
  1397. EF_MAIZE_TRAP,
  1398. EF_VERDURE_TRAP,
  1399. EF_NORMAL_TRAP,
  1400. EF_CLOAKING2,
  1401. EF_AIMED_STR,
  1402. EF_ARROWSTORM_STR,
  1403. EF_LAULAMUS_STR,
  1404. EF_LAUAGNUS_STR,
  1405. EF_MILSHIELD_STR,
  1406. EF_CONCENTRATION2,
  1407. EF_FIREBALL2,
  1408. EF_BUNSINJYUTSU2,
  1409. EF_CLEARTIME,
  1410. EF_GLASSWALL3,
  1411. EF_ORATIO,
  1412. EF_POTION_BERSERK2,
  1413. EF_CIRCLEPOWER,
  1414. EF_ROLLING1,
  1415. EF_ROLLING2,
  1416. EF_ROLLING3,
  1417. EF_ROLLING4,
  1418. EF_ROLLING5,
  1419. EF_ROLLING6,
  1420. EF_ROLLING7,
  1421. EF_ROLLING8,
  1422. EF_ROLLING9,
  1423. EF_ROLLING10,
  1424. EF_PURPLEBODY,
  1425. EF_STIN6,
  1426. EF_RG_COIN4,
  1427. EF_POISONWAV,
  1428. EF_POISONSMOKE,
  1429. EF_GUMGANG4,
  1430. EF_SHIELDBOOMERANG4,
  1431. EF_CASTSPIN2,
  1432. EF_VULCANWAV,
  1433. EF_AGIUP2,
  1434. EF_DETECT3,
  1435. EF_AGIUP3,
  1436. EF_DETECT4,
  1437. EF_ELECTRIC3,
  1438. EF_GUARD4,
  1439. EF_BOTTOM_BARRIER,
  1440. EF_BOTTOM_STEALTH,
  1441. EF_REPAIRTIME,
  1442. EF_NC_ANAL,
  1443. EF_FIRETHROW,
  1444. EF_VENOMIMPRESS,
  1445. EF_FROSTMISTY,
  1446. EF_BURNING,
  1447. EF_COLDTHROW,
  1448. EF_MAKEHALLU,
  1449. EF_HALLUTIME,
  1450. EF_INFRAREDSCAN,
  1451. EF_CRASHAXE,
  1452. EF_GTHUNDER,
  1453. EF_STONERING,
  1454. EF_INTIMIDATE2,
  1455. EF_STASIS,
  1456. EF_REDLINE,
  1457. EF_FROSTDIVER3,
  1458. EF_BOTTOM_BASILICA2,
  1459. EF_RECOGNIZED,
  1460. EF_TETRA,
  1461. EF_TETRACASTING,
  1462. EF_FIREBALL3,
  1463. EF_INTIMIDATE3,
  1464. EF_RECOGNIZED2,
  1465. EF_CLOAKING3,
  1466. EF_INTIMIDATE4,
  1467. EF_STRETCH,
  1468. EF_BLACKBODY,
  1469. EF_ENERVATION,
  1470. EF_ENERVATION2,
  1471. EF_ENERVATION3,
  1472. EF_ENERVATION4,
  1473. EF_ENERVATION5,
  1474. EF_ENERVATION6,
  1475. EF_LINELINK4,
  1476. EF_RG_COIN5,
  1477. EF_WATERFALL_ANI,
  1478. EF_BOTTOM_MANHOLE,
  1479. EF_MANHOLE,
  1480. EF_MAKEFEINT,
  1481. EF_FORESTLIGHT6,
  1482. EF_DARKCASTING2,
  1483. EF_BOTTOM_ANI,
  1484. EF_BOTTOM_MAELSTROM,
  1485. EF_BOTTOM_BLOODYLUST,
  1486. EF_BEGINSPELL_N1,
  1487. EF_BEGINSPELL_N2,
  1488. EF_HEAL_N,
  1489. EF_CHOOKGI_N,
  1490. EF_JOBLVUP50_2,
  1491. EF_CHEMICAL2DASH2,
  1492. EF_CHEMICAL2DASH3,
  1493. EF_ROLLINGCAST,
  1494. EF_WATER_BELOW,
  1495. EF_WATER_FADE,
  1496. EF_BEGINSPELL_N3,
  1497. EF_BEGINSPELL_N4,
  1498. EF_BEGINSPELL_N5,
  1499. EF_BEGINSPELL_N6,
  1500. EF_BEGINSPELL_N7,
  1501. EF_BEGINSPELL_N8,
  1502. EF_WATER_SMOKE,
  1503. EF_DANCE1,
  1504. EF_DANCE2,
  1505. EF_LINKPARTICLE,
  1506. EF_SOULLIGHT2,
  1507. EF_SPR_PARTICLE,
  1508. EF_SPR_PARTICLE2,
  1509. EF_SPR_PLANT,
  1510. EF_CHEMICAL_V,
  1511. EF_SHOOTPARTICLE,
  1512. EF_BOT_REVERB,
  1513. EF_RAIN_PARTICLE,
  1514. EF_CHEMICAL_V2,
  1515. EF_SECRA,
  1516. EF_BOT_REVERB2,
  1517. EF_CIRCLEPOWER2,
  1518. EF_SECRA2,
  1519. EF_CHEMICAL_V3,
  1520. EF_ENERVATION7,
  1521. EF_CIRCLEPOWER3,
  1522. EF_SPR_PLANT2,
  1523. EF_CIRCLEPOWER4,
  1524. EF_SPR_PLANT3,
  1525. EF_RG_COIN6,
  1526. EF_SPR_PLANT4,
  1527. EF_CIRCLEPOWER5,
  1528. EF_SPR_PLANT5,
  1529. EF_CIRCLEPOWER6,
  1530. EF_SPR_PLANT6,
  1531. EF_CIRCLEPOWER7,
  1532. EF_SPR_PLANT7,
  1533. EF_CIRCLEPOWER8,
  1534. EF_SPR_PLANT8,
  1535. EF_HEARTASURA,
  1536. EF_BEGINSPELL_150,
  1537. EF_LEVEL99_150,
  1538. EF_PRIMECHARGE,
  1539. EF_GLASSWALL4,
  1540. EF_GRADIUS_LASER,
  1541. EF_BASH3D6,
  1542. EF_GUMGANG5,
  1543. EF_HITLINE8,
  1544. EF_ELECTRIC4,
  1545. EF_TEIHIT1T,
  1546. EF_SPINMOVE,
  1547. EF_FIREBALL4,
  1548. EF_TRIPLEATTACK4,
  1549. EF_CHEMICAL3S,
  1550. EF_GROUNDSHAKE,
  1551. EF_DQ9_CHARGE,
  1552. EF_DQ9_CHARGE2,
  1553. EF_DQ9_CHARGE3,
  1554. EF_DQ9_CHARGE4,
  1555. EF_BLUELINE,
  1556. EF_SELFSCROLL,
  1557. EF_SPR_LIGHTPRINT,
  1558. EF_PNG_TEST,
  1559. EF_BEGINSPELL_YB,
  1560. EF_CHEMICAL2DASH4,
  1561. EF_GROUNDSHAKE2,
  1562. EF_PRESSURE2,
  1563. EF_RG_COIN7,
  1564. EF_PRIMECHARGE2,
  1565. EF_PRIMECHARGE3,
  1566. EF_PRIMECHARGE4,
  1567. EF_GREENCASTING,
  1568. EF_WALLOFTHORN,
  1569. EF_FIREBALL5,
  1570. EF_THROWITEM11,
  1571. EF_SPR_PLANT9,
  1572. EF_DEMONICFIRE,
  1573. EF_DEMONICFIRE2,
  1574. EF_DEMONICFIRE3,
  1575. EF_HELLSPLANT,
  1576. EF_FIREWALL2,
  1577. EF_VACUUM,
  1578. EF_SPR_PLANT10,
  1579. EF_SPR_LIGHTPRINT2,
  1580. EF_POISONSMOKE2,
  1581. EF_MAKEHALLU2,
  1582. EF_SHOCKWAVE2,
  1583. EF_SPR_PLANT11,
  1584. EF_COLDTHROW2,
  1585. EF_DEMONICFIRE4,
  1586. EF_PRESSURE3,
  1587. EF_LINKPARTICLE2,
  1588. EF_SOULLIGHT3,
  1589. EF_CHAREFFECT,
  1590. EF_GUMGANG6,
  1591. EF_FIREBALL6,
  1592. EF_GUMGANG7,
  1593. EF_GUMGANG8,
  1594. EF_GUMGANG9,
  1595. EF_BOTTOM_DE2,
  1596. EF_COLDSTATUS,
  1597. EF_SPR_LIGHTPRINT3,
  1598. EF_WATERBALL3,
  1599. EF_HEAL_N2,
  1600. EF_RAIN_PARTICLE2,
  1601. EF_CLOUD9,
  1602. EF_YELLOWFLY3,
  1603. EF_EL_GUST,
  1604. EF_EL_BLAST,
  1605. EF_EL_AQUAPLAY,
  1606. EF_EL_UPHEAVAL,
  1607. EF_EL_WILD_STORM,
  1608. EF_EL_CHILLY_AIR,
  1609. EF_EL_CURSED_SOIL,
  1610. EF_EL_COOLER,
  1611. EF_EL_TROPIC,
  1612. EF_EL_PYROTECHNIC,
  1613. EF_EL_PETROLOGY,
  1614. EF_EL_HEATER,
  1615. EF_POISON_MIST,
  1616. EF_ERASER_CUTTER,
  1617. EF_SILENT_BREEZE,
  1618. EF_MAGMA_FLOW,
  1619. EF_GRAYBODY,
  1620. EF_LAVA_SLIDE,
  1621. EF_SONIC_CLAW,
  1622. EF_TINDER_BREAKER,
  1623. EF_MIDNIGHT_FRENZY,
  1624. EF_MACRO,
  1625. EF_CHEMICAL_ALLRANGE,
  1626. EF_TETRA_FIRE,
  1627. EF_TETRA_WATER,
  1628. EF_TETRA_WIND,
  1629. EF_TETRA_GROUND,
  1630. EF_EMITTER,
  1631. EF_VOLCANIC_ASH,
  1632. EF_LEVEL99_ORB1,
  1633. EF_LEVEL99_ORB2,
  1634. EF_LEVEL150,
  1635. EF_LEVEL150_SUB,
  1636. EF_THROWITEM4_1,
  1637. EF_THROW_HAPPOKUNAI,
  1638. EF_THROW_MULTIPLE_COIN,
  1639. EF_THROW_BAKURETSU,
  1640. EF_ROTATE_HUUMARANKA,
  1641. EF_ROTATE_BG,
  1642. EF_ROTATE_LINE_GRAY,
  1643. EF_2011RWC,
  1644. EF_2011RWC2,
  1645. EF_KAIHOU,
  1646. EF_GROUND_EXPLOSION,
  1647. EF_KG_KAGEHUMI,
  1648. EF_KO_ZENKAI_WATER,
  1649. EF_KO_ZENKAI_LAND,
  1650. EF_KO_ZENKAI_FIRE,
  1651. EF_KO_ZENKAI_WIND,
  1652. EF_KO_JYUMONJIKIRI,
  1653. EF_KO_SETSUDAN,
  1654. EF_RED_CROSS,
  1655. EF_KO_IZAYOI,
  1656. EF_ROTATE_LINE_BLUE,
  1657. EF_KG_KYOMU,
  1658. EF_KO_HUUMARANKA,
  1659. EF_BLUELIGHTBODY,
  1660. EF_KAGEMUSYA,
  1661. EF_OB_GENSOU,
  1662. EF_NO100_FIRECRACKER,
  1663. EF_KO_MAKIBISHI,
  1664. EF_KAIHOU1,
  1665. EF_AKAITSUKI,
  1666. EF_ZANGETSU,
  1667. EF_GENSOU,
  1668. EF_HAT_EFFECT,
  1669. EF_CHERRYBLOSSOM,
  1670. EF_EVENT_CLOUD,
  1671. EF_RUN_MAKE_OK,
  1672. EF_RUN_MAKE_FAILURE,
  1673. EF_MIRESULT_MAKE_OK,
  1674. EF_MIRESULT_MAKE_FAIL,
  1675. EF_ALL_RAY_OF_PROTECTION,
  1676. EF_VENOMFOG,
  1677. EF_DUSTSTORM,
  1678. EF_LEVEL160,
  1679. EF_LEVEL160_SUB,
  1680. EF_MAPCHAIN,
  1681. EF_MAGIC_FLOOR,
  1682. EF_ICEMINE,
  1683. EF_FLAMECORSS,
  1684. EF_ICEMINE_1,
  1685. EF_DANCE_BLADE_ATK,
  1686. EF_DARKPIERCING,
  1687. EF_INVINCIBLEOFF2,
  1688. EF_MAXPAIN,
  1689. EF_DEATHSUMMON,
  1690. EF_MOONSTAR,
  1691. EF_STRANGELIGHTS,
  1692. EF_SUPER_STAR,
  1693. EF_YELLOBODY,
  1694. EF_COLORPAPER2,
  1695. EF_EVILS_PAW,
  1696. EF_GC_DARKCROW,
  1697. EF_RK_DRAGONBREATH_WATER,
  1698. EF_ALL_FULL_THROTTLE,
  1699. EF_SR_FLASHCOMBO,
  1700. EF_RK_LUXANIMA,
  1701. EF_CLOUD10,
  1702. EF_SO_ELEMENTAL_SHIELD,
  1703. EF_AB_OFFERTORIUM,
  1704. EF_WL_TELEKINESIS_INTENSE,
  1705. EF_GN_ILLUSIONDOPING,
  1706. EF_NC_MAGMA_ERUPTION,
  1707. EF_LG_KINGS_GRACE,
  1708. EF_BLOODDRAIN2,
  1709. EF_NPC_WIDEWEB,
  1710. EF_NPC_BURNT,
  1711. EF_NPC_CHILL,
  1712. EF_RA_UNLIMIT,
  1713. EF_AB_OFFERTORIUM_RING,
  1714. EF_SC_ESCAPE,
  1715. EF_WM_FRIGG_SONG,
  1716. EF_FLICKER,
  1717. EF_C_MAKER,
  1718. EF_HAMMER_OF_GOD,
  1719. EF_MASS_SPIRAL,
  1720. EF_FIRE_RAIN,
  1721. EF_WHITEBODY,
  1722. EF_BANISHING_BUSTER,
  1723. EF_SLUGSHOT,
  1724. EF_D_TAIL,
  1725. EF_BIND_TRAP1,
  1726. EF_BIND_TRAP2,
  1727. EF_BIND_TRAP3,
  1728. EF_JUMPBODY1,
  1729. EF_ANIMATED_EMITTER,
  1730. EF_RL_EXPLOSION,
  1731. EF_C_MAKER_1,
  1732. EF_QD_SHOT,
  1733. EF_P_ALTER,
  1734. EF_S_STORM,
  1735. EF_MUSIC_HAT,
  1736. EF_CLOUD_KILL,
  1737. EF_ESCAPE,
  1738. EF_XENO_SLASHER,
  1739. EF_FLOWERSMOKE,
  1740. EF_FSTONE,
  1741. EF_QSCARABA,
  1742. EF_LJOSALFAR,
  1743. EF_HAPPINESSSTAR,
  1744. EF_POWER_OF_GAIA,
  1745. EF_MAPLE_FALLS,
  1746. EF_MARKING_USE_CHANGEMONSTER,
  1747. EF_MAGICAL_FEATHER,
  1748. EF_MERMAID_LONGING,
  1749. EF_GIFT_OF_SNOW,
  1750. EF_ACH_COMPLETE,
  1751. EF_TIME_ACCESSORY,
  1752. EF_SPRITEMABLE,
  1753. EF_TUNAPARTY,
  1754. EF_MAX
  1755. };
  1756. enum e_hat_effects {
  1757. HAT_EF_MIN = 0,
  1758. HAT_EF_BLOSSOM_FLUTTERING,
  1759. HAT_EF_MERMAID_LONGING,
  1760. HAT_EF_RL_BANISHING_BUSTER,
  1761. HAT_EF_LJOSALFAR,
  1762. HAT_EF_CLOCKING,
  1763. HAT_EF_SNOW,
  1764. HAT_EF_MAKEBLUR,
  1765. HAT_EF_SLEEPATTACK,
  1766. HAT_EF_GUMGANG,
  1767. HAT_EF_TALK_FROSTJOKE,
  1768. HAT_EF_DEMONSTRATION,
  1769. HAT_EF_FLUTTER_BUTTERFLY,
  1770. HAT_EF_ANGEL_FLUTTERING,
  1771. HAT_EF_BLESSING_OF_ANGELS,
  1772. HAT_EF_ELECTRIC,
  1773. HAT_EF_GREEN_FLOOR,
  1774. HAT_EF_SHRINK,
  1775. HAT_EF_VALHALLA_IDOL,
  1776. HAT_EF_ANGEL_STAIRS,
  1777. HAT_EF_GLOW_OF_NEW_YEAR,
  1778. HAT_EF_BOTTOM_FORTUNEKISS,
  1779. HAT_EF_PINKBODY,
  1780. HAT_EF_DOUBLEGUMGANG,
  1781. HAT_EF_GIANTBODY,
  1782. HAT_EF_GREEN99_6,
  1783. HAT_EF_CIRCLEPOWER,
  1784. HAT_EF_BOTTOM_BLOODYLUST,
  1785. HAT_EF_WATER_BELOW,
  1786. HAT_EF_LEVEL99_150,
  1787. HAT_EF_YELLOWFLY3,
  1788. HAT_EF_KAGEMUSYA,
  1789. HAT_EF_CHERRYBLOSSOM,
  1790. HAT_EF_STRANGELIGHTS,
  1791. HAT_EF_WL_TELEKINESIS_INTENSE,
  1792. HAT_EF_AB_OFFERTORIUM_RING,
  1793. HAT_EF_WHITEBODY2,
  1794. HAT_EF_SAKURA,
  1795. HAT_EF_CLOUD2,
  1796. HAT_EF_FEATHER_FLUTTERING,
  1797. HAT_EF_CAMELLIA_HAIR_PIN,
  1798. HAT_EF_JP_EV_EFFECT01,
  1799. HAT_EF_JP_EV_EFFECT02,
  1800. HAT_EF_JP_EV_EFFECT03,
  1801. HAT_EF_FLORAL_WALTZ,
  1802. HAT_EF_MAGICAL_FEATHER,
  1803. HAT_EF_HAT_EFFECT,
  1804. HAT_EF_BAKURETSU_HADOU,
  1805. HAT_EF_GOLD_SHOWER,
  1806. HAT_EF_WHITEBODY,
  1807. HAT_EF_WATER_BELOW2,
  1808. HAT_EF_FIREWORK,
  1809. HAT_EF_RETURN_TW_1ST_HAT,
  1810. HAT_EF_C_FLUTTERBUTTERFLY_BL,
  1811. HAT_EF_QSCARABA,
  1812. HAT_EF_FSTONE,
  1813. HAT_EF_MAGICCIRCLE,
  1814. HAT_EF_GODCLASS,
  1815. HAT_EF_GODCLASS2,
  1816. HAT_EF_LEVEL99_RED,
  1817. HAT_EF_LEVEL99_ULTRAMARINE,
  1818. HAT_EF_LEVEL99_CYAN,
  1819. HAT_EF_LEVEL99_LIME,
  1820. HAT_EF_LEVEL99_VIOLET,
  1821. HAT_EF_LEVEL99_LILAC,
  1822. HAT_EF_LEVEL99_SUN_ORANGE,
  1823. HAT_EF_LEVEL99_DEEP_PINK,
  1824. HAT_EF_LEVEL99_BLACK,
  1825. HAT_EF_LEVEL99_WHITE,
  1826. HAT_EF_LEVEL160_RED,
  1827. HAT_EF_LEVEL160_ULTRAMARINE,
  1828. HAT_EF_LEVEL160_CYAN,
  1829. HAT_EF_LEVEL160_LIME,
  1830. HAT_EF_LEVEL160_VIOLET,
  1831. HAT_EF_LEVEL160_LILAC,
  1832. HAT_EF_LEVEL160_SUN_ORANGE,
  1833. HAT_EF_LEVEL160_DEEP_PINK,
  1834. HAT_EF_LEVEL160_BLACK,
  1835. HAT_EF_LEVEL160_WHITE,
  1836. HAT_EF_FULL_BLOOMCHERRY_TREE,
  1837. HAT_EF_C_BLESSINGS_OF_SOUL,
  1838. HAT_EF_MANYSTARS,
  1839. HAT_EF_SUBJECT_AURA_GOLD,
  1840. HAT_EF_SUBJECT_AURA_WHITE,
  1841. HAT_EF_SUBJECT_AURA_RED,
  1842. HAT_EF_C_SHINING_ANGEL_WING,
  1843. HAT_EF_MAGIC_STAR_TW,
  1844. HAT_EF_DIGITAL_SPACE,
  1845. HAT_EF_SLEIPNIR,
  1846. HAT_EF_C_MAPLE_WHICH_FALLS_RD,
  1847. HAT_EF_MAGICCIRCLERAINBOW,
  1848. HAT_EF_SNOWFLAKE_TIARA,
  1849. HAT_EF_MIDGARTS_GLORY,
  1850. HAT_EF_LEVEL99_TIGER,
  1851. HAT_EF_LEVEL160_TIGER,
  1852. HAT_EF_FLUFFYWING,
  1853. HAT_EF_C_GHOST_EFFECT,
  1854. HAT_EF_C_POPPING_PORING_AURA,
  1855. HAT_EF_RESONATETAEGO,
  1856. HAT_EF_99LV_RUNE_RED,
  1857. HAT_EF_99LV_ROYAL_GUARD_BLUE,
  1858. HAT_EF_99LV_WARLOCK_VIOLET,
  1859. HAT_EF_99LV_SORCERER_LBLUE,
  1860. HAT_EF_99LV_RANGER_GREEN,
  1861. HAT_EF_99LV_MINSTREL_PINK,
  1862. HAT_EF_99LV_ARCHBISHOP_WHITE,
  1863. HAT_EF_99LV_GUILL_SILVER,
  1864. HAT_EF_99LV_SHADOWC_BLACK,
  1865. HAT_EF_99LV_MECHANIC_GOLD,
  1866. HAT_EF_99LV_GENETIC_YGREEN,
  1867. HAT_EF_160LV_RUNE_RED,
  1868. HAT_EF_160LV_ROYAL_G_BLUE,
  1869. HAT_EF_160LV_WARLOCK_VIOLET,
  1870. HAT_EF_160LV_SORCERER_LBLUE,
  1871. HAT_EF_160LV_RANGER_GREEN,
  1872. HAT_EF_160LV_MINSTREL_PINK,
  1873. HAT_EF_160LV_ARCHB_WHITE,
  1874. HAT_EF_160LV_GUILL_SILVER,
  1875. HAT_EF_160LV_SHADOWC_BLACK,
  1876. HAT_EF_160LV_MECHANIC_GOLD,
  1877. HAT_EF_160LV_GENETIC_YGREEN,
  1878. HAT_EF_WATER_BELOW3,
  1879. HAT_EF_WATER_BELOW4,
  1880. HAT_EF_C_VALKYRIE_WING,
  1881. HAT_EF_2019RTC_CELEAURA_TW,
  1882. HAT_EF_2019RTC1ST_TW,
  1883. HAT_EF_2019RTC2ST_TW,
  1884. HAT_EF_2019RTC3ST_TW,
  1885. HAT_EF_CONS_OF_WIND,
  1886. HAT_EF_MAX
  1887. };
  1888. enum e_convertpcinfo_type : uint8 {
  1889. CPC_NAME = 0,
  1890. CPC_CHAR = 1,
  1891. CPC_ACCOUNT = 2
  1892. };
  1893. /**
  1894. * Player blocking actions related flags.
  1895. */
  1896. enum e_pcblock_action_flag : uint16 {
  1897. PCBLOCK_MOVE = 0x001,
  1898. PCBLOCK_ATTACK = 0x002,
  1899. PCBLOCK_SKILL = 0x004,
  1900. PCBLOCK_USEITEM = 0x008,
  1901. PCBLOCK_CHAT = 0x010,
  1902. PCBLOCK_IMMUNE = 0x020,
  1903. PCBLOCK_SITSTAND = 0x040,
  1904. PCBLOCK_COMMANDS = 0x080,
  1905. PCBLOCK_NPCCLICK = 0x100,
  1906. PCBLOCK_NPC = 0x18D,
  1907. PCBLOCK_EMOTION = 0x200,
  1908. PCBLOCK_ALL = 0x3FF,
  1909. };
  1910. /**
  1911. * used to generate quick script_array entries
  1912. **/
  1913. extern struct eri *array_ers;
  1914. extern DBMap *st_db;
  1915. extern unsigned int active_scripts;
  1916. extern unsigned int next_id;
  1917. extern struct eri *st_ers;
  1918. extern struct eri *stack_ers;
  1919. const char* skip_space(const char* p);
  1920. void script_error(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos);
  1921. void script_warning(const char* src, const char* file, int start_line, const char* error_msg, const char* error_pos);
  1922. bool is_number(const char *p);
  1923. struct script_code* parse_script(const char* src,const char* file,int line,int options);
  1924. void run_script(struct script_code *rootscript,int pos,int rid,int oid);
  1925. int set_reg(struct script_state* st, struct map_session_data* sd, int64 num, const char* name, const void* value, struct reg_db *ref);
  1926. int set_var(struct map_session_data *sd, char *name, void *val);
  1927. int conv_num(struct script_state *st,struct script_data *data);
  1928. const char* conv_str(struct script_state *st,struct script_data *data);
  1929. void pop_stack(struct script_state* st, int start, int end);
  1930. TIMER_FUNC(run_script_timer);
  1931. void script_stop_sleeptimers(int id);
  1932. struct linkdb_node *script_erase_sleepdb(struct linkdb_node *n);
  1933. void script_attach_state(struct script_state* st);
  1934. void script_detach_rid(struct script_state* st);
  1935. void run_script_main(struct script_state *st);
  1936. void script_stop_scriptinstances(struct script_code *code);
  1937. void script_free_code(struct script_code* code);
  1938. void script_free_vars(struct DBMap *storage);
  1939. struct script_state* script_alloc_state(struct script_code* rootscript, int pos, int rid, int oid);
  1940. void script_free_state(struct script_state* st);
  1941. struct DBMap* script_get_label_db(void);
  1942. struct DBMap* script_get_userfunc_db(void);
  1943. void script_run_autobonus(const char *autobonus, struct map_session_data *sd, unsigned int pos);
  1944. const char* script_get_constant_str(const char* prefix, int64 value);
  1945. bool script_get_parameter(const char* name, int* value);
  1946. bool script_get_constant(const char* name, int* value);
  1947. void script_set_constant_(const char* name, int value, const char* constant_name, bool isparameter, bool deprecated);
  1948. #define script_set_constant(name, value, isparameter, deprecated) script_set_constant_(name, value, NULL, isparameter, deprecated)
  1949. void script_hardcoded_constants(void);
  1950. void script_cleararray_pc(struct map_session_data* sd, const char* varname, void* value);
  1951. void script_setarray_pc(struct map_session_data* sd, const char* varname, uint32 idx, void* value, int* refcache);
  1952. int script_config_read(const char *cfgName);
  1953. void do_init_script(void);
  1954. void do_final_script(void);
  1955. int add_str(const char* p);
  1956. const char* get_str(int id);
  1957. void script_reload(void);
  1958. // @commands (script based)
  1959. void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, void *value, struct reg_db *ref);
  1960. /**
  1961. * Array Handling
  1962. **/
  1963. struct reg_db *script_array_src(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref);
  1964. void script_array_update(struct reg_db *src, int64 num, bool empty);
  1965. void script_array_delete(struct reg_db *src, struct script_array *sa);
  1966. void script_array_remove_member(struct reg_db *src, struct script_array *sa, unsigned int idx);
  1967. void script_array_add_member(struct script_array *sa, unsigned int idx);
  1968. unsigned int script_array_size(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref);
  1969. unsigned int script_array_highest_key(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref);
  1970. void script_array_ensure_zero(struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref);
  1971. int script_free_array_db(DBKey key, DBData *data, va_list ap);
  1972. /* */
  1973. void script_reg_destroy_single(struct map_session_data *sd, int64 reg, struct script_reg_state *data);
  1974. int script_reg_destroy(DBKey key, DBData *data, va_list ap);
  1975. /* */
  1976. void script_generic_ui_array_expand(unsigned int plus);
  1977. unsigned int *script_array_cpy_list(struct script_array *sa);
  1978. bool script_check_RegistryVariableLength(int pType, const char *val, size_t* vlen);
  1979. #endif /* SCRIPT_HPP */