Przeglądaj źródła

- Added back the undead check to turn undead/resurrection to prevent damaging non-undead targets, removed it from the battle damage section.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7639 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 lat temu
rodzic
commit
effebfcfa1
3 zmienionych plików z 15 dodań i 12 usunięć
  1. 3 0
      Changelog-Trunk.txt
  2. 8 9
      src/map/battle.c
  3. 4 3
      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.
 
 2006/07/12
+	* Added back the undead check to turn undead/resurrection to prevent
+	  damaging non-undead targets, removed it from the battle damage section.
+	  [Skotlex]
 	* Resurrection will now silently fail when used on non-undead + not-dead
 	  characters. [Skotlex]
 	* Poem of bragi/magic String's base delay reduction at level 10 (or above)

+ 8 - 9
src/map/battle.c

@@ -2167,15 +2167,14 @@ struct Damage battle_calc_magic_attack(
 				break;
 			case ALL_RESURRECTION:
 			case PR_TURNUNDEAD:
-				if(battle_check_undead(tstatus->race,tstatus->def_ele)){
-					int thres;
-					thres = (skill_lv * 20) + sstatus->luk + sstatus->int_ + status_get_lv(src) + ((200 - tstatus->hp * 200 / tstatus->max_hp));
-					if(thres > 700) thres = 700;
-					if(rand()%1000 < thres && !(tstatus->mode&MD_BOSS))
-						ad.damage = tstatus->hp;
-					else
-						ad.damage = status_get_lv(src) + sstatus->int_ + skill_lv * 10;
-				}
+				//Undead check is on skill_castend_damageid code.
+				i = 20*skill_lv + sstatus->luk + sstatus->int_ + status_get_lv(src)
+				  	+ 200 - 200*tstatus->hp/tstatus->max_hp;
+				if(i > 700) i = 700;
+				if(rand()%1000 < i && !(tstatus->mode&MD_BOSS))
+					ad.damage = tstatus->hp;
+				else
+					ad.damage = status_get_lv(src) + sstatus->int_ + skill_lv * 10;
 				break;
 			case PF_SOULBURN:
 				ad.damage = tstatus->sp * 2;

+ 4 - 3
src/map/skill.c

@@ -2817,9 +2817,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 		skill_addtimerskill(src, tick + 1000, bl->id, 0, 0, skillid, skilllv, BF_WEAPON, flag);
 		break;	
 
-	case ALL_RESURRECTION:		/* リザレクション */
-	case PR_TURNUNDEAD:			/* ターンアンデッド */
-	//Undead check is on unit-use skill
+	case PR_TURNUNDEAD:
+	case ALL_RESURRECTION:
+		if (!battle_check_undead(tstatus->race, tstatus->def_ele))
+			break;
 		skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
 		break;