forked from MagicBane/Server
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.
303 lines
12 KiB
303 lines
12 KiB
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . |
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· |
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ |
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ |
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ |
|
// Magicbane Emulator Project © 2013 - 2022 |
|
// www.magicbane.com |
|
|
|
|
|
package engine.db.handlers; |
|
|
|
import engine.gameManager.DbManager; |
|
import engine.gameManager.PowersManager; |
|
import engine.mbEnums; |
|
import engine.powers.EffectsBase; |
|
import engine.powers.effectmodifiers.*; |
|
import org.pmw.tinylog.Logger; |
|
|
|
import java.sql.Connection; |
|
import java.sql.PreparedStatement; |
|
import java.sql.ResultSet; |
|
import java.sql.SQLException; |
|
import java.util.ArrayList; |
|
import java.util.HashSet; |
|
|
|
public class dbEffectsBaseHandler extends dbHandlerBase { |
|
|
|
public dbEffectsBaseHandler() { |
|
|
|
} |
|
|
|
public static ArrayList<EffectsBase> getAllEffectsBase() { |
|
|
|
ArrayList<EffectsBase> effectList = new ArrayList<>(); |
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
PreparedStatement prepareStatement = connection.prepareStatement("SELECT * FROM static_power_effectbase ORDER BY `IDString` DESC")) { |
|
|
|
ResultSet rs = prepareStatement.executeQuery(); |
|
|
|
while (rs.next()) { |
|
EffectsBase effectBase = new EffectsBase(rs); |
|
effectList.add(effectBase); |
|
} |
|
} catch (SQLException e) { |
|
Logger.error(e.toString()); |
|
} |
|
|
|
return effectList; |
|
} |
|
|
|
public static void cacheAllEffectModifiers() { |
|
|
|
String IDString; |
|
AbstractEffectModifier abstractEffectModifier = null; |
|
|
|
try (Connection connection = DbManager.getConnection(); |
|
PreparedStatement prepareStatement = connection.prepareStatement("SELECT * FROM static_power_effectmod")) { |
|
|
|
ResultSet rs = prepareStatement.executeQuery(); |
|
|
|
while (rs.next()) { |
|
|
|
IDString = rs.getString("IDString"); |
|
EffectsBase effectBase = PowersManager.getEffectByIDString(IDString); |
|
mbEnums.ModType modifier = mbEnums.ModType.GetModType(rs.getString("modType")); |
|
|
|
//combine item prefix and suffix effect modifiers |
|
|
|
abstractEffectModifier = getCombinedModifiers(abstractEffectModifier, rs, effectBase, modifier); |
|
|
|
if (abstractEffectModifier != null) { |
|
|
|
if (EffectsBase.modifiersMap.containsKey(effectBase.getIDString()) == false) |
|
EffectsBase.modifiersMap.put(effectBase.getIDString(), new HashSet<>()); |
|
|
|
EffectsBase.modifiersMap.get(effectBase.getIDString()).add(abstractEffectModifier); |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
Logger.error(e); |
|
} |
|
|
|
} |
|
|
|
private static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ResultSet rs, EffectsBase effectBase, mbEnums.ModType modifier) throws SQLException { |
|
switch (modifier) { |
|
case AdjustAboveDmgCap: |
|
abstractEffectModifier = new AdjustAboveDmgCapEffectModifier(rs); |
|
break; |
|
case Ambidexterity: |
|
abstractEffectModifier = new AmbidexterityEffectModifier(rs); |
|
break; |
|
case AnimOverride: |
|
break; |
|
case ArmorPiercing: |
|
abstractEffectModifier = new ArmorPiercingEffectModifier(rs); |
|
break; |
|
case AttackDelay: |
|
abstractEffectModifier = new AttackDelayEffectModifier(rs); |
|
break; |
|
case Attr: |
|
abstractEffectModifier = new AttributeEffectModifier(rs); |
|
break; |
|
case BlackMantle: |
|
abstractEffectModifier = new BlackMantleEffectModifier(rs); |
|
break; |
|
case BladeTrails: |
|
abstractEffectModifier = new BladeTrailsEffectModifier(rs); |
|
break; |
|
case Block: |
|
abstractEffectModifier = new BlockEffectModifier(rs); |
|
break; |
|
case BlockedPowerType: |
|
abstractEffectModifier = new BlockedPowerTypeEffectModifier(rs); |
|
break; |
|
case CannotAttack: |
|
abstractEffectModifier = new CannotAttackEffectModifier(rs); |
|
break; |
|
case CannotCast: |
|
abstractEffectModifier = new CannotCastEffectModifier(rs); |
|
break; |
|
case CannotMove: |
|
abstractEffectModifier = new CannotMoveEffectModifier(rs); |
|
break; |
|
case CannotTrack: |
|
abstractEffectModifier = new CannotTrackEffectModifier(rs); |
|
break; |
|
case Charmed: |
|
abstractEffectModifier = new CharmedEffectModifier(rs); |
|
break; |
|
case ConstrainedAmbidexterity: |
|
abstractEffectModifier = new ConstrainedAmbidexterityEffectModifier(rs); |
|
break; |
|
case DamageCap: |
|
abstractEffectModifier = new DamageCapEffectModifier(rs); |
|
break; |
|
case DamageShield: |
|
abstractEffectModifier = new DamageShieldEffectModifier(rs); |
|
break; |
|
case DCV: |
|
abstractEffectModifier = new DCVEffectModifier(rs); |
|
break; |
|
case Dodge: |
|
abstractEffectModifier = new DodgeEffectModifier(rs); |
|
break; |
|
case DR: |
|
abstractEffectModifier = new DREffectModifier(rs); |
|
break; |
|
case Durability: |
|
abstractEffectModifier = new DurabilityEffectModifier(rs); |
|
break; |
|
case ExclusiveDamageCap: |
|
abstractEffectModifier = new ExclusiveDamageCapEffectModifier(rs); |
|
break; |
|
case Fade: |
|
abstractEffectModifier = new FadeEffectModifier(rs); |
|
break; |
|
case Fly: |
|
abstractEffectModifier = new FlyEffectModifier(rs); |
|
break; |
|
case Health: |
|
abstractEffectModifier = new HealthEffectModifier(rs); |
|
break; |
|
case HealthFull: |
|
abstractEffectModifier = new HealthFullEffectModifier(rs); |
|
break; |
|
case HealthRecoverRate: |
|
abstractEffectModifier = new HealthRecoverRateEffectModifier(rs); |
|
break; |
|
case IgnoreDamageCap: |
|
abstractEffectModifier = new IgnoreDamageCapEffectModifier(rs); |
|
break; |
|
case IgnorePassiveDefense: |
|
abstractEffectModifier = new IgnorePassiveDefenseEffectModifier(rs); |
|
break; |
|
case ImmuneTo: |
|
abstractEffectModifier = new ImmuneToEffectModifier(rs); |
|
break; |
|
case ImmuneToAttack: |
|
abstractEffectModifier = new ImmuneToAttackEffectModifier(rs); |
|
break; |
|
case ImmuneToPowers: |
|
abstractEffectModifier = new ImmuneToPowersEffectModifier(rs); |
|
break; |
|
case Invisible: |
|
abstractEffectModifier = new InvisibleEffectModifier(rs); |
|
break; |
|
case ItemName: |
|
abstractEffectModifier = new ItemNameEffectModifier(rs); |
|
if (((ItemNameEffectModifier) abstractEffectModifier).name.isEmpty()) |
|
break; |
|
if (effectBase != null) |
|
effectBase.setName((((ItemNameEffectModifier) abstractEffectModifier).name)); |
|
break; |
|
case Mana: |
|
abstractEffectModifier = new ManaEffectModifier(rs); |
|
break; |
|
case ManaFull: |
|
abstractEffectModifier = new ManaFullEffectModifier(rs); |
|
break; |
|
case ManaRecoverRate: |
|
abstractEffectModifier = new ManaRecoverRateEffectModifier(rs); |
|
break; |
|
case MaxDamage: |
|
abstractEffectModifier = new MaxDamageEffectModifier(rs); |
|
break; |
|
case MeleeDamageModifier: |
|
abstractEffectModifier = new MeleeDamageEffectModifier(rs); |
|
break; |
|
case MinDamage: |
|
abstractEffectModifier = new MinDamageEffectModifier(rs); |
|
break; |
|
case NoMod: |
|
abstractEffectModifier = new NoModEffectModifier(rs); |
|
break; |
|
case OCV: |
|
abstractEffectModifier = new OCVEffectModifier(rs); |
|
break; |
|
case Parry: |
|
abstractEffectModifier = new ParryEffectModifier(rs); |
|
break; |
|
case PassiveDefense: |
|
abstractEffectModifier = new PassiveDefenseEffectModifier(rs); |
|
break; |
|
case PowerCost: |
|
abstractEffectModifier = new PowerCostEffectModifier(rs); |
|
break; |
|
case PowerCostHealth: |
|
abstractEffectModifier = new PowerCostHealthEffectModifier(rs); |
|
break; |
|
case PowerDamageModifier: |
|
abstractEffectModifier = new PowerDamageEffectModifier(rs); |
|
break; |
|
case ProtectionFrom: |
|
abstractEffectModifier = new ProtectionFromEffectModifier(rs); |
|
break; |
|
case Resistance: |
|
abstractEffectModifier = new ResistanceEffectModifier(rs); |
|
break; |
|
case ScaleHeight: |
|
abstractEffectModifier = new ScaleHeightEffectModifier(rs); |
|
break; |
|
case ScaleWidth: |
|
abstractEffectModifier = new ScaleWidthEffectModifier(rs); |
|
break; |
|
case ScanRange: |
|
abstractEffectModifier = new ScanRangeEffectModifier(rs); |
|
break; |
|
case SeeInvisible: |
|
abstractEffectModifier = new SeeInvisibleEffectModifier(rs); |
|
break; |
|
case Silenced: |
|
abstractEffectModifier = new SilencedEffectModifier(rs); |
|
break; |
|
case Skill: |
|
abstractEffectModifier = new SkillEffectModifier(rs); |
|
break; |
|
case Slay: |
|
abstractEffectModifier = new SlayEffectModifier(rs); |
|
break; |
|
case Speed: |
|
abstractEffectModifier = new SpeedEffectModifier(rs); |
|
break; |
|
case SpireBlock: |
|
abstractEffectModifier = new SpireBlockEffectModifier(rs); |
|
break; |
|
case Stamina: |
|
abstractEffectModifier = new StaminaEffectModifier(rs); |
|
break; |
|
case StaminaFull: |
|
abstractEffectModifier = new StaminaFullEffectModifier(rs); |
|
break; |
|
case StaminaRecoverRate: |
|
abstractEffectModifier = new StaminaRecoverRateEffectModifier(rs); |
|
break; |
|
case Stunned: |
|
abstractEffectModifier = new StunnedEffectModifier(rs); |
|
break; |
|
case Value: |
|
abstractEffectModifier = new ValueEffectModifier(rs); |
|
if (effectBase != null) { |
|
ValueEffectModifier valueEffect = (ValueEffectModifier) abstractEffectModifier; |
|
effectBase.setValue(valueEffect.minMod); |
|
} |
|
break; |
|
case WeaponProc: |
|
abstractEffectModifier = new WeaponProcEffectModifier(rs); |
|
break; |
|
case WeaponRange: |
|
abstractEffectModifier = new WeaponRangeEffectModifier(rs); |
|
break; |
|
case WeaponSpeed: |
|
abstractEffectModifier = new WeaponSpeedEffectModifier(rs); |
|
break; |
|
|
|
} |
|
return abstractEffectModifier; |
|
} |
|
}
|
|
|