diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/mob.c | 2 | ||||
-rw-r--r-- | src/map/skill.c | 5 | ||||
-rw-r--r-- | src/map/unit.c | 11 |
3 files changed, 13 insertions, 5 deletions
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)) {
|