Skip to content

Commit

Permalink
Added Shadow Equipment System support (item type 12)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lilith- committed Nov 15, 2013
1 parent d07314b commit bd2503e
Show file tree
Hide file tree
Showing 18 changed files with 259 additions and 40 deletions.
7 changes: 7 additions & 0 deletions db/const.txt
Expand Up @@ -625,6 +625,13 @@ EQI_COSTUME_HEAD_LOW 11
EQI_COSTUME_HEAD_MID 12
EQI_COSTUME_HEAD_TOP 13
EQI_COSTUME_GARMENT 14
EQI_AMMO 15
EQI_SHADOW_ARMOR 16
EQI_SHADOW_WEAPON 17
EQI_SHADOW_SHIELD 18
EQI_SHADOW_SHOES 19
EQI_SHADOW_ACC_R 20
EQI_SHADOW_ACC_L 21

LOOK_BASE 0
LOOK_HAIR 1
Expand Down
28 changes: 28 additions & 0 deletions db/re/item_combo_db.txt
Expand Up @@ -230,3 +230,31 @@
15088:18817:18819,{ bonus bBaseAtk,BaseLevel/3; bonus2 bExpAddRace,RC_NonBoss,5; bonus2 bExpAddRace,RC_Boss,5; }
18507:18539,{ bonus bUseSPrate,-3; }
18559:18560,{ bonus bCritAtkRate,5; }

4606:4605,{ bonus2 bSubEle,0,20; bonus bFlee,20; bonus2 bHPLossRate,100,6000; bonus2 bSPLossRate,6,6000; }
24072:24075,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
24073:24076,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
24074:24077,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
24018:24019:24020,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus bAtkRate,1; } }
24021:24022:24023,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus bMatkRate,1; } }
24025:24028,{ set .@i,getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bMaxHP,.@i; bonus bMaxSP,.@i; if(.@i >= 15) { bonus bMaxHPrate,1; } }
24026:24027,{ set .@i,getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus bDef,.@i; if(.@i >= 15) { bonus2 bSubEle,0,1; } }
24029:24031,{ set .@i,getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus bAtk,.@i; if(.@i >= 15) { bonus bLongAtkRate,1; } }
24030:24032,{ set .@i,getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus bCritical,.@i; bonus bAtk,.@i; if(.@i >= 15) { bonus bCritAtkRate,1; } }
24034:24040,{ bonus bLuk,1; }
24035:24041,{ bonus bStr,1; }
24036:24042,{ bonus bInt,1; }
24037:24043,{ bonus bDex,1; }
24038:24044,{ bonus bVit,1; }
24039:24045,{ bonus bAgi,1; }
24046:24051,{ bonus2 bSubEle,0,1; if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L)) { bonus2 bSubEle,0,1; } }
24052:24062,{ bonus2 bExpAddRace,7,3; }
24053:24063,{ bonus2 bAddRace,10,5; bonus2 bMagicAddRace,10,5; }
24054:24065,{ bonus2 bExpAddRace,2,3; }
24055:24066,{ bonus2 bExpAddRace,4,3; }
24056:24067,{ bonus2 bExpAddRace,5,3; }
24057:24071,{ bonus2 bExpAddRace,9,3; }
24058:24068,{ bonus2 bExpAddRace,8,3; }
24059:24069,{ bonus2 bExpAddRace,0,3; }
24060:24070,{ bonus2 bExpAddRace,1,3; }
24061:24064,{ bonus2 bExpAddRace,3,3; }
134 changes: 134 additions & 0 deletions db/re/item_db.txt

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions db/re/item_misc.txt
Expand Up @@ -1214,3 +1214,7 @@
69,4429,32 // Salamander Card
69,4431,32 // Kasa Card
69,4432,33 // Magmaring Card
// Flamel Card
70,545,1 // Condensed Red Potion

This comment has been minimized.

Copy link
@cydh

cydh Dec 12, 2013

Contributor

what is it? new Item Group? so, need IG_ new const.txt

This comment has been minimized.

Copy link
@Lilith-

Lilith- Dec 12, 2013

Author Contributor

yes, i forgot to add it. u can see updated const.txt in my items_2013-08-07.txt on dropbox

70,546,1 // Condensed Yellow Potion
70,547,1 // Condensed White Potion
6 changes: 5 additions & 1 deletion db/re/item_trade.txt
Expand Up @@ -1416,6 +1416,7 @@
14605,475,100 // Orc Lord Scroll
14606,475,100 // JOB Battle Manual
14608,73,100 // Manchu-Han Imperial Feast
14696,475,100 // Sealed Gloom Under Night Gachapon
16002,507,100 // Stunner
16134,475,100 // Frog King Hat Box
16135,457,100 // Satanic Bone Helm Box
Expand Down Expand Up @@ -2011,8 +2012,11 @@
12630,475,100 // Teddy Bear Scroll
12778,473,100 // Bapho Jr Scroll
12779,473,100 // Galapago Scroll
17338,457,100 // Ore Box V
17339,457,100 // Ore Box V(10)

// Sealed Cards
4485,457,100 // Sealed Gloom Under Night Card
4489,457,100 // Sealed Pharaoh Card
4490,457,100 // Sealed Moonlight Flower Card
4491,457,100 // Sealed Sniper Card
Expand All @@ -2038,4 +2042,4 @@
4541,457,100 // Sealed High Wizard Card
4542,457,100 // Sealed Detale Card
4543,457,100 // Sealed Hatii Card
4544,457,100 // Sealed Evil Snake Lord Card
4544,457,100 // Sealed Evil Snake Lord Card
6 changes: 6 additions & 0 deletions doc/item_db.txt
Expand Up @@ -137,6 +137,12 @@ Loc: Equipment's placement. Values are (hexadecimal):
2^12 4096 = Costume Low Headgear
2^13 8192 = Costume Garment/Robe
2^15 32768 = Ammo
2^16 65536 = Shadow Armor
2^17 131072 = Shadow Weapon
2^18 262144 = Shadow Shield
2^18 524288 = Shadow Shoes
2^20 1048576 = Shadow Accessory 2
2^21 2097152 = Shadow Accessory 1

---------------------------------------

Expand Down
7 changes: 7 additions & 0 deletions doc/script_commands.txt
Expand Up @@ -2359,6 +2359,13 @@ EQI_COSTUME_HEAD_LOW (11) - Lower Costume Headgear
EQI_COSTUME_HEAD_MID (12) - Middle Costume Headgear
EQI_COSTUME_HEAD_TOP (13) - Upper Costume Headgear
EQI_COSTUME_GARMENT (14) - Costume Garment
EQI_AMMO (15) - Arrow/Ammunition
EQI_SHADOW_ARMOR (16) - Shadow Armor
EQI_SHADOW_WEAPON (17) - Shadow Weapon
EQI_SHADOW_SHIELD (18) - Shadow Shield
EQI_SHADOW_SHOES (19) - Shadow Shoes
EQI_SHADOW_ACC_R (20) - Shadow Accessory 2
EQI_SHADOW_ACC_L (21) - Shadow Accessory 1

Notice that a few items occupy several equipment slots, and if the character is
wearing such an item, 'getequipid' will return its ID number for either slot.
Expand Down
8 changes: 4 additions & 4 deletions sql-files/main.sql
Expand Up @@ -48,7 +48,7 @@ CREATE TABLE IF NOT EXISTS `cart_inventory` (
`char_id` int(11) NOT NULL default '0',
`nameid` int(11) NOT NULL default '0',
`amount` int(11) NOT NULL default '0',
`equip` mediumint(8) unsigned NOT NULL default '0',
`equip` int(11) unsigned NOT NULL default '0',
`identify` smallint(6) NOT NULL default '0',
`refine` tinyint(3) unsigned NOT NULL default '0',
`attribute` tinyint(4) NOT NULL default '0',
Expand Down Expand Up @@ -346,7 +346,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage` (
`guild_id` int(11) unsigned NOT NULL default '0',
`nameid` int(11) unsigned NOT NULL default '0',
`amount` int(11) unsigned NOT NULL default '0',
`equip` mediumint(8) unsigned NOT NULL default '0',
`equip` int(11) unsigned NOT NULL default '0',
`identify` smallint(6) unsigned NOT NULL default '0',
`refine` tinyint(3) unsigned NOT NULL default '0',
`attribute` tinyint(4) unsigned NOT NULL default '0',
Expand Down Expand Up @@ -410,7 +410,7 @@ CREATE TABLE IF NOT EXISTS `inventory` (
`char_id` int(11) unsigned NOT NULL default '0',
`nameid` int(11) unsigned NOT NULL default '0',
`amount` int(11) unsigned NOT NULL default '0',
`equip` mediumint(8) unsigned NOT NULL default '0',
`equip` int(11) unsigned NOT NULL default '0',
`identify` smallint(6) NOT NULL default '0',
`refine` tinyint(3) unsigned NOT NULL default '0',
`attribute` tinyint(4) unsigned NOT NULL default '0',
Expand Down Expand Up @@ -674,7 +674,7 @@ CREATE TABLE IF NOT EXISTS `storage` (
`account_id` int(11) unsigned NOT NULL default '0',
`nameid` int(11) unsigned NOT NULL default '0',
`amount` smallint(11) unsigned NOT NULL default '0',
`equip` mediumint(8) unsigned NOT NULL default '0',
`equip` int(11) unsigned NOT NULL default '0',
`identify` smallint(6) unsigned NOT NULL default '0',
`refine` tinyint(3) unsigned NOT NULL default '0',
`attribute` tinyint(4) unsigned NOT NULL default '0',
Expand Down
4 changes: 4 additions & 0 deletions sql-files/upgrades/upgrade_20131115.sql
@@ -0,0 +1,4 @@
ALTER TABLE `inventory` MODIFY `equip` int(11) unsigned NOT NULL default '0';
ALTER TABLE `storage` MODIFY `equip` int(11) unsigned NOT NULL default '0';
ALTER TABLE `cart_inventory` MODIFY `equip` int(11) unsigned NOT NULL default '0';
ALTER TABLE `guild_storage` MODIFY `equip` int(11) unsigned NOT NULL default '0';
8 changes: 4 additions & 4 deletions src/char/char.c
Expand Up @@ -808,7 +808,7 @@ int memitemdata_to_sql(const struct item items[], int max, int id, int tableswit
SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 1, SQLDT_SHORT, &item.nameid, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 3, SQLDT_USHORT, &item.equip, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &item.equip, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 5, SQLDT_CHAR, &item.refine, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, 0, NULL, NULL);
Expand Down Expand Up @@ -954,7 +954,7 @@ int inventory_to_sql(const struct item items[], int max, int id) {
SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 1, SQLDT_SHORT, &item.nameid, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 3, SQLDT_USHORT, &item.equip, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &item.equip, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 5, SQLDT_CHAR, &item.refine, 0, NULL, NULL);
SqlStmt_BindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, 0, NULL, NULL);
Expand Down Expand Up @@ -1312,7 +1312,7 @@ int mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_everything
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &tmp_item.id, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 1, SQLDT_SHORT, &tmp_item.nameid, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &tmp_item.amount, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 3, SQLDT_USHORT, &tmp_item.equip, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &tmp_item.equip, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &tmp_item.identify, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 5, SQLDT_CHAR, &tmp_item.refine, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 6, SQLDT_CHAR, &tmp_item.attribute, 0, NULL, NULL)
Expand Down Expand Up @@ -1344,7 +1344,7 @@ int mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_everything
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &tmp_item.id, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 1, SQLDT_SHORT, &tmp_item.nameid, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &tmp_item.amount, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 3, SQLDT_USHORT, &tmp_item.equip, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &tmp_item.equip, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &tmp_item.identify, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 5, SQLDT_CHAR, &tmp_item.refine, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 6, SQLDT_CHAR, &tmp_item.attribute, 0, NULL, NULL)
Expand Down
3 changes: 2 additions & 1 deletion src/common/mmo.h
Expand Up @@ -180,6 +180,7 @@ enum item_types {
IT_UNKNOWN2,//9
IT_AMMO, //10
IT_DELAYCONSUME,//11
IT_SHADOWGEAR, //12
IT_CASH = 18,
IT_MAX
};
Expand All @@ -199,7 +200,7 @@ struct item {
int id;
short nameid;
short amount;
unsigned short equip; // location(s) where item is equipped (using enum equip_pos for bitmasking)
unsigned int equip; // location(s) where item is equipped (using enum equip_pos for bitmasking)
char identify;
char refine;
char attribute;
Expand Down
2 changes: 1 addition & 1 deletion src/map/clif.c
Expand Up @@ -14524,7 +14524,7 @@ void clif_parse_Auction_setitem(int fd, struct map_session_data *sd){
return;
}

if( (item = itemdb_exists(sd->status.inventory[idx].nameid)) != NULL && !(item->type == IT_ARMOR || item->type == IT_PETARMOR || item->type == IT_WEAPON || item->type == IT_CARD || item->type == IT_ETC) )
if( (item = itemdb_exists(sd->status.inventory[idx].nameid)) != NULL && !(item->type == IT_ARMOR || item->type == IT_PETARMOR || item->type == IT_WEAPON || item->type == IT_CARD || item->type == IT_ETC || item->type == IT_SHADOWGEAR) )
{ // Consumable or pets are not allowed
clif_Auction_setitem(sd->fd, idx, true);
return;
Expand Down
8 changes: 7 additions & 1 deletion src/map/itemdb.c
Expand Up @@ -198,6 +198,7 @@ const char* itemdb_typename(int type)
case IT_PETARMOR: return "Pet Accessory";
case IT_AMMO: return "Arrow/Ammunition";
case IT_DELAYCONSUME: return "Delay-Consume Usable";
case IT_SHADOWGEAR: return "Shadow Equipment";
case IT_CASH: return "Cash Usable";
}
return "Unknown Type";
Expand Down Expand Up @@ -352,6 +353,7 @@ int itemdb_isequip(int nameid)
case IT_WEAPON:
case IT_ARMOR:
case IT_AMMO:
case IT_SHADOWGEAR:
return 1;
default:
return 0;
Expand All @@ -368,6 +370,7 @@ int itemdb_isequip2(struct item_data *data)
case IT_WEAPON:
case IT_ARMOR:
case IT_AMMO:
case IT_SHADOWGEAR:
return 1;
default:
return 0;
Expand All @@ -385,6 +388,7 @@ int itemdb_isstackable(int nameid)
case IT_ARMOR:
case IT_PETEGG:
case IT_PETARMOR:
case IT_SHADOWGEAR:
return 0;
default:
return 1;
Expand All @@ -402,6 +406,7 @@ int itemdb_isstackable2(struct item_data *data)
case IT_ARMOR:
case IT_PETEGG:
case IT_PETARMOR:
case IT_SHADOWGEAR:
return 0;
default:
return 1;
Expand Down Expand Up @@ -477,6 +482,7 @@ int itemdb_isidentified(int nameid)
case IT_WEAPON:
case IT_ARMOR:
case IT_PETARMOR:
case IT_SHADOWGEAR:
return 0;
default:
return 1;
Expand Down Expand Up @@ -1006,7 +1012,7 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr

id->type = atoi(str[3]);

if( id->type < 0 || id->type == IT_UNKNOWN || id->type == IT_UNKNOWN2 || ( id->type > IT_DELAYCONSUME && id->type < IT_CASH ) || id->type >= IT_MAX )
if( id->type < 0 || id->type == IT_UNKNOWN || id->type == IT_UNKNOWN2 || ( id->type > IT_SHADOWGEAR && id->type < IT_CASH ) || id->type >= IT_MAX )
{// catch invalid item types
ShowWarning("itemdb_parse_dbrow: Invalid item type %d for item %d. IT_ETC will be used.\n", id->type, nameid);
id->type = IT_ETC;
Expand Down
2 changes: 1 addition & 1 deletion src/map/itemdb.h
Expand Up @@ -87,7 +87,7 @@ enum e_item_job {
#define IG_FINDINGORE 6
#define IG_POTION 37
//The max. item group count (increase this when needed).
#define MAX_ITEMGROUP 70
#define MAX_ITEMGROUP 71

#define CARD0_FORGE 0x00FF
#define CARD0_CREATE 0x00FE
Expand Down
8 changes: 7 additions & 1 deletion src/map/pc.c
Expand Up @@ -68,7 +68,7 @@ struct fame_list smith_fame_list[MAX_FAME_LIST];
struct fame_list chemist_fame_list[MAX_FAME_LIST];
struct fame_list taekwon_fame_list[MAX_FAME_LIST];

static unsigned short equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARMENT,EQP_HEAD_LOW,EQP_HEAD_MID,EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_COSTUME_HEAD_TOP,EQP_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT,EQP_AMMO};
static unsigned int equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARMENT,EQP_HEAD_LOW,EQP_HEAD_MID,EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_COSTUME_HEAD_TOP,EQP_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_GARMENT,EQP_AMMO,EQP_SHADOW_ARMOR,EQP_SHADOW_WEAPON,EQP_SHADOW_SHIELD,EQP_SHADOW_SHOES,EQP_SHADOW_ACC_R,EQP_SHADOW_ACC_L};

#define MOTD_LINE_SIZE 128
static char motd_text[MOTD_LINE_SIZE][CHAT_SIZE_MAX]; // Message of the day buffer [Valaris]
Expand Down Expand Up @@ -8679,6 +8679,12 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R;
}

if(pos == EQP_SHADOW_ACC) { // Shadow System
pos = req_pos&EQP_SHADOW_ACC;
if (pos == EQP_SHADOW_ACC)
pos = sd->equip_index[EQI_SHADOW_ACC_L] >= 0 ? EQP_SHADOW_ACC_R : EQP_SHADOW_ACC_L;
}

if(pos == EQP_ARMS && id->equip == EQP_HAND_R) { //Dual wield capable weapon.
pos = (req_pos&EQP_ARMS);
if (pos == EQP_ARMS) //User specified both slots, pick one for them.
Expand Down
53 changes: 30 additions & 23 deletions src/map/pc.h
Expand Up @@ -50,6 +50,12 @@ enum equip_index {
EQI_COSTUME_LOW,
EQI_COSTUME_GARMENT,
EQI_AMMO,
EQI_SHADOW_ARMOR,
EQI_SHADOW_WEAPON,
EQI_SHADOW_SHIELD,
EQI_SHADOW_SHOES,
EQI_SHADOW_ACC_R,
EQI_SHADOW_ACC_L,
EQI_MAX
};

Expand Down Expand Up @@ -219,7 +225,7 @@ struct map_session_data {
struct registry save_reg;

struct item_data* inventory_data[MAX_INVENTORY]; // direct pointers to itemdb entries (faster than doing item_id lookups)
short equip_index[EQI_MAX];
int equip_index[EQI_MAX];
unsigned int weight,max_weight;
int cart_weight,cart_num,cart_weight_max;
int fd;
Expand Down Expand Up @@ -613,28 +619,28 @@ enum ammo_type {

//Equip position constants
enum equip_pos {
EQP_HEAD_LOW = 0x0001,
EQP_HEAD_MID = 0x0200, //512
EQP_HEAD_TOP = 0x0100, //256
EQP_HAND_R = 0x0002, //2
EQP_HAND_L = 0x0020, //32
EQP_ARMOR = 0x0010, //16
EQP_SHOES = 0x0040, //64
EQP_GARMENT = 0x0004, //4
EQP_ACC_L = 0x0008, //8
EQP_ACC_R = 0x0080, //128
EQP_COSTUME_HEAD_TOP = 0x0400, //1024
EQP_COSTUME_HEAD_MID = 0x0800, //2048
EQP_COSTUME_HEAD_LOW = 0x1000, //4096
EQP_COSTUME_GARMENT = 0x2000, //8192
EQP_AMMO = 0x8000, //32768
//EQP_COSTUME_FLOOR = 0x4000,
//EQP_SHADOW_ARMOR = 0x10000,//Shadow equip slots will be left disabled until client's supporting them are usable. [Rytech]
//EQP_SHADOW_WEAPON = 0x20000,
//EQP_SHADOW_SHIELD = 0x40000,
//EQP_SHADOW_SHOES = 0x80000,
//EQP_SHADOW_ACC_R = 0x100000,
//EQP_SHADOW_ACC_L = 0x200000,
EQP_HEAD_LOW = 0x000001,
EQP_HEAD_MID = 0x000200, // 512
EQP_HEAD_TOP = 0x000100, // 256
EQP_HAND_R = 0x000002, // 2
EQP_HAND_L = 0x000020, // 32
EQP_ARMOR = 0x000010, // 16
EQP_SHOES = 0x000040, // 64
EQP_GARMENT = 0x000004, // 4
EQP_ACC_L = 0x000008, // 8
EQP_ACC_R = 0x000080, // 128
EQP_COSTUME_HEAD_TOP = 0x000400, // 1024
EQP_COSTUME_HEAD_MID = 0x000800, // 2048
EQP_COSTUME_HEAD_LOW = 0x001000, // 4096
EQP_COSTUME_GARMENT = 0x002000, // 8192
//EQP_COSTUME_FLOOR = 0x004000, // 16384
EQP_AMMO = 0x008000, // 32768
EQP_SHADOW_ARMOR = 0x010000, // 65536
EQP_SHADOW_WEAPON = 0x020000, // 131072
EQP_SHADOW_SHIELD = 0x040000, // 262144
EQP_SHADOW_SHOES = 0x080000, // 524288
EQP_SHADOW_ACC_R = 0x100000, // 1048576
EQP_SHADOW_ACC_L = 0x200000, // 2097152
};

struct {
Expand All @@ -660,6 +666,7 @@ struct {
#define EQP_ACC (EQP_ACC_L|EQP_ACC_R)
#define EQP_COSTUME (EQP_COSTUME_HEAD_TOP|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_LOW|EQP_COSTUME_GARMENT)
//#define EQP_SHADOW_GEAR (EQP_SHADOW_ARMOR|EQP_SHADOW_WEAPON|EQP_SHADOW_SHIELD|EQP_SHADOW_SHOES|EQP_SHADOW_ACC_R|EQP_SHADOW_ACC_L)
#define EQP_SHADOW_ACC (EQP_SHADOW_ACC_R|EQP_SHADOW_ACC_L)

/// Equip positions that use a visible sprite
#if PACKETVER < 20110111
Expand Down

0 comments on commit bd2503e

Please sign in to comment.