diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/Spell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/Spell.java index d82db6ce..4f9526b2 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/Spell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/Spell.java @@ -25,6 +25,11 @@ public interface Spell extends NbtSerialisable, Affine { */ SpellType getType(); + /** + * Gets the traits of this spell. + */ + SpellTraits getTraits(); + /** * The unique id of this particular spell instance. */ diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/AbstractSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/AbstractSpell.java index 40f75234..f8007985 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/AbstractSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/effect/AbstractSpell.java @@ -35,7 +35,7 @@ public abstract class AbstractSpell implements Spell { return type; } - protected SpellTraits getTraits() { + public final SpellTraits getTraits() { return traits == null ? SpellTraits.EMPTY : traits; } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java index 9fd4dfc0..28b1ff20 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/trait/SpellTraits.java @@ -48,6 +48,10 @@ public final class SpellTraits implements Iterable> { this(new EnumMap<>(from.traits)); } + public float getCorruption() { + return (float)stream().filter(e -> e.getValue() != 0).mapToDouble(e -> e.getKey().getGroup().getCorruption()).sum(); + } + public SpellTraits multiply(float factor) { return factor == 0 ? EMPTY : map(v -> v * factor); } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java index 07a426dd..d8152d21 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -606,6 +606,7 @@ public class Pony extends Living implements Transmittable, Copieab if (spell.getAffinity() == Affinity.BAD && entity.getWorld().random.nextInt(120) == 0) { getCorruption().add(1); } + getCorruption().add((int)spell.getTraits().getCorruption()); } setDirty(); }