forked from MagicBane/Server
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.
427 lines
11 KiB
427 lines
11 KiB
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . |
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· |
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ |
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ |
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ |
|
// Magicbane Emulator Project © 2013 - 2022 |
|
// www.magicbane.com |
|
|
|
|
|
package engine.objects; |
|
|
|
import engine.gameManager.DbManager; |
|
import engine.mbEnums; |
|
import engine.mbEnums.ItemContainerType; |
|
import engine.mbEnums.OwnerType; |
|
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 templateID, mbEnums.EquipSlotType slot) { |
|
|
|
Item item = new Item(templateID); |
|
item.ownerID = pc.getObjectUUID(); |
|
item.ownerType = OwnerType.PlayerCharacter; |
|
item.containerType = ItemContainerType.EQUIPPED; |
|
item.equipSlot = 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, mbEnums.EquipSlotType.RHELD); |
|
if (offhand != 0) |
|
kitItemCreator(pc, offhand, mbEnums.EquipSlotType.LHELD); |
|
if (chest != 0) |
|
kitItemCreator(pc, chest, mbEnums.EquipSlotType.CHEST); |
|
if (legs != 0) |
|
kitItemCreator(pc, legs, mbEnums.EquipSlotType.LEGS); |
|
if (feet != 0) |
|
kitItemCreator(pc, feet, mbEnums.EquipSlotType.FEET); |
|
} |
|
|
|
@Override |
|
public void updateDatabase() { |
|
// TODO Create update logic. |
|
} |
|
}
|
|
|