// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.db.handlers; import engine.Enum.GameObjectType; import engine.gameManager.DbManager; import engine.objects.*; import engine.server.MBServerStatics; import org.pmw.tinylog.Logger; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; public class dbMobBaseHandler extends dbHandlerBase { public dbMobBaseHandler() { this.localClass = MobBase.class; this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName()); } public MobBase GET_MOBBASE(int id, boolean forceDB) { if (id == 0) return null; MobBase mobBase = (MobBase) DbManager.getFromCache(GameObjectType.MobBase, id); if ( mobBase != null) return mobBase; prepareCallable("SELECT * FROM `static_npc_mobbase` WHERE `ID`=?"); setInt(1, id); return (MobBase) getObjectSingle(id, forceDB, true); } public ArrayList GET_ALL_MOBBASES() { prepareCallable("SELECT * FROM `static_npc_mobbase`;"); return getObjectList(); } public void SET_AI_DEFAULTS() { prepareCallable("SELECT * FROM `static_ai_defaults`"); try { ResultSet rs = executeQuery(); while (rs.next()) { MBServerStatics.AI_BASE_AGGRO_RANGE = rs.getInt("aggro_range"); MBServerStatics.AI_PATROL_DIVISOR = rs.getInt("patrol_chance"); MBServerStatics.AI_DROP_AGGRO_RANGE = rs.getInt("drop_aggro_range"); MBServerStatics.AI_POWER_DIVISOR = rs.getInt("cast_chance"); MBServerStatics.AI_RECALL_RANGE = rs.getInt("recall_range"); MBServerStatics.AI_PET_HEEL_DISTANCE = rs.getInt("pet_heel_distance"); } rs.close(); } catch (SQLException e) { Logger.error( e.getMessage()); } finally { closeCallable(); } } public boolean UPDATE_AI_DEFAULTS() { prepareCallable("UPDATE `static_ai_defaults` SET `aggro_range` = ?,`patrol_chance`= ?,`drop_aggro_range`= ?,`cast_chance`= ?,`recall_range`= ? WHERE `ID` = 1"); setInt(1, MBServerStatics.AI_BASE_AGGRO_RANGE); setInt(2, MBServerStatics.AI_PATROL_DIVISOR); setInt(3, MBServerStatics.AI_DROP_AGGRO_RANGE); setInt(4, MBServerStatics.AI_POWER_DIVISOR); setInt(5, MBServerStatics.AI_RECALL_RANGE); return (executeUpdate() > 0); } public HashMap LOAD_STATIC_POWERS(int mobBaseUUID) { HashMap powersList = new HashMap<>(); prepareCallable("SELECT * FROM `static_npc_mobbase_powers` WHERE `mobbaseUUID`=?"); setInt(1, mobBaseUUID); try { ResultSet rs = executeQuery(); while (rs.next()) { powersList.put(rs.getInt("token"), rs.getInt("rank")); } rs.close(); } catch (SQLException e) { Logger.error( e.getMessage()); } finally { closeCallable(); } return powersList; } public ArrayList GET_RUNEBASE_EFFECTS(int runeID) { ArrayList effectsList = new ArrayList<>(); prepareCallable("SELECT * FROM `static_npc_mobbase_effects` WHERE `mobbaseUUID` = ?"); setInt(1, runeID); try { ResultSet rs = executeQuery(); while (rs.next()) { MobBaseEffects mbs = new MobBaseEffects(rs); effectsList.add(mbs); } rs.close(); } catch (SQLException e) { Logger.error (e.getMessage()); } finally { closeCallable(); } return effectsList; } public MobBaseStats LOAD_STATS(int mobBaseUUID) { MobBaseStats mbs = MobBaseStats.GetGenericStats(); prepareCallable("SELECT * FROM `static_npc_mobbase_stats` WHERE `mobbaseUUID` = ?"); setInt(1, mobBaseUUID); try { ResultSet rs = executeQuery(); while (rs.next()) { mbs = new MobBaseStats(rs); } } catch (SQLException e) { Logger.error(e.getErrorCode() + ' ' + e.getMessage(), e); } finally { closeCallable(); } return mbs; } public boolean RENAME_MOBBASE(int ID, String newName) { prepareCallable("UPDATE `static_npc_mobbase` SET `name`=? WHERE `ID`=?;"); setString(1, newName); setInt(2, ID); return (executeUpdate() > 0); } public void LOAD_ALL_MOBBASE_SPEEDS(MobBase mobBase) { if (mobBase.getLoadID() == 0) return; ArrayList mobLootList = new ArrayList<>(); prepareCallable("SELECT * FROM `static_npc_mobbase_race` WHERE `mobbaseID` = ?"); setInt(1, mobBase.getLoadID()); try { ResultSet rs = executeQuery(); //shrines cached in rs for easy cache on creation. while (rs.next()) { float walk = rs.getFloat("walkStandard"); float walkCombat = rs.getFloat("walkCombat"); float run = rs.getFloat("runStandard"); float runCombat = rs.getFloat("runCombat"); mobBase.updateSpeeds(walk, walkCombat, run, runCombat); } } catch (SQLException e) { Logger.error(e.getErrorCode() + ' ' + e.getMessage(), e); } finally { closeCallable(); } } }