// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2026 // https://www.magicbane.com package engine.objects; import engine.gameManager.DbManager; import engine.mbEnums; import engine.mbEnums.GameObjectType; import engine.parsers.objects.RuneTemplate; import engine.server.MBServerStatics; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; public class RuneBaseAttribute extends AbstractGameObject { public static HashMap> runeBaseAttributeMap = new HashMap<>(); private short attributeID; private short modValue; private int runeBaseID; /** * No Table ID Constructor */ public RuneBaseAttribute(short attributeID, short modValue) { super(); this.attributeID = attributeID; this.modValue = modValue; } /** * Normal */ public RuneBaseAttribute(short attributeID, short modValue, int newUUID) { super(newUUID); this.attributeID = attributeID; this.modValue = modValue; } /** * ResultSet Constructor */ public RuneBaseAttribute(ResultSet rs) throws SQLException { super(rs); this.attributeID = rs.getShort("attributeID"); this.modValue = rs.getShort("modValue"); this.runeBaseID = rs.getInt("RuneBaseID"); } // Attribute ids: 0 = rune_creation_cost, 1-5 = rune_attr_adj, 6-10 = rune_max_attr_adj, // 11-15 = item_attr_req; the AttributeType ordinals Strength..Spirit are 1-5. public static ArrayList getAttributesForRune(RuneTemplate rune) { ArrayList attributes = new ArrayList<>(); if (rune.rune_creation_cost != 0) attributes.add(new RuneBaseAttribute((short) MBServerStatics.RUNE_COST_ATTRIBUTE_ID, (short) rune.rune_creation_cost)); addAttributes(attributes, rune.rune_attr_adj, 0); addAttributes(attributes, rune.rune_max_attr_adj, 5); addAttributes(attributes, rune.item_attr_req, 10); return attributes; } private static void addAttributes(ArrayList attributes, EnumMap values, int idOffset) { for (mbEnums.AttributeType attributeType : values.keySet()) { if (values.get(attributeType) == 0) continue; attributes.add(new RuneBaseAttribute((short) (attributeType.ordinal() + idOffset), values.get(attributeType).shortValue())); } } public static void LoadAllAttributes() { DbManager.RuneBaseAttributeQueries.GET_ATTRIBUTES_FOR_RUNEBASE(); //cache attributeLists for rune. for (AbstractGameObject ago : DbManager.getList(GameObjectType.RuneBaseAttribute)) { RuneBaseAttribute runeBaseAttribute = (RuneBaseAttribute) ago; int runeBaseID = ((RuneBaseAttribute) runeBaseAttribute).runeBaseID; if (runeBaseAttributeMap.get(runeBaseID) == null) { ArrayList attributeList = new ArrayList<>(); attributeList.add(runeBaseAttribute); runeBaseAttributeMap.put(runeBaseID, attributeList); } else { ArrayList attributeList = runeBaseAttributeMap.get(runeBaseID); attributeList.add(runeBaseAttribute); runeBaseAttributeMap.put(runeBaseID, attributeList); } } } /* * Getters */ public short getAttributeID() { return attributeID; } public short getModValue() { return modValue; } /* * Utils */ @Override public void updateDatabase() { // TODO Auto-generated method stub } }