Skip to content

Instantly share code, notes, and snippets.

@Pandragon
Created March 7, 2014 17:51
Show Gist options
  • Save Pandragon/9416350 to your computer and use it in GitHub Desktop.
Save Pandragon/9416350 to your computer and use it in GitHub Desktop.
### 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