From 65e0e75aedb7026b4f6a8c3293b3659968f7856f Mon Sep 17 00:00:00 2001 From: ultramage Date: Sun, 2 Dec 2007 16:29:37 +0000 Subject: Fixed some minor inconsistencies in homunculus packets, in an attempt to make the lvl99 aura show to owner onSpawn. Still doesn't work as there appears to be a complex packet order dependency... git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11851 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/clif.c | 4 ++-- src/map/mercenary.c | 3 +-- src/map/status.c | 9 ++++----- 3 files changed, 7 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index bdb989d3f..8dfe196d4 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -1203,7 +1203,7 @@ int clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag) WBUFL(buf,59)=hd->homunculus.exp; WBUFL(buf,63)=hd->exp_next; WBUFW(buf,67)=hd->homunculus.skillpts; - WBUFW(buf,69)=1; // FIXME: Attackable? When exactly is a homun not attackable? [Skotlex] + WBUFW(buf,69)=2; // FIXME: undocumented flag, seems to be '2' all the time [ultramage] clif_send(buf,packet_len(0x22e),&sd->bl,SELF); return 0; } @@ -7832,9 +7832,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if(merc_is_hom_active(sd->hd)) { map_addblock(&sd->hd->bl); clif_spawn(&sd->hd->bl); + clif_send_homdata(sd,0,0); clif_hominfo(sd,sd->hd,1); clif_hominfo(sd,sd->hd,0); //for some reason, at least older clients want this sent twice - clif_send_homdata(sd,0,0); clif_homskillinfoblock(sd); if (battle_config.hom_setting&0x8) status_calc_bl(&sd->hd->bl, SCB_SPEED); //Homunc mimic their master's speed on each map change diff --git a/src/map/mercenary.c b/src/map/mercenary.c index 0a9c4aab5..9030e6e90 100644 --- a/src/map/mercenary.c +++ b/src/map/mercenary.c @@ -716,11 +716,10 @@ int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag) { map_addblock(&hd->bl); clif_spawn(&hd->bl); + clif_send_homdata(sd,SP_ACK,0); clif_hominfo(sd,hd,1); clif_hominfo(sd,hd,0); // send this x2. dunno why, but kRO does that [blackhole89] clif_homskillinfoblock(sd); - clif_hominfo(sd,hd,0); - clif_send_homdata(sd,SP_ACK,0); merc_hom_init_timers(hd); } return 1; diff --git a/src/map/status.c b/src/map/status.c index 68579b059..1b8ce5dbc 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -2404,6 +2404,7 @@ int status_calc_homunculus(struct homun_data *hd, int first) struct status_data b_status, *status; struct s_homunculus *hom; int skill; + int amotion; memcpy(&b_status, &hd->base_status, sizeof(struct status_data)); hom = &hd->homunculus; @@ -2468,17 +2469,15 @@ int status_calc_homunculus(struct homun_data *hd, int first) status->aspd_rate = 1000; - skill = (1000 -4*status->agi -status->dex) - *hd->homunculusDB->baseASPD/1000; - - status->amotion = cap_value(skill,battle_config.max_aspd,2000); + amotion = (1000 -4*status->agi -status->dex) * hd->homunculusDB->baseASPD/1000; + status->amotion = cap_value(amotion,battle_config.max_aspd,2000); status->adelay = status->amotion; //It seems adelay = amotion for Homunculus. status_calc_misc(&hd->bl, status, hom->level); status_cpy(&hd->battle_status, status); status_calc_bl(&hd->bl, SCB_ALL); //Status related changes. - if (memcmp(&b_status, status, sizeof(struct status_data))) + if( memcmp(&b_status, status, sizeof(struct status_data)) && !first ) clif_hominfo(hd->master,hd,0) ; return 1; -- cgit v1.2.3-60-g2f50