Bläddra i källkod

kerberos_20: aggro fix, now aggro from ai will not override aggro set from quest scripts.
Also added function for manual adding to the L2Attackable aggro list.

_DS_ 16 år sedan
förälder
incheckning
e122c355d2
1 ändrade filer med 25 tillägg och 17 borttagningar
  1. 25 17
      L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Attackable.java

+ 25 - 17
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Attackable.java

@@ -811,29 +811,23 @@ public class L2Attackable extends L2Npc
 	{
 		if (attacker == null)
 			return;
+		if ((attacker instanceof L2PcInstance || attacker instanceof L2Summon) && !attacker.isAlikeDead())
+		{
+			L2PcInstance targetPlayer = (attacker instanceof L2PcInstance)? (L2PcInstance) attacker: ((L2Summon) attacker).getOwner();
 
+			if (getTemplate().getEventQuests(Quest.QuestEventType.ON_AGGRO_RANGE_ENTER) !=null)
+				for (Quest quest: getTemplate().getEventQuests(Quest.QuestEventType.ON_AGGRO_RANGE_ENTER))
+			quest.notifyAggroRangeEnter(this, targetPlayer, (attacker instanceof L2Summon));
+		}
 		// Get the AggroInfo of the attacker L2Character from the _aggroList of the L2Attackable
 		AggroInfo ai = getAggroListRP().get(attacker);
 
-		if (ai == null)
+		// aggro ai created in L2attackableAI script if not overriden in other AI files
+		if (ai != null)
 		{
-			ai = new AggroInfo(attacker);
-			ai._damage = 0;
-			ai._hate = 0;
-			getAggroListRP().put(attacker, ai);
-
-			if ((attacker instanceof L2PcInstance || attacker instanceof L2Summon) && !attacker.isAlikeDead())
-			{
-				L2PcInstance targetPlayer = (attacker instanceof L2PcInstance)? (L2PcInstance) attacker: ((L2Summon) attacker).getOwner();
-
-				if (getTemplate().getEventQuests(Quest.QuestEventType.ON_AGGRO_RANGE_ENTER) !=null)
-					for (Quest quest: getTemplate().getEventQuests(Quest.QuestEventType.ON_AGGRO_RANGE_ENTER))
-				quest.notifyAggroRangeEnter(this, targetPlayer, (attacker instanceof L2Summon));
-			}
+			ai._hate += aggro;
+			ai._damage += damage;
 		}
-		ai._hate += aggro;
-		ai._damage += damage;
-
 		// Set the intention to the L2Attackable to AI_INTENTION_ACTIVE
 		if (aggro > 0 && getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)
 			getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
@@ -2464,4 +2458,18 @@ public class L2Attackable extends L2Npc
 		if (hasAI())
 			getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(getSpawn().getLocx(), getSpawn().getLocy(), getSpawn().getLocz(), 0));
 	}
+	
+	public AggroInfo addToAggroList(L2Character character)
+	{
+		// Get the AggroInfo of the attacker L2Character from the _aggroList of the L2Attackable
+		AggroInfo ai = getAggroListRP().get(character);
+		if (ai == null)
+		{
+			ai = new AggroInfo(character);
+			ai._damage = 0;
+			ai._hate = 0;
+			getAggroListRP().put(character, ai);
+		}
+    	return ai;
+	}
 }