summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--src/map/mercenary.h1
-rw-r--r--src/map/skill.c9
3 files changed, 13 insertions, 0 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 3cefe4a30..6eb33753f 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.
2007/01/23
+ * A skill's walk delay will also delay your can-attack time when the skill
+ connects, since this is the behaviour of Sonic Blows as described by
+ Tharis.
* Added view_data support to mercenary.*, so that the Homunculus entries
are no longer required on the mob_db.
* Added the status icon to NPC_CHANGEUNDEAD and the Flee/Hit foods.
diff --git a/src/map/mercenary.h b/src/map/mercenary.h
index b7b0dd635..6a56b20a5 100644
--- a/src/map/mercenary.h
+++ b/src/map/mercenary.h
@@ -50,6 +50,7 @@ enum {
#define merc_is_hom_active(x) (x && x->homunculus.vaporize != 1 && x->battle_status.hp > 0)
int do_init_merc(void);
int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag); //albator
+struct view_data* merc_get_hom_viewdata(int class_);
void merc_damage(struct homun_data *hd,struct block_list *src,int hp,int sp);
int merc_hom_dead(struct homun_data *hd, struct block_list *src);
void merc_hom_skillup(struct homun_data *hd,int skillnum);
diff --git a/src/map/skill.c b/src/map/skill.c
index d79d9b4ae..4bff55a5c 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2090,6 +2090,15 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
if (su->group && skill_get_inf2(su->group->skill_id)&INF2_TRAP)
damage = 0; //Only Heaven's drive may damage traps. [Skotlex]
}
+
+ if (dmg.dmg_lv == ATK_DEF && (type = skill_get_walkdelay(skillid, skilllv)) > 0)
+ { //Skills with can't walk delay also stop normal attacking for that
+ //duration when the attack connects. [Skotlex]
+ struct unit_data *ud = unit_bl2ud(src);
+ if (ud && DIFF_TICK(ud->attackabletime, tick + type) < 0)
+ ud->attackabletime = tick + type;
+ }
+
if (!dmg.amotion) {
status_fix_damage(src,bl,damage,dmg.dmotion); //Deal damage before knockback to allow stuff like firewall+storm gust combo.
if (dmg.dmg_lv == ATK_DEF || damage > 0) {