Ver código fonte

- Disabling status abnormalities will now reset a mob's target.
- Mob morphing also resets their target now.
- Monk combos no longer can ignore skill delay (delay skill for all their combo-related skills is ASPD)


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

skotlex 18 anos atrás
pai
commit
0a23841806
3 arquivos alterados com 11 adições e 9 exclusões
  1. 4 0
      Changelog-Trunk.txt
  2. 1 9
      src/map/clif.c
  3. 6 0
      src/map/mob.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ 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/10/06
+	* Disabling status abnormalities will now reset a mob's target. [Skotlex]
+	* Mob morphing also resets their target now. [Skotlex]
+	* Monk combos no longer can ignore skill delay (delay skill for all their
+	  combo-related skills is ASPD) [Skotlex]
 	* Now you can trade while in a chatroom. [Skotlex]
 	* Fixed homun-txt reading when the file has DOS line-type delimiters (\r\n)
 	  [Skotlex]

+ 1 - 9
src/map/clif.c

@@ -9736,15 +9736,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
 	if (sd->ud.skilltimer != -1) {
 		if (skillnum != SA_CASTCANCEL)
 			return;
-	} else if (DIFF_TICK(tick, sd->ud.canact_tick) < 0 &&
-		// allow monk combos to ignore this delay [celest]
-		!(sd->sc.count && sd->sc.data[SC_COMBO].timer!=-1 &&
-		(skillnum == MO_EXTREMITYFIST ||
-		skillnum == MO_CHAINCOMBO ||
-		skillnum == MO_COMBOFINISH ||
-		skillnum == CH_PALMSTRIKE ||
-		skillnum == CH_TIGERFIST ||
-		skillnum == CH_CHAINCRUSH))) {
+	} else if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
 		clif_skill_fail(sd, skillnum, 4, 0);
 		return;
 	}

+ 6 - 0
src/map/mob.c

@@ -1076,7 +1076,10 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap)
 
 	// Abnormalities
 	if((md->sc.opt1 > 0 && md->sc.opt1 != OPT1_STONEWAIT) || md->sc.data[SC_BLADESTOP].timer != -1)
+  	{	//Should reset targets.
+		md->target_id = md->attacked_id = 0;
 		return 0;
+	}
 
 	if (md->sc.count && md->sc.data[SC_BLIND].timer != -1)
 		view_range = 3;
@@ -2331,6 +2334,9 @@ int mob_class_change (struct mob_data *md, int class_)
 	if(md->lootitem == NULL && md->db->status.mode&MD_LOOTER)
 		md->lootitem=(struct item *)aCalloc(LOOTITEM_SIZE,sizeof(struct item));
 
+	//Targets should be cleared no morph
+	md->target_id = md->attacked_id = 0;
+
 	//Need to update name display.
 	clif_charnameack(0, &md->bl);