summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt2
-rw-r--r--src/map/clif.c9
-rw-r--r--src/map/script.c25
3 files changed, 20 insertions, 16 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 0d9491339..dacb7f899 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2009/05/07
+ * Added check on stackable items to 'checkweight' (bugreport:1569, bugreport:2756, bugreport 2994) [Inkfish]
+ * Fixed flee penalty wasn't applied for battleground and wouldn't be restored on map change [Inkfish]
* Fixed players can pull water from ME cell (follow up to r13730) [Inkfish]
2009/05/04
* Added the md5() script command. [brianluau]
diff --git a/src/map/clif.c b/src/map/clif.c
index 7ced02555..1446755db 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -6890,7 +6890,7 @@ void clif_wedding_effect(struct block_list *bl)
clif_send(buf, packet_len(0x1ea), bl, AREA);
}
/*==========================================
- * ‚ ‚È‚½‚Ɉ§‚¢‚½‚¢Žg—pŽž–¼‘O‹©‚Ñ
+ * ?‚È‚½‚Ɉ§‚¢‚½‚¢Žg—pŽž–¼‘O‹©‚Ñ
*------------------------------------------
void clif_callpartner(struct map_session_data *sd)
@@ -8012,11 +8012,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
}
if( map_flag_gvg(sd->bl.m) )
- {
clif_set0199(sd,3);
- if( battle_config.gvg_flee_penalty != 100 || battle_config.bg_flee_penalty != 100 )
- status_calc_bl(&sd->bl, SCB_FLEE); //Apply flee penalty
- }
// info about nearby objects
// must use foreachinarea (CIRCULAR_AREA interferes with foreachinrange)
@@ -8129,6 +8125,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
if( sd->state.changemap )
{// restore information that gets lost on map-change
+ if( battle_config.gvg_flee_penalty != 100 || battle_config.bg_flee_penalty != 100 )
+ status_calc_bl(&sd->bl, SCB_FLEE); //Refresh flee penalty
+
if( night_flag && map[sd->bl.m].flag.nightenabled )
{ //Display night.
if( !sd->state.night )
diff --git a/src/map/script.c b/src/map/script.c
index a29b08423..6fb3d662c 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -5104,18 +5104,21 @@ BUILDIN_FUNC(checkweight)
}
weight = itemdb_weight(nameid)*amount;
- if(amount > MAX_AMOUNT || weight + sd->weight > sd->max_weight){
+ if( amount > MAX_AMOUNT || weight + sd->weight > sd->max_weight )
script_pushint(st,0);
- } else {
- //Check if the inventory ain't full.
- //TODO: Currently does not checks if you can just stack it on top of another item you already have....
-
- i = pc_search_inventory(sd,0);
- if (i >= 0) //Empty slot available.
- script_pushint(st,1);
- else //Inventory full
- script_pushint(st,0);
-
+ else if( itemdb_isstackable(nameid) )
+ {
+ if( (i = pc_search_inventory(sd,nameid)) >= 0 )
+ script_pushint(st,amount + sd->status.inventory[i].amount > MAX_AMOUNT ? 0 : 1);
+ else
+ script_pushint(st,pc_search_inventory(sd,0) >= 0 ? 1 : 0);
+ }
+ else
+ {
+ for( i = 0; i < MAX_INVENTORY && amount; ++i )
+ if( sd->status.inventory[i].nameid == 0 )
+ amount--;
+ script_pushint(st,amount ? 0 : 1);
}
return 0;