ソースを参照

- 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 missing declaration of merc_get_hom_viewdata in mercenary.h


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9698 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 18 年 前
コミット
eab8b52656
3 ファイル変更13 行追加0 行削除
  1. 3 0
      Changelog-Trunk.txt
  2. 1 0
      src/map/mercenary.h
  3. 9 0
      src/map/skill.c

+ 3 - 0
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.

+ 1 - 0
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);

+ 9 - 0
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) {