From a5601f3c962cefac00c7baa23412fa1006c2f7ef Mon Sep 17 00:00:00 2001 From: Inkfish Date: Wed, 23 Sep 2009 12:06:25 +0000 Subject: Added supports for Soul Bound. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14073 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 2 ++ src/map/script.c | 16 ++++++++-------- src/map/status.c | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index a6a764516..d67971cbc 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,8 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +09/09/23 + * Added supports for Soul Bound. [Inkfish] 09/09/21 * Disabled ip checking during auth, since it lead to a lot of confusion. [ultramage] 09/09/17 diff --git a/src/map/script.c b/src/map/script.c index f14d0179e..745a6888b 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -9650,7 +9650,7 @@ BUILDIN_FUNC(getequipcardcnt) if (num > 0 && num <= ARRAYLENGTH(equip)) i=pc_checkequip(sd,equip[num-1]); - if (i < 0) { + if (i < 0 || !sd->inventory_data[i]) { script_pushint(st,0); return 0; } @@ -9662,7 +9662,7 @@ BUILDIN_FUNC(getequipcardcnt) } count = 0; - for( j = 0; j < MAX_SLOTS; j++ ) + for( j = 0; j < sd->inventory_data[i]->slot; j++ ) if( sd->status.inventory[i].card[j] && itemdb_type(sd->status.inventory[i].card[j]) == IT_CARD ) count++; @@ -9683,14 +9683,14 @@ BUILDIN_FUNC(successremovecards) if (num > 0 && num <= ARRAYLENGTH(equip)) i=pc_checkequip(sd,equip[num-1]); - if (i < 0) { + if (i < 0 || !sd->inventory_data[i]) { return 0; } if(itemdb_isspecial(sd->status.inventory[i].card[0])) return 0; - for( c = MAX_SLOTS - 1; c >= 0; --c ) + for( c = sd->inventory_data[i]->slot - 1; c >= 0; --c ) { if( sd->status.inventory[i].card[c] && itemdb_type(sd->status.inventory[i].card[c]) == IT_CARD ) {// extract this card from the item @@ -9761,13 +9761,13 @@ BUILDIN_FUNC(failedremovecards) if (num > 0 && num <= ARRAYLENGTH(equip)) i=pc_checkequip(sd,equip[num-1]); - if (i < 0) + if (i < 0 || !sd->inventory_data[i]) return 0; if(itemdb_isspecial(sd->status.inventory[i].card[0])) return 0; - for( c = MAX_SLOTS - 1; c >= 0; --c ) + for( c = sd->inventory_data[i]->slot - 1; c >= 0; --c ) { if( sd->status.inventory[i].card[c] && itemdb_type(sd->status.inventory[i].card[c]) == IT_CARD ) { @@ -11098,8 +11098,8 @@ BUILDIN_FUNC(checkequipedcard) if(sd){ for(i=0;istatus.inventory[i].nameid > 0 && sd->status.inventory[i].amount){ - for(n=0;nstatus.inventory[i].nameid > 0 && sd->status.inventory[i].amount && sd->inventory_data[i]){ + for(n=0;ninventory_data[i]->slot;n++){ if(sd->status.inventory[i].card[n]==c){ script_pushint(st,1); return 0; diff --git a/src/map/status.c b/src/map/status.c index 1d77afacd..99c699c44 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1949,7 +1949,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) //Card script execution. if(itemdb_isspecial(sd->status.inventory[index].card[0])) continue; - for(j=0;jinventory_data[index]->slot;j++){ + for(j=0;jstatus.inventory[index].card[j]; if(!c) continue; -- cgit v1.2.3-60-g2f50