Bläddra i källkod

Fix seven signs cause NullPointerException if not have target.

-- Part of
https://bitbucket.org/l2jserver/l2j-server-game/commits/1da02a3c2a5c56c7cb72703b5b667ac94e8d45bc
Fixes #388
Maneco2 3 år sedan
förälder
incheckning
140ced6c21
1 ändrade filer med 17 tillägg och 17 borttagningar
  1. 17 17
      src/main/java/com/l2jserver/gameserver/ai/L2AttackableAI.java

+ 17 - 17
src/main/java/com/l2jserver/gameserver/ai/L2AttackableAI.java

@@ -374,23 +374,6 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable {
 			_lastBuffTick = GameTimeController.getInstance().getGameTicks();
 		}
 		
-		if (getActiveChar().isSevenNpc()) {
-			final L2PcInstance player = target.getActingPlayer();
-			if (SevenSigns.getInstance().isSealValidationPeriod() || SevenSigns.getInstance().isCompResultsPeriod()) {
-				if (!player.isGM() && player.isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(player.getObjectId()) != SevenSigns.getInstance().getCabalHighestScore())) {
-					player.teleToLocation(TeleportWhereType.TOWN);
-					player.setIsIn7sDungeon(false);
-					player.sendMessage("You have been teleported to the nearest town due to the beginning of the Seal Validation period.");
-				}
-			} else {
-				if (!player.isGM() && player.isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(player.getObjectId()) == SevenSigns.CABAL_NULL)) {
-					player.teleToLocation(TeleportWhereType.TOWN);
-					player.setIsIn7sDungeon(false);
-					player.sendMessage("You have been teleported to the nearest town because you have not signed for any cabal.");
-				}
-			}
-		}
-		
 		// Manage the Attack Intention : Stop current Attack (if necessary), Start a new Attack and Launch Think Event
 		super.onIntentionAttack(target);
 	}
@@ -703,6 +686,23 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable {
 			return;
 		}
 		
+		if (npc.isSevenNpc()) {
+			final L2PcInstance target = originalAttackTarget.getActingPlayer();
+			if (SevenSigns.getInstance().isSealValidationPeriod() || SevenSigns.getInstance().isCompResultsPeriod()) {
+				if (!target.isGM() && target.isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(target.getObjectId()) != SevenSigns.getInstance().getCabalHighestScore())) {
+					target.teleToLocation(TeleportWhereType.TOWN);
+					target.setIsIn7sDungeon(false);
+					target.sendMessage("You have been teleported to the nearest town due to the beginning of the Seal Validation period.");
+				}
+			} else {
+				if (!target.isGM() && target.isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(target.getObjectId()) == SevenSigns.CABAL_NULL)) {
+					target.teleToLocation(TeleportWhereType.TOWN);
+					target.setIsIn7sDungeon(false);
+					target.sendMessage("You have been teleported to the nearest town because you have not signed for any cabal.");
+				}
+			}
+		}
+		
 		final int collision = npc.getTemplate().getCollisionRadius();
 		
 		// Handle all L2Object of its Faction inside the Faction Range