Created
March 7, 2014 17:51
-
-
Save Pandragon/9416350 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Eclipse Workspace Patch 1.0 | |
#P L2J_DataPack_BETA | |
Index: dist/game/data/scripts/ai/individual/QueenAnt.java | |
=================================================================== | |
--- dist/game/data/scripts/ai/individual/QueenAnt.java (revision 10244) | |
+++ dist/game/data/scripts/ai/individual/QueenAnt.java (working copy) | |
@@ -19,11 +19,13 @@ | |
package ai.individual; | |
import java.util.List; | |
+import java.util.concurrent.ScheduledFuture; | |
import javolution.util.FastList; | |
import ai.npc.AbstractNpcAI; | |
import com.l2jserver.Config; | |
+import com.l2jserver.gameserver.ThreadPoolManager; | |
import com.l2jserver.gameserver.ai.CtrlIntention; | |
import com.l2jserver.gameserver.enums.QuestEventType; | |
import com.l2jserver.gameserver.instancemanager.GrandBossManager; | |
@@ -80,9 +82,10 @@ | |
private static SkillHolder HEAL1 = new SkillHolder(4020, 1); | |
private static SkillHolder HEAL2 = new SkillHolder(4024, 1); | |
- private L2MonsterInstance _queen = null; | |
+ L2MonsterInstance _queen = null; | |
private L2MonsterInstance _larva = null; | |
private final List<L2MonsterInstance> _nurses = new FastList<>(5); | |
+ ScheduledFuture<?> _task = null; | |
private QueenAnt() | |
{ | |
@@ -113,18 +116,13 @@ | |
} | |
else | |
{ | |
- int loc_x = info.getInt("loc_x"); | |
- int loc_y = info.getInt("loc_y"); | |
- int loc_z = info.getInt("loc_z"); | |
+ int loc_x = QUEEN_X; | |
+ int loc_y = QUEEN_Y; | |
+ int loc_z = QUEEN_Z; | |
int heading = info.getInt("heading"); | |
int hp = info.getInt("currentHP"); | |
int mp = info.getInt("currentMP"); | |
- if (!_zone.isInsideZone(loc_x, loc_y, loc_z)) | |
- { | |
- loc_x = QUEEN_X; | |
- loc_y = QUEEN_Y; | |
- loc_z = QUEEN_Z; | |
- } | |
+ | |
L2GrandBossInstance queen = (L2GrandBossInstance) addSpawn(QUEEN, loc_x, loc_y, loc_z, heading, false, 0); | |
queen.setCurrentHpMp(hp, mp); | |
spawnBoss(queen); | |
@@ -243,6 +241,9 @@ | |
case GUARD: | |
mob.setIsRaidMinion(true); | |
break; | |
+ case QUEEN: | |
+ _task = ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new QueenAntTask(), 5 * 1000, 5 * 1000); | |
+ break; | |
} | |
return super.onSpawn(npc); | |
@@ -346,6 +347,11 @@ | |
_larva.deleteMe(); | |
_larva = null; | |
_queen = null; | |
+ if (_task != null) | |
+ { | |
+ _task.cancel(false); | |
+ _task = null; | |
+ } | |
} | |
else if ((_queen != null) && !_queen.isAlikeDead()) | |
{ | |
@@ -370,6 +376,32 @@ | |
return super.onKill(npc, killer, isSummon); | |
} | |
+ private class QueenAntTask implements Runnable | |
+ { | |
+ public QueenAntTask() | |
+ { | |
+ // Constructor stub | |
+ } | |
+ | |
+ @Override | |
+ public void run() | |
+ { | |
+ if ((_queen == null) || _queen.isDead()) | |
+ { | |
+ _task.cancel(false); | |
+ _task = null; | |
+ } | |
+ else | |
+ { | |
+ if (_queen.calculateDistance(QUEEN_X, QUEEN_Y, QUEEN_Z, false, false) > 2000.) | |
+ { | |
+ _queen.clearAggroList(); | |
+ _queen.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(QUEEN_X, QUEEN_Y, QUEEN_Z, 0)); | |
+ } | |
+ } | |
+ } | |
+ } | |
+ | |
public static void main(String[] args) | |
{ | |
new QueenAnt(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment