// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.objects; import engine.gameManager.DbManager; import engine.net.ByteBufferWriter; import org.pmw.tinylog.Logger; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class NPCRune extends AbstractGameObject { private final RuneBase runeBase; private final int player; private final ArrayList skillsGranted; private final ArrayList effectsGranted; /** * No Table ID Constructor */ public NPCRune(RuneBase runeBase, int characterID) { super(); this.runeBase = runeBase; this.player = characterID; if (this.runeBase != null) this.skillsGranted = DbManager.SkillReqQueries.GET_REQS_FOR_RUNE(this.runeBase.getObjectUUID()); else this.skillsGranted = new ArrayList<>(); this.effectsGranted = new ArrayList<>(); } /** * Normal Constructor */ public NPCRune(RuneBase runeBase, int characterID, int newUUID) { super(newUUID); this.runeBase = runeBase; this.player = characterID; if (this.runeBase == null) this.skillsGranted = DbManager.SkillReqQueries.GET_REQS_FOR_RUNE(this.runeBase.getObjectUUID()); else this.skillsGranted = new ArrayList<>(); this.effectsGranted = new ArrayList<>(); } /** * ResultSet Constructor */ public NPCRune(ResultSet rs) throws SQLException { super(rs); this.runeBase = RuneBase.getRuneBase(rs.getInt("RuneBaseID")); this.player = rs.getInt("NpcID"); if (this.runeBase != null) { this.skillsGranted = DbManager.SkillReqQueries.GET_REQS_FOR_RUNE(this.runeBase.getObjectUUID()); this.effectsGranted = DbManager.RuneBaseEffectQueries.GET_EFFECTS_FOR_RUNEBASE(this.runeBase.getObjectUUID()); } else { Logger.error("Failed to find RuneBase for NPCRune " + this.getObjectUUID()); this.skillsGranted = new ArrayList<>(); this.effectsGranted = new ArrayList<>(); } } /* * Getters */ public RuneBase getRuneBase() { return this.runeBase; } public int getRuneBaseID() { if (this.runeBase != null) return this.runeBase.getObjectUUID(); return 0; } public int getPlayerID() { return this.player; } public ArrayList getSkillsGranted() { return this.skillsGranted; } public ArrayList getEffectsGranted() { return this.effectsGranted; } /* * Serializing */ public static void serializeForClientMsg(NPCRune npcRune,ByteBufferWriter writer) { if (npcRune.runeBase != null) { writer.putInt(npcRune.runeBase.getType()); writer.putInt(0); writer.putInt(npcRune.runeBase.getObjectUUID()); writer.putInt(npcRune.getObjectType().ordinal()); writer.putInt(npcRune.getObjectUUID()); } else { for (int i = 0; i < 5; i++) writer.putInt(0); } } @Override public void updateDatabase() { } }