diff --git a/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java b/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java
index 048b2bed3cb9e7540019de5b1d80eaf09665017a..6b1df152c4575d4db0b2f1abd57cd1c95ad255e9 100644
--- a/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java
+++ b/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java
@@ -50,14 +50,23 @@ public class LightningSpellRunnable implements SpellRunnable {
 
     private void executeSpellAgainstNpc(Player player, Npc npc) {
         announceSpellCastToCurrentRoom(player, npc.getColorName());
-        long intelligence = player.getPlayerStatsWithEquipmentAndLevel().getIntelligence();
-        long power = (player.getLevel() * 1) + (3 * intelligence);
+        Stats stats = player.getPlayerStatsWithEquipmentAndLevel();
+        long power = (player.getLevel() * 1) + (3 * stats.getIntelligence());
         player.addActiveFight(npc);
-        long burnEffectPower = (long) ((player.getLevel() * .05) + (1 * intelligence));
-        gameManager.getEffectsManager().applyEffectsToNpcs(player, Sets.newHashSet(npc), Sets.newHashSet(getBurnEffect(burnEffectPower, 2).createEffect()));
+        gameManager.getEffectsManager().applyEffectsToNpcs(player, Sets.newHashSet(npc), Sets.newHashSet(selectEffect(stats).createEffect()));
         npc.doHealthDamage(player, Arrays.asList(getDamageMessage(power, npc.getColorName())), -power);
     }
 
+    private EffectBuilder selectEffect(Stats stats) {
+        if (Math.random() < 0.1) {
+            long electrofiedPower = (long) ((stats.getLevel() * .3) + (5 * stats.getIntelligence()));
+            return getElectrofried(electrofiedPower, 4);
+        }
+        long burnEffectPower = (long) ((stats.getLevel() * .05) + (1 * stats.getIntelligence()));
+        return getBurnEffect(burnEffectPower, 2);
+
+    }
+
     private void executeSpellAgainstPlayer(Player player, Player destinationPlayer) {
 
     }
@@ -84,4 +93,15 @@ public class LightningSpellRunnable implements SpellRunnable {
                 .setFrozenMovement(false)
                 .setLifeSpanTicks(ticksDuration);
     }
+
+    private EffectBuilder getElectrofried(long amt, int ticksDuration) {
+        return new EffectBuilder()
+                .setEffectApplyMessages(Lists.newArrayList("You are " + Color.BOLD_ON + Color.YELLOW + "ELECTROFIED" + Color.RESET + " from the lightning strike!"))
+                .setEffectDescription(Color.BOLD_ON + Color.YELLOW + "lightning" + Color.RESET + Color.BOLD_ON + Color.YELLOW + " ELECTROFIED" + Color.RESET)
+                .setEffectName(Color.BOLD_ON + Color.YELLOW + "lightning" + Color.RESET + Color.BOLD_ON + Color.YELLOW + " ELECTROFIED" + Color.RESET)
+                .setDurationStats(new StatsBuilder().createStats())
+                .setApplyStatsOnTick(new StatsBuilder().setCurrentHealth(-amt).createStats())
+                .setFrozenMovement(false)
+                .setLifeSpanTicks(ticksDuration);
+    }
 }
diff --git a/src/main/java/com/comandante/creeper/stat/Stats.java b/src/main/java/com/comandante/creeper/stat/Stats.java
index 07f3b2371cb3e61b0657a7d63bbf500634591b1a..123a47bf4354473aeab3f832b6c362aa898532c1 100644
--- a/src/main/java/com/comandante/creeper/stat/Stats.java
+++ b/src/main/java/com/comandante/creeper/stat/Stats.java
@@ -2,6 +2,8 @@ package com.comandante.creeper.stat;
 
 import java.io.Serializable;
 
+import static java.lang.StrictMath.sqrt;
+
 public class Stats implements Serializable {
     private long strength;
     private long intelligence;
@@ -227,4 +229,12 @@ public class Stats implements Serializable {
     public void setInventorySize(long inventorySize) {
         this.inventorySize = inventorySize;
     }
+
+    private static double CONSTANT_MODIFIER = 0.02;
+
+    public long getLevel() {
+        double v = CONSTANT_MODIFIER * sqrt(getExperience());
+        return (long) Math.floor(v);
+    }
+
 }