summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-03-19 00:12:35 +0000
committerzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-03-19 00:12:35 +0000
commit38825fa2ef87c024f88cf0ac139a02ef7fd5f40d (patch)
tree4aa62b912811a0b2921fedb759b39620b08431e2
parente92f5bc08714b2832c6393e3d9f652d75e69a568 (diff)
downloadhercules-38825fa2ef87c024f88cf0ac139a02ef7fd5f40d.tar.gz
hercules-38825fa2ef87c024f88cf0ac139a02ef7fd5f40d.tar.bz2
hercules-38825fa2ef87c024f88cf0ac139a02ef7fd5f40d.tar.xz
hercules-38825fa2ef87c024f88cf0ac139a02ef7fd5f40d.zip
- The last bug in Adoption system.
- Fixed a bug on trade, if you received a trade without accept it do logout... the other player cannot trade anymore 'til restart. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12396 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/clif.c4
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/trade.c7
-rw-r--r--src/map/unit.c1
4 files changed, 10 insertions, 4 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index b8b3c8b13..1c9eee4fb 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -12043,7 +12043,7 @@ void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *sr
{
int fd = sd->fd;
- WFIFOSET(fd,34);
+ WFIFOHEAD(fd,34);
WFIFOW(fd,0) = 0x01f6;
WFIFOL(fd,2) = src->status.account_id;
WFIFOL(fd,6) = p_id;
@@ -12055,7 +12055,7 @@ void clif_parse_Adopt_request(int fd, struct map_session_data *sd)
{
struct map_session_data *tsd = map_id2sd(RFIFOL(fd,2)), *p_sd = map_charid2sd(sd->status.partner_id);
- if( pc_can_Adopt(sd, tsd, p_sd) )
+ if( pc_can_Adopt(sd, p_sd, tsd) )
{
tsd->adopt_invite = sd->status.account_id;
clif_Adopt_request(tsd, sd, p_sd->status.account_id);
diff --git a/src/map/pc.c b/src/map/pc.c
index 5845fe56e..de2e73ba5 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -645,7 +645,7 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd,
// Parents Skills
pc_skill(p1_sd, WE_CALLBABY, 1, 0);
- pc_skill(p1_sd, WE_CALLBABY, 1, 0);
+ pc_skill(p2_sd, WE_CALLBABY, 1, 0);
return true;
}
diff --git a/src/map/trade.c b/src/map/trade.c
index 4371bf6a8..f60f7370b 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -443,8 +443,14 @@ void trade_tradecancel(struct map_session_data *sd)
struct map_session_data *target_sd;
int trade_i;
+ target_sd = map_id2sd(sd->trade_partner);
+
if(!sd->state.trading)
+ { // Not trade acepted
+ if( target_sd ) target_sd->trade_partner = 0;
+ sd->trade_partner = 0;
return;
+ }
for(trade_i = 0; trade_i < 10; trade_i++) { // give items back (only virtual)
if (!sd->deal.item[trade_i].amount)
@@ -458,7 +464,6 @@ void trade_tradecancel(struct map_session_data *sd)
sd->deal.zeny = 0;
}
- target_sd = map_id2sd(sd->trade_partner);
sd->state.deal_locked = 0;
sd->state.trading = 0;
sd->trade_partner = 0;
diff --git a/src/map/unit.c b/src/map/unit.c
index 62638e252..5bdccd83d 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -1672,6 +1672,7 @@ int unit_remove_map(struct block_list *bl, int clrtype)
sd->menuskill_id = sd->menuskill_val = 0;
sd->npc_shopid = 0;
+ sd->adopt_invite = 0;
if(sd->pvp_timer!=-1) {
delete_timer(sd->pvp_timer,pc_calc_pvprank_timer);