@ -9,8 +9,11 @@
@@ -9,8 +9,11 @@
package engine.db.handlers ;
import engine.Enum ;
import engine.gameManager.DbManager ;
import engine.gameManager.PowersManager ;
import engine.powers.EffectsBase ;
import engine.powers.effectmodifiers.* ;
import org.pmw.tinylog.Logger ;
import java.sql.Connection ;
@ -18,6 +21,7 @@ import java.sql.PreparedStatement;
@@ -18,6 +21,7 @@ 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 {
@ -45,4 +49,254 @@ public class dbEffectsBaseHandler extends dbHandlerBase {
@@ -45,4 +49,254 @@ public class dbEffectsBaseHandler extends dbHandlerBase {
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 ) ;
Enum . ModType modifier = Enum . 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 , Enum . 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 ) ;
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 ;
}
}