use of am2.api.spell.enums.SpellModifiers in project ArsMagica2 by Mithion.
the class SpellUtils method getModifiedDouble_Mul.
// ==============================================================================
// Modifiers
// ==============================================================================
public double getModifiedDouble_Mul(double defaultValue, ItemStack stack, EntityLivingBase caster, Entity target, World world, int stage, SpellModifiers check) {
int ordinalCount = 0;
double modifiedValue = defaultValue;
for (ISpellModifier modifier : getModifiersForStage(stack, stage)) {
if (modifier.getAspectsModified().contains(check)) {
byte[] meta = getModifierMetadataFromStack(stack, modifier, stage, ordinalCount++);
modifiedValue *= modifier.getModifier(check, caster, target, world, meta);
}
}
if (caster instanceof EntityPlayer) {
if (SkillData.For((EntityPlayer) caster).isEntryKnown(SkillTreeManager.instance.getSkillTreeEntry(SkillManager.instance.getSkill("AugmentedCasting")))) {
modifiedValue *= 1.1f;
}
}
ModifierCalculatedEvent event = new ModifierCalculatedEvent(stack, caster, check, defaultValue, modifiedValue, OperationType.MULTIPLY);
MinecraftForge.EVENT_BUS.post(event);
return event.modifiedValue;
}
use of am2.api.spell.enums.SpellModifiers in project ArsMagica2 by Mithion.
the class SpellUtils method getModifiedInt_Add.
public int getModifiedInt_Add(int defaultValue, ItemStack stack, EntityLivingBase caster, Entity target, World world, int stage, SpellModifiers check) {
int ordinalCount = 0;
double modifiedValue = defaultValue;
for (ISpellModifier modifier : getModifiersForStage(stack, stage)) {
if (modifier.getAspectsModified().contains(check)) {
byte[] meta = getModifierMetadataFromStack(stack, modifier, stage, ordinalCount++);
modifiedValue += modifier.getModifier(check, caster, target, world, meta);
}
}
if (caster instanceof EntityPlayer) {
if (SkillData.For((EntityPlayer) caster).isEntryKnown(SkillTreeManager.instance.getSkillTreeEntry(SkillManager.instance.getSkill("AugmentedCasting")))) {
modifiedValue *= 1.1f;
}
}
ModifierCalculatedEvent event = new ModifierCalculatedEvent(stack, caster, check, defaultValue, modifiedValue, OperationType.ADD);
MinecraftForge.EVENT_BUS.post(event);
return (int) Math.ceil(event.modifiedValue);
}
use of am2.api.spell.enums.SpellModifiers in project ArsMagica2 by Mithion.
the class SpellUtils method getModifiedDouble_Add.
public double getModifiedDouble_Add(double defaultValue, ItemStack stack, EntityLivingBase caster, Entity target, World world, int stage, SpellModifiers check) {
int ordinalCount = 0;
double modifiedValue = defaultValue;
for (ISpellModifier modifier : getModifiersForStage(stack, stage)) {
if (modifier.getAspectsModified().contains(check)) {
byte[] meta = getModifierMetadataFromStack(stack, modifier, stage, ordinalCount++);
modifiedValue += modifier.getModifier(check, caster, target, world, meta);
}
}
if (caster instanceof EntityPlayer) {
if (SkillData.For((EntityPlayer) caster).isEntryKnown(SkillTreeManager.instance.getSkillTreeEntry(SkillManager.instance.getSkill("AugmentedCasting")))) {
modifiedValue *= 1.1f;
}
}
ModifierCalculatedEvent event = new ModifierCalculatedEvent(stack, caster, check, defaultValue, modifiedValue, OperationType.ADD);
MinecraftForge.EVENT_BUS.post(event);
return event.modifiedValue;
}
use of am2.api.spell.enums.SpellModifiers in project ArsMagica2 by Mithion.
the class TileEntityInscriptionTable method countModifiersInList.
private void countModifiersInList(ArrayList<ISpellPart> currentStage) {
for (ISpellPart part : currentStage) {
if (part instanceof ISpellModifier) {
EnumSet<SpellModifiers> modifiers = ((ISpellModifier) part).getAspectsModified();
for (SpellModifiers modifier : modifiers) {
int count = modifierCount.get(modifier) + 1;
modifierCount.put(modifier, count);
}
}
}
}
use of am2.api.spell.enums.SpellModifiers in project ArsMagica2 by Mithion.
the class CompendiumEntrySpellComponent method parseEx.
@Override
protected void parseEx(Node node) {
NodeList childNodes = node.getChildNodes();
for (int i = 0; i < childNodes.getLength(); ++i) {
Node child = childNodes.item(i);
if (child.getNodeName().equals("modifiedBy") && !child.getTextContent().isEmpty()) {
String[] modifierTypes = child.getTextContent().split(",");
ArrayList<SpellModifiers> list = new ArrayList<SpellModifiers>();
for (String s : modifierTypes) {
try {
SpellModifiers modifier = Enum.valueOf(SpellModifiers.class, s);
list.add(modifier);
} catch (Throwable t) {
LogHelper.debug("Compendium Parsing Error - No modifiable constant exists with the name '%s'", s);
}
}
this.modifiedBy = list.toArray(new SpellModifiers[list.size()]);
}
}
}
Aggregations