Code:
package org.perception.model.npcs;
import org.perception.Server;
import org.perception.clip.Region;
import org.perception.model.players.Player;
import org.perception.model.players.PlayerSave;
import org.perception.model.players.packets.ClickingButtons;
/**
*
* @author DF
*
**/
public class PetHandler {
public static int maxNPCs = 10000;
public static int maxListedNPCs = 10000;
public static int maxNPCDrops = 10000;
public static NPC npcs[] = new NPC[maxNPCs];
public static final int RATS_NEEDED_TO_GROW = 25;
public static int pets[] = {6644, 6643, 6633, 6634,
6641, 6628, 2055, 6636,
6640, 3504, 5558, 6651,
2128, 2129, 6637, 5560,
6629, 5557, 2127, 318};
private static enum Pets {
/*
* Metamorphis ID's
* Vetion: 5559
*/
GRAARDOR(12650, 6644),
KREE(12649, 6643),
BLOODHOUND(19730, 7232),
CHOMPY_CHICK(13071, 4002),
ZILYANA(12651, 6633),
TSUROTH(12652, 6634),
PRIME(12644, 6629),
REX(12645, 6641),
SUPREME(12643, 6628),
CHAOS(11995, 2055),
KBD(12653, 6636),
KRAKEN(12655, 6640),
CALLISTO(13178, 5558),
MOLE(12646, 6651),
ZULRAH_GREEN(12921, 2127),
ZULRAH_RED(12939, 2128),
ZULRAH_BLUE(12940, 2129),
KAL_PRINCESS(12654, 6637),
VETION(13179, 5560),
VENENATIS(13177, 5557),
SMOKE_DEV(12648, 6655),
SCORPIA(13181, 5547),
HERON(13320, 6715),
ROCK_GOLEM(13321, 6716),
BEAVER(13322, 6717),
BABY_CHINCHOMPA(13323, 6718),
GIANT_SQUIRREL(20659, 7334),
JAD(13225, 5892),
PHOENIX(20693, 7368),
TANGLEROOT(20661, 7335),
ROCKY(20663, 7336),
RIFT_GUARDIAN(20665, 7337),
BABY_CHINCHOMPA2(13324, 6719),
BABY_CHINCHOMPA3(13325, 6720),
BABY_CHINCHOMPA4(13326, 6721),
CORP(12816, 318),
CAMEL(14010, 2835);
private int itemId, npcId;
private Pets(int itemId, int npcId) {
this.itemId = itemId;
this.npcId = npcId;
}
}
public static Pets forItem(int id) {
for (Pets t : Pets.values()) {
if (t.itemId == id) {
return t;
}
}
return null;
}
public static Pets forNpc(int id) {
for (Pets t : Pets.values()) {
if (t.npcId == id) {
return t;
}
}
return null;
}
public static int getItemIdForNpcId(int npcId) {
return forNpc(npcId).itemId;
}
public static int spawnId;
public static void handleClickingButtons(Player player, int buttonId) {
switch(buttonId){
/*case 95050:
if (player.hasNpc) {
if (player.summonId > 0) {
PetHandler.spawnPet(player, player.summonId, -1, true);
}
}
break;*/
}
}
public static boolean spawnPet(Player c, int itemId, int slot,
boolean ignore) {
Pets pets = forItem(itemId);
if (pets != null) {
int npcId = pets.npcId;
if (c.hasNpc && !ignore) {
c.sendMessage("You already have a follower!");
return true;
}
int offsetX = 0;
int offsetY = 0;
if (Region
.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) {
offsetX = -1;
} else if (Region.getClipping(c.getX() + 1, c.getY(),
c.heightLevel, 1, 0)) {
offsetX = 1;
} else if (Region.getClipping(c.getX(), c.getY() - 1,
c.heightLevel, 0, -1)) {
offsetY = -1;
} else if (Region.getClipping(c.getX(), c.getY() + 1,
c.heightLevel, 0, 1)) {
offsetY = 1;
}
Server.npcHandler.spawnNpc36(c, npcId, c.absX + offsetX, c.absY
+ offsetY, c.heightLevel, 0, 120, 25, 200, 200, true, true);
if (!ignore) {
c.getItems().deleteItem(itemId, slot, c.playerItemsN[slot]);
c.hasNpc = true;
c.summonId = itemId;
c.spawnId = itemId;
PlayerSave.saveGame(c);
}
return true;
}
return false;
}
/**
* Pet Insurance
* checks if the owner has insurance when they die if they do it will add the pet back to their bank if not
* the pet will be gone forever.
*/
public static void ownerDeath(Player c, int i) {
//Pets pets = forItem(itemId);
try {
if (NPCHandler.npcs[i] == null) {
if (!c.insure) {
c.summonId = -1;
c.hasNpc = false;
NPCHandler.npcs[i].absX = 0;
NPCHandler.npcs[i].absY = 0;
NPCHandler.npcs[i].heightLevel = 0;
c.sendMessage("@blu@You have died and lost your pet, you should've had pet insurance!");
} else if (c.insure) {
c.getItems().addItemToBank(c.spawnId, 1);
c.spawnId = -1;
c.summonId = -1;
c.hasNpc = false;
NPCHandler.npcs[i].absX = 0;
NPCHandler.npcs[i].absY = 0;
NPCHandler.npcs[i].heightLevel = 0;
c.sendMessage("@blu@Your pet was insured and was added to your bank!");
}
}
} catch (Exception e) {
}
}
public static boolean pickupPet(Player c, int npcId) {
Pets pets = forNpc(npcId);
if (pets != null) {
if (NPCHandler.npcs[c.rememberNpcIndex].spawnedBy == c.index) {
int itemId = pets.itemId;
if (c.getItems().freeSlots() > 0) {
NPCHandler.npcs[c.rememberNpcIndex].absX = 0;
NPCHandler.npcs[c.rememberNpcIndex].absY = 0;
NPCHandler.npcs[c.rememberNpcIndex] = null;
c.animation(827);
c.getItems().addItem(itemId, 1);
c.summonId = -1;
c.hasNpc = false;
c.sendMessage("You pick up your pet.");
} else {
c.sendMessage("You do not have enough inventory space to do this.");
}
} else {
c.sendMessage("This is not your pet.");
}
return true;
}
return false;
}
public static boolean talktoPet(Player c, int npcId) {
Pets pets = forNpc(npcId);
if (pets != null) {
if (NPCHandler.npcs[c.rememberNpcIndex].spawnedBy == c.index) {
switch (npcId) {
case 4441:
c.getDH().sendDialogues(14000, 3200);
break;
case 4439:
c.getDH().sendDialogues(14003, 3200);
break;
case 4440:
c.getDH().sendDialogues(14006, 3200);
break;
case 4446:
c.getDH().sendDialogues(14009, 3200);
break;
case 4442:
c.getDH().sendDialogues(14011, 3200);
break;
case 4438:
c.getDH().sendDialogues(14014, 3200);
break;
case 4435:
c.getDH().sendDialogues(14017, 4435);
break;
}
} else {
c.sendMessage("This is not your pet.");
}
return true;
}
return false;
}
public static boolean Pets() {
// TODO Auto-generated method stub
return false;
}
}