Public Repository for the Magicbane Shadowbane Emulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

428 lines
11 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.objects;
import engine.Enum.ItemContainerType;
import engine.Enum.OwnerType;
import engine.gameManager.DbManager;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
import java.net.UnknownHostException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
public class Kit extends AbstractGameObject {
public static HashMap<Integer, Boolean> NoobGearIDS = new HashMap<>();
public static HashMap<Integer, ArrayList<Kit>> RaceClassIDMap = new HashMap<>();
private final int raceBaseClassID;
private final byte kitNumber;
private final int legs;
private final int chest;
private final int feet;
private final int offhand;
private final int weapon;
/**
* No Table ID Constructor
*/
public Kit(int raceBaseClassID, byte kitNumber, int legs, int chest,
int feet, int offhand, int weapon) {
super();
this.raceBaseClassID = raceBaseClassID;
this.kitNumber = kitNumber;
this.legs = legs;
this.chest = chest;
this.feet = feet;
this.offhand = offhand;
this.weapon = weapon;
}
/**
* Normal Constructor
*/
public Kit(int raceBaseClassID, byte kitNumber, int legs, int chest,
int feet, int offhand, int weapon, int newUUID) {
super(newUUID);
this.raceBaseClassID = raceBaseClassID;
this.kitNumber = kitNumber;
this.legs = legs;
this.chest = chest;
this.feet = feet;
this.offhand = offhand;
this.weapon = weapon;
}
/**
* RecordSet Constructor
*/
public Kit(ResultSet rs) throws SQLException, UnknownHostException {
super(rs);
this.raceBaseClassID = rs.getInt("RaceBaseClassesID");
this.kitNumber = rs.getByte("kitNumber");
this.legs = rs.getInt("legs");
this.chest = rs.getInt("chest");
this.feet = rs.getInt("feet");
this.offhand = rs.getInt("offhand");
this.weapon = rs.getInt("weapon");
if (Kit.RaceClassIDMap.containsKey(this.raceBaseClassID)) {
Kit.RaceClassIDMap.get(this.raceBaseClassID).add(this);
} else {
ArrayList<Kit> tempList = new ArrayList<>();
tempList.add(this);
Kit.RaceClassIDMap.put(this.raceBaseClassID, tempList);
}
if (this.legs != 0)
Kit.NoobGearIDS.put(this.legs, true);
if (this.chest != 0)
Kit.NoobGearIDS.put(this.chest, true);
if (this.feet != 0)
Kit.NoobGearIDS.put(this.feet, true);
if (this.offhand != 0)
Kit.NoobGearIDS.put(this.offhand, true);
if (this.weapon != 0)
Kit.NoobGearIDS.put(this.weapon, true);
}
public static boolean IsNoobGear(int itemID) {
return Kit.NoobGearIDS.containsKey(itemID);
}
/*
* Getters
*/
private static boolean kitItemCreator(PlayerCharacter pc, int itemBase, int slot) {
Item item = new Item(itemBase);
item.ownerID = pc.getObjectUUID();
item.ownerType = OwnerType.PlayerCharacter;
item.containerType = ItemContainerType.EQUIPPED;
item.equipSlot = (byte) slot;
try {
item = DbManager.ItemQueries.PERSIST(item);
} catch (Exception e) {
Logger.error(e);
}
if (item == null) {
Logger.info("Ungoof this goof, something is wrong with our kit.");
}
return true;
}
public static int GetKitIDByRaceClass(final int raceID, final int classID) {
switch (raceID) {
case 2000:
switch (classID) {
case 2500:
return 2;
case 2501:
return 3;
case 2502:
return 4;
case 2503:
return 5;
}
case 2001:
switch (classID) {
case 2500:
return 6;
case 2501:
return 7;
case 2502:
return 8;
case 2503:
return 9;
}
case 2002:
switch (classID) {
case 2500:
return 10;
case 2501:
return 11;
case 2502:
return 12;
}
case 2003:
switch (classID) {
case 2500:
return 13;
case 2501:
return 14;
case 2502:
return 15;
}
case 2004:
switch (classID) {
case 2500:
return 16;
case 2501:
return 17;
}
case 2005:
switch (classID) {
case 2500:
return 18;
case 2501:
return 19;
}
case 2006:
switch (classID) {
case 2500:
return 20;
case 2501:
return 21;
}
case 2008:
switch (classID) {
case 2500:
return 22;
case 2501:
return 23;
case 2502:
return 24;
case 2503:
return 25;
}
case 2009:
switch (classID) {
case 2500:
return 26;
case 2501:
return 27;
case 2502:
return 28;
case 2503:
return 29;
}
case 2010:
switch (classID) {
case 2500:
return 30;
}
case 2011:
switch (classID) {
case 2500:
return 31;
case 2501:
return 32;
case 2502:
return 33;
case 2503:
return 34;
}
case 2012:
switch (classID) {
case 2500:
return 35;
case 2501:
return 36;
case 2502:
return 37;
case 2503:
return 38;
}
case 2013:
switch (classID) {
case 2500:
return 39;
case 2501:
return 40;
case 2502:
return 41;
case 2503:
return 42;
}
case 2014:
switch (classID) {
case 2500:
return 43;
case 2501:
return 44;
case 2502:
return 45;
case 2503:
return 46;
}
case 2015:
switch (classID) {
case 2500:
return 47;
case 2502:
return 48;
case 2503:
return 49;
}
case 2016:
switch (classID) {
case 2500:
return 50;
case 2502:
return 51;
case 2503:
return 52;
}
case 2017:
switch (classID) {
case 2500:
return 53;
case 2501:
return 54;
}
case 2025:
switch (classID) {
case 2500:
return 55;
case 2501:
return 56;
case 2502:
return 57;
case 2503:
return 58;
}
case 2026:
switch (classID) {
case 2500:
return 59;
case 2501:
return 60;
case 2502:
return 61;
case 2503:
return 62;
}
case 2027:
switch (classID) {
case 2500:
return 63;
}
case 2028:
switch (classID) {
case 2500:
return 64;
case 2502:
return 65;
case 2503:
return 66;
}
case 2029:
switch (classID) {
case 2500:
return 67;
case 2502:
return 68;
case 2503:
return 69;
}
}
return -1;
}
public int getRaceBaseClassID() {
return raceBaseClassID;
}
public byte getKitNumber() {
return kitNumber;
}
public int getLegs() {
return legs;
}
public int getChest() {
return chest;
}
public int getFeet() {
return feet;
}
public int getOffhand() {
return offhand;
}
public int getWeapon() {
return weapon;
}
public void equipPCwithKit(PlayerCharacter pc) {
if (weapon != 0)
kitItemCreator(pc, weapon, MBServerStatics.SLOT_MAINHAND);
if (offhand != 0)
kitItemCreator(pc, offhand, MBServerStatics.SLOT_OFFHAND);
if (chest != 0)
kitItemCreator(pc, chest, MBServerStatics.SLOT_CHEST);
if (legs != 0)
kitItemCreator(pc, legs, MBServerStatics.SLOT_LEGGINGS);
if (feet != 0)
kitItemCreator(pc, feet, MBServerStatics.SLOT_FEET);
}
@Override
public void updateDatabase() {
// TODO Create update logic.
}
}