- Some cleanup. Fixed function pc_isCardAllowedOn causing searches for non-existant item id 0.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5709 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
b6ff4970fa
commit
240bc7aa64
@ -5,6 +5,8 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EV
|
||||
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
|
||||
|
||||
2006/03/22
|
||||
* Fixed function pc_isCardAllowedOn causing searches for non-existant item
|
||||
id 0. [Skotlex]
|
||||
* Fixed Arrow Shower. [Skotlex]
|
||||
* Merged the unit_data structure from jA for handling unit-related data
|
||||
(attack times, walking, auto-attack timers, skill related data). This is a
|
||||
|
29
src/map/pc.c
29
src/map/pc.c
@ -528,15 +528,22 @@ int pc_setequipindex(struct map_session_data *sd)
|
||||
|
||||
int pc_isAllowedCardOn(struct map_session_data *sd,int s,int eqindex,int flag) {
|
||||
int i;
|
||||
struct item *item = &sd->status.inventory[eqindex];
|
||||
struct item_data *data;
|
||||
if (s>0) {
|
||||
for (i=0;i<s;i++) {
|
||||
if ((data = itemdb_search(sd->status.inventory[eqindex].card[i]))) {
|
||||
if (data->flag.no_equip&flag)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( //Crafted/made/hatched items.
|
||||
item->card[0]==0x00ff ||
|
||||
item->card[0]==0x00fe ||
|
||||
item->card[0]==(short)0xff00
|
||||
)
|
||||
return 1;
|
||||
|
||||
for (i=0;i<s;i++) {
|
||||
if (item->card[i] &&
|
||||
(data = itemdb_exists(item->card[i])) &&
|
||||
data->flag.no_equip&flag
|
||||
)
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -2931,7 +2938,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl)
|
||||
if(md->db->dropitem[i].p<=battle_config.rare_drop_announce) {
|
||||
struct item_data *i_data;
|
||||
char message[128];
|
||||
i_data = itemdb_exists(itemid);
|
||||
i_data = itemdb_search(itemid);
|
||||
sprintf (message, msg_txt(542), (sd->status.name != NULL)?sd->status.name :"GM", md->db->jname, i_data->jname, (float)md->db->dropitem[i].p/100);
|
||||
//MSG: "'%s' stole %s's %s (chance: %%%0.02f)"
|
||||
intif_GMmessage(message,strlen(message)+1,0);
|
||||
@ -6466,12 +6473,12 @@ int pc_checkitem(struct map_session_data *sd)
|
||||
}
|
||||
//?”õ<E2809D>§ŒÀƒ`ƒFƒbƒN
|
||||
if(sd->status.inventory[i].equip && (map[sd->bl.m].flag.pvp||map[sd->bl.m].flag.gvg) &&
|
||||
(it->flag.no_equip&1 || !pc_isAllowedCardOn(sd,it->slot,i,1)))
|
||||
(it->flag.no_equip&1 || !pc_isAllowedCardOn(sd,it->slot,i,1)))
|
||||
{ //PVP check for forbiden items. optimized by [Lupus]
|
||||
sd->status.inventory[i].equip=0;
|
||||
calc_flag = 1;
|
||||
} else if(sd->status.inventory[i].equip && map_flag_gvg(sd->bl.m) &&
|
||||
(it->flag.no_equip&2 || !pc_isAllowedCardOn(sd,it->slot,i,2)))
|
||||
(it->flag.no_equip&2 || !pc_isAllowedCardOn(sd,it->slot,i,2)))
|
||||
{ //GvG optimized by [Lupus]
|
||||
sd->status.inventory[i].equip=0;
|
||||
calc_flag = 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user