Browse Source

Fixes #821
* Earth Strain no longer strips enemies that don't receive damage.
* Cleaned up the dmg_lv parameter type for skill_additional_effect().

aleos89 9 years ago
parent
commit
be3d5fe298
2 changed files with 7 additions and 5 deletions
  1. 6 4
      src/map/skill.c
  2. 1 1
      src/map/skill.h

+ 6 - 4
src/map/skill.c

@@ -902,7 +902,7 @@ struct s_skill_nounit_layout* skill_get_nounit_layout(uint16 skill_id, uint16 sk
 /*==========================================
  * Add effect to skill when hit succesfully target
  *------------------------------------------*/
-int skill_additional_effect(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, unsigned int tick)
+int skill_additional_effect(struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, enum damage_lv dmg_lv, unsigned int tick)
 {
 	struct map_session_data *sd, *dstsd;
 	struct mob_data *md, *dstmd;
@@ -1425,11 +1425,13 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
 		break;
 	case WL_EARTHSTRAIN:
 		{
-			int i;
+			uint16 i;
 			const int pos[5] = { EQP_WEAPON, EQP_HELM, EQP_SHIELD, EQP_ARMOR, EQP_ACC };
 
-			for( i = 0; i < skill_lv; i++ )
-				skill_strip_equip(src,bl,pos[i],5 * skill_lv,skill_lv,skill_get_time2(skill_id,skill_lv));
+			if (dmg_lv != ATK_DEF) // Only strip if we make a successful hit.
+				break;
+			for (i = 0; i < skill_lv; i++)
+					skill_strip_equip(src, bl, pos[i], 5 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv));
 		}
 		break;
 	case WL_JACKFROST:

+ 1 - 1
src/map/skill.h

@@ -420,7 +420,7 @@ int skill_cleartimerskill(struct block_list *src);
 int skill_addtimerskill(struct block_list *src,unsigned int tick,int target,int x,int y,uint16 skill_id,uint16 skill_lv,int type,int flag);
 
 // Results? Added
-int skill_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,int dmg_lv,unsigned int tick);
+int skill_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,enum damage_lv dmg_lv,unsigned int tick);
 int skill_counter_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,unsigned int tick);
 short skill_blown(struct block_list* src, struct block_list* target, char count, int8 dir, unsigned char flag);
 int skill_break_equip(struct block_list *src,struct block_list *bl, unsigned short where, int rate, int flag);