diff --git a/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java b/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java index 7bced2a7216deff5acdcf4550f67824310ecd7d4..9da25cc23750b35fcd8174b76169224cee87545e 100644 --- a/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java +++ b/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java @@ -1,12 +1,15 @@ package com.comandante.creeper.spells; +import com.comandante.creeper.Items.EffectBuilder; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.npc.Npc; import com.comandante.creeper.player.CoolDown; import com.comandante.creeper.player.CoolDownType; import com.comandante.creeper.player.Player; import com.comandante.creeper.server.Color; -import com.comandante.creeper.spells.SpellRunnable; +import com.comandante.creeper.stat.StatsBuilder; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import java.util.Arrays; import java.util.Optional; @@ -50,6 +53,8 @@ public class LightningSpellRunnable implements SpellRunnable { long intelligence = player.getPlayerStatsWithEquipmentAndLevel().getIntelligence(); long power = (player.getLevel() * 1) + (3 * intelligence); player.addActiveFight(npc); + long burnEffectPower = (long) ((player.getLevel() * .05) + (1 * intelligence)); + gameManager.getEffectsManager().applyEffectsToNpcs(player, Sets.newHashSet(npc), Sets.newHashSet(getBurnEffect(burnEffectPower, 2).createEffect())); npc.doHealthDamage(player, Arrays.asList(getDamageMessage(power, npc.getColorName())), -power); } @@ -62,10 +67,21 @@ public class LightningSpellRunnable implements SpellRunnable { } private String getDamageMessage(long amt, String name) { - return Color.BOLD_ON + Color.YELLOW + "[spell] " + Color.RESET + Color.YELLOW + "+" + amt + Color.RESET + Color.BOLD_ON + Color.RED + " DAMAGE " + Color.RESET + getAttackMessage() + Color.BOLD_ON + Color.RED + " >>>> " + Color.RESET + name; + return Color.BOLD_ON + Color.YELLOW + "[spell] " + Color.RESET'' + Color.YELLOW + "+" + amt + Color.RESET + Color.BOLD_ON + Color.RED + " DAMAGE " + Color.RESET + getAttackMessage() + Color.BOLD_ON + Color.RED + " >>>> " + Color.RESET + name; } private void announceSpellCastToCurrentRoom(Player player, String name) { gameManager.writeToPlayerCurrentRoom(player.getPlayerId(), player.getPlayerName() + Color.CYAN + " casts " + Color.RESET + "a " + Color.BOLD_ON + Color.WHITE + "[" + Color.RESET + getName() + Color.BOLD_ON + Color.WHITE + "]" + Color.RESET + " on " + name + "! \r\n"); } + + private EffectBuilder getBurnEffect(long amt, int ticksDuration) { + return new EffectBuilder() + .setEffectApplyMessages(Lists.newArrayList("You are " + Color.BOLD_ON + Color.RED + "burning" + Color.RESET + " from the lightning strike!")) + .setEffectDescription(Color.BOLD_ON + Color.YELLOW + "lightning" + Color.RESET + Color.BOLD_ON + Color.RED + " BURN" + Color.RESET) + .setEffectName(Color.BOLD_ON + Color.YELLOW + "lightning" + Color.RESET + Color.BOLD_ON + Color.RED + " BURN" + Color.RESET) + .setDurationStats(new StatsBuilder().createStats()) + .setApplyStatsOnTick(new StatsBuilder().setCurrentHealth(-amt).createStats()) + .setFrozenMovement(false) + .setLifeSpanTicks(ticksDuration); + } }