Compare commits

..

3 Commits

Author SHA1 Message Date
MagicBot a10c8c9aa5 Update sourcetype 2024-07-21 22:04:21 -04:00
MagicBot cdf3e4db8a Update sourcetype 2024-07-21 22:00:09 -04:00
MagicBot b53133655c Update sourcetype 2024-07-21 21:55:08 -04:00
154 changed files with 1504 additions and 3315 deletions
@@ -0,0 +1,303 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// 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;
}
}
+16
View File
@@ -221,4 +221,20 @@ public class dbLootHandler extends dbHandlerBase {
return bootySets;
}
public void LOAD_ENCHANT_VALUES() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `IDString`, `minMod` FROM `static_power_effectmod` WHERE `modType` = ?")) {
preparedStatement.setString(1, "Value");
ResultSet rs = preparedStatement.executeQuery();
while (rs.next())
Item.addEnchantValue(rs.getString("IDString"), rs.getInt("minMod"));
} catch (SQLException e) {
Logger.error(e);
}
}
}
@@ -0,0 +1,82 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// 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.objects.Mob;
import engine.powers.EffectsBase;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashSet;
public class dbPowerHandler extends dbHandlerBase {
public dbPowerHandler() {
this.localClass = Mob.class;
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static void addAllSourceTypes() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_sourcetype")) {
ResultSet rs = preparedStatement.executeQuery();
String IDString, source;
while (rs.next()) {
IDString = rs.getString("IDString");
int token = DbManager.hasher.SBStringHash(IDString);
source = rs.getString("source").replace("-", "").trim();
mbEnums.EffectSourceType effectSourceType = mbEnums.EffectSourceType.getEffectSourceType(source);
if (EffectsBase.effectSourceTypeMap.containsKey(token) == false)
EffectsBase.effectSourceTypeMap.put(token, new HashSet<>());
EffectsBase.effectSourceTypeMap.get(token).add(effectSourceType);
}
} catch (Exception e) {
Logger.error(e);
}
}
public static void addAllAnimationOverrides() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_animation_override")) {
ResultSet rs = preparedStatement.executeQuery();
String IDString;
int animation;
while (rs.next()) {
IDString = rs.getString("IDString");
EffectsBase eb = PowersManager.getEffectByIDString(IDString);
if (eb != null)
IDString = eb.getIDString();
animation = rs.getInt("animation");
PowersManager.AnimationOverrides.put(IDString, animation);
}
} catch (Exception e) {
Logger.error(e);
}
}
}
+1 -1
View File
@@ -798,7 +798,7 @@ public enum BuildingManager {
// Attempt to write to database or delete the building
// if we are destroying it.
if (rank < 0)
if (rank == -1)
success = DbManager.BuildingQueries.DELETE_FROM_DATABASE(building);
else
success = DbManager.BuildingQueries.updateBuildingRank(building, rank);
+2 -2
View File
@@ -13,9 +13,9 @@ import engine.InterestManagement.WorldGrid;
import engine.db.archive.BaneRecord;
import engine.db.archive.PvpRecord;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.Dispatch;
import engine.net.MessageDispatcher;
import engine.net.client.ClientConnection;
@@ -94,7 +94,7 @@ public enum ChatManager {
PlayerBonuses bonus = pc.getBonuses();
if (bonus != null && bonus.getBool(ModType.Silenced, SourceType.None)) {
if (bonus != null && bonus.getBool(ModType.Silenced, EffectSourceType.None)) {
ChatManager.chatSayError(pc, SILENCED);
return true;
}
+7 -7
View File
@@ -67,7 +67,7 @@ public enum CombatManager {
case PlayerCharacter:
case Mob:
PlayerBonuses bonuses = ((AbstractCharacter) target).getBonuses();
if (bonuses != null && bonuses.getBool(mbEnums.ModType.ImmuneToAttack, mbEnums.SourceType.None))
if (bonuses != null && bonuses.getBool(mbEnums.ModType.ImmuneToAttack, mbEnums.EffectSourceType.None))
return;
break;
case NPC:
@@ -143,7 +143,7 @@ public enum CombatManager {
if (weapon != null) {
if (bonus != null)
rangeMod += bonus.getFloatPercentAll(mbEnums.ModType.WeaponRange, mbEnums.SourceType.None);
rangeMod += bonus.getFloatPercentAll(mbEnums.ModType.WeaponRange, mbEnums.EffectSourceType.None);
attackRange += weapon.template.item_weapon_max_range * rangeMod;
}
@@ -204,11 +204,11 @@ public enum CombatManager {
float wepSpeed = (int) (weapon.template.item_weapon_wepspeed);
if (weapon.getBonusPercent(mbEnums.ModType.WeaponSpeed, mbEnums.SourceType.None) != 0f) //add weapon speed bonus
wepSpeed *= (1 + weapon.getBonus(mbEnums.ModType.WeaponSpeed, mbEnums.SourceType.None));
if (weapon.getBonusPercent(mbEnums.ModType.WeaponSpeed, mbEnums.EffectSourceType.None) != 0f) //add weapon speed bonus
wepSpeed *= (1 + weapon.getBonus(mbEnums.ModType.WeaponSpeed, mbEnums.EffectSourceType.None));
if (attacker.getBonuses() != null && attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.SourceType.None) != 0f) //add effects speed bonus
wepSpeed *= (1 + attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.SourceType.None));
if (attacker.getBonuses() != null && attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.EffectSourceType.None) != 0f) //add effects speed bonus
wepSpeed *= (1 + attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.EffectSourceType.None));
if (wepSpeed < 10)
wepSpeed = 10; //Old was 10, but it can be reached lower with legit buffs,effects.
@@ -641,7 +641,7 @@ public enum CombatManager {
float damage;
float min = 40;
float max = 60;
float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(mbEnums.ModType.MeleeDamageModifier, mbEnums.SourceType.None);
float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(mbEnums.ModType.MeleeDamageModifier, mbEnums.EffectSourceType.None);
double minDmg = getMinDmg(min, agent);
double maxDmg = getMaxDmg(max, agent);
dmgMultiplier += agent.getLevel() * 0.1f;
-10
View File
@@ -11,9 +11,6 @@ package engine.gameManager;
import engine.mbEnums;
import engine.server.login.LoginServer;
import engine.server.world.WorldServer;
import engine.wpak.EffectsParser;
import engine.wpak.PowerActionParser;
import engine.wpak.PowersParser;
import org.pmw.tinylog.Logger;
import java.io.BufferedReader;
@@ -167,13 +164,6 @@ public enum ConfigManager {
Logger.info("Compiling regex");
regex.put(MB_LOGIN_FNAME_REGEX, Pattern.compile(MB_LOGIN_FNAME_REGEX.getValue()));
Logger.info("Loading WPAK data");
//EffectsParser.parseWpakFile();
//PowersParser.parseWpakFile();
//PowerActionParser.parseWpakFile();
return true;
}
+2
View File
@@ -69,6 +69,8 @@ public enum DbManager {
public static final dbBlueprintHandler BlueprintQueries = new dbBlueprintHandler();
public static final dbShrineHandler ShrineQueries = new dbShrineHandler();
public static final dbRunegateHandler RunegateQueries = new dbRunegateHandler();
public static final dbPowerHandler PowerQueries = new dbPowerHandler();
public static final dbPetitionHandler PetitionQueries = new dbPetitionHandler();
private static final EnumMap<GameObjectType, ConcurrentHashMap<Integer, AbstractGameObject>> objectCache = new EnumMap<>(GameObjectType.class);
public static Hasher hasher;
+2 -2
View File
@@ -265,12 +265,12 @@ public enum ForgeManager implements Runnable {
// Assign a prefix and suffix to this item if random rolled
if (workOrder.prefixToken == 0 && workOrder.vendor.getItemModTable().contains((template.modTable)))
if (workOrder.prefixToken == 0)
forgedItem.prefixToken = calcRandomMod(workOrder.vendor, mbEnums.ItemModType.PREFIX, template.modTable);
else
forgedItem.prefixToken = workOrder.prefixToken;
if (workOrder.suffixToken == 0 && workOrder.vendor.getItemModTable().contains((template.modTable)))
if (workOrder.suffixToken == 0)
forgedItem.suffixToken = calcRandomMod(workOrder.vendor, mbEnums.ItemModType.SUFFIX, template.modTable);
else
forgedItem.suffixToken = workOrder.suffixToken;
+3 -3
View File
@@ -14,9 +14,9 @@ import engine.math.Vector3f;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.DispatchChannel;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.ClientConnection;
import engine.net.client.msg.MoveToPointMsg;
import engine.net.client.msg.TeleportToPointMsg;
@@ -74,7 +74,7 @@ public enum MovementManager {
toMove.setIsCasting(false);
toMove.setItemCasting(false);
if (toMove.getBonuses().getBool(ModType.Stunned, SourceType.None) || toMove.getBonuses().getBool(ModType.CannotMove, SourceType.None)) {
if (toMove.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) || toMove.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None)) {
return;
}
@@ -390,7 +390,7 @@ public enum MovementManager {
//don't move if player is stunned or rooted
PlayerBonuses bonus = member.getBonuses();
if (bonus.getBool(ModType.Stunned, SourceType.None) || bonus.getBool(ModType.CannotMove, SourceType.None))
if (bonus.getBool(ModType.Stunned, EffectSourceType.None) || bonus.getBool(ModType.CannotMove, EffectSourceType.None))
continue;
member.update();
+51 -161
View File
@@ -10,6 +10,8 @@ package engine.gameManager;
import engine.InterestManagement.Terrain;
import engine.InterestManagement.WorldGrid;
import engine.db.handlers.dbEffectsBaseHandler;
import engine.db.handlers.dbPowerHandler;
import engine.db.handlers.dbSkillReqHandler;
import engine.job.AbstractJob;
import engine.job.AbstractScheduleJob;
@@ -27,14 +29,8 @@ import engine.net.client.ClientConnection;
import engine.net.client.msg.*;
import engine.objects.*;
import engine.powers.*;
import engine.powers.poweractions.*;
import engine.powers.poweractions.AbstractPowerAction;
import engine.server.MBServerStatics;
import engine.wpak.EffectsParser;
import engine.wpak.PowerActionParser;
import engine.wpak.PowersParser;
import engine.wpak.WpakPowerManager;
import engine.wpak.data.Effect;
import engine.wpak.data.PowerAction;
import org.pmw.tinylog.Logger;
import java.util.ArrayList;
@@ -57,6 +53,7 @@ public enum PowersManager {
public static HashMap<String, AbstractPowerAction> powerActionsByIDString = new HashMap<>();
public static HashMap<Integer, AbstractPowerAction> powerActionsByID = new HashMap<>();
public static HashMap<String, Integer> ActionTokenByIDString = new HashMap<>();
public static HashMap<String, Integer> AnimationOverrides = new HashMap<>();
public static HashMap<Integer, ArrayList<RunePowerEntry>> _allRunePowers;
public static HashMap<Integer, ArrayList<RuneSkillAdjustEntry>> _allRuneSkillAdjusts;
public static HashMap<String, HashMap<ResourceType, Integer>> _effect_costMaps = new HashMap<>();
@@ -115,150 +112,33 @@ public enum PowersManager {
return powerEntries;
}
public static void InitializeEffects(){
// Add EffectsBase
ArrayList<EffectsBase> effectList = new ArrayList<>();
for (Effect entry : WpakPowerManager.effect_data.values()) {
EffectsBase effectBase = new EffectsBase(entry);
effectList.add(effectBase);
PowersManager.effectsBaseByToken.put(effectBase.getToken(), effectBase);
PowersManager.effectsBaseByIDString.put(effectBase.getIDString(), effectBase);
}
}
public static void InitializePowerActions(){
// Add PowerActions
//AbstractPowerAction.getAllPowerActions(PowersManager.powerActionsByIDString, PowersManager.powerActionsByID, PowersManager.effectsBaseByIDString);
HashMap<String, EffectsBase> effects = PowersManager.effectsBaseByIDString;
for (PowerAction powerAction : WpakPowerManager.power_actions.values()) {
AbstractPowerAction apa;
String type = powerAction.action_type;
String IDString = powerAction.action_id;
int token = DbManager.hasher.SBStringHash(IDString);
//cache token, used for applying effects.
PowersManager.ActionTokenByIDString.put(IDString, token);
apa = null;
switch (type) {
default:
Logger.error("valid type not found for poweraction of ID" + IDString);
break;
case "ApplyEffect":
apa = new ApplyEffectPowerAction(powerAction, effects);
break;
case "ApplyEffects":
apa = new ApplyEffectsPowerAction(powerAction, effects);
break;
case "DeferredPower":
apa = new DeferredPowerPowerAction(powerAction, effects);
break;
case "DamageOverTime":
apa = new DamageOverTimePowerAction(powerAction, effects);
break;
case "Peek":
apa = new PeekPowerAction(powerAction);
break;
case "Charm":
apa = new CharmPowerAction(powerAction);
break;
case "Fear":
apa = new FearPowerAction(powerAction);
break;
case "Confusion":
apa = new ConfusionPowerAction(powerAction);
break;
case "RemoveEffect":
apa = new RemoveEffectPowerAction(powerAction);
break;
case "Track":
apa = new TrackPowerAction(powerAction, effects);
break;
case "DirectDamage":
apa = new DirectDamagePowerAction(powerAction, effects);
break;
case "Transform":
apa = new TransformPowerAction(powerAction, effects);
break;
case "CreateMob":
apa = new CreateMobPowerAction(powerAction);
break;
case "Invis":
apa = new InvisPowerAction(powerAction, effects);
break;
case "ClearNearbyAggro":
apa = new ClearNearbyAggroPowerAction(powerAction);
break;
case "MobRecall":
apa = new MobRecallPowerAction(powerAction);
break;
case "SetItemFlag":
apa = new SetItemFlagPowerAction(powerAction);
break;
case "SimpleDamage":
apa = new SimpleDamagePowerAction(powerAction);
break;
case "TransferStatOT":
apa = new TransferStatOTPowerAction(powerAction, effects);
break;
case "TransferStat":
apa = new TransferStatPowerAction(powerAction, effects);
break;
case "Teleport":
apa = new TeleportPowerAction(powerAction);
break;
case "TreeChoke":
apa = new TreeChokePowerAction(powerAction);
break;
case "Block":
apa = new BlockPowerAction(powerAction);
break;
case "Resurrect":
apa = new ResurrectPowerAction(powerAction);
break;
case "ClearAggro":
apa = new ClearAggroPowerAction(powerAction);
break;
case "ClaimMine":
apa = new ClaimMinePowerAction(powerAction);
break;
case "Recall":
apa = new RecallPowerAction(powerAction);
break;
case "SpireDisable":
apa = new SpireDisablePowerAction(powerAction);
break;
case "Steal":
apa = new StealPowerAction(powerAction);
break;
case "Summon":
apa = new SummonPowerAction(powerAction);
break;
case "RunegateTeleport":
apa = new RunegateTeleportPowerAction(powerAction);
break;
case "OpenGate":
apa = new OpenGatePowerAction(powerAction);
break;
}
PowersManager.powerActionsByIDString.put(IDString, apa);
}
}
// This pre-loads all powers and effects
public static void InitializePowers() {
EffectsParser.parseWpakFile();
PowersParser.parseWpakFile();
PowerActionParser.parseWpakFile();
// Add EffectsBase
ArrayList<EffectsBase> ebList = dbEffectsBaseHandler.getAllEffectsBase();
//Initialize Effects Data
InitializeEffects();
for (EffectsBase eb : ebList) {
PowersManager.effectsBaseByToken.put(eb.getToken(), eb);
PowersManager.effectsBaseByIDString.put(eb.getIDString(), eb);
//Initialize Power Actions
InitializePowerActions();
}
// Add Fail Conditions
EffectsBase.getFailConditions(PowersManager.effectsBaseByIDString);
// Add Modifiers to Effects
dbEffectsBaseHandler.cacheAllEffectModifiers();
// Add Source Types to Effects
dbPowerHandler.addAllSourceTypes();
dbPowerHandler.addAllAnimationOverrides();
// Add PowerActions
AbstractPowerAction.getAllPowerActions(PowersManager.powerActionsByIDString, PowersManager.powerActionsByID, PowersManager.effectsBaseByIDString);
// Load valid Item Flags
// AbstractPowerAction.loadValidItemFlags(PowersManager.powerActionsByIDString);
// get all PowersBase
ArrayList<PowersBase> pbList = dbSkillReqHandler.getAllPowersBase();
@@ -279,6 +159,16 @@ public enum PowersManager {
}
public static EffectsBase setEffectToken(int ID, int token) {
for (EffectsBase eb : PowersManager.effectsBaseByIDString.values()) {
if (eb.getUUID() == ID) {
eb.setToken(token);
return eb;
}
}
return null;
}
public static void usePower(final PerformActionMsg msg, ClientConnection origin,
boolean sendCastToSelf) {
@@ -458,8 +348,8 @@ public enum PowersManager {
// verify player is not stunned or prohibited from casting
PlayerBonuses bonus = playerCharacter.getBonuses();
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, SourceType.None) || bonus.getBool(ModType.CannotCast, SourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, EffectSourceType.None) || bonus.getBool(ModType.CannotCast, EffectSourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
return true;
// if moving make sure spell valid for movement
@@ -595,7 +485,7 @@ public enum PowersManager {
cost = 0;
if (bonus != null)
cost *= (1 + bonus.getFloatPercentAll(ModType.PowerCost, SourceType.None));
cost *= (1 + bonus.getFloatPercentAll(ModType.PowerCost, EffectSourceType.None));
if (playerCharacter.getAltitude() > 0)
cost *= 1.5f;
@@ -741,8 +631,8 @@ public enum PowersManager {
// verify player is in correct mode (combat/nonCombat)
// verify player is not stunned or prohibited from casting
PlayerBonuses bonus = caster.getBonuses();
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, SourceType.None) || bonus.getBool(ModType.CannotCast, SourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, EffectSourceType.None) || bonus.getBool(ModType.CannotCast, EffectSourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
return true;
// if moving make sure spell valid for movement
@@ -902,10 +792,10 @@ public enum PowersManager {
PlayerBonuses bonus = playerCharacter.getBonuses();
if (bonus != null) {
if (bonus.getBool(ModType.Stunned, SourceType.None))
if (bonus.getBool(ModType.Stunned, EffectSourceType.None))
return;
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
if (bonus.getBool(ModType.BlockedPowerType, sourceType)) {
finishRecycleTime(msg.getPowerUsedID(), playerCharacter, true);
return;
@@ -1067,7 +957,7 @@ public enum PowersManager {
// if (!stackType.equals("IgnoreStack")) {
if (target.getEffects().containsKey(stackType)) {
// remove any existing power that overrides
engine.objects.Effect ef = target.getEffects().get(stackType);
Effect ef = target.getEffects().get(stackType);
AbstractEffectJob effect = null;
if (ef != null) {
JobContainer jc = ef.getJobContainer();
@@ -1175,9 +1065,9 @@ public enum PowersManager {
// verify player is not stunned or power type is blocked
PlayerBonuses bonus = caster.getBonuses();
if (bonus != null) {
if (bonus.getBool(ModType.Stunned, SourceType.None))
if (bonus.getBool(ModType.Stunned, EffectSourceType.None))
return;
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
if (bonus.getBool(ModType.BlockedPowerType, sourceType))
return;
}
@@ -1239,7 +1129,7 @@ public enum PowersManager {
// if (!stackType.equals("IgnoreStack")) {
if (target.getEffects().containsKey(stackType)) {
// remove any existing power that overrides
engine.objects.Effect ef = target.getEffects().get(stackType);
Effect ef = target.getEffects().get(stackType);
AbstractEffectJob effect = null;
if (ef != null) {
JobContainer jc = ef.getJobContainer();
@@ -1553,7 +1443,7 @@ public enum PowersManager {
stackType = (stackType.equals("IgnoreStack")) ? Integer.toString(ab.getUUID()) : stackType;
if (target.getEffects().containsKey(stackType)) {
// remove any existing power that overrides
engine.objects.Effect ef = target.getEffects().get(stackType);
Effect ef = target.getEffects().get(stackType);
AbstractEffectJob effect = null;
if (ef != null) {
JobContainer jc = ef.getJobContainer();
@@ -1810,7 +1700,7 @@ public enum PowersManager {
PlayerCharacter pcc = (PlayerCharacter) awo;
PlayerBonuses bonuses = pcc.getBonuses();
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, SourceType.None)) {
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, EffectSourceType.None)) {
awolist.remove();
continue;
}
@@ -1960,7 +1850,7 @@ public enum PowersManager {
// Remove players who are in safe mode
PlayerCharacter pcc = (PlayerCharacter) awo;
PlayerBonuses bonuses = pcc.getBonuses();
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, SourceType.None)) {
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, EffectSourceType.None)) {
awolist.remove();
continue;
}
@@ -2000,7 +1890,7 @@ public enum PowersManager {
stackType = (stackType.equals("IgnoreStack")) ? Integer
.toString(toRemove.getUUID()) : stackType;
if (fromChant) {
engine.objects.Effect eff = awo.getEffects().get(stackType);
Effect eff = awo.getEffects().get(stackType);
if (eff != null)
eff.cancelJob(true);
} else
+2 -2
View File
@@ -11,9 +11,9 @@ package engine.jobs;
import engine.gameManager.PowersManager;
import engine.gameManager.SessionManager;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.PlayerBonuses;
@@ -52,7 +52,7 @@ public class ChantJob extends AbstractEffectJob {
PowersManager.finishEffectTime(this.source, this.target, this.action, this.trains);
if (AbstractWorldObject.IsAbstractCharacter(source))
((AbstractCharacter) source).cancelLastChant();
} else if (bonuses != null && bonuses.getBool(ModType.Silenced, SourceType.None)) {
} else if (bonuses != null && bonuses.getBool(ModType.Silenced, EffectSourceType.None)) {
PowersManager.finishEffectTime(this.source, this.target, this.action, this.trains);
if (AbstractWorldObject.IsAbstractCharacter(source))
((AbstractCharacter) source).cancelLastChant();
+2 -2
View File
@@ -12,8 +12,8 @@ package engine.jobs;
import engine.gameManager.PowersManager;
import engine.job.AbstractScheduleJob;
import engine.job.JobContainer;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.msg.ErrorPopupMsg;
import engine.objects.PlayerCharacter;
@@ -55,7 +55,7 @@ public class FinishSummonsJob extends AbstractScheduleJob {
return;
}
if (this.target.getBonuses() != null && this.target.getBonuses().getBool(ModType.BlockedPowerType, SourceType.SUMMON)) {
if (this.target.getBonuses() != null && this.target.getBonuses().getBool(ModType.BlockedPowerType, EffectSourceType.Summon)) {
ErrorPopupMsg.sendErrorMsg(this.target, "You have been blocked from receiving summons!");
ErrorPopupMsg.sendErrorMsg(this.source, "Target is blocked from receiving summons!");
return;
-1
View File
@@ -14,7 +14,6 @@ import engine.job.AbstractScheduleJob;
import engine.net.client.msg.PerformActionMsg;
import engine.objects.PlayerCharacter;
import engine.powers.PowersBase;
import engine.wpak.data.Power;
public class UsePowerJob extends AbstractScheduleJob {
-44
View File
@@ -1,44 +0,0 @@
// ·. · · · · .
// · ·
// · ·
//
// · · ·
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.jobs;
import engine.gameManager.PowersManager;
import engine.job.AbstractScheduleJob;
import engine.net.client.msg.PerformActionMsg;
import engine.objects.AbstractWorldObject;
import engine.objects.PlayerCharacter;
import engine.powers.PowersBase;
import engine.wpak.WpakPowerManager;
import engine.wpak.data.Power;
public class WpakUsePowerJob extends AbstractScheduleJob {
private final PlayerCharacter pc;
private final PerformActionMsg msg;
private AbstractWorldObject target;
public WpakUsePowerJob(PlayerCharacter pc, PerformActionMsg msg, AbstractWorldObject tar) {
super();
this.pc = pc;
this.msg = msg;
this.target = tar;
}
@Override
protected void doJob() {
WpakPowerManager.finishUsePower(this.msg, this.pc,this.target);
}
@Override
protected void _cancelJob() {
//cast stopped early, reset recycle timer
PowersManager.finishRecycleTime(this.msg, this.pc, true);
}
}
+1 -2
View File
@@ -135,8 +135,7 @@ public class WorkOrder implements Delayed {
if (!workOrder.vendor.charItemManager.hasRoomInventory(template.item_wt))
return 30; //30: That person cannot carry that item
if ((workOrder.prefixToken != 0 || workOrder.suffixToken != 0) &&
!workOrder.vendor.getItemModTable().contains((template.modTable)))
if (!workOrder.vendor.getItemModTable().contains((template.modTable)))
return 59; //59: This hireling does not have this formula
if (!Warehouse.calcCostOverrun(workOrder).isEmpty())
+2 -229
View File
@@ -861,176 +861,6 @@ public class mbEnums {
}
}
public enum SourceType {
None,
Abjuration,
Acid,
AntiSiege,
Archery,
Axe,
Bardsong,
Beastcraft,
Benediction,
BladeWeaving,
Bleeding,
Blind,
Block,
Bloodcraft,
Bow,
Buff,
Channeling,
Charm,
Cold,
COLD,
Constitution,
Corruption,
Crossbow,
Crushing,
Dagger,
DaggerMastery,
DeBuff,
Dexterity,
Disease,
Dodge,
Dragon,
Drain,
Earth,
Effect,
Exorcism,
Fear,
Fire,
FIRE,
Fly,
Giant,
GreatAxeMastery,
GreatSwordMastery,
Hammer,
Heal,
Healing,
Holy,
HOLY,
ImmuneToAttack,
ImmuneToPowers,
Intelligence,
Invisible,
Lightning,
LIGHTNING,
Liturgy,
Magic,
MAGIC,
Mental,
MENTAL,
NatureLore,
Necromancy,
Parry,
Piercing,
Poison,
POISON,
PoleArm,
Powerblock,
Rat,
ResistDeBuff,
Restoration,
Root,
Shadowmastery,
Siege,
Slashing,
Snare,
Sorcery,
Spear,
SpearMastery,
Spirit,
Staff,
Stormcalling,
Strength,
Stun,
Summon,
Sword,
SwordMastery,
Thaumaturgy,
Theurgy,
Transform,
UnarmedCombat,
UnarmedCombatMastery,
Unholy,
UNHOLY,
Unknown,
Warding,
Warlockry,
WayoftheGaana,
WearArmorHeavy,
WearArmorLight,
WearArmorMedium,
Wereform,
Athletics,
AxeMastery,
Bargaining,
BladeMastery,
FlameCalling,
GreatHammerMastery,
HammerMastery,
Leadership,
PoleArmMastery,
Running,
StaffMastery,
Throwing,
Toughness,
WayoftheWolf,
WayoftheRat,
WayoftheBear,
Orthanatos,
SunDancing,
//Power categories.
AE,
AEDAMAGE,
BEHAVIOR,
BLESSING,
BOONCLASS,
BOONRACE,
BREAKFLY,
BUFF,
CHANT,
DAMAGE,
DEBUFF,
DISPEL,
FLIGHT,
GROUPBUFF,
GROUPHEAL,
HEAL,
INVIS,
MOVE,
RECALL,
SPECIAL,
SPIREDISABLE,
SPIREPROOFTELEPORT,
STANCE,
STUN,
SUMMON,
TELEPORT,
THIEF,
TRACK,
TRANSFORM,
VAMPDRAIN,
WEAPON,
Wizardry;
public static SourceType GetSourceType(String modName) {
SourceType returnMod;
if (modName.isEmpty())
return SourceType.None;
try {
returnMod = SourceType.valueOf(modName.replace(",", ""));
} catch (Exception e) {
Logger.error(modName);
Logger.error(e);
return SourceType.None;
}
return returnMod;
}
}
public enum EffectSourceType {
None,
AttackSpeedBuff,
@@ -1090,7 +920,7 @@ public class mbEnums {
WereformSPRecBuff,
WereformStrBuff;
public static EffectSourceType GetEffectSourceType(String modName) {
public static EffectSourceType getEffectSourceType(String modName) {
EffectSourceType returnMod;
if (modName.isEmpty())
return EffectSourceType.None;
@@ -2732,7 +2562,7 @@ public class mbEnums {
DIAMOND(1580010, 1540225085, -1730704107, 2000, 20),
GALVOR(1580017, -1683992404, -1596311545, 2000, 5),
IRON(1580002, -1673518119, 2504297, 2000, 20),
LUMBER(1580004, -1628412684, -1603256692, 10000, 100),
LUMBER(1580004, 1628412684, -1603256692, 10000, 100),
MANDRAKE(1580007, 1519910613, 1191391799, 1000, 10),
MITHRIL(1580021, 626743397, -1761257186, 500, 5),
OAK(1580005, -1653034775, 74767, 3000, 30),
@@ -3022,62 +2852,5 @@ public class mbEnums {
PREFIX,
SUFFIX;
}
public enum PowerType {
None,
SPELL,
SKILL;
}
public enum CostType {
NONE,
HEALTH,
MANA,
STAMINA;
}
public enum AreaType {
NONE,
SPHERE,
POINTBLANK,
LINE,
CONE,
WALL;
}
public enum ExcludeType {
NONE,
CASTER,
GROUP,
GUILD,
NATION,
PLAYERS,
ALLBUTGROUP,
ALLBUTPETS;
}
public enum CastingModeType {
NONE,
COMBAT,
NONCOMBAT,
BOTH;
}
public enum TargetSelectType {
NONE,
CLICK,
GROUP,
GUILD,
NEARBYMOBS,
NAME;
}
public enum CategoryToPowerType {
None,
GreaterThanOrEqualTo,
GreaterThan,
Always
}
}
+1 -1
View File
@@ -938,7 +938,7 @@ public class MobAI {
if (mob.isSit() && mob.getTimeStamp("HEALTHRECOVERED") < System.currentTimeMillis() + 3000)
if (mob.getHealth() < mob.getHealthMax()) {
float recoveredHealth = mob.getHealthMax() * ((1 + mob.getBonuses().getFloatPercentAll(mbEnums.ModType.HealthRecoverRate, mbEnums.SourceType.None)) * 0.01f);
float recoveredHealth = mob.getHealthMax() * ((1 + mob.getBonuses().getFloatPercentAll(mbEnums.ModType.HealthRecoverRate, mbEnums.EffectSourceType.None)) * 0.01f);
mob.setHealth(mob.getHealth() + recoveredHealth);
mob.getTimestamps().put("HEALTHRECOVERED", System.currentTimeMillis());
@@ -12,9 +12,9 @@ package engine.mobileAI.utilities;
import engine.gameManager.MovementManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.mobileAI.Threads.MobAIThread;
import engine.net.client.msg.MoveToPointMsg;
import engine.objects.*;
@@ -169,7 +169,7 @@ public class MovementUtilities {
if (agent.getMobBase() != null && agent.getMobBase().getFlags().contains(mbEnums.MobFlagType.SENTINEL))
return false;
return (agent.isAlive() && !agent.getBonuses().getBool(ModType.Stunned, SourceType.None) && !agent.getBonuses().getBool(ModType.CannotMove, SourceType.None));
return (agent.isAlive() && !agent.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) && !agent.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None));
}
public static Vector3fImmutable randomPatrolLocation(Mob agent, Vector3fImmutable center, float radius) {
@@ -58,7 +58,7 @@ public class RecvSummonsMsgHandler extends AbstractClientMsgHandler {
return true;
}
if (playerCharacter.getBonuses() != null && playerCharacter.getBonuses().getBool(mbEnums.ModType.BlockedPowerType, mbEnums.SourceType.SUMMON)) {
if (playerCharacter.getBonuses() != null && playerCharacter.getBonuses().getBool(mbEnums.ModType.BlockedPowerType, mbEnums.EffectSourceType.Summon)) {
ErrorPopupMsg.sendErrorMsg(playerCharacter, "You have been blocked from receiving summons!");
ErrorPopupMsg.sendErrorMsg(source, "Target is blocked from receiving summons!");
playerCharacter.removeSummoner(source.getObjectUUID());
@@ -89,7 +89,7 @@ public class RepairMsgHandler extends AbstractClientMsgHandler {
//account for durability modifications
float durMod = toRepair.getBonusPercent(mbEnums.ModType.Durability, mbEnums.SourceType.None);
float durMod = toRepair.getBonusPercent(mbEnums.ModType.Durability, mbEnums.EffectSourceType.None);
max *= (1 + (durMod * 0.01f));
if (dur >= max || dur < 1) {
@@ -86,15 +86,15 @@ public class TrackWindowMsgHandler extends AbstractClientMsgHandler {
if (ablist == null)
return true;
TrackPowerAction trackPowerAction = null;
TrackPowerAction tpa = null;
for (ActionsBase ab : ablist) {
AbstractPowerAction apa = ab.getPowerAction();
if (apa != null && apa instanceof TrackPowerAction)
trackPowerAction = (TrackPowerAction) apa;
tpa = (TrackPowerAction) apa;
}
if (trackPowerAction == null)
if (tpa == null)
return true;
// Check powers for normal users
@@ -111,16 +111,16 @@ public class TrackWindowMsgHandler extends AbstractClientMsgHandler {
int mask = 0;
if (pb.targetPlayer())
if (trackPowerAction.powerAction.trackEntry.filter.equals(mbEnums.MonsterType.Vampire)) // track vampires
if (tpa.trackVampire()) // track vampires
mask = MBServerStatics.MASK_PLAYER | MBServerStatics.MASK_UNDEAD;
else
// track all players
mask = MBServerStatics.MASK_PLAYER;
else if (pb.targetCorpse()) // track corpses
mask = MBServerStatics.MASK_CORPSE;
else if (trackPowerAction.powerAction.trackEntry.filter.equals(mbEnums.MonsterType.NPC)) // Track NPCs
else if (tpa.trackNPC()) // Track NPCs
mask = MBServerStatics.MASK_NPC;
else if (trackPowerAction.powerAction.trackEntry.filter.equals(mbEnums.MonsterType.Undead)) // Track Undead
else if (tpa.trackUndead()) // Track Undead
mask = MBServerStatics.MASK_MOB | MBServerStatics.MASK_UNDEAD;
else
// Track All
@@ -148,7 +148,7 @@ public class TrackWindowMsgHandler extends AbstractClientMsgHandler {
else if (awo.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter)) {
PlayerBonuses bonus = ((PlayerCharacter) awo).getBonuses();
if (bonus != null && bonus.getBool(mbEnums.ModType.CannotTrack, mbEnums.SourceType.None))
if (bonus != null && bonus.getBool(mbEnums.ModType.CannotTrack, mbEnums.EffectSourceType.None))
it.remove();
}
}
+30 -30
View File
@@ -527,7 +527,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
boolean canFly = false;
PlayerBonuses bonus = flyer.getBonuses();
if (bonus != null && !bonus.getBool(ModType.NoMod, SourceType.Fly) && bonus.getBool(ModType.Fly, SourceType.None) && flyer.isAlive())
if (bonus != null && !bonus.getBool(ModType.NoMod, EffectSourceType.Flight) && bonus.getBool(ModType.Fly, EffectSourceType.None) && flyer.isAlive())
canFly = true;
return canFly;
@@ -613,10 +613,10 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
if (abstractCharacter.bonuses != null) {
// add any bonuses
defense += (short) abstractCharacter.bonuses.getFloat(ModType.DCV, SourceType.None);
defense += (short) abstractCharacter.bonuses.getFloat(ModType.DCV, EffectSourceType.None);
// Finally multiply any percent modifiers. DO THIS LAST!
float pos_Bonus = abstractCharacter.bonuses.getFloatPercentPositive(ModType.DCV, SourceType.None);
float pos_Bonus = abstractCharacter.bonuses.getFloatPercentPositive(ModType.DCV, EffectSourceType.None);
defense = (short) (defense * (1 + pos_Bonus));
//Lucky rune applies next
@@ -625,7 +625,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
//and negative percent modifiers
//already done...
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.DCV, SourceType.None);
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.DCV, EffectSourceType.None);
defense = (short) (defense * (1 + neg_Bonus));
} else
@@ -728,7 +728,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
abstractCharacter.rangeHandTwo = weapon.template.item_weapon_max_range * (1 + (abstractCharacter.statStrBase / 600));
if (abstractCharacter.bonuses != null) {
float range_bonus = 1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponRange, SourceType.None);
float range_bonus = 1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponRange, EffectSourceType.None);
if (mainHand)
abstractCharacter.rangeHandOne *= range_bonus;
@@ -772,10 +772,10 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
// add in any bonuses to atr
if (abstractCharacter.bonuses != null) {
// Add any base bonuses
atr += abstractCharacter.bonuses.getFloat(ModType.OCV, SourceType.None);
atr += abstractCharacter.bonuses.getFloat(ModType.OCV, EffectSourceType.None);
// Finally use any multipliers. DO THIS LAST!
float pos_Bonus = (1 + abstractCharacter.bonuses.getFloatPercentPositive(ModType.OCV, SourceType.None));
float pos_Bonus = (1 + abstractCharacter.bonuses.getFloatPercentPositive(ModType.OCV, EffectSourceType.None));
atr *= pos_Bonus;
// next precise
@@ -783,7 +783,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
// atr *= (1 + ((float) this.bonuses.getShort("rune.Attack") / 100));
//and negative percent modifiers
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.OCV, SourceType.None);
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.OCV, EffectSourceType.None);
atr *= (1 + neg_Bonus);
}
@@ -803,7 +803,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
else
speed = 20f; //unarmed attack speed
if (weapon != null)
speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponSpeed, SourceType.None));
speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponSpeed, EffectSourceType.None));
PlayerBonuses bonuses = abstractCharacter.bonuses;
if (bonuses != null) {
@@ -823,7 +823,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
speed *= (1 + bonuses.bonusFloats.get(mod));
}
}
//speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.AttackDelay, SourceType.None));
//speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.AttackDelay, EffectSourceType.None));
if (speed < 10)
speed = 10;
@@ -832,22 +832,22 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
if (weapon != null) {
// Add any base bonuses
min += weapon.getBonus(ModType.MinDamage, SourceType.None);
max += weapon.getBonus(ModType.MaxDamage, SourceType.None);
min += weapon.getBonus(ModType.MinDamage, EffectSourceType.None);
max += weapon.getBonus(ModType.MaxDamage, EffectSourceType.None);
min += weapon.getBonus(ModType.MeleeDamageModifier, SourceType.None);
max += weapon.getBonus(ModType.MeleeDamageModifier, SourceType.None);
min += weapon.getBonus(ModType.MeleeDamageModifier, EffectSourceType.None);
max += weapon.getBonus(ModType.MeleeDamageModifier, EffectSourceType.None);
// Finally use any multipliers. DO THIS LAST!
float percentMinDamage = 1;
float percentMaxDamage = 1;
percentMinDamage += weapon.getBonusPercent(ModType.MinDamage, SourceType.None);
percentMinDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, SourceType.None);
percentMinDamage += weapon.getBonusPercent(ModType.MinDamage, EffectSourceType.None);
percentMinDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, EffectSourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MaxDamage, SourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, SourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MaxDamage, EffectSourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, EffectSourceType.None);
min *= percentMinDamage;
@@ -884,21 +884,21 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
// add in any bonuses to damage
if (abstractCharacter.bonuses != null) {
// Add any base bonuses
minDamage += abstractCharacter.bonuses.getFloat(ModType.MinDamage, SourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MaxDamage, SourceType.None);
minDamage += abstractCharacter.bonuses.getFloat(ModType.MinDamage, EffectSourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MaxDamage, EffectSourceType.None);
minDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, SourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, SourceType.None);
minDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, EffectSourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, EffectSourceType.None);
// Finally use any multipliers. DO THIS LAST!
float percentMinDamage = 1;
float percentMaxDamage = 1;
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MinDamage, SourceType.None);
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MinDamage, EffectSourceType.None);
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, EffectSourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MaxDamage, SourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MaxDamage, EffectSourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, EffectSourceType.None);
minDamage *= percentMinDamage;
maxDamage *= percentMaxDamage;
@@ -947,8 +947,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
//apply item defense bonuses
if (shield != null) {
def += shield.getBonus(ModType.DR, SourceType.None);
def *= (1 + shield.getBonusPercent(ModType.DR, SourceType.None));
def += shield.getBonus(ModType.DR, EffectSourceType.None);
def *= (1 + shield.getBonusPercent(ModType.DR, EffectSourceType.None));
}
@@ -991,8 +991,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
//apply item defense bonuses
if (armor != null) {
def += armor.getBonus(ModType.DR, SourceType.None);
def *= (1 + armor.getBonusPercent(ModType.DR, SourceType.None));
def += armor.getBonus(ModType.DR, EffectSourceType.None);
def *= (1 + armor.getBonusPercent(ModType.DR, EffectSourceType.None));
}
return (def * (1 + ((int) armorSkill.getModifiedAmount() / 50f)));
@@ -14,9 +14,9 @@ import engine.gameManager.DispatchManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.mobileAI.Threads.MobAIThread;
import engine.net.Dispatch;
import engine.net.client.msg.PetMsg;
@@ -141,7 +141,7 @@ public abstract class AbstractIntelligenceAgent extends AbstractCharacter {
float ret = MobAIThread.AI_BASE_AGGRO_RANGE;
if (this.bonuses != null)
ret *= (1 + this.bonuses.getFloatPercentAll(ModType.ScanRange, SourceType.None));
ret *= (1 + this.bonuses.getFloatPercentAll(ModType.ScanRange, EffectSourceType.None));
return ret;
}
+1 -1
View File
@@ -375,7 +375,7 @@ public abstract class AbstractWorldObject extends AbstractGameObject {
if (eff == null) {
continue;
}
if (eff.getEffectsBase().effectSources.contains(source) && trains >= eff.getTrains()) {
if (eff.containsSource(source) && trains >= eff.getTrains()) {
if (removeAll) {
//remove all effects of source type
if (eff.cancel()) {
+1 -1
View File
@@ -561,7 +561,7 @@ public class Building extends AbstractWorldObject {
BuildingManager.setRank(barracksBuilding, -1);
}
// If the tree is R8 and deranking, we need to update the
// If the tree is R8 and deranking, we need to update it's
// mesh along with buildings losing their health bonus
if (this.rank == 8) {
+7 -7
View File
@@ -11,8 +11,8 @@ package engine.objects;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.ByteBufferWriter;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
@@ -306,12 +306,12 @@ public class CharacterSkill extends AbstractGameObject {
PlayerBonuses bonus = ac.getBonuses();
if (bonus == null)
return atr;
atr += bonus.getFloat(ModType.OCV, SourceType.None);
float pos_Bonus = bonus.getFloatPercentPositive(ModType.OCV, SourceType.None);
atr += bonus.getFloat(ModType.OCV, EffectSourceType.None);
float pos_Bonus = bonus.getFloatPercentPositive(ModType.OCV, EffectSourceType.None);
atr *= (1 + pos_Bonus);
//rUNES will already be applied
// atr *= (1 + ((float)bonus.getShort("rune.Attack") / 100)); //precise
float neg_Bonus = bonus.getFloatPercentNegative(ModType.OCV, SourceType.None);
float neg_Bonus = bonus.getFloatPercentNegative(ModType.OCV, EffectSourceType.None);
atr *= (1 + neg_Bonus);
return atr;
}
@@ -462,7 +462,7 @@ public class CharacterSkill extends AbstractGameObject {
}
float bonus = 0f;
SourceType sourceType = SourceType.GetSourceType(sb.getNameNoSpace());
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(sb.getNameNoSpace());
if (pc.getBonuses() != null) {
//Get bonuses from runes
bonus = pc.getBonuses().getSkillBonus(sb.sourceType);
@@ -1103,7 +1103,7 @@ public class CharacterSkill extends AbstractGameObject {
statMod = 600f;
}
base += CharacterSkill.baseSkillValues[(int) statMod];
SourceType sourceType = SourceType.GetSourceType(this.skillsBase.getNameNoSpace());
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(this.skillsBase.getNameNoSpace());
//Get any rune, effect and item bonus
@@ -1217,7 +1217,7 @@ public class CharacterSkill extends AbstractGameObject {
return 0;
float bonus = 0f;
SourceType sourceType = SourceType.GetSourceType(this.skillsBase.getNameNoSpace());
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(this.skillsBase.getNameNoSpace());
if (CharacterSkill.GetOwner(this).getBonuses() != null) {
//Get bonuses from runes
bonus = CharacterSkill.GetOwner(this).getBonuses().getSkillBonus(this.skillsBase.sourceType);
+4 -25
View File
@@ -41,7 +41,6 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class City extends AbstractWorldObject {
@@ -81,7 +80,6 @@ public class City extends AbstractWorldObject {
private String hash;
public Warehouse warehouse;
public Realm realm;
public AtomicBoolean isDestroyed = new AtomicBoolean(false);
/**
* ResultSet Constructor
@@ -308,21 +306,6 @@ public class City extends AbstractWorldObject {
if (city.parentZone == null)
continue;
// Can't teleport to something without a tree
if (city.getTOL() == null)
continue;
// No abandoned cities
if (city.getTOL().getGuild().isEmptyGuild())
continue;
// No destroyed cities
if (city.getTOL().getRank() == -1)
continue;
//can't repledge to a guild you're already part of
if (repledge && city.getGuild().equals(playerCharacter.guild))
@@ -1119,21 +1102,17 @@ public class City extends AbstractWorldObject {
public final void destroy() {
if (this.isDestroyed.compareAndSet(false, true)) {
Thread destroyCityThread = new Thread(new DestroyCityThread(this));
Thread destroyCityThread = new Thread(new DestroyCityThread(this));
destroyCityThread.setName("destroyCity:" + this.getParent().zoneName);
destroyCityThread.start();
} else
Logger.error("Attempt to destroy destroyed city");
destroyCityThread.setName("destroyCity:" + this.getName());
destroyCityThread.start();
}
public final void transfer(AbstractCharacter newOwner) {
Thread transferCityThread = new Thread(new TransferCityThread(this, newOwner));
transferCityThread.setName("TransferCity:" + this.getParent().zoneName);
transferCityThread.setName("TransferCity:" + this.getName());
transferCityThread.start();
}
+6
View File
@@ -433,6 +433,12 @@ public class Effect {
return duration;
}
public boolean containsSource(EffectSourceType source) {
if (this.eb != null)
return this.eb.containsSource(source);
return false;
}
public JobContainer getJobContainer() {
return this.jc;
}
+2 -2
View File
@@ -694,7 +694,7 @@ public class Item extends AbstractWorldObject {
this.bonuses.clear();
}
public float getBonus(ModType modType, SourceType sourceType) {
public float getBonus(ModType modType, EffectSourceType sourceType) {
int amount = 0;
for (AbstractEffectModifier modifier : this.getBonuses().keySet()) {
@@ -707,7 +707,7 @@ public class Item extends AbstractWorldObject {
return amount;
}
public float getBonusPercent(ModType modType, SourceType sourceType) {
public float getBonusPercent(ModType modType, EffectSourceType sourceType) {
int amount = 0;
for (AbstractEffectModifier modifier : this.getBonuses().keySet()) {
+2 -1
View File
@@ -220,7 +220,8 @@ public class Mine extends AbstractGameObject {
// Only inactive mines are returned.
for (Mine mine : Mine.mineMap.keySet()) {
if (mine.owningGuild.getObjectUUID() == guildID)
if (mine.owningGuild.getObjectUUID() == guildID &&
mine.isActive == false)
mineList.add(mine);
}
return mineList;
+18 -18
View File
@@ -708,19 +708,19 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
// TODO modify for equipment
if (this.bonuses != null) {
// modify for effects
strVal += this.bonuses.getFloat(ModType.Attr, SourceType.Strength);
dexVal += this.bonuses.getFloat(ModType.Attr, SourceType.Dexterity);
conVal += this.bonuses.getFloat(ModType.Attr, SourceType.Constitution);
intVal += this.bonuses.getFloat(ModType.Attr, SourceType.Intelligence);
spiVal += this.bonuses.getFloat(ModType.Attr, SourceType.Spirit);
strVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Strength);
dexVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Dexterity);
conVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Constitution);
intVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Intelligence);
spiVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Spirit);
// apply dex penalty for armor
// modify percent amounts. DO THIS LAST!
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit));
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Spirit));
}
// Set current stats
@@ -737,7 +737,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
float bonus = 1;
if (this.bonuses != null)
// get rune and effect bonuses
bonus *= (1 + this.bonuses.getFloatPercentAll(ModType.Speed, SourceType.None));
bonus *= (1 + this.bonuses.getFloatPercentAll(ModType.Speed, EffectSourceType.None));
if (this.isPlayerGuard())
switch (this.mobBase.getLoadID()) {
@@ -834,7 +834,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
if (!this.isMoving())
return;
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, SourceType.None) || this.getBonuses().getBool(ModType.CannotMove, SourceType.None)) {
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) || this.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None)) {
//Target is stunned or rooted. Don't move
this.stopMovement(this.getMovementLoc());
@@ -1070,15 +1070,15 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
// Apply any bonuses from runes and effects
if (this.bonuses != null) {
h += this.bonuses.getFloat(ModType.HealthFull, SourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, SourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, SourceType.None);
h += this.bonuses.getFloat(ModType.HealthFull, EffectSourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, EffectSourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, EffectSourceType.None);
//apply effects percent modifiers. DO THIS LAST!
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None));
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, EffectSourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, EffectSourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, EffectSourceType.None));
}
// Set max health, mana and stamina
+21 -21
View File
@@ -13,8 +13,8 @@ import engine.gameManager.ChatManager;
import engine.gameManager.ConfigManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.powers.DamageShield;
import engine.powers.EffectsBase;
import engine.powers.effectmodifiers.AbstractEffectModifier;
@@ -30,9 +30,9 @@ public class PlayerBonuses {
ConcurrentHashMap<AbstractEffectModifier, Float> bonusFloats = new ConcurrentHashMap<>();
private ConcurrentHashMap<AbstractEffectModifier, DamageShield> bonusDamageShields = new ConcurrentHashMap<>();
private ConcurrentHashMap<AbstractEffectModifier, String> bonusStrings = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashSet<SourceType>> bonusLists = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashMap<SourceType, Boolean>> bonusBools = new ConcurrentHashMap<>();
private ConcurrentHashMap<SourceType, Float> skillBonuses = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashSet<EffectSourceType>> bonusLists = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashMap<EffectSourceType, Boolean>> bonusBools = new ConcurrentHashMap<>();
private ConcurrentHashMap<EffectSourceType, Float> skillBonuses = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, Float> regens = new ConcurrentHashMap<>();
//If active == 0 then all gets come from the A list and all puts go to the B list
@@ -229,7 +229,7 @@ public class PlayerBonuses {
//Update seeInvis if needed
float seeInvis = this.getFloat(ModType.SeeInvisible, SourceType.None);
float seeInvis = this.getFloat(ModType.SeeInvisible, EffectSourceType.None);
if (pc.getSeeInvis() < seeInvis)
pc.setSeeInvis((short) seeInvis);
@@ -254,7 +254,7 @@ public class PlayerBonuses {
this.bonusStrings.remove(mod);
}
public void setList(ModType mod, HashSet<SourceType> val) {
public void setList(ModType mod, HashSet<EffectSourceType> val) {
if (!val.equals(null))
this.bonusLists.put(mod, val);
else
@@ -281,7 +281,7 @@ public class PlayerBonuses {
}
public boolean getBool(ModType modType, SourceType sourceType) {
public boolean getBool(ModType modType, EffectSourceType sourceType) {
if (this.bonusBools.containsKey(modType) == false)
return false;
@@ -293,7 +293,7 @@ public class PlayerBonuses {
}
public float getSkillBonus(SourceType sourceType) {
public float getSkillBonus(EffectSourceType sourceType) {
if (this.skillBonuses.containsKey(sourceType) == false)
return 0;
@@ -301,7 +301,7 @@ public class PlayerBonuses {
}
public float getFloat(ModType modType, SourceType sourceType) {
public float getFloat(ModType modType, EffectSourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
if (mod.getPercentMod() != 0)
@@ -317,7 +317,7 @@ public class PlayerBonuses {
return amount;
}
public float getFloatPercentPositive(ModType modType, SourceType sourceType) {
public float getFloatPercentPositive(ModType modType, EffectSourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -340,7 +340,7 @@ public class PlayerBonuses {
return amount;
}
public float getFloatPercentAll(ModType modType, SourceType sourceType) {
public float getFloatPercentAll(ModType modType, EffectSourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -365,7 +365,7 @@ public class PlayerBonuses {
}
public float getFloatPercentNullZero(ModType modType, SourceType sourceType) {
public float getFloatPercentNullZero(ModType modType, EffectSourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -382,7 +382,7 @@ public class PlayerBonuses {
return amount;
}
public float getFloatPercentNegative(ModType modType, SourceType sourceType) {
public float getFloatPercentNegative(ModType modType, EffectSourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -404,7 +404,7 @@ public class PlayerBonuses {
}
public HashSet<SourceType> getList(ModType modType) {
public HashSet<EffectSourceType> getList(ModType modType) {
if (this.bonusLists.containsKey(modType))
return this.bonusLists.get(modType);
else
@@ -442,7 +442,7 @@ public class PlayerBonuses {
for (ModType modType : this.bonusBools.keySet()) {
for (SourceType sourceType : this.bonusBools.get(modType).keySet()) {
for (EffectSourceType sourceType : this.bonusBools.get(modType).keySet()) {
ChatManager.chatSystemInfo(pc, modType.name() + "-" + sourceType.name() + " = " + this.bonusBools.get(modType).get(sourceType));
}
}
@@ -452,19 +452,19 @@ public class PlayerBonuses {
if (modType.equals(ModType.StaminaRecoverRate) || modType.equals(ModType.HealthRecoverRate) || modType.equals(ModType.ManaRecoverRate))
ChatManager.chatSystemInfo(pc, modType.name() + " = " + this.getRegen(modType));
else
for (SourceType sourceType : SourceType.values()) {
for (EffectSourceType sourceType : EffectSourceType.values()) {
float amount = this.getFloat(modType, sourceType);
float percentAmount = this.getFloatPercentPositive(modType, sourceType);
float percentAmountNegative = this.getFloatPercentNegative(modType, sourceType);
if (amount != 0)
ChatManager.chatSystemInfo(pc, modType.name() + "-" + (sourceType.equals(SourceType.None) == false ? sourceType.name() : "") + " = " + amount);
ChatManager.chatSystemInfo(pc, modType.name() + "-" + (sourceType.equals(EffectSourceType.None) == false ? sourceType.name() : "") + " = " + amount);
if (percentAmount != 0)
ChatManager.chatSystemInfo(pc, "Percent : " + modType.name() + "-" + (sourceType.equals(SourceType.None) == false ? sourceType.name() : "") + " = " + percentAmount);
ChatManager.chatSystemInfo(pc, "Percent : " + modType.name() + "-" + (sourceType.equals(EffectSourceType.None) == false ? sourceType.name() : "") + " = " + percentAmount);
if (percentAmountNegative != 0)
ChatManager.chatSystemInfo(pc, "Negative Percent : " + modType.name() + "-" + (sourceType.equals(SourceType.None) == false ? sourceType.name() : "") + " = " + percentAmountNegative);
ChatManager.chatSystemInfo(pc, "Negative Percent : " + modType.name() + "-" + (sourceType.equals(EffectSourceType.None) == false ? sourceType.name() : "") + " = " + percentAmountNegative);
}
}
@@ -472,11 +472,11 @@ public class PlayerBonuses {
}
public void setBool(ModType modType, SourceType sourceType, boolean val) {
public void setBool(ModType modType, EffectSourceType sourceType, boolean val) {
if (val == true) {
if (this.bonusBools.get(modType) == null) {
HashMap<SourceType, Boolean> sourceMap = new HashMap<>();
HashMap<EffectSourceType, Boolean> sourceMap = new HashMap<>();
this.bonusBools.put(modType, sourceMap);
}
+29 -29
View File
@@ -3093,7 +3093,7 @@ public class PlayerCharacter extends AbstractCharacter {
if (this.bonuses != null)
// get rune and effect bonuses
bonus += this.bonuses.getFloatPercentNullZero(ModType.Speed, SourceType.None);
bonus += this.bonuses.getFloatPercentNullZero(ModType.Speed, EffectSourceType.None);
// TODO get equip bonus
this.update();
@@ -3597,8 +3597,8 @@ public class PlayerCharacter extends AbstractCharacter {
//calculateModifiedStats();
//update hide and seeInvis levels
if (this.bonuses != null) {
this.hidden = (int) bonuses.getFloat(ModType.Invisible, SourceType.None);
this.seeInvis = (int) bonuses.getFloat(ModType.SeeInvisible, SourceType.None);
this.hidden = (int) bonuses.getFloat(ModType.Invisible, EffectSourceType.None);
this.seeInvis = (int) bonuses.getFloat(ModType.SeeInvisible, EffectSourceType.None);
} else {
this.hidden = (byte) 0;
this.seeInvis = (byte) 0;
@@ -3666,21 +3666,21 @@ public class PlayerCharacter extends AbstractCharacter {
// TODO modify for equipment
if (this.bonuses != null) {
// modify for effects
strVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Strength));
dexVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Dexterity));
conVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Constitution));
intVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Intelligence));
spiVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Spirit));
strVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Strength));
dexVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Dexterity));
conVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Constitution));
intVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Intelligence));
spiVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Spirit));
// apply dex penalty for armor
dexVal *= this.dexPenalty;
// modify percent amounts. DO THIS LAST!
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit));
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Spirit));
} else
// apply dex penalty for armor
@@ -3776,24 +3776,24 @@ public class PlayerCharacter extends AbstractCharacter {
wbOff = off.template;
//set block if block found
this.bonuses.setBool(ModType.Block, SourceType.None, false);
this.bonuses.setBool(ModType.Block, EffectSourceType.None, false);
if (this.baseClass != null && (this.baseClass.getObjectUUID() == 2500 || this.baseClass.getObjectUUID() == 2501))
if (off != null && off.template != null && ItemManager.isShield(off))
this.bonuses.setBool(ModType.Block, SourceType.None, true);
this.bonuses.setBool(ModType.Block, EffectSourceType.None, true);
//set dodge if rogue
if (this.baseClass != null && this.baseClass.getObjectUUID() == 2502)
this.bonuses.setBool(ModType.Dodge, SourceType.None, true);
this.bonuses.setBool(ModType.Dodge, EffectSourceType.None, true);
else
this.bonuses.setBool(ModType.Dodge, SourceType.None, false);
this.bonuses.setBool(ModType.Dodge, EffectSourceType.None, false);
//set parry if fighter or thief and no invalid weapon found
this.bonuses.setBool(ModType.Parry, SourceType.None, false);
this.bonuses.setBool(ModType.Parry, EffectSourceType.None, false);
if ((this.baseClass != null && this.baseClass.getObjectUUID() == 2500)
|| (this.promotionClass != null && this.promotionClass.getObjectUUID() == 2520))
if (wbMain == null || wbMain.item_weapon_max_range < MBServerStatics.RANGED_WEAPON_RANGE)
if (wbOff == null || wbOff.item_weapon_max_range < MBServerStatics.RANGED_WEAPON_RANGE)
this.bonuses.setBool(ModType.Parry, SourceType.None, true);
this.bonuses.setBool(ModType.Parry, EffectSourceType.None, true);
}
@@ -3892,13 +3892,13 @@ public class PlayerCharacter extends AbstractCharacter {
//apply effects
h += this.bonuses.getFloat(ModType.HealthFull, SourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, SourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, SourceType.None);
h += this.bonuses.getFloat(ModType.HealthFull, EffectSourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, EffectSourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, EffectSourceType.None);
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None));
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, EffectSourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, EffectSourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, EffectSourceType.None));
}
@@ -3933,11 +3933,11 @@ public class PlayerCharacter extends AbstractCharacter {
ModType modType = ModType.GetModType(type);
// must be allowed to use this passive
if (!this.bonuses.getBool(modType, SourceType.None))
if (!this.bonuses.getBool(modType, EffectSourceType.None))
return 0f;
// must not be stunned
if (this.bonuses.getBool(ModType.Stunned, SourceType.None))
if (this.bonuses.getBool(ModType.Stunned, EffectSourceType.None))
return 0f;
// Get base skill amount
@@ -3949,7 +3949,7 @@ public class PlayerCharacter extends AbstractCharacter {
amount = sk.getModifiedAmount();
// Add bonuses
amount += this.bonuses.getFloat(modType, SourceType.None);
amount += this.bonuses.getFloat(modType, EffectSourceType.None);
// Add item bonuses and return
if (type.equals(ModType.Dodge) && !fromCombat)
@@ -4383,7 +4383,7 @@ public class PlayerCharacter extends AbstractCharacter {
Vector3fImmutable newLoc = this.getMovementLoc();
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, SourceType.None) || this.getBonuses().getBool(ModType.CannotMove, SourceType.None)) {
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) || this.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None)) {
//Target is stunned or rooted. Don't move
this.stopMovement(newLoc);
return;
+30 -30
View File
@@ -12,8 +12,8 @@ package engine.objects;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
@@ -105,7 +105,7 @@ public class Resists {
PlayerBonuses bonus = target.getBonuses();
//see if there is a fortitude
float damageCap = bonus.getFloatPercentAll(ModType.DamageCap, SourceType.None);
float damageCap = bonus.getFloatPercentAll(ModType.DamageCap, EffectSourceType.None);
if (damageCap == 0f || type == mbEnums.DamageType.HEALING)
return damage;
@@ -117,7 +117,7 @@ public class Resists {
//let's see if valid damagetype to apply it
boolean exclusive;
HashSet<SourceType> forts = bonus.getList(ModType.IgnoreDamageCap);
HashSet<EffectSourceType> forts = bonus.getList(ModType.IgnoreDamageCap);
if (forts == null) {
exclusive = true;
forts = bonus.getList(ModType.ExclusiveDamageCap);
@@ -126,15 +126,15 @@ public class Resists {
if (forts == null || !isValidDamageCapType(forts, type, exclusive))
return damage;
float adjustedDamage = bonus.getFloatPercentAll(ModType.AdjustAboveDmgCap, SourceType.None);
float adjustedDamage = bonus.getFloatPercentAll(ModType.AdjustAboveDmgCap, EffectSourceType.None);
//Adjust damage down and return new amount
float aadc = 1 + adjustedDamage;
return capFire * aadc;
}
//Test if Damagetype is valid for foritude
private static boolean isValidDamageCapType(HashSet<SourceType> forts, mbEnums.DamageType damageType, boolean exclusive) {
for (SourceType fort : forts) {
private static boolean isValidDamageCapType(HashSet<EffectSourceType> forts, mbEnums.DamageType damageType, boolean exclusive) {
for (EffectSourceType fort : forts) {
mbEnums.DamageType dt = mbEnums.DamageType.getDamageType(fort.name());
if (dt.equals(mbEnums.DamageType.NONE))
@@ -327,7 +327,7 @@ public class Resists {
damage = handleFortitude(target, type, damage);
//calculate armor piercing
float ap = source.getBonuses().getFloatPercentAll(ModType.ArmorPiercing, SourceType.None);
float ap = source.getBonuses().getFloatPercentAll(ModType.ArmorPiercing, EffectSourceType.None);
float damageAfterResists = damage * (1 - (this.getResist(type, trains) * 0.01f) + ap);
//check to see if any damage absorbers should cancel
@@ -346,41 +346,41 @@ public class Resists {
if (rb != null) {
// Handle immunities
if (rb.getBool(ModType.ImmuneTo, SourceType.Stun))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Stun))
this.immuneTo.put(mbEnums.DamageType.STUN, true);
if (rb.getBool(ModType.ImmuneTo, SourceType.Blind))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Blind))
this.immuneTo.put(mbEnums.DamageType.BLINDNESS, true);
if (rb.getBool(ModType.ImmuneToAttack, SourceType.None))
if (rb.getBool(ModType.ImmuneToAttack, EffectSourceType.None))
this.immuneTo.put(mbEnums.DamageType.ATTACK, true);
if (rb.getBool(ModType.ImmuneToPowers, SourceType.None))
if (rb.getBool(ModType.ImmuneToPowers, EffectSourceType.None))
this.immuneTo.put(mbEnums.DamageType.POWERS, true);
if (rb.getBool(ModType.ImmuneTo, SourceType.Powerblock))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Powerblock))
this.immuneTo.put(mbEnums.DamageType.POWERINHIBITOR, true);
if (rb.getBool(ModType.ImmuneTo, SourceType.DeBuff))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.DeBuff))
this.immuneTo.put(mbEnums.DamageType.DEBUFF, true);
if (rb.getBool(ModType.ImmuneTo, SourceType.Fear))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Fear))
this.immuneTo.put(mbEnums.DamageType.FEAR, true);
if (rb.getBool(ModType.ImmuneTo, SourceType.Charm))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Charm))
this.immuneTo.put(mbEnums.DamageType.CHARM, true);
if (rb.getBool(ModType.ImmuneTo, SourceType.Root))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Root))
this.immuneTo.put(mbEnums.DamageType.ROOT, true);
if (rb.getBool(ModType.ImmuneTo, SourceType.Snare))
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Snare))
this.immuneTo.put(mbEnums.DamageType.SNARE, true);
// Handle resists
slash += rb.getFloat(ModType.Resistance, SourceType.Slashing);
crush += rb.getFloat(ModType.Resistance, SourceType.Crushing);
pierce += rb.getFloat(ModType.Resistance, SourceType.Piercing);
magic += rb.getFloat(ModType.Resistance, SourceType.Magic);
bleed += rb.getFloat(ModType.Resistance, SourceType.Bleeding);
poison += rb.getFloat(ModType.Resistance, SourceType.Poison);
mental += rb.getFloat(ModType.Resistance, SourceType.Mental);
holy += rb.getFloat(ModType.Resistance, SourceType.Holy);
unholy += rb.getFloat(ModType.Resistance, SourceType.Unholy);
lightning += rb.getFloat(ModType.Resistance, SourceType.Lightning);
fire += rb.getFloat(ModType.Resistance, SourceType.Fire);
cold += rb.getFloat(ModType.Resistance, SourceType.Cold);
healing += rb.getFloat(ModType.Resistance, SourceType.Healing); // DamageType.Healing.name());
slash += rb.getFloat(ModType.Resistance, EffectSourceType.Slashing);
crush += rb.getFloat(ModType.Resistance, EffectSourceType.Crushing);
pierce += rb.getFloat(ModType.Resistance, EffectSourceType.Piercing);
magic += rb.getFloat(ModType.Resistance, EffectSourceType.Magic);
bleed += rb.getFloat(ModType.Resistance, EffectSourceType.Bleeding);
poison += rb.getFloat(ModType.Resistance, EffectSourceType.Poison);
mental += rb.getFloat(ModType.Resistance, EffectSourceType.Mental);
holy += rb.getFloat(ModType.Resistance, EffectSourceType.Holy);
unholy += rb.getFloat(ModType.Resistance, EffectSourceType.Unholy);
lightning += rb.getFloat(ModType.Resistance, EffectSourceType.Lightning);
fire += rb.getFloat(ModType.Resistance, EffectSourceType.Fire);
cold += rb.getFloat(ModType.Resistance, EffectSourceType.Cold);
healing += rb.getFloat(ModType.Resistance, EffectSourceType.Heal); // DamageType.Healing.name());
}
+4 -4
View File
@@ -10,7 +10,7 @@
package engine.objects;
import engine.gameManager.DbManager;
import engine.mbEnums.SourceType;
import engine.mbEnums.EffectSourceType;
import engine.server.MBServerStatics;
import java.sql.ResultSet;
@@ -33,7 +33,7 @@ public class SkillsBase extends AbstractGameObject {
private final short conMod;
private final short intMod;
private final short spiMod;
public SourceType sourceType;
public EffectSourceType sourceType;
/**
* No Table ID Constructor
@@ -43,7 +43,7 @@ public class SkillsBase extends AbstractGameObject {
super();
this.name = name;
this.nameNoSpace = name.replace(" ", "");
this.sourceType = SourceType.GetSourceType(this.nameNoSpace.replace(",", ""));
this.sourceType = EffectSourceType.getEffectSourceType(this.nameNoSpace.replace(",", ""));
this.description = description;
this.token = token;
this.strMod = strMod;
@@ -79,7 +79,7 @@ public class SkillsBase extends AbstractGameObject {
this.name = rs.getString("name");
this.nameNoSpace = name.replace(" ", "");
this.description = rs.getString("description");
this.sourceType = SourceType.GetSourceType(this.nameNoSpace.replace("-", "").replace("\"", "").replace(",", ""));
this.sourceType = EffectSourceType.getEffectSourceType(this.nameNoSpace.replace("-", "").replace("\"", "").replace(",", ""));
this.token = rs.getInt("token");
this.strMod = rs.getShort("strMod");
this.dexMod = rs.getShort("dexMod");
+8 -5
View File
@@ -12,10 +12,13 @@ package engine.powers;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.mbEnums.StackType;
import engine.objects.*;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.PlayerBonuses;
import engine.objects.Runegate;
import engine.powers.poweractions.AbstractPowerAction;
import org.pmw.tinylog.Logger;
@@ -249,10 +252,10 @@ public class ActionsBase {
PlayerBonuses bonus = pcTarget.getBonuses();
if(vampDrain)
return bonus.getBool(ModType.BlockedPowerType, SourceType.VAMPDRAIN);
return bonus.getBool(ModType.BlockedPowerType, EffectSourceType.VAMPDRAIN);
if ((this.stackType.equals("Flight") && bonus.getBool(ModType.NoMod, SourceType.Fly)) ||
(this.stackType.equals("Track") && bonus.getBool(ModType.CannotTrack, SourceType.None))) {
if ((this.stackType.equals("Flight") && bonus.getBool(ModType.NoMod, EffectSourceType.Fly)) ||
(this.stackType.equals("Track") && bonus.getBool(ModType.CannotTrack, EffectSourceType.None))) {
return true;
}
+212 -366
View File
@@ -9,6 +9,7 @@
package engine.powers;
import engine.gameManager.DbManager;
import engine.gameManager.DispatchManager;
import engine.gameManager.PowersManager;
import engine.job.JobContainer;
@@ -23,58 +24,65 @@ import engine.mbEnums.PowerFailCondition;
import engine.net.Dispatch;
import engine.net.client.ClientConnection;
import engine.net.client.msg.ApplyEffectMsg;
import engine.objects.*;
import engine.powers.effectmodifiers.*;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Effect;
import engine.objects.PlayerCharacter;
import engine.powers.effectmodifiers.AbstractEffectModifier;
import engine.server.MBServerStatics;
import engine.util.Hasher;
import engine.wpak.data.ConditionEntry;
import engine.wpak.data.Effect;
import engine.wpak.data.ModifierEntry;
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.HashMap;
import java.util.HashSet;
import java.util.concurrent.ConcurrentHashMap;
public class EffectsBase {
private static final ConcurrentHashMap<String, String> itemEffectsByName = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
public static int NewID = 3000;
public int UUID;
public String IDString;
// public String name;
public int token;
public float amount;
public float amountRamp;
public static HashMap<Integer, HashSet<EffectSourceType>> effectSourceTypeMap = new HashMap<>();
public static HashMap<String, HashSet<AbstractEffectModifier>> modifiersMap = new HashMap<>();
public static HashMap<String, HashMap<String, ArrayList<String>>> OldEffectsMap = new HashMap<>();
public static HashMap<String, HashMap<String, ArrayList<String>>> NewEffectsMap = new HashMap<>();
public static HashMap<String, HashMap<String, ArrayList<String>>> ChangedEffectsMap = new HashMap<>();
public static HashMap<String, HashSet<PowerFailCondition>> EffectFailConditions = new HashMap<>();
public static HashMap<Integer, HashSet<mbEnums.DamageType>> EffectDamageTypes = new HashMap<>();
public static HashSet<AbstractEffectModifier> DefaultModifiers = new HashSet<>();
private static ConcurrentHashMap<String, String> itemEffectsByName = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
private static int NewID = 3000;
private int UUID;
private String IDString;
// private String name;
private int token;
private float amount;
private float amountRamp;
// flags
public boolean isItemEffect;
public boolean isSpireEffect;
public boolean ignoreNoMod;
public boolean dontSave;
public boolean cancelOnAttack = false;
public boolean cancelOnAttackSwing = false;
public boolean cancelOnCast = false;
public boolean cancelOnCastSpell = false;
public boolean cancelOnEquipChange = false;
public boolean cancelOnLogout = false;
public boolean cancelOnMove = false;
public boolean cancelOnNewCharm = false;
public boolean cancelOnSit = false;
public boolean cancelOnTakeDamage = false;
public boolean cancelOnTerritoryClaim = false;
public boolean cancelOnUnEquip = false;
public boolean useRampAdd;
public boolean isPrefix = false; //used by items
public boolean isSuffix = false; //used by items
public String name = "";
public float value = 0;
private boolean isItemEffect;
private boolean isSpireEffect;
private boolean ignoreMod;
private boolean dontSave;
private boolean cancelOnAttack = false;
private boolean cancelOnAttackSwing = false;
private boolean cancelOnCast = false;
private boolean cancelOnCastSpell = false;
private boolean cancelOnEquipChange = false;
private boolean cancelOnLogout = false;
private boolean cancelOnMove = false;
private boolean cancelOnNewCharm = false;
private boolean cancelOnSit = false;
private boolean cancelOnTakeDamage = false;
private boolean cancelOnTerritoryClaim = false;
private boolean cancelOnUnEquip = false;
private boolean useRampAdd;
private boolean isPrefix = false; //used by items
private boolean isSuffix = false; //used by items
private String name = "";
private float value = 0;
private ConcurrentHashMap<mbEnums.ResourceType, Integer> resourceCosts = new ConcurrentHashMap<>();
//loaded values from parser
public HashSet<EffectSourceType> effectSources = new HashSet<>();
public HashSet<AbstractEffectModifier> effectModifiers = new HashSet<>();
public HashSet<PowerFailCondition> effectFailCondition = new HashSet<>();
public HashSet<mbEnums.DamageType> effectDamageTypes = new HashSet<>();
private ConcurrentHashMap<String, Boolean> sourceTypes = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
/**
* No Table ID Constructor
@@ -83,110 +91,6 @@ public class EffectsBase {
}
/**
* EffectEntry Constructor
*/
public EffectsBase(Effect entry) {
this.IDString = entry.effect_id;
this.name = entry.effect_name;
this.token = Hasher.SBStringHash(entry.effect_name);
//override tokens for some effects like Safemode that use the Action Token instead of the effect Token,
switch (this.IDString) {
case "INVIS-D":
this.token = -1661751254;
break;
case "SafeMode":
this.token = -1661750486;
break;
}
this.isItemEffect = entry.isItemEffect;
this.isSpireEffect = entry.isSpireEffect;
this.ignoreNoMod = entry.ignoreNoMod;
this.dontSave = entry.dontSave;
if (this.IDString.startsWith("PRE-"))
this.isPrefix = true;
else if (this.IDString.startsWith("SUF-"))
this.isSuffix = true;
//load effect modifiers
for (ModifierEntry mod : entry.mods)
this.effectModifiers.add(getCombinedModifiers(null, mod, this, mod.type));
//load sources
for (String source : entry.sources)
this.effectSources.add(EffectSourceType.GetEffectSourceType(source));
//load fail conditions
for (ConditionEntry condition : entry.conditions) {
PowerFailCondition failCondition = PowerFailCondition.valueOf(condition.condition);
this.effectFailCondition.add(failCondition);
loadFailConditions(failCondition, this, condition);
//add all damage types
if(!condition.damageTypes.isEmpty())
this.effectDamageTypes.addAll(condition.damageTypes);
}
}
public static void loadFailConditions(PowerFailCondition failCondition, EffectsBase eb, ConditionEntry entry) {
if (failCondition == null || eb == null) {
return;
}
switch (failCondition) {
case TakeDamage:
eb.cancelOnTakeDamage = true;
eb.amount = entry.arg;
eb.amountRamp = (float) entry.curveType.getValue();
eb.useRampAdd = (float) entry.curveType.getValue() != 0;
break;
case Attack:
eb.cancelOnAttack = true;
break;
case AttackSwing:
eb.cancelOnAttackSwing = true;
break;
case Cast:
eb.cancelOnCast = true;
break;
case CastSpell:
eb.cancelOnCastSpell = true;
break;
case EquipChange:
eb.cancelOnEquipChange = true;
break;
case Logout:
eb.cancelOnLogout = true;
break;
case Move:
eb.cancelOnMove = true;
break;
case NewCharm:
eb.cancelOnNewCharm = true;
break;
case Sit:
eb.cancelOnSit = true;
break;
case TerritoryClaim:
eb.cancelOnTerritoryClaim = true;
break;
case UnEquip:
eb.cancelOnUnEquip = true;
break;
}
}
public EffectsBase(EffectsBase copyEffect, int newToken, String IDString) {
UUID = NewID++;
@@ -198,7 +102,7 @@ public class EffectsBase {
int flags = 0;
this.isItemEffect = ((flags & 1) != 0) ? true : false;
this.isSpireEffect = ((flags & 2) != 0) ? true : false;
this.ignoreNoMod = ((flags & 4) != 0) ? true : false;
this.ignoreMod = ((flags & 4) != 0) ? true : false;
this.dontSave = ((flags & 8) != 0) ? true : false;
if (this.IDString.startsWith("PRE-"))
@@ -213,7 +117,7 @@ public class EffectsBase {
this.amountRamp = copyEffect.amountRamp;
this.isItemEffect = copyEffect.isItemEffect;
this.isSpireEffect = copyEffect.isSpireEffect;
this.ignoreNoMod = copyEffect.ignoreNoMod;
this.ignoreMod = copyEffect.ignoreMod;
this.dontSave = copyEffect.dontSave;
this.cancelOnAttack = copyEffect.cancelOnAttack;
this.cancelOnAttackSwing = copyEffect.cancelOnAttackSwing;
@@ -259,7 +163,7 @@ public class EffectsBase {
int flags = rs.getInt("flags");
this.isItemEffect = ((flags & 1) != 0) ? true : false;
this.isSpireEffect = ((flags & 2) != 0) ? true : false;
this.ignoreNoMod = ((flags & 4) != 0) ? true : false;
this.ignoreMod = ((flags & 4) != 0) ? true : false;
this.dontSave = ((flags & 8) != 0) ? true : false;
if (this.IDString.startsWith("PRE-"))
@@ -269,6 +173,113 @@ public class EffectsBase {
// getFailConditions();
}
public static void getFailConditions(HashMap<String, EffectsBase> effects) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_failcondition WHERE powerOrEffect = 'Effect';")) {
ResultSet rs = preparedStatement.executeQuery();
PowerFailCondition failCondition = null;
while (rs.next()) {
String fail = rs.getString("type");
String IDString = rs.getString("IDString");
failCondition = PowerFailCondition.valueOf(fail);
if (failCondition == null) {
Logger.error("Couldn't Find FailCondition " + fail + " for " + IDString);
continue;
}
if (EffectsBase.EffectFailConditions.get(IDString) == null) {
EffectsBase.EffectFailConditions.put(IDString, new HashSet<>());
}
EffectsBase.EffectFailConditions.get(IDString).add(failCondition);
EffectsBase eb = effects.get(IDString);
switch (failCondition) {
case TakeDamage:
// dont go any further.
if (eb == null)
break;
eb.cancelOnTakeDamage = true;
eb.amount = rs.getFloat("amount");
eb.amountRamp = rs.getFloat("ramp");
eb.useRampAdd = rs.getBoolean("UseAddFormula");
String damageType1 = rs.getString("damageType1");
String damageType2 = rs.getString("damageType2");
String damageType3 = rs.getString("damageType3");
if (damageType1.isEmpty() && damageType2.isEmpty() && damageType3.isEmpty())
break;
if (!EffectsBase.EffectDamageTypes.containsKey(eb.getToken()))
EffectsBase.EffectDamageTypes.put(eb.getToken(), new HashSet<>());
mbEnums.DamageType dt = mbEnums.DamageType.getDamageType(damageType1);
if (dt != null)
EffectsBase.EffectDamageTypes.get(eb.token).add(dt);
dt = mbEnums.DamageType.getDamageType(damageType2);
if (dt != null)
EffectsBase.EffectDamageTypes.get(eb.token).add(dt);
dt = mbEnums.DamageType.getDamageType(damageType3);
if (dt != null)
EffectsBase.EffectDamageTypes.get(eb.token).add(dt);
break;
case Attack:
eb.cancelOnAttack = true;
break;
case AttackSwing:
eb.cancelOnAttackSwing = true;
break;
case Cast:
eb.cancelOnCast = true;
break;
case CastSpell:
eb.cancelOnCastSpell = true;
break;
case EquipChange:
eb.cancelOnEquipChange = true;
break;
case Logout:
eb.cancelOnLogout = true;
break;
case Move:
eb.cancelOnMove = true;
break;
case NewCharm:
eb.cancelOnNewCharm = true;
break;
case Sit:
eb.cancelOnSit = true;
break;
case TerritoryClaim:
eb.cancelOnTerritoryClaim = true;
break;
case UnEquip:
eb.cancelOnUnEquip = true;
break;
}
}
rs.close();
} catch (Exception e) {
Logger.error(e);
}
}
public static String getItemEffectsByName(String string) {
if (EffectsBase.itemEffectsByName.containsKey(string))
return EffectsBase.itemEffectsByName.get(string);
@@ -292,12 +303,14 @@ public class EffectsBase {
public boolean damageTypeSpecific() {
return !this.effectDamageTypes.isEmpty();
return EffectsBase.EffectDamageTypes.containsKey(this.token);
}
public boolean containsDamageType(mbEnums.DamageType dt) {
return this.effectDamageTypes.contains(dt);
if (!EffectsBase.EffectDamageTypes.containsKey(this.token))
return false;
return EffectsBase.EffectDamageTypes.get(this.token).contains(dt);
}
public int getUUID() {
@@ -317,8 +330,32 @@ public class EffectsBase {
this.token = token;
}
public ConcurrentHashMap<String, Boolean> getSourceTypes() {
return this.sourceTypes;
}
public HashSet<AbstractEffectModifier> getModifiers() {
return this.effectModifiers;
if (EffectsBase.modifiersMap.containsKey(this.IDString) == false)
return EffectsBase.DefaultModifiers;
return EffectsBase.modifiersMap.get(this.IDString);
}
public boolean isItemEffect() {
return this.isItemEffect;
}
public boolean isSpireEffect() {
return this.isSpireEffect;
}
public boolean ignoreMod() {
return this.ignoreMod;
}
public boolean dontSave() {
return this.dontSave;
}
public boolean isPrefix() {
@@ -367,7 +404,7 @@ public class EffectsBase {
float duration = ab.getDurationInSeconds(trains);
if (pb.getToken() == 1672601862) {
engine.objects.Effect eff = awo.getEffects().get("DeathShroud");
Effect eff = awo.getEffects().get("DeathShroud");
if (eff != null) {
@@ -602,6 +639,13 @@ public class EffectsBase {
}
}
public boolean containsSource(EffectSourceType sourceType) {
if (EffectsBase.effectSourceTypeMap.containsKey(this.token) == false)
return false;
return EffectsBase.effectSourceTypeMap.get(this.token).contains(sourceType);
}
public boolean cancelOnAttack() {
return this.cancelOnAttack;
}
@@ -650,6 +694,16 @@ public class EffectsBase {
return this.cancelOnUnEquip;
}
public String getDamageTypes() {
String text = "";
if (!EffectsBase.EffectDamageTypes.containsKey(this.token))
return text;
for (mbEnums.DamageType type : EffectsBase.EffectDamageTypes.get(this.token)) {
text += type.name() + ' ';
}
return text;
}
public String getName() {
return name;
@@ -659,220 +713,12 @@ public class EffectsBase {
this.name = name;
}
public static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ModifierEntry rs, EffectsBase effectBase, mbEnums.ModType modifier){
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.value = valueEffect.minMod;
Item.addEnchantValue(effectBase.getIDString(), (int)valueEffect.minMod);
}
break;
case WeaponProc:
abstractEffectModifier = new WeaponProcEffectModifier(rs);
break;
case WeaponRange:
abstractEffectModifier = new WeaponRangeEffectModifier(rs);
break;
case WeaponSpeed:
abstractEffectModifier = new WeaponSpeedEffectModifier(rs);
break;
public float getValue() {
return value;
}
}
return abstractEffectModifier;
public void setValue(float Value) {
this.value = Value;
}
}
@@ -10,14 +10,13 @@
package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.powers.EffectsBase;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -26,7 +25,7 @@ import java.sql.SQLException;
public abstract class AbstractEffectModifier {
public float minMod;
public SourceType sourceType;
public EffectSourceType sourceType;
public ModType modType;
protected EffectsBase parent;
protected int UUID;
@@ -40,24 +39,22 @@ public abstract class AbstractEffectModifier {
protected String string1;
protected String string2;
public AbstractEffectModifier(ResultSet rs){
public AbstractEffectModifier(ResultSet rs) throws SQLException {
}
public AbstractEffectModifier(ModifierEntry mod) {
this.UUID = rs.getInt("ID");
this.IDString = rs.getString("IDString");
this.effectType = rs.getString("modType");
this.modType = ModType.GetModType(this.effectType);
this.type = rs.getString("type").replace("\"", "");
this.sourceType = EffectSourceType.getEffectSourceType(this.type.replace(" ", "").replace("-", ""));
this.minMod = rs.getFloat("minMod");
this.maxMod = rs.getFloat("maxMod");
this.percentMod = rs.getFloat("percentMod");
this.ramp = rs.getFloat("ramp");
this.useRampAdd = (rs.getInt("useRampAdd") == 1) ? true : false;
this.IDString = mod.type.name();
this.effectType = mod.type.name();
this.modType = mod.type;
this.type = mod.type.name().replace("\"", "");
this.sourceType = SourceType.GetSourceType(this.type.replace(" ", "").replace("-", ""));
this.minMod = mod.min;
this.maxMod = mod.max;
this.percentMod = mod.value;
this.ramp = (float)mod.compoundCurveType.getValue();
this.useRampAdd = (float)mod.compoundCurveType.getValue() != 0;
this.string1 = mod.arg1;
this.string2 = mod.arg2;
this.string1 = rs.getString("string1");
this.string2 = rs.getString("string2");
}
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -19,7 +18,7 @@ import java.sql.SQLException;
public class AdjustAboveDmgCapEffectModifier extends AbstractEffectModifier {
public AdjustAboveDmgCapEffectModifier(ModifierEntry rs){
public AdjustAboveDmgCapEffectModifier(ResultSet rs) throws SQLException {
super(rs);
}
@@ -10,10 +10,9 @@
package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,7 +20,7 @@ import java.sql.SQLException;
public class AmbidexterityEffectModifier extends AbstractEffectModifier {
public AmbidexterityEffectModifier(ModifierEntry rs) {
public AmbidexterityEffectModifier(ResultSet rs) throws SQLException {
super(rs);
}
@@ -33,7 +32,7 @@ public class AmbidexterityEffectModifier extends AbstractEffectModifier {
@Override
public void applyBonus(AbstractCharacter ac, int trains) {
PlayerBonuses bonus = ac.getBonuses();
bonus.setBool(ModType.Ambidexterity, SourceType.None, true);
bonus.setBool(ModType.Ambidexterity, EffectSourceType.None, true);
}
@Override
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -19,7 +18,7 @@ import java.sql.SQLException;
public class ArmorPiercingEffectModifier extends AbstractEffectModifier {
public ArmorPiercingEffectModifier(ModifierEntry rs){
public ArmorPiercingEffectModifier(ResultSet rs) throws SQLException {
super(rs);
}
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,9 +21,6 @@ public class AttackDelayEffectModifier extends AbstractEffectModifier {
public AttackDelayEffectModifier(ResultSet rs) throws SQLException {
super(rs);
}
public AttackDelayEffectModifier(ModifierEntry rs){
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class AttributeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public AttributeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -10,11 +10,9 @@
package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -27,10 +25,6 @@ public class BlackMantleEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BlackMantleEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -39,7 +33,7 @@ public class BlackMantleEffectModifier extends AbstractEffectModifier {
@Override
public void applyBonus(AbstractCharacter ac, int trains) {
PlayerBonuses bonus = ac.getBonuses();
SourceType sourceType = SourceType.valueOf(this.type);
EffectSourceType sourceType = EffectSourceType.valueOf(this.type);
if (sourceType == null) {
Logger.error("Bad Source Type for " + this.type);
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class BladeTrailsEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BladeTrailsEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class BlockEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BlockEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -12,7 +12,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.ModType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class BlockedPowerTypeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BlockedPowerTypeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -45,7 +40,7 @@ public class BlockedPowerTypeEffectModifier extends AbstractEffectModifier {
ModType toBlock = ModType.None;
switch (this.sourceType) {
case Invisible:
case Invisibility:
toBlock = ModType.Invisible;
break;
}
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class CannotAttackEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotAttackEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -12,7 +12,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,10 +23,6 @@ public class CannotCastEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotCastEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class CannotMoveEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotMoveEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class CannotTrackEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotTrackEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class CharmedEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CharmedEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class ConstrainedAmbidexterityEffectModifier extends AbstractEffectModifi
super(rs);
}
public ConstrainedAmbidexterityEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class DCVEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DCVEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class DREffectModifier extends AbstractEffectModifier {
super(rs);
}
public DREffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class DamageCapEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DamageCapEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -13,7 +13,6 @@ import engine.jobs.AbstractEffectJob;
import engine.mbEnums;
import engine.objects.*;
import engine.powers.DamageShield;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class DamageShieldEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DamageShieldEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class DodgeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DodgeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class DurabilityEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DurabilityEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class ExclusiveDamageCapEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ExclusiveDamageCapEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class FadeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public FadeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class FlyEffectModifier extends AbstractEffectModifier {
super(rs);
}
public FlyEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -13,14 +13,13 @@ import engine.gameManager.DispatchManager;
import engine.jobs.AbstractEffectJob;
import engine.jobs.DamageOverTimeJob;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.AbstractNetMsg;
import engine.net.client.msg.ModifyHealthKillMsg;
import engine.net.client.msg.ModifyHealthMsg;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -42,10 +41,6 @@ public class HealthEffectModifier extends AbstractEffectModifier {
}
}
public HealthEffectModifier(ModifierEntry rs) {
super(rs);
}
public static float getMinDamage(float baseMin, float intelligence, float spirit, float focus) {
float min = baseMin * (((float) Math.pow(intelligence, 0.75f) * 0.0311f) + (0.02f * (int) focus) + ((float) Math.pow(spirit, 0.75f) * 0.0416f));
return (float) ((int) (min + 0.5f)); //round to nearest whole number
@@ -159,7 +154,7 @@ public class HealthEffectModifier extends AbstractEffectModifier {
// Apply any power effect modifiers (such as stances)
if (bonus != null)
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None)));
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, EffectSourceType.None)));
}
if (modAmount == 0f)
return;
@@ -198,7 +193,7 @@ public class HealthEffectModifier extends AbstractEffectModifier {
}*/
PlayerBonuses bonus = ac.getBonuses();
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, EffectSourceType.Heal) >= trains) {
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
mhm.setUnknown03(5); //set target is immune
DispatchManager.sendToAllInRange(ac, mhm);
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class HealthFullEffectModifier extends AbstractEffectModifier {
super(rs);
}
public HealthFullEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class HealthRecoverRateEffectModifier extends AbstractEffectModifier {
super(rs);
}
public HealthRecoverRateEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class IgnoreDamageCapEffectModifier extends AbstractEffectModifier {
super(rs);
}
public IgnoreDamageCapEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class IgnorePassiveDefenseEffectModifier extends AbstractEffectModifier {
super(rs);
}
public IgnorePassiveDefenseEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ImmuneToAttackEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ImmuneToAttackEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ImmuneToEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ImmuneToEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ImmuneToPowersEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ImmuneToPowersEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -16,7 +16,6 @@ import engine.net.client.ClientConnection;
import engine.objects.*;
import engine.powers.ActionsBase;
import engine.powers.PowersBase;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -28,10 +27,6 @@ public class InvisibleEffectModifier extends AbstractEffectModifier {
super(rs);
}
public InvisibleEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -15,7 +15,6 @@ import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.powers.EffectsBase;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -123,10 +122,6 @@ public class ItemNameEffectModifier extends AbstractEffectModifier {
EffectsBase.addItemEffectsByName(n, IDString);
}
public ItemNameEffectModifier(ModifierEntry rs) {
super(rs);
}
public String getName() {
return this.name;
}
@@ -13,15 +13,14 @@ import engine.gameManager.DispatchManager;
import engine.jobs.AbstractEffectJob;
import engine.jobs.DamageOverTimeJob;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.msg.ModifyHealthMsg;
import engine.objects.*;
import engine.powers.ActionsBase;
import engine.powers.poweractions.AbstractPowerAction;
import engine.powers.poweractions.DamageOverTimePowerAction;
import engine.powers.poweractions.DirectDamagePowerAction;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -44,10 +43,6 @@ public class ManaEffectModifier extends AbstractEffectModifier {
}
}
public ManaEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
if (awo == null) {
@@ -119,7 +114,7 @@ public class ManaEffectModifier extends AbstractEffectModifier {
// Apply any power effect modifiers (such as stances)
if (bonus != null)
modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None));
modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, EffectSourceType.None));
}
if (modAmount == 0f)
return;
@@ -147,7 +142,7 @@ public class ManaEffectModifier extends AbstractEffectModifier {
}
}
PlayerBonuses bonus = ac.getBonuses();
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, EffectSourceType.Heal) >= trains) {
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
mhm.setUnknown03(5); //set target is immune
DispatchManager.sendToAllInRange(ac, mhm);
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ManaFullEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ManaFullEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ManaRecoverRateEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ManaRecoverRateEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class MaxDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public MaxDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class MeleeDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public MeleeDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class MinDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public MinDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -12,7 +12,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,10 +22,6 @@ public class NoModEffectModifier extends AbstractEffectModifier {
super(rs);
}
public NoModEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
//TODO check if anything needs removed.
@@ -38,7 +33,7 @@ public class NoModEffectModifier extends AbstractEffectModifier {
bonus.setBool(this.modType, this.sourceType, true);
switch (this.sourceType) {
case Fly:
case Flight:
if (!ac.getObjectType().equals(GameObjectType.PlayerCharacter))
return;
PlayerCharacter flyer = (PlayerCharacter) ac;
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class OCVEffectModifier extends AbstractEffectModifier {
super(rs);
}
public OCVEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ParryEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ParryEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class PassiveDefenseEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PassiveDefenseEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class PowerCostEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PowerCostEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class PowerCostHealthEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PowerCostHealthEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class PowerDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PowerDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ProtectionFromEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ProtectionFromEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ResistanceEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ResistanceEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class ScaleHeightEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ScaleHeightEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,7 +14,6 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,10 +24,6 @@ public class ScaleWidthEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ScaleWidthEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class ScanRangeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ScanRangeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class SeeInvisibleEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SeeInvisibleEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class SilencedEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SilencedEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class SkillEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SkillEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class SlayEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SlayEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class SpeedEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SpeedEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
//Logger.error(this.getSimpleClassName(), "Speed applied with " + trains + " trains");
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class SpireBlockEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SpireBlockEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -13,15 +13,14 @@ import engine.gameManager.DispatchManager;
import engine.jobs.AbstractEffectJob;
import engine.jobs.DamageOverTimeJob;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.msg.ModifyHealthMsg;
import engine.objects.*;
import engine.powers.ActionsBase;
import engine.powers.poweractions.AbstractPowerAction;
import engine.powers.poweractions.DamageOverTimePowerAction;
import engine.powers.poweractions.DirectDamagePowerAction;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -44,10 +43,6 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
}
}
public StaminaEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
if (awo == null) {
@@ -117,7 +112,7 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
// Apply any power effect modifiers (such as stances)
if (bonus != null)
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None)));
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, EffectSourceType.None)));
}
if (modAmount == 0f)
return;
@@ -145,7 +140,7 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
}
}
PlayerBonuses bonus = ac.getBonuses();
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, EffectSourceType.Heal) >= trains) {
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
mhm.setUnknown03(5); //set target is immune
DispatchManager.sendToAllInRange(ac, mhm);
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class StaminaFullEffectModifier extends AbstractEffectModifier {
super(rs);
}
public StaminaFullEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,7 +11,6 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,10 +21,6 @@ public class StaminaRecoverRateEffectModifier extends AbstractEffectModifier {
super(rs);
}
public StaminaRecoverRateEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {

Some files were not shown because too many files have changed in this diff Show More