Guest User

Mmo

a guest
Sep 8th, 2013
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.64 KB | None | 0 0
  1. // Copyright (c) Hercules Dev Team, licensed under GNU GPL.
  2. // See the LICENSE file
  3. // Portions Copyright (c) Athena Dev Teams
  4.  
  5. #ifndef _MMO_H_
  6. #define _MMO_H_
  7.  
  8. #include "cbasetypes.h"
  9. #include "../common/db.h"
  10. #include <time.h>
  11.  
  12. // server->client protocol version
  13. // 0 - pre-?
  14. // 1 - ? - 0x196
  15. // 2 - ? - 0x78, 0x79
  16. // 3 - ? - 0x1c8, 0x1c9, 0x1de
  17. // 4 - ? - 0x1d7, 0x1d8, 0x1d9, 0x1da
  18. // 5 - 2003-12-18aSakexe+ - 0x1ee, 0x1ef, 0x1f0, ?0x1c4, 0x1c5?
  19. // 6 - 2004-03-02aSakexe+ - 0x1f4, 0x1f5
  20. // 7 - 2005-04-11aSakexe+ - 0x229, 0x22a, 0x22b, 0x22c
  21. // 20061023 - 2006-10-23aSakexe+ - 0x6b, 0x6d
  22. // 20070521 - 2007-05-21aSakexe+ - 0x283
  23. // 20070821 - 2007-08-21aSakexe+ - 0x2c5
  24. // 20070918 - 2007-09-18aSakexe+ - 0x2d7, 0x2d9, 0x2da
  25. // 20071106 - 2007-11-06aSakexe+ - 0x78, 0x7c, 0x22c
  26. // 20080102 - 2008-01-02aSakexe+ - 0x2ec, 0x2ed , 0x2ee
  27. // 20081126 - 2008-11-26aSakexe+ - 0x1a2
  28. // 20090408 - 2009-04-08aSakexe+ - 0x44a (dont use as it overlaps with RE client packets)
  29. // 20080827 - 2008-08-27aRagexeRE+ - First RE Client
  30. // 20081217 - 2008-12-17aRagexeRE+ - 0x6d (Note: This one still use old Char Info Packet Structure)
  31. // 20081218 - 2008-12-17bRagexeRE+ - 0x6d (Note: From this one client use new Char Info Packet Structure)
  32. // 20090603 - 2009-06-03aRagexeRE+ - 0x7d7, 0x7d8, 0x7d9, 0x7da
  33. // 20090617 - 2009-06-17aRagexeRE+ - 0x7d9
  34. // 20090922 - 2009-09-22aRagexeRE+ - 0x7e5, 0x7e7, 0x7e8, 0x7e9
  35. // 20091103 - 2009-11-03aRagexeRE+ - 0x7f7, 0x7f8, 0x7f9
  36. // 20100105 - 2010-01-05aRagexeRE+ - 0x133, 0x800, 0x801
  37. // 20100126 - 2010-01-26aRagexeRE+ - 0x80e
  38. // 20100223 - 2010-02-23aRagexeRE+ - 0x80f
  39. // 20100413 - 2010-04-13aRagexeRE+ - 0x6b
  40. // 20100629 - 2010-06-29aRagexeRE+ - 0x2d0, 0xaa, 0x2d1, 0x2d2
  41. // 20100721 - 2010-07-21aRagexeRE+ - 0x6b, 0x6d
  42. // 20100727 - 2010-07-27aRagexeRE+ - 0x6b, 0x6d
  43. // 20100803 - 2010-08-03aRagexeRE+ - 0x6b, 0x6d, 0x827, 0x828, 0x829, 0x82a, 0x82b, 0x82c, 0x842, 0x843
  44. // 20101124 - 2010-11-24aRagexeRE+ - 0x856, 0x857, 0x858
  45. // 20110111 - 2011-01-11aRagexeRE+ - 0x6b, 0x6d
  46. // 20110928 - 2011-09-28aRagexeRE+ - 0x6b, 0x6d
  47. // 20111025 - 2011-10-25aRagexeRE+ - 0x6b, 0x6d
  48. // 20120307 - 2012-03-07aRagexeRE+ - 0x970
  49.  
  50. #ifndef PACKETVER
  51. #define PACKETVER 20130703
  52. #endif
  53.  
  54. // Comment the following line if your client is NOT ragexeRE (required because of conflicting packets in ragexe vs ragexeRE).
  55. #define PACKETVER_RE
  56.  
  57. // Client support for experimental RagexeRE UI present in 2012-04-10 and 2012-04-18
  58. #ifdef PACKETVER_RE
  59. #if (PACKETVER == 20120410) || (PACKETVER == 20120418)
  60. #define PARTY_RECRUIT
  61. #endif
  62. #endif
  63.  
  64. // Comment the following line to disable sc_data saving. [Skotlex]
  65. #define ENABLE_SC_SAVING
  66.  
  67. #if PACKETVER >= 20070227
  68. // Comment the following like to disable server-side hot-key saving support. [Skotlex]
  69. // Note that newer clients no longer save hotkeys in the registry!
  70. #define HOTKEY_SAVING
  71.  
  72. #if PACKETVER < 20090603
  73. // (27 = 9 skills x 3 bars) (0x02b9,191)
  74. #define MAX_HOTKEYS 27
  75. #elif PACKETVER < 20090617
  76. // (36 = 9 skills x 4 bars) (0x07d9,254)
  77. #define MAX_HOTKEYS 36
  78. #else // >= 20090617
  79. // (38 = 9 skills x 4 bars & 2 Quickslots)(0x07d9,268)
  80. #define MAX_HOTKEYS 38
  81. #endif // 20090603
  82. #endif // 20070227
  83.  
  84. #define MAX_INVENTORY 100
  85. //Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more characters as well.
  86. #define MAX_CHARS 9
  87. //Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
  88. //Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
  89. #define MAX_SLOTS 4
  90. //Max amount of a single stacked item
  91. #define MAX_AMOUNT 30000
  92. #define MAX_ZENY 1000000000
  93. #define MAX_FAME 1000000000
  94. #define MAX_CART 100
  95. #define MAX_SKILL 1478
  96. #define MAX_SKILL_ID 10015 // [Ind/Hercules] max used skill ID
  97. //Update this max as necessary. 55 is the value needed for Super Baby currently
  98. //Raised to 84 since Expanded Super Novice needs it.
  99. #define MAX_SKILL_TREE 84
  100. #define GLOBAL_REG_NUM 256 // Max permanent character variables per char
  101. #define ACCOUNT_REG_NUM 64 // Max permanent local account variables per account
  102. #define ACCOUNT_REG2_NUM 16 // Max permanent global account variables per account
  103. //Should hold the max of GLOBAL/ACCOUNT/ACCOUNT2 (needed for some arrays that hold all three)
  104. #define MAX_REG_NUM 256
  105. #define DEFAULT_WALK_SPEED 150
  106. #define MIN_WALK_SPEED 0
  107. #define MAX_WALK_SPEED 1000
  108. #define MAX_STORAGE 600
  109. #define MAX_GUILD_STORAGE 600
  110. #define MAX_PARTY 12
  111. #define MAX_GUILD 16+10*6 // Increased max guild members +6 per 1 extension levels [Lupus]
  112. #define MAX_GUILDPOSITION 20 // Increased max guild positions to accomodate for all members [Valaris] (removed) [PoW]
  113. #define MAX_GUILDEXPULSION 32
  114. #define MAX_GUILDALLIANCE 16
  115. #define MAX_GUILDSKILL 15 // Increased max guild skills because of new skills [Sara-chan]
  116. #define MAX_GUILDLEVEL 50
  117. #define MAX_GUARDIANS 8 // Local max per castle. [Skotlex]
  118. #define MAX_QUEST_DB 2662 // Max quests that the server will load
  119. #define MAX_QUEST_OBJECTIVES 3 // Max quest objectives for a quest
  120. #define MAX_START_ITEMS 32 // Max number of items allowed to be given to a char whenever it's created. [mkbu95]
  121.  
  122. // for produce
  123. #define MIN_ATTRIBUTE 0
  124. #define MAX_ATTRIBUTE 4
  125. #define ATTRIBUTE_NORMAL 0
  126. #define MIN_STAR 0
  127. #define MAX_STAR 3
  128.  
  129. #define MAX_STATUS_TYPE 5
  130.  
  131. #define WEDDING_RING_M 2634
  132. #define WEDDING_RING_F 2635
  133.  
  134. //For character names, title names, guilds, maps, etc.
  135. //Includes null-terminator as it is the length of the array.
  136. #define NAME_LENGTH (23 + 1)
  137. //For item names, which tend to have much longer names.
  138. #define ITEM_NAME_LENGTH 50
  139. //For Map Names, which the client considers to be 16 in length including the .gat extension.
  140. #define MAP_NAME_LENGTH (11 + 1)
  141. #define MAP_NAME_LENGTH_EXT (MAP_NAME_LENGTH + 4)
  142.  
  143. #define MAX_FRIENDS 40
  144. #define MAX_MEMOPOINTS 3
  145.  
  146. // Size of the fame list arrays.
  147. #define MAX_FAME_LIST 10
  148.  
  149. // Limits to avoid ID collision with other game objects
  150. #define START_ACCOUNT_NUM 2000000
  151. #define END_ACCOUNT_NUM 100000000
  152. #define START_CHAR_NUM 150000
  153.  
  154. // Guilds
  155. #define MAX_GUILDMES1 60
  156. #define MAX_GUILDMES2 120
  157.  
  158. // Base Homun skill.
  159. #define HM_SKILLBASE 8001
  160. #define MAX_HOMUNSKILL 43
  161. #define MAX_HOMUNCULUS_CLASS 52 // [orn] Increased to 60 from 16 to allow new Homun-S.
  162. #define HM_CLASS_BASE 6001
  163. #define HM_CLASS_MAX (HM_CLASS_BASE+MAX_HOMUNCULUS_CLASS-1)
  164.  
  165. // Mail System
  166. #define MAIL_MAX_INBOX 30
  167. #define MAIL_TITLE_LENGTH 40
  168. #define MAIL_BODY_LENGTH 200
  169.  
  170. // Mercenary System
  171. #define MC_SKILLBASE 8201
  172. #define MAX_MERCSKILL 40
  173. #define MAX_MERCENARY_CLASS 61
  174.  
  175. // Elemental System
  176. #define MAX_ELEMENTALSKILL 42
  177. #define EL_SKILLBASE 8401
  178. #define MAX_ELESKILLTREE 3
  179. #define MAX_ELEMENTAL_CLASS 12
  180. #define EL_CLASS_BASE 2114
  181. #define EL_CLASS_MAX (EL_CLASS_BASE+MAX_ELEMENTAL_CLASS-1)
  182.  
  183. enum item_types {
  184. IT_HEALING = 0,
  185. IT_UNKNOWN, //1
  186. IT_USABLE, //2
  187. IT_ETC, //3
  188. IT_WEAPON, //4
  189. IT_ARMOR, //5
  190. IT_CARD, //6
  191. IT_PETEGG, //7
  192. IT_PETARMOR,//8
  193. IT_UNKNOWN2,//9
  194. IT_AMMO, //10
  195. IT_DELAYCONSUME,//11
  196. IT_CASH = 18,
  197. IT_MAX
  198. };
  199.  
  200.  
  201. // Questlog system [Kevin] [Inkfish]
  202. typedef enum quest_state { Q_INACTIVE, Q_ACTIVE, Q_COMPLETE } quest_state;
  203.  
  204. struct quest {
  205. int quest_id;
  206. unsigned int time;
  207. int count[MAX_QUEST_OBJECTIVES];
  208. quest_state state;
  209. };
  210.  
  211. struct item {
  212. int id;
  213. short nameid;
  214. short amount;
  215. unsigned short equip; // Location(s) where item is equipped (using enum equip_pos for bitmasking).
  216. char identify;
  217. char refine;
  218. char attribute;
  219. short card[MAX_SLOTS];
  220. unsigned int expire_time;
  221. char favorite;
  222. uint64 unique_id;
  223. };
  224.  
  225. struct point {
  226. unsigned short map;
  227. short x,y;
  228. };
  229.  
  230. enum e_skill_flag
  231. {
  232. SKILL_FLAG_PERMANENT,
  233. SKILL_FLAG_TEMPORARY,
  234. SKILL_FLAG_PLAGIARIZED,
  235. SKILL_FLAG_UNUSED, /* needed to maintain the order since the values are saved, can be renamed and used if a new flag is necessary */
  236. SKILL_FLAG_PERM_GRANTED, // Permanent, granted through someway (e.g. script).
  237. /* */
  238. /* MUST be the last, because with it the flag value stores a dynamic value (flag+lv) */
  239. SKILL_FLAG_REPLACED_LV_0, // Temporary skill overshadowing permanent skill of level 'N - SKILL_FLAG_REPLACED_LV_0',
  240. };
  241.  
  242. enum e_mmo_charstatus_opt {
  243. OPT_NONE = 0x0,
  244. OPT_SHOW_EQUIP = 0x1,
  245. OPT_ALLOW_PARTY = 0x2,
  246. };
  247.  
  248. struct s_skill {
  249. unsigned short id;
  250. unsigned char lv;
  251. unsigned char flag; // See enum e_skill_flag
  252. };
  253.  
  254. struct global_reg {
  255. char str[32];
  256. char value[256];
  257. };
  258.  
  259. // Holds array of global registries, used by the char server and converter.
  260. struct accreg {
  261. int account_id, char_id;
  262. int reg_num;
  263. struct global_reg reg[MAX_REG_NUM];
  264. };
  265.  
  266. // For saving status changes across sessions. [Skotlex]
  267. struct status_change_data {
  268. unsigned short type; //SC_type
  269. long val1, val2, val3, val4, tick; //Remaining duration.
  270. };
  271.  
  272. struct storage_data {
  273. int storage_amount;
  274. struct item items[MAX_STORAGE];
  275. };
  276.  
  277. struct guild_storage {
  278. int dirty;
  279. int guild_id;
  280. short storage_status;
  281. short storage_amount;
  282. struct item items[MAX_GUILD_STORAGE];
  283. unsigned short lock;
  284. };
  285.  
  286. struct s_pet {
  287. int account_id;
  288. int char_id;
  289. int pet_id;
  290. short class_;
  291. short level;
  292. short egg_id;//pet egg id
  293. short equip;//pet equip name_id
  294. short intimate;//pet friendly
  295. short hungry;//pet hungry
  296. char name[NAME_LENGTH];
  297. char rename_flag;
  298. char incuvate;
  299. };
  300.  
  301. struct s_homunculus { //[orn]
  302. char name[NAME_LENGTH];
  303. int hom_id;
  304. int char_id;
  305. short class_;
  306. short prev_class;
  307. int hp,max_hp,sp,max_sp;
  308. unsigned int intimacy; //[orn]
  309. short hunger;
  310. struct s_skill hskill[MAX_HOMUNSKILL]; //albator
  311. short skillpts;
  312. short level;
  313. unsigned int exp;
  314. short rename_flag;
  315. short vaporize; //albator
  316. int str ;
  317. int agi ;
  318. int vit ;
  319. int int_ ;
  320. int dex ;
  321. int luk ;
  322.  
  323. char spiritball; //for homun S [lighta]
  324. };
  325.  
  326. struct s_mercenary {
  327. int mercenary_id;
  328. int char_id;
  329. short class_;
  330. int hp, sp;
  331. unsigned int kill_count;
  332. unsigned int life_time;
  333. };
  334.  
  335. struct s_elemental {
  336. int elemental_id;
  337. int char_id;
  338. short class_;
  339. int mode;
  340. int hp, sp, max_hp, max_sp, matk, atk, atk2;
  341. short hit, flee, amotion, def, mdef;
  342. int life_time;
  343. };
  344.  
  345. struct s_friend {
  346. int account_id;
  347. int char_id;
  348. char name[NAME_LENGTH];
  349. };
  350.  
  351. #ifdef HOTKEY_SAVING
  352. struct hotkey {
  353. unsigned int id;
  354. unsigned short lv;
  355. unsigned char type; // 0: item, 1: skill
  356. };
  357. #endif
  358.  
  359. struct mmo_charstatus {
  360. int char_id;
  361. int account_id;
  362. int partner_id;
  363. int father;
  364. int mother;
  365. int child;
  366.  
  367. unsigned int base_exp,job_exp;
  368. int zeny;
  369.  
  370. short class_;
  371. unsigned int status_point,skill_point;
  372. int hp,max_hp,sp,max_sp;
  373. unsigned int option;
  374. short manner;
  375. unsigned char karma;
  376. short hair,hair_color,clothes_color;
  377. int party_id,guild_id,pet_id,hom_id,mer_id,ele_id;
  378. int fame;
  379.  
  380. // Mercenary Guilds Rank
  381. int arch_faith, arch_calls;
  382. int spear_faith, spear_calls;
  383. int sword_faith, sword_calls;
  384.  
  385. short weapon; // enum weapon_type
  386. short shield; // view-id
  387. short head_top,head_mid,head_bottom;
  388. short robe;
  389.  
  390. char name[NAME_LENGTH];
  391. unsigned int base_level,job_level;
  392. short str,agi,vit,int_,dex,luk;
  393. unsigned char slot,sex;
  394.  
  395. uint32 mapip;
  396. uint16 mapport;
  397.  
  398. struct point last_point,save_point,memo_point[MAX_MEMOPOINTS];
  399. struct item inventory[MAX_INVENTORY],cart[MAX_CART];
  400. struct storage_data storage;
  401. struct s_skill skill[MAX_SKILL];
  402.  
  403. struct s_friend friends[MAX_FRIENDS]; //New friend system [Skotlex]
  404. #ifdef HOTKEY_SAVING
  405. struct hotkey hotkeys[MAX_HOTKEYS];
  406. #endif
  407. bool show_equip, allow_party;
  408. unsigned short rename;
  409. unsigned short slotchange;
  410.  
  411. time_t delete_date;
  412. };
  413.  
  414. typedef enum mail_status {
  415. MAIL_NEW,
  416. MAIL_UNREAD,
  417. MAIL_READ,
  418. } mail_status;
  419.  
  420. struct mail_message {
  421. int id;
  422. int send_id;
  423. char send_name[NAME_LENGTH];
  424. int dest_id;
  425. char dest_name[NAME_LENGTH];
  426. char title[MAIL_TITLE_LENGTH];
  427. char body[MAIL_BODY_LENGTH];
  428.  
  429. mail_status status;
  430. time_t timestamp; // marks when the message was sent
  431.  
  432. int zeny;
  433. struct item item;
  434. };
  435.  
  436. struct mail_data {
  437. short amount;
  438. bool full;
  439. short unchecked, unread;
  440. struct mail_message msg[MAIL_MAX_INBOX];
  441. };
  442.  
  443. struct auction_data {
  444. unsigned int auction_id;
  445. int seller_id;
  446. char seller_name[NAME_LENGTH];
  447. int buyer_id;
  448. char buyer_name[NAME_LENGTH];
  449.  
  450. struct item item;
  451. // This data is required for searching, as itemdb is not read by char server
  452. char item_name[ITEM_NAME_LENGTH];
  453. short type;
  454.  
  455. unsigned short hours;
  456. int price, buynow;
  457. time_t timestamp; // auction's end time
  458. int auction_end_timer;
  459. };
  460.  
  461. struct registry {
  462. int global_num;
  463. struct global_reg global[GLOBAL_REG_NUM];
  464. int account_num;
  465. struct global_reg account[ACCOUNT_REG_NUM];
  466. int account2_num;
  467. struct global_reg account2[ACCOUNT_REG2_NUM];
  468. };
  469.  
  470. struct party_member {
  471. int account_id;
  472. int char_id;
  473. char name[NAME_LENGTH];
  474. unsigned short class_;
  475. unsigned short map;
  476. unsigned short lv;
  477. unsigned leader : 1,
  478. online : 1;
  479. };
  480.  
  481. struct party {
  482. int party_id;
  483. char name[NAME_LENGTH];
  484. unsigned char count; //Count of online characters.
  485. unsigned exp : 1,
  486. item : 2; //&1: Party-Share (round-robin), &2: pickup style: shared.
  487. struct party_member member[MAX_PARTY];
  488. };
  489.  
  490. struct map_session_data;
  491. struct guild_member {
  492. int account_id, char_id;
  493. short hair,hair_color,gender,class_,lv;
  494. uint64 exp;
  495. int exp_payper;
  496. short online,position;
  497. char name[NAME_LENGTH];
  498. struct map_session_data *sd;
  499. unsigned char modified;
  500. };
  501.  
  502. struct guild_position {
  503. char name[NAME_LENGTH];
  504. int mode;
  505. int exp_mode;
  506. unsigned char modified;
  507. };
  508.  
  509. struct guild_alliance {
  510. int opposition;
  511. int guild_id;
  512. char name[NAME_LENGTH];
  513. };
  514.  
  515. struct guild_expulsion {
  516. char name[NAME_LENGTH];
  517. char mes[40];
  518. int account_id;
  519. };
  520.  
  521. struct guild_skill {
  522. int id,lv;
  523. };
  524.  
  525. struct guild {
  526. int guild_id;
  527. short guild_lv, connect_member, max_member, average_lv;
  528. uint64 exp;
  529. unsigned int next_exp;
  530. int skill_point;
  531. char name[NAME_LENGTH],master[NAME_LENGTH];
  532. struct guild_member member[MAX_GUILD];
  533. struct guild_position position[MAX_GUILDPOSITION];
  534. char mes1[MAX_GUILDMES1],mes2[MAX_GUILDMES2];
  535. int emblem_len,emblem_id;
  536. char emblem_data[2048];
  537. struct guild_alliance alliance[MAX_GUILDALLIANCE];
  538. struct guild_expulsion expulsion[MAX_GUILDEXPULSION];
  539. struct guild_skill skill[MAX_GUILDSKILL];
  540.  
  541. /* TODO: still used for something?|: */
  542. unsigned short save_flag; // for TXT saving
  543.  
  544. short *instance;
  545. unsigned short instances;
  546.  
  547. void *channel;
  548. };
  549.  
  550. struct guild_castle {
  551. int castle_id;
  552. int mapindex;
  553. char castle_name[NAME_LENGTH];
  554. char castle_event[NAME_LENGTH];
  555. int guild_id;
  556. int economy;
  557. int defense;
  558. int triggerE;
  559. int triggerD;
  560. int nextTime;
  561. int payTime;
  562. int createTime;
  563. int visibleC;
  564. struct {
  565. unsigned visible : 1;
  566. int id; // object id
  567. } guardian[MAX_GUARDIANS];
  568. int* temp_guardians; // ids of temporary guardians (mobs)
  569. int temp_guardians_max;
  570. };
  571.  
  572. struct fame_list {
  573. int id;
  574. int fame;
  575. char name[NAME_LENGTH];
  576. };
  577.  
  578. enum { //Change Guild Infos
  579. GBI_EXP =1, // Guild Experience (EXP)
  580. GBI_GUILDLV, // Guild level
  581. GBI_SKILLPOINT, // Guild skillpoints
  582. GBI_SKILLLV, // Guild skill_lv ?? seem unused
  583. };
  584.  
  585. enum { //Change Member Infos
  586. GMI_POSITION =0,
  587. GMI_EXP,
  588. GMI_HAIR,
  589. GMI_HAIR_COLOR,
  590. GMI_GENDER,
  591. GMI_CLASS,
  592. GMI_LEVEL,
  593. };
  594.  
  595. enum {
  596. GD_SKILLBASE=10000,
  597. GD_APPROVAL=10000,
  598. GD_KAFRACONTRACT=10001,
  599. GD_GUARDRESEARCH=10002,
  600. GD_GUARDUP=10003,
  601. GD_EXTENSION=10004,
  602. GD_GLORYGUILD=10005,
  603. GD_LEADERSHIP=10006,
  604. GD_GLORYWOUNDS=10007,
  605. GD_SOULCOLD=10008,
  606. GD_HAWKEYES=10009,
  607. GD_BATTLEORDER=10010,
  608. GD_REGENERATION=10011,
  609. GD_RESTORE=10012,
  610. GD_EMERGENCYCALL=10013,
  611. GD_DEVELOPMENT=10014,
  612. GD_MAX,
  613. };
  614.  
  615.  
  616. //These mark the ID of the jobs, as expected by the client. [Skotlex]
  617. enum {
  618. JOB_NOVICE,
  619. JOB_SWORDMAN,
  620. JOB_MAGE,
  621. JOB_ARCHER,
  622. JOB_ACOLYTE,
  623. JOB_MERCHANT,
  624. JOB_THIEF,
  625. JOB_KNIGHT,
  626. JOB_PRIEST,
  627. JOB_WIZARD,
  628. JOB_BLACKSMITH,
  629. JOB_HUNTER,
  630. JOB_ASSASSIN,
  631. JOB_KNIGHT2,
  632. JOB_CRUSADER,
  633. JOB_MONK,
  634. JOB_SAGE,
  635. JOB_ROGUE,
  636. JOB_ALCHEMIST,
  637. JOB_BARD,
  638. JOB_DANCER,
  639. JOB_CRUSADER2,
  640. JOB_WEDDING,
  641. JOB_SUPER_NOVICE,
  642. JOB_GUNSLINGER,
  643. JOB_NINJA,
  644. JOB_XMAS,
  645. JOB_SUMMER,
  646. JOB_MAX_BASIC,
  647.  
  648. JOB_NOVICE_HIGH = 4001,
  649. JOB_SWORDMAN_HIGH,
  650. JOB_MAGE_HIGH,
  651. JOB_ARCHER_HIGH,
  652. JOB_ACOLYTE_HIGH,
  653. JOB_MERCHANT_HIGH,
  654. JOB_THIEF_HIGH,
  655. JOB_LORD_KNIGHT,
  656. JOB_HIGH_PRIEST,
  657. JOB_HIGH_WIZARD,
  658. JOB_WHITESMITH,
  659. JOB_SNIPER,
  660. JOB_ASSASSIN_CROSS,
  661. JOB_LORD_KNIGHT2,
  662. JOB_PALADIN,
  663. JOB_CHAMPION,
  664. JOB_PROFESSOR,
  665. JOB_STALKER,
  666. JOB_CREATOR,
  667. JOB_CLOWN,
  668. JOB_GYPSY,
  669. JOB_PALADIN2,
  670.  
  671. JOB_BABY,
  672. JOB_BABY_SWORDMAN,
  673. JOB_BABY_MAGE,
  674. JOB_BABY_ARCHER,
  675. JOB_BABY_ACOLYTE,
  676. JOB_BABY_MERCHANT,
  677. JOB_BABY_THIEF,
  678. JOB_BABY_KNIGHT,
  679. JOB_BABY_PRIEST,
  680. JOB_BABY_WIZARD,
  681. JOB_BABY_BLACKSMITH,
  682. JOB_BABY_HUNTER,
  683. JOB_BABY_ASSASSIN,
  684. JOB_BABY_KNIGHT2,
  685. JOB_BABY_CRUSADER,
  686. JOB_BABY_MONK,
  687. JOB_BABY_SAGE,
  688. JOB_BABY_ROGUE,
  689. JOB_BABY_ALCHEMIST,
  690. JOB_BABY_BARD,
  691. JOB_BABY_DANCER,
  692. JOB_BABY_CRUSADER2,
  693. JOB_SUPER_BABY,
  694.  
  695. JOB_TAEKWON,
  696. JOB_STAR_GLADIATOR,
  697. JOB_STAR_GLADIATOR2,
  698. JOB_SOUL_LINKER,
  699.  
  700. JOB_GANGSI,
  701. JOB_DEATH_KNIGHT,
  702. JOB_DARK_COLLECTOR,
  703.  
  704. JOB_RUNE_KNIGHT = 4054,
  705. JOB_WARLOCK,
  706. JOB_RANGER,
  707. JOB_ARCH_BISHOP,
  708. JOB_MECHANIC,
  709. JOB_GUILLOTINE_CROSS,
  710.  
  711. JOB_RUNE_KNIGHT_T,
  712. JOB_WARLOCK_T,
  713. JOB_RANGER_T,
  714. JOB_ARCH_BISHOP_T,
  715. JOB_MECHANIC_T,
  716. JOB_GUILLOTINE_CROSS_T,
  717.  
  718. JOB_ROYAL_GUARD,
  719. JOB_SORCERER,
  720. JOB_MINSTREL,
  721. JOB_WANDERER,
  722. JOB_SURA,
  723. JOB_GENETIC,
  724. JOB_SHADOW_CHASER,
  725.  
  726. JOB_ROYAL_GUARD_T,
  727. JOB_SORCERER_T,
  728. JOB_MINSTREL_T,
  729. JOB_WANDERER_T,
  730. JOB_SURA_T,
  731. JOB_GENETIC_T,
  732. JOB_SHADOW_CHASER_T,
  733.  
  734. JOB_RUNE_KNIGHT2,
  735. JOB_RUNE_KNIGHT_T2,
  736. JOB_ROYAL_GUARD2,
  737. JOB_ROYAL_GUARD_T2,
  738. JOB_RANGER2,
  739. JOB_RANGER_T2,
  740. JOB_MECHANIC2,
  741. JOB_MECHANIC_T2,
  742.  
  743. JOB_BABY_RUNE = 4096,
  744. JOB_BABY_WARLOCK,
  745. JOB_BABY_RANGER,
  746. JOB_BABY_BISHOP,
  747. JOB_BABY_MECHANIC,
  748. JOB_BABY_CROSS,
  749.  
  750. JOB_BABY_GUARD,
  751. JOB_BABY_SORCERER,
  752. JOB_BABY_MINSTREL,
  753. JOB_BABY_WANDERER,
  754. JOB_BABY_SURA,
  755. JOB_BABY_GENETIC,
  756. JOB_BABY_CHASER,
  757.  
  758. JOB_BABY_RUNE2,
  759. JOB_BABY_GUARD2,
  760. JOB_BABY_RANGER2,
  761. JOB_BABY_MECHANIC2,
  762.  
  763. JOB_SUPER_NOVICE_E = 4190,
  764. JOB_SUPER_BABY_E,
  765.  
  766. JOB_KAGEROU = 4211,
  767. JOB_OBORO,
  768.  
  769. JOB_MAX,
  770. };
  771.  
  772. enum {
  773. SEX_FEMALE = 0,
  774. SEX_MALE,
  775. SEX_SERVER
  776. };
  777.  
  778. // sanity checks...
  779. #if MAX_ZENY > INT_MAX
  780. #error MAX_ZENY is too big
  781. #endif
  782.  
  783. #endif /* _MMO_H_ */
Add Comment
Please, Sign In to add comment