From be333fef8f4e91bebd76d0fb1c6ca714915d5dbb Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 5 Jun 2006 18:35:41 +0000 Subject: - Fog of Wall won't affect the caster now in any way. - Added a missing status_calc_mob on mob_spawn_guardian_sub - Added clif_fixpos packets before attacking for the first time to clear any position sync issues with the client. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6985 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 3 +++ src/map/mob.c | 2 ++ src/map/skill.c | 5 +++-- src/map/unit.c | 11 ++++++++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 4c01cd61f..a6b530f8b 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,9 @@ 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. 2006/06/05 + * Fog of Wall won't affect the caster now in any way. [Skotlex] + * Added clif_fixpos packets before attacking for the first time to clear + any position sync issues with the client. [Skotlex] * Fixed skill_unitsetting using layout->count for the for instead of group->count [Skotlex] * Added SC_INCDEXRATE/SC_INCAGIRATE. NPC_POWERUP/NPC_AGIUP now correctly diff --git a/src/map/mob.c b/src/map/mob.c index 55bc02af9..8968136dd 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -421,6 +421,8 @@ static int mob_spawn_guardian_sub(int tid,unsigned int tick,int id,int data) md->guardian_data->emblem_id = g->emblem_id; memcpy (md->guardian_data->guild_name, g->name, NAME_LENGTH); md->guardian_data->guardup_lv = guild_checkskill(g,GD_GUARDUP); + if(md->guardian_data->guardup_lv) + status_calc_mob(md, 0); //Give bonuses. return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index 25601dc56..b057f256b 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -6570,8 +6570,7 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int case UNT_SERVICEFORYOU: if (sg->src_id==bl->id && (!sc || sc->data[SC_SPIRIT].timer == -1 || sc->data[SC_SPIRIT].val2 != SL_BARDDANCER)) return 0; - if (!sc) - break; + if (!sc) return 0; if (sc->data[type].timer==-1) sc_start4(bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->limit); else if (sc->data[type].val4 == 1) { @@ -6582,6 +6581,8 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int } break; case UNT_FOGWALL: + if (sg->src_id==bl->id) + return 0; if (sc && sc->data[type].timer==-1) { sc_start4(bl, type, 100, sg->skill_lv, sg->val1, sg->val2, sg->group_id, sg->limit); diff --git a/src/map/unit.c b/src/map/unit.c index d8ef113e7..4703820cc 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -229,8 +229,11 @@ static int unit_walktoxy_timer(int tid,unsigned int tick,int id,int data) } if (tbl->m == bl->m && check_distance_bl(bl, tbl, ud->chaserange)) { //Reached destination. - if (ud->state.attack_continue) + if (ud->state.attack_continue) { + clif_fixpos(bl); //Aegis uses one before every attack, we should + //only need this one for syncing purposes. [Skotlex] unit_attack(bl, tbl->id, ud->state.attack_continue); + } } else { //Update chase-path unit_walktobl(bl, tbl, ud->chaserange, ud->state.walk_easy|(ud->state.attack_continue?2:0)); return 0; @@ -238,8 +241,6 @@ static int unit_walktoxy_timer(int tid,unsigned int tick,int id,int data) } else { //Stopped walking. Update to_x and to_y to current location [Skotlex] ud->to_x = bl->x; ud->to_y = bl->y; -// if (bl->type == BL_NPC) //Original eA code had this one only for BL_NPCs -// clif_fixpos(bl); } return 0; } @@ -1247,6 +1248,10 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t return 1; } + //Sync packet only for players. + //Non-players use the sync packet on the walk timer. [Skotlex] + if (tid == -1 && sd) clif_fixpos(src); + if(DIFF_TICK(ud->attackabletime,tick) <= 0) { if (battle_config.attack_direction_change && (src->type&battle_config.attack_direction_change)) { -- cgit v1.2.3-70-g09d2