Преглед изворни кода

* Fixed Spirit of Assassin not reducing the aftercast delay of Sonic Blow
* Assumptio can neither be cast nor dispelled on monsters anymore

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

Playtester пре 16 година
родитељ
комит
6f99db9547
3 измењених фајлова са 30 додато и 13 уклоњено
  1. 3 0
      Changelog-Trunk.txt
  2. 1 1
      db/skill_castnodex_db.txt
  3. 26 12
      src/map/skill.c

+ 3 - 0
Changelog-Trunk.txt

@@ -3,6 +3,9 @@ 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.
 
+2009/03/26
+	* Fixed Spirit of Assassin not reducing the aftercast delay of Sonic Blow [Playtester]
+	* Assumptio can neither be cast nor dispelled on monsters anymore [Playtester]
 2009/03/23
 	* Added support for new status change packet, uses new setting display_status_timers in client.conf. [Sara]
 2009/03/18

+ 1 - 1
db/skill_castnodex_db.txt

@@ -7,7 +7,7 @@
 //
 // Delay: 0 - everything affects the skill's delay
 //        1 - skill's delay is not affected by dex
-//        2 - skill's delay is not affected by statuses (Magic Strings, etc)
+//        2 - skill's delay is not affected by Magic Strings / Bragi
 //        4 - skill's delay is not affected by item bonuses (equip, cards)
 //
 // Note: Values are bit fields, add them up to combine their effects.

+ 26 - 12
src/map/skill.c

@@ -3528,7 +3528,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case SG_MOON_COMFORT:
 	case SG_STAR_COMFORT:
 	case NPC_HALLUCINATION:
-	case HP_ASSUMPTIO:
 	case GS_MADNESSCANCEL:
 	case GS_ADJUSTMENT:
 	case GS_INCREASING:
@@ -3540,6 +3539,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		clif_skill_nodamage(src,bl,skillid,skilllv,
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
+	case HP_ASSUMPTIO:
+		if (sd && !dstsd) {
+			clif_skill_fail(sd,skillid,0,0);
+		} else {
+			clif_skill_nodamage(src,bl,skillid,skilllv,
+				sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
+		}
+		break;
 	case MG_SIGHT:
 	case MER_SIGHT:
 	case AL_RUWACH:
@@ -4536,6 +4543,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 				case SC_READYCOUNTER:case SC_DODGE:       case SC_WARM:
 				case SC_SPEEDUP1:    case SC_AUTOTRADE:   case SC_CRITICALWOUND:
 					continue;
+				case SC_ASSUMPTIO:
+					if( bl->type == BL_MOB )
+						continue;
+					break;
 				}
 				if(i==SC_BERSERK) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0.
 				status_change_end(bl,(sc_type)i,-1);
@@ -8744,22 +8755,25 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv)
 		}
 	}
 
+	if (sc->data[SC_SPIRIT])
+	{
+		switch (skill_id) {
+			case CR_SHIELDBOOMERANG:
+				if (sc->data[SC_SPIRIT]->val2 == SL_CRUSADER)
+					time /= 2;
+				break;
+			case AS_SONICBLOW:
+				if (!map_flag_gvg(bl->m) && !map[bl->m].flag.battleground && sc->data[SC_SPIRIT]->val2 == SL_ASSASIN)
+					time /= 2;
+				break;
+		}
+	}
+
 	if (!(delaynodex&2))
 	{
 		if (sc && sc->count) {
 			if (sc->data[SC_POEMBRAGI])
 				time -= time * sc->data[SC_POEMBRAGI]->val3 / 100;
-			if (sc->data[SC_SPIRIT])
-			switch (skill_id) {
-				case CR_SHIELDBOOMERANG:
-					if (sc->data[SC_SPIRIT]->val2 == SL_CRUSADER)
-						time /=2;
-					break;
-				case AS_SONICBLOW:
-					if (!map_flag_gvg(bl->m) && !map[bl->m].flag.battleground && sc->data[SC_SPIRIT]->val2 == SL_ASSASIN)
-						time /= 2;
-					break;
-			}
 		}
 	}