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.

147 lines
4.4 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.objects;
import engine.Enum;
import engine.Enum.ItemType;
import engine.gameManager.DbManager;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
public class ItemBase {
public static ItemBase GOLD_ITEM_BASE = null;
public static HashMap<Integer, ItemBase> _itemBaseByUUID = new HashMap<>();
9 months ago
private static final HashMap<Integer, Integer> itemHashIDMap = new HashMap<>();
private static final HashMap<String, Integer> _IDsByNames = new HashMap<>();
private static final ArrayList<ItemBase> _resourceList = new ArrayList<>();
8 months ago
public final int uuid;
9 months ago
private final int modTable;
private final short percentRequired;
private final short defense;
private final float dexPenalty;
private final float speed;
private final float range;
private final short minDamage;
private final short maxDamage;
private final String mastery;
private final engine.Enum.SourceType damageType;
9 months ago
private final boolean isStrBased;
public ItemBase(ResultSet rs) throws SQLException {
this.uuid = rs.getInt("ID");
this.modTable = rs.getInt("modTable");
this.percentRequired = rs.getShort("percentRequired");
this.defense = rs.getShort("defense");
this.dexPenalty = rs.getFloat("dexPenalty");
this.isStrBased = (rs.getInt("isStrBased") == 1);
this.speed = rs.getFloat("speed");
this.range = rs.getFloat("range");
this.minDamage = rs.getShort("minDamage");
this.maxDamage = rs.getShort("maxDamage");
this.mastery = rs.getString("mastery");
9 months ago
damageType = Enum.SourceType.valueOf(rs.getString("damageType").toUpperCase());
ItemTemplate template = ItemTemplate.templates.get(this.getUUID());
if (template == null)
Logger.error(this.getUUID() + " null template");
}
public static void addToCache(ItemBase itemBase) {
_itemBaseByUUID.put(itemBase.uuid, itemBase);
if (ItemTemplate.templates.get(itemBase.uuid).item_type.equals(ItemType.RESOURCE))
_resourceList.add(itemBase);
ItemTemplate template = ItemTemplate.templates.get(itemBase.uuid);
if (template == null)
Logger.error("Null template for: " + itemBase.uuid);
else
_IDsByNames.put(template.item_base_name.toLowerCase().replace(" ", "_"), itemBase.uuid);
}
public static ItemBase getItemBase(int uuid) {
return _itemBaseByUUID.get(uuid);
}
public static HashMap<Integer, ItemBase> getUUIDCache() {
return _itemBaseByUUID;
}
public static void loadAllItemBases() {
DbManager.ItemBaseQueries.LOAD_ALL_ITEMBASES();
}
public boolean isDiscRune() {
int ID = uuid;
9 months ago
//class, discipline runes
return ID > 2499 && ID < 3050;
}
public int getModTable() {
return modTable;
}
public final int getUUID() {
return uuid;
}
public String getMastery() {
return mastery;
}
public short getDefense() {
return defense;
}
public float getDexPenalty() {
return dexPenalty;
}
public float getSpeed() {
return speed;
}
public float getRange() {
return range;
}
public boolean isStrBased() {
return isStrBased;
}
public short getMaxDamage() {
return maxDamage;
}
public short getMinDamage() {
return minDamage;
}
public Enum.SourceType getDamageType() {
return damageType;
}
public short getPercentRequired() {
return percentRequired;
}
}