I have been having problems with the spawning for bandos, all the other boss minions spawn when the boss spawns back, however the bandos ones spawn back as other NPC's do, after a certain time since their death, i have looked over the files and changed all i can think to try and get it to work, but it doesn't change anything.
Bandos code:
Code:
package com.rs.game.npc.godwars.bandos;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import com.rs.cores.CoresManager;
import com.rs.game.Animation;
import com.rs.game.Entity;
import com.rs.game.World;
import com.rs.game.WorldTile;
import com.rs.game.minigames.GodWarsBosses;
import com.rs.game.npc.NPC;
import com.rs.game.npc.combat.NPCCombatDefinitions;
import com.rs.game.player.Player;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
@SuppressWarnings("serial")
public class GeneralGraardor extends NPC {
public GeneralGraardor(int id, WorldTile tile, int mapAreaNameHash,
boolean canBeAttackFromOutOfArea, boolean spawned) {
super(id, tile, mapAreaNameHash, canBeAttackFromOutOfArea, spawned);
}
@Override
public ArrayList<Entity> getPossibleTargets() {
ArrayList<Entity> possibleTarget = new ArrayList<Entity>();
for (int regionId : getMapRegionsIds()) {
List<Integer> playerIndexes = World.getRegion(regionId)
.getPlayerIndexes();
if (playerIndexes != null) {
for (int npcIndex : playerIndexes) {
Player player = World.getPlayers().get(npcIndex);
if (player == null
|| player.isDead()
|| player.hasFinished()
|| !player.isRunning()
|| !player.withinDistance(this, 64)
|| ((!isAtMultiArea() || !player.isAtMultiArea())
&& player.getAttackedBy() != this && player
.getAttackedByDelay() > System
.currentTimeMillis())
|| !clipedProjectile(player, false))
continue;
possibleTarget.add(player);
}
}
}
return possibleTarget;
}
/*
* gotta override else setRespawnTask override doesnt work
*/
@Override
public void sendDeath(Entity source) {
final NPCCombatDefinitions defs = getCombatDefinitions();
resetWalkSteps();
getCombat().removeTarget();
setNextAnimation(null);
WorldTasksManager.schedule(new WorldTask() {
int loop;
@Override
public void run() {
if (loop == 0) {
setNextAnimation(new Animation(defs.getDeathEmote()));
} else if (loop >= defs.getDeathDelay()) {
drop();
reset();
setLocation(getRespawnTile());
finish();
setRespawnTask();
stop();
}
loop++;
}
}, 0, 1);
}
@Override
public void setRespawnTask() {
if (!hasFinished()) {
reset();
setLocation(getRespawnTile());
finish();
}
final NPC npc = this;
CoresManager.slowExecutor.schedule(new Runnable() {
@Override
public void run() {
setFinished(false);
World.addNPC(npc);
npc.setLastRegionId(0);
World.updateEntityRegion(npc);
loadMapRegions();
checkMultiArea();
GodWarsBosses.respawnBandosMinions();
}
}, getCombatDefinitions().getRespawnDelay() * 600,
TimeUnit.MILLISECONDS);
}
}
Zammy code:
Code:
package com.rs.game.npc.godwars.zammorak;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import com.rs.cores.CoresManager;
import com.rs.game.Animation;
import com.rs.game.Entity;
import com.rs.game.World;
import com.rs.game.WorldTile;
import com.rs.game.minigames.GodWarsBosses;
import com.rs.game.npc.NPC;
import com.rs.game.npc.combat.NPCCombatDefinitions;
import com.rs.game.player.Player;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
@SuppressWarnings("serial")
public class KrilTstsaroth extends NPC {
public KrilTstsaroth(int id, WorldTile tile, int mapAreaNameHash,
boolean canBeAttackFromOutOfArea, boolean spawned) {
super(id, tile, mapAreaNameHash, canBeAttackFromOutOfArea, spawned);
}
@Override
public ArrayList<Entity> getPossibleTargets() {
ArrayList<Entity> possibleTarget = new ArrayList<Entity>();
for (int regionId : getMapRegionsIds()) {
List<Integer> playerIndexes = World.getRegion(regionId)
.getPlayerIndexes();
if (playerIndexes != null) {
for (int npcIndex : playerIndexes) {
Player player = World.getPlayers().get(npcIndex);
if (player == null
|| player.isDead()
|| player.hasFinished()
|| !player.isRunning()
|| !player.withinDistance(this, 64)
|| ((!isAtMultiArea() || !player.isAtMultiArea())
&& player.getAttackedBy() != this && player
.getAttackedByDelay() > System
.currentTimeMillis())
|| !clipedProjectile(player, false))
continue;
possibleTarget.add(player);
}
}
}
return possibleTarget;
}
/*
* gotta override else setRespawnTask override doesnt work
*/
@Override
public void sendDeath(Entity source) {
final NPCCombatDefinitions defs = getCombatDefinitions();
resetWalkSteps();
getCombat().removeTarget();
setNextAnimation(null);
WorldTasksManager.schedule(new WorldTask() {
int loop;
@Override
public void run() {
if (loop == 0) {
setNextAnimation(new Animation(defs.getDeathEmote()));
} else if (loop >= defs.getDeathDelay()) {
drop();
reset();
setLocation(getRespawnTile());
finish();
setRespawnTask();
stop();
}
loop++;
}
}, 0, 1);
}
@Override
public void setRespawnTask() {
if (!hasFinished()) {
reset();
setLocation(getRespawnTile());
finish();
}
final NPC npc = this;
CoresManager.slowExecutor.schedule(new Runnable() {
@Override
public void run() {
setFinished(false);
World.addNPC(npc);
npc.setLastRegionId(0);
World.updateEntityRegion(npc);
loadMapRegions();
checkMultiArea();
GodWarsBosses.respawnZammyMinions();
}
}, getCombatDefinitions().getRespawnDelay() * 600,
TimeUnit.MILLISECONDS);
}
}
World.java
Code:
else if (id == 6260)
n = new GeneralGraardor(id, tile, mapAreaNameHash,
canBeAttackFromOutOfArea, spawned);
else if (id == 6261 && id == 6263 && id == 6265)
n = GodWarsBosses.graardorMinions[(id - 6261) / 2] = new GodWarMinion(
id, tile, mapAreaNameHash, canBeAttackFromOutOfArea,
spawned);
else if (id == 6222)
n = new KreeArra(id, tile, mapAreaNameHash,
canBeAttackFromOutOfArea, spawned);
else if (id == 6223 || id == 6225 || id == 6227)
n = GodWarsBosses.armaMinions[(id - 6223) / 2] = new GodWarMinion(
id, tile, mapAreaNameHash, canBeAttackFromOutOfArea,
spawned);
Any idea's?
Thanks in advanced