Ver Fonte

Splash attacks do cause additional effects except for autocasts. (bugreport:2661)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13804 54d463be-8e91-2dee-dedb-b68131a5f0ec
Inkfish há 16 anos atrás
pai
commit
579f0a250d
3 ficheiros alterados com 5 adições e 6 exclusões
  1. 2 0
      Changelog-Trunk.txt
  2. 1 1
      src/map/battle.c
  3. 2 5
      src/map/skill.c

+ 2 - 0
Changelog-Trunk.txt

@@ -3,6 +3,8 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+09/05/23
+	* Splash attacks do cause additional effects except for autocasts. (bugreport:2661) [Inkfish]
 09/05/22
 	* Fixed some behaviors of additional effects (bugreport:3100,bugreport:2661) [Inkfish]
 	- Coma can now be blocked by such skills as SafetyWall, Pneuma and Basilica.

+ 1 - 1
src/map/battle.c

@@ -939,7 +939,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
 	wd.dmotion=tstatus->dmotion;
 	wd.blewcount=skill_get_blewcount(skill_num,skill_lv);
 	wd.flag = BF_WEAPON; //Initial Flag
-	wd.flag|= skill_num?BF_SKILL:BF_NORMAL;
+	wd.flag |= (skill_num||wflag)?BF_SKILL:BF_NORMAL; // Baphomet card's splash damage is counted as a skill. [Inkfish]
 	wd.dmg_lv=ATK_DEF;	//This assumption simplifies the assignation later
 	nk = skill_get_nk(skill_num);
 	flag.hit	= nk&NK_IGNORE_FLEE?1:0;

+ 2 - 5
src/map/skill.c

@@ -550,8 +550,8 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	{
 	case 0: // Normal attacks (no skill used)
 	{
-		if( !(attack_type&BF_WEAPON) )
-			break; // If a normal attack is not a weapon attack, it's splash damage. [Inkfish]
+		if( attack_type&BF_SKILL )
+			break; // If a normal attack is a skill, it's splash damage. [Inkfish]
 		if(sd) {
 			// Automatic trigger of Blitz Beat
 			if (pc_isfalcon(sd) && sd->status.weapon == W_BOW && (skill=pc_checkskill(sd,HT_BLITZBEAT))>0 &&
@@ -1830,9 +1830,6 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 			ud->attackabletime = tick + type;
 	}
 
-	if( !skillid && flag&1 )
-		dmg.flag &= ~BF_WEAPON; // hack to make splash attack not trigger anything else.
-
 	if( !dmg.amotion )
 	{ //Instant damage
 		status_fix_damage(src,bl,damage,dmg.dmotion); //Deal damage before knockback to allow stuff like firewall+storm gust combo.