summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-09-23 12:06:25 +0000
committerInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-09-23 12:06:25 +0000
commita5601f3c962cefac00c7baa23412fa1006c2f7ef (patch)
tree247b8c2e124aeaa6ddbe27b1deb8fd945c553c7b /src
parent37a4268a102ac66bbc8d283b3ae57d952bf26425 (diff)
downloadhercules-a5601f3c962cefac00c7baa23412fa1006c2f7ef.tar.gz
hercules-a5601f3c962cefac00c7baa23412fa1006c2f7ef.tar.bz2
hercules-a5601f3c962cefac00c7baa23412fa1006c2f7ef.tar.xz
hercules-a5601f3c962cefac00c7baa23412fa1006c2f7ef.zip
Added supports for Soul Bound.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14073 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/script.c16
-rw-r--r--src/map/status.c2
2 files changed, 9 insertions, 9 deletions
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;i<MAX_INVENTORY;i++){
- if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].amount){
- for(n=0;n<MAX_SLOTS;n++){
+ if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].amount && sd->inventory_data[i]){
+ for(n=0;n<sd->inventory_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;j<sd->inventory_data[index]->slot;j++){
+ for(j=0;j<MAX_SLOTS;j++){ // Uses MAX_SLOTS to support Soul Bound system [Inkfish]
current_equip_card_id= c= sd->status.inventory[index].card[j];
if(!c)
continue;