2
0
Эх сурвалжийг харах

"nextActionAttack" boolean core support, thanks DrHouse :)

_DS_ 15 жил өмнө
parent
commit
d2ea667538

+ 13 - 1
L2_GameServer/java/com/l2jserver/gameserver/model/L2Skill.java

@@ -203,7 +203,9 @@ public abstract class L2Skill implements IChanceSkillTrigger
     private final int _effectAbnormalLvl; // abnormal level for the additional effect type, e.g. poison lvl 1
     private final int _effectId;
     private final int _effectLvl; // normal effect level
-    
+
+    private final boolean _nextActionIsAttack;
+
     private final boolean _isPotion;
     private final byte _element;
     private final int _elementPower;
@@ -383,6 +385,8 @@ public abstract class L2Skill implements IChanceSkillTrigger
         _effectId = set.getInteger("effectId", 0);
         _effectLvl = set.getInteger("effectLevel", 0);
 
+        _nextActionIsAttack = set.getBool("nextActionAttack", false);
+
         _element = set.getByte("element", (byte)-1);
         _elementPower = set.getInteger("elementPower", 0);
 
@@ -619,6 +623,14 @@ public abstract class L2Skill implements IChanceSkillTrigger
         return _effectType;
     }
 
+    /**
+     * Return true if character should attack target after skill
+     */
+    public final boolean nextActionIsAttack()
+    {
+    	return _nextActionIsAttack;
+    }
+
     /**
      * @return Returns the buffDuration.
      */

+ 6 - 20
L2_GameServer/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -6174,26 +6174,12 @@ public abstract class L2Character extends L2Object
 			_castInterruptTime = 0;
 		}
 
-		// If the skill type is listed here, notify the AI of the target with AI_INTENTION_ATTACK
-		// for offensive skills the nextintention is always null unless player wants action after skill
-		// Note: this might also work
-		// if (skill.isOffensive() && getAI().getNextIntention() == null
-		// && !(skill.getSkillType() == SkillType.UNLOCK) && !(skill.getSkillType() == SkillType.DELUXE_KEY_UNLOCK) && !(skill.getSkillType() == SkillType.MDAM))
-		if (getAI().getNextIntention() == null)
-		{
-			switch (skill.getSkillType())
-			{
-				case PDAM:
-				case BLOW:
-				case DRAIN_SOUL:
-				case SOW:
-				case CHARGEDAM:
-				case SPOIL:
-					if (getTarget() instanceof L2Character && getTarget() != this && target == getTarget())
-						getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, getTarget());
-					break;
-			}
-		}
+		// Attack target after skill use
+		if (skill.nextActionIsAttack()
+				&& getTarget() instanceof L2Character
+				&& getTarget() != this
+				&& getTarget() == target)
+			getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
 
         if (skill.isOffensive() && !skill.isNeutral() && !(skill.getSkillType() == L2SkillType.UNLOCK) && !(skill.getSkillType() == L2SkillType.DELUXE_KEY_UNLOCK))
             getAI().clientStartAutoAttack();