|
@@ -21,6 +21,7 @@ struct status_change;
|
|
# define MAX_REFINE 10
|
|
# define MAX_REFINE 10
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+/// Refine type
|
|
enum refine_type {
|
|
enum refine_type {
|
|
REFINE_TYPE_ARMOR = 0,
|
|
REFINE_TYPE_ARMOR = 0,
|
|
REFINE_TYPE_WEAPON1 = 1,
|
|
REFINE_TYPE_WEAPON1 = 1,
|
|
@@ -30,9 +31,10 @@ enum refine_type {
|
|
REFINE_TYPE_MAX = 5
|
|
REFINE_TYPE_MAX = 5
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/// Get refine chance
|
|
int status_get_refine_chance(enum refine_type wlv, int refine);
|
|
int status_get_refine_chance(enum refine_type wlv, int refine);
|
|
|
|
|
|
-// Status changes listing. These code are for use by the server.
|
|
|
|
|
|
+/// Status changes listing. These code are for use by the server.
|
|
typedef enum sc_type {
|
|
typedef enum sc_type {
|
|
SC_NONE = -1,
|
|
SC_NONE = -1,
|
|
|
|
|
|
@@ -692,17 +694,16 @@ typedef enum sc_type {
|
|
SC_QUEST_BUFF1,
|
|
SC_QUEST_BUFF1,
|
|
SC_QUEST_BUFF2,
|
|
SC_QUEST_BUFF2,
|
|
SC_QUEST_BUFF3,
|
|
SC_QUEST_BUFF3,
|
|
|
|
+
|
|
|
|
+ SC_ALL_RIDING,
|
|
|
|
|
|
#ifdef RENEWAL
|
|
#ifdef RENEWAL
|
|
- SC_EXTREMITYFIST2,
|
|
|
|
|
|
+ SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
- SC_ALL_RIDING = 951,
|
|
|
|
-
|
|
|
|
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
|
|
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
|
|
} sc_type;
|
|
} sc_type;
|
|
|
|
|
|
-// Official status change ids, used to display status icons on the client.
|
|
|
|
|
|
+/// Official status change ids, used to display status icons on the client.
|
|
enum si_type {
|
|
enum si_type {
|
|
SI_BLANK = -1,
|
|
SI_BLANK = -1,
|
|
SI_PROVOKE = 0,
|
|
SI_PROVOKE = 0,
|
|
@@ -1525,7 +1526,7 @@ enum e_mode
|
|
//Status change option definitions (options are what makes status changes visible to chars
|
|
//Status change option definitions (options are what makes status changes visible to chars
|
|
//who were not on your field of sight when it happened)
|
|
//who were not on your field of sight when it happened)
|
|
|
|
|
|
-//opt1: Non stackable status changes.
|
|
|
|
|
|
+///opt1: Non stackable status changes.
|
|
enum sc_opt1 {
|
|
enum sc_opt1 {
|
|
OPT1_STONE = 1, //Petrified
|
|
OPT1_STONE = 1, //Petrified
|
|
OPT1_FREEZE,
|
|
OPT1_FREEZE,
|
|
@@ -1538,7 +1539,7 @@ enum sc_opt1 {
|
|
OPT1_CRYSTALIZE,
|
|
OPT1_CRYSTALIZE,
|
|
};
|
|
};
|
|
|
|
|
|
-//opt2: Stackable status changes.
|
|
|
|
|
|
+///opt2: Stackable status changes.
|
|
enum sc_opt2 {
|
|
enum sc_opt2 {
|
|
OPT2_POISON = 0x0001,
|
|
OPT2_POISON = 0x0001,
|
|
OPT2_CURSE = 0x0002,
|
|
OPT2_CURSE = 0x0002,
|
|
@@ -1551,7 +1552,7 @@ enum sc_opt2 {
|
|
OPT2_FEAR = 0x0100,
|
|
OPT2_FEAR = 0x0100,
|
|
};
|
|
};
|
|
|
|
|
|
-//opt3: (SHOW_EFST_*)
|
|
|
|
|
|
+///opt3: (SHOW_EFST_*)
|
|
enum sc_opt3 {
|
|
enum sc_opt3 {
|
|
OPT3_NORMAL = 0x00000000,
|
|
OPT3_NORMAL = 0x00000000,
|
|
OPT3_QUICKEN = 0x00000001,
|
|
OPT3_QUICKEN = 0x00000001,
|
|
@@ -1574,6 +1575,7 @@ enum sc_opt3 {
|
|
OPT3_CONTRACT = 0x00020000,
|
|
OPT3_CONTRACT = 0x00020000,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+///Option
|
|
enum e_option {
|
|
enum e_option {
|
|
OPTION_NOTHING = 0x00000000,
|
|
OPTION_NOTHING = 0x00000000,
|
|
OPTION_SIGHT = 0x00000001,
|
|
OPTION_SIGHT = 0x00000001,
|
|
@@ -1586,7 +1588,7 @@ enum e_option {
|
|
OPTION_WEDDING = 0x00001000,
|
|
OPTION_WEDDING = 0x00001000,
|
|
OPTION_RUWACH = 0x00002000,
|
|
OPTION_RUWACH = 0x00002000,
|
|
OPTION_CHASEWALK = 0x00004000,
|
|
OPTION_CHASEWALK = 0x00004000,
|
|
- OPTION_FLYING = 0x00008000, //Note that clientside Flying and Xmas are 0x8000 for clients prior to 2007.
|
|
|
|
|
|
+ OPTION_FLYING = 0x00008000, //! NOTE: That clientside Flying and Xmas are 0x8000 for clients prior to 2007.
|
|
OPTION_XMAS = 0x00010000,
|
|
OPTION_XMAS = 0x00010000,
|
|
OPTION_TRANSFORM = 0x00020000,
|
|
OPTION_TRANSFORM = 0x00020000,
|
|
OPTION_SUMMER = 0x00040000,
|
|
OPTION_SUMMER = 0x00040000,
|
|
@@ -1616,7 +1618,7 @@ enum e_option {
|
|
OPTION_DRAGON = OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5,
|
|
OPTION_DRAGON = OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5,
|
|
};
|
|
};
|
|
|
|
|
|
-//Defines for the manner system [Skotlex]
|
|
|
|
|
|
+///Defines for the manner system [Skotlex]
|
|
enum manner_flags
|
|
enum manner_flags
|
|
{
|
|
{
|
|
MANNER_NOCHAT = 0x01,
|
|
MANNER_NOCHAT = 0x01,
|
|
@@ -1640,7 +1642,7 @@ enum scs_flag {
|
|
SCS_NOCHATCOND = 0x00000200, /* cond flag for notalk */
|
|
SCS_NOCHATCOND = 0x00000200, /* cond flag for notalk */
|
|
};
|
|
};
|
|
|
|
|
|
-//Define flags for the status_calc_bl function. [Skotlex]
|
|
|
|
|
|
+///Define flags for the status_calc_bl function. [Skotlex]
|
|
enum scb_flag
|
|
enum scb_flag
|
|
{
|
|
{
|
|
SCB_NONE = 0x00000000,
|
|
SCB_NONE = 0x00000000,
|
|
@@ -1696,16 +1698,16 @@ enum e_status_bonus {
|
|
STATUS_BONUS_RATE = 1,
|
|
STATUS_BONUS_RATE = 1,
|
|
};
|
|
};
|
|
|
|
|
|
-//Define to determine who gets HP/SP consumed on doing skills/etc. [Skotlex]
|
|
|
|
|
|
+///Define to determine who gets HP/SP consumed on doing skills/etc. [Skotlex]
|
|
#define BL_CONSUME (BL_PC|BL_HOM|BL_MER|BL_ELEM)
|
|
#define BL_CONSUME (BL_PC|BL_HOM|BL_MER|BL_ELEM)
|
|
-//Define to determine who has regen
|
|
|
|
|
|
+///Define to determine who has regen
|
|
#define BL_REGEN (BL_PC|BL_HOM|BL_MER|BL_ELEM)
|
|
#define BL_REGEN (BL_PC|BL_HOM|BL_MER|BL_ELEM)
|
|
-//Define to determine who will receive a clif_status_change packet for effects that require one to display correctly
|
|
|
|
|
|
+///Define to determine who will receive a clif_status_change packet for effects that require one to display correctly
|
|
#define BL_SCEFFECT (BL_PC|BL_HOM|BL_MER|BL_MOB|BL_ELEM)
|
|
#define BL_SCEFFECT (BL_PC|BL_HOM|BL_MER|BL_MOB|BL_ELEM)
|
|
|
|
|
|
-//Basic damage info of a weapon
|
|
|
|
-//Required because players have two of these, one in status_data
|
|
|
|
-//and another for their left hand weapon.
|
|
|
|
|
|
+/** Basic damage info of a weapon
|
|
|
|
+* Required because players have two of these, one in status_data
|
|
|
|
+* and another for their left hand weapon. */
|
|
struct weapon_atk {
|
|
struct weapon_atk {
|
|
unsigned short atk, atk2;
|
|
unsigned short atk, atk2;
|
|
unsigned short range;
|
|
unsigned short range;
|
|
@@ -1717,7 +1719,7 @@ struct weapon_atk {
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
-//For holding basic status (which can be modified by status changes)
|
|
|
|
|
|
+///For holding basic status (which can be modified by status changes)
|
|
struct status_data {
|
|
struct status_data {
|
|
unsigned int
|
|
unsigned int
|
|
hp, sp, // see status_cpy before adding members before hp and sp
|
|
hp, sp, // see status_cpy before adding members before hp and sp
|
|
@@ -1755,7 +1757,7 @@ struct status_data {
|
|
struct weapon_atk rhw, lhw; //Right Hand/Left Hand Weapon.
|
|
struct weapon_atk rhw, lhw; //Right Hand/Left Hand Weapon.
|
|
};
|
|
};
|
|
|
|
|
|
-//Additional regen data that only players have.
|
|
|
|
|
|
+///Additional regen data that only players have.
|
|
struct regen_data_sub {
|
|
struct regen_data_sub {
|
|
unsigned short
|
|
unsigned short
|
|
hp,sp;
|
|
hp,sp;
|
|
@@ -1771,8 +1773,8 @@ struct regen_data_sub {
|
|
} rate;
|
|
} rate;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+///Regen data
|
|
struct regen_data {
|
|
struct regen_data {
|
|
-
|
|
|
|
unsigned short flag; //Marks what stuff you may heal or not.
|
|
unsigned short flag; //Marks what stuff you may heal or not.
|
|
unsigned short
|
|
unsigned short
|
|
hp,sp,shp,ssp;
|
|
hp,sp,shp,ssp;
|
|
@@ -1799,18 +1801,20 @@ struct regen_data {
|
|
struct regen_data_sub *sregen, *ssregen;
|
|
struct regen_data_sub *sregen, *ssregen;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+///Status change entry
|
|
struct status_change_entry {
|
|
struct status_change_entry {
|
|
int timer;
|
|
int timer;
|
|
int val1,val2,val3,val4;
|
|
int val1,val2,val3,val4;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+///Status change
|
|
struct status_change {
|
|
struct status_change {
|
|
unsigned int option;// effect state (bitfield)
|
|
unsigned int option;// effect state (bitfield)
|
|
unsigned int opt3;// skill state (bitfield)
|
|
unsigned int opt3;// skill state (bitfield)
|
|
unsigned short opt1;// body state
|
|
unsigned short opt1;// body state
|
|
unsigned short opt2;// health state (bitfield)
|
|
unsigned short opt2;// health state (bitfield)
|
|
unsigned char count;
|
|
unsigned char count;
|
|
- //TODO: See if it is possible to implement the following SC's without requiring extra parameters while the SC is inactive.
|
|
|
|
|
|
+ //! TODO: See if it is possible to implement the following SC's without requiring extra parameters while the SC is inactive.
|
|
unsigned char jb_flag; //Joint Beat type flag
|
|
unsigned char jb_flag; //Joint Beat type flag
|
|
struct {
|
|
struct {
|
|
unsigned char move;
|
|
unsigned char move;
|