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.

202 lines
7.1 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.objects;
import engine.Enum.GameObjectType;
import engine.gameManager.DbManager;
import engine.net.ByteBufferWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class PromotionClass extends AbstractGameObject {
private final String name;
private final String description;
private final float healthMod;
private final float manaMod;
private final float staminaMod;
private final ArrayList<Integer> allowedRunes;
private final ArrayList<SkillReq> skillsGranted;
private final ArrayList<PowerReq> powersGranted;
private final ArrayList<RuneBaseEffect> effectsGranted;
private final ArrayList<RuneBaseEffect> effectsGrantedFighter;
private final ArrayList<RuneBaseEffect> effectsGrantedHealer;
private final ArrayList<RuneBaseEffect> effectsGrantedRogue;
private final ArrayList<RuneBaseEffect> effectsGrantedMage;
private int token = 0;
private ArrayList<MobBaseEffects> effectsList = new ArrayList<>();
/**
* No Table ID Constructor
*/
public PromotionClass(String name, String description,
ArrayList<Integer> allowedRunes, ArrayList<SkillReq> skillsGranted, ArrayList<PowerReq> powersGranted) {
super();
this.name = name;
this.description = description;
this.allowedRunes = allowedRunes;
this.skillsGranted = skillsGranted;
this.powersGranted = powersGranted;
this.healthMod = 0f;
this.manaMod = 0f;
this.staminaMod = 0f;
this.effectsGranted = new ArrayList<>();
this.effectsGrantedFighter = new ArrayList<>();
this.effectsGrantedHealer = new ArrayList<>();
this.effectsGrantedRogue = new ArrayList<>();
this.effectsGrantedMage = new ArrayList<>();
}
/**
* Normal Constructor
*/
public PromotionClass(String name, String description,
ArrayList<Integer> allowedRunes, ArrayList<SkillReq> skillsGranted, ArrayList<PowerReq> powersGranted, int newUUID) {
super(newUUID);
this.name = name;
this.description = description;
this.allowedRunes = allowedRunes;
this.skillsGranted = skillsGranted;
this.powersGranted = powersGranted;
this.healthMod = 0f;
this.manaMod = 0f;
this.staminaMod = 0f;
this.effectsGranted = new ArrayList<>();
this.effectsGrantedFighter = new ArrayList<>();
this.effectsGrantedHealer = new ArrayList<>();
this.effectsGrantedRogue = new ArrayList<>();
this.effectsGrantedMage = new ArrayList<>();
}
/**
* ResultSet Constructor
*/
public PromotionClass(ResultSet rs) throws SQLException {
super(rs);
this.name = rs.getString("name");
this.description = rs.getString("description");
this.token = rs.getInt("token");
this.healthMod = rs.getFloat("healthMod");
this.manaMod = rs.getFloat("manaMod");
this.staminaMod = rs.getFloat("staminaMod");
this.allowedRunes = DbManager.PromotionQueries.GET_ALLOWED_RUNES(this);
this.skillsGranted = DbManager.SkillReqQueries.GET_REQS_FOR_RUNE(this.getObjectUUID());
this.powersGranted = PowerReq.getPowerReqsForRune(this.getObjectUUID());
this.effectsGranted = DbManager.RuneBaseEffectQueries.GET_EFFECTS_FOR_RUNEBASE(this.getObjectUUID());
this.effectsGrantedFighter = DbManager.RuneBaseEffectQueries.GET_EFFECTS_FOR_RUNEBASE((this.getObjectUUID() * 10) + 2500);
this.effectsGrantedHealer = DbManager.RuneBaseEffectQueries.GET_EFFECTS_FOR_RUNEBASE((this.getObjectUUID() * 10) + 2501);
this.effectsGrantedRogue = DbManager.RuneBaseEffectQueries.GET_EFFECTS_FOR_RUNEBASE((this.getObjectUUID() * 10) + 2502);
this.effectsGrantedMage = DbManager.RuneBaseEffectQueries.GET_EFFECTS_FOR_RUNEBASE((this.getObjectUUID() * 10) + 2503);
this.effectsList = DbManager.MobBaseQueries.GET_RUNEBASE_EFFECTS(this.getObjectUUID());
}
public static void serializeForClientMsg(PromotionClass promotionClass, ByteBufferWriter writer) {
writer.putInt(3); // For BaseClass
writer.putInt(0); // Pad
writer.putInt(promotionClass.getObjectUUID());
writer.putInt(promotionClass.getObjectType().ordinal());
writer.putInt(promotionClass.getObjectUUID());
}
public static PromotionClass GetPromtionClassFromCache(int runeID) {
if (runeID == 0)
return null;
return (PromotionClass) DbManager.getFromCache(GameObjectType.PromotionClass, runeID);
}
/*
* Getters
*/
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public int getToken() {
return this.token;
}
public float getHealthMod() {
return this.healthMod;
}
public float getManaMod() {
return this.manaMod;
}
public float getStaminaMod() {
return this.staminaMod;
}
public boolean isAllowedRune(int token) {
for (int b : this.allowedRunes) {
if (token == b) {
return true;
}
}
return false;
}
public ArrayList<Integer> getRuneList() {
return this.allowedRunes;
}
public ArrayList<SkillReq> getSkillsGranted() {
return this.skillsGranted;
}
public ArrayList<PowerReq> getPowersGranted() {
return this.powersGranted;
}
/*
* Serializing
*/
public ArrayList<RuneBaseEffect> getEffectsGranted() {
return this.effectsGranted;
}
public ArrayList<RuneBaseEffect> getEffectsGranted(int baseClassID) {
if (baseClassID == 2500)
return this.effectsGrantedFighter;
else if (baseClassID == 2501)
return this.effectsGrantedHealer;
else if (baseClassID == 2502)
return this.effectsGrantedRogue;
else if (baseClassID == 2503)
return this.effectsGrantedMage;
else
return new ArrayList<>();
}
@Override
public void updateDatabase() {
// TODO Create update logic.
}
public ArrayList<MobBaseEffects> getEffectsList() {
return effectsList;
}
public void setEffectsList(ArrayList<MobBaseEffects> effectsList) {
this.effectsList = effectsList;
}
}