Guest User

Untitled

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