[
  {
    "id": "point_flare",
    "type": "SPELL",
    "name": "Point Flare",
    "description": "Generates strong heat at the targeted location, damaging anything susceptible to high temperatures.",
    "valid_targets": [ "hostile" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "CONCENTRATE", "SOMATIC", "LOUD", "NO_PROJECTILE" ],
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "effect": "attack",
    "shape": "blast",
    "damage_type": "heat",
    "min_damage": { "math": [ "(u_spell_level('point_flare') * 1.4) + 4" ] },
    "max_damage": { "math": [ "(u_spell_level('point_flare') * 3.3) + 8" ] },
    "min_range": 3,
    "range_increment": 0.5,
    "max_range": 11,
    "base_energy_cost": 75,
    "spell_class": "KELVINIST",
    "difficulty": 4,
    "max_level": 16,
    "base_casting_time": 300,
    "magic_type": "magiclysm_generic_magic"
  },
  {
    "id": "nova_flare",
    "type": "SPELL",
    "name": "Nova Flare",
    "description": "Generates an intense heat at the location, greatly damaging anything susceptible to high temperatures.",
    "valid_targets": [ "hostile" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "CONCENTRATE", "SOMATIC", "LOUD", "NO_PROJECTILE", "SPLIT_DAMAGE" ],
    "components": "spell_components_nova_flare",
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "effect": "attack",
    "shape": "blast",
    "damage_type": "heat",
    "min_damage": { "math": [ "(u_spell_level('nova_flare') * 2) + 15" ] },
    "max_damage": { "math": [ "(u_spell_level('nova_flare') * 4.5) + 28" ] },
    "min_range": 3,
    "range_increment": 0.5,
    "max_range": 11,
    "base_energy_cost": 80,
    "spell_class": "KELVINIST",
    "difficulty": 8,
    "max_level": 16,
    "base_casting_time": 300,
    "magic_type": "magiclysm_generic_magic"
  },
  {
    "id": "create_lighter",
    "type": "SPELL",
    "name": "Finger Firelighter",
    "description": "Summons a small flame that does not affect you, but can be used to light things on fire.  It seems to need you to have some intent to light things on fire, since you are able to put it in your pocket with no issue.",
    "valid_targets": [ "none" ],
    "flags": [ "CONJURATION_SPELL", "NO_LEGS" ],
    "effect": "spawn_item",
    "effect_str": "finger_firelighter",
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "shape": "blast",
    "min_damage": 1,
    "max_damage": 1,
    "min_duration": 6000,
    "max_duration": 60000,
    "duration_increment": 5400,
    "max_level": 10,
    "spell_class": "KELVINIST",
    "magic_type": "magiclysm_generic_magic",
    "base_casting_time": 250,
    "final_casting_time": 50,
    "casting_time_increment": -20.0,
    "base_energy_cost": 65,
    "difficulty": 0
  },
  {
    "id": "ice_spike",
    "type": "SPELL",
    "name": "Ice Spike",
    "description": "Causes jagged icicles to form in the air above the target, falling and damaging them.",
    "valid_targets": [ "hostile" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "CONCENTRATE", "SOMATIC", "LOUD", "VERBAL", "NO_PROJECTILE" ],
    "effect": "attack",
    "shape": "blast",
    "damage_type": "cold",
    "multiple_projectiles": 3,
    "min_damage": { "math": [ "(u_spell_level('ice_spike') * 1.5) + 9" ] },
    "max_damage": { "math": [ "(u_spell_level('ice_spike') * 3) + 18" ] },
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "min_range": 4,
    "max_range": 12,
    "range_increment": 0.6,
    "max_level": 20,
    "difficulty": 6,
    "spell_class": "KELVINIST",
    "base_casting_time": 200,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 100
  },
  {
    "id": "fireball",
    "type": "SPELL",
    "name": "Fireball",
    "description": "You hurl a pea-sized glowing orb that produces a pressure-less blast of searing heat when it hits an obstacle or reaches the target.",
    "effect": "attack",
    "shape": "blast",
    "valid_targets": [ "self", "ally", "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "VERBAL", "NO_LEGS", "IGNITE_FLAMMABLE", "SPLIT_DAMAGE" ],
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "max_level": 20,
    "min_damage": { "math": [ "(u_spell_level('fireball') * 0.8) + 6" ] },
    "max_damage": { "math": [ "(u_spell_level('fireball') * 2) + 12" ] },
    "min_aoe": 3,
    "max_aoe": 5,
    "aoe_increment": 0.1,
    "min_range": 6,
    "max_range": 20,
    "range_increment": 1.0,
    "spell_class": "KELVINIST",
    "base_casting_time": 200,
    "base_energy_cost": 350,
    "magic_type": "magiclysm_generic_magic",
    "difficulty": 4,
    "damage_type": "heat"
  },
  {
    "id": "cone_cold",
    "type": "SPELL",
    "name": "Cone of Cold",
    "description": "You blast a cone of frigid air toward the target.",
    "effect": "attack",
    "shape": "cone",
    "valid_targets": [ "ally", "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "VERBAL", "SPLIT_DAMAGE" ],
    "max_level": 20,
    "min_damage": { "math": [ "(u_spell_level('cone_cold') * 0.8) + 6" ] },
    "max_damage": { "math": [ "(u_spell_level('cone_cold') * 2) + 12" ] },
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "min_aoe": 30,
    "max_aoe": 60,
    "aoe_increment": 1.4,
    "min_range": 6,
    "max_range": 20,
    "range_increment": 1.0,
    "spell_class": "KELVINIST",
    "base_casting_time": 200,
    "base_energy_cost": 350,
    "magic_type": "magiclysm_generic_magic",
    "difficulty": 4,
    "field_id": "fd_cold_air2",
    "min_field_intensity": 0,
    "max_field_intensity": 4,
    "field_intensity_increment": 0.5,
    "damage_type": "cold"
  },
  {
    "id": "burning_hands",
    "type": "SPELL",
    "name": { "str": "Burning Hands" },
    "description": "You're pretty sure you saw this in a game somewhere.  You fire a short-range cone of fire.",
    "effect": "attack",
    "shape": "cone",
    "valid_targets": [ "ally", "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "VERBAL", "IGNITE_FLAMMABLE", "NO_HANDS", "SPLIT_DAMAGE" ],
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "max_level": 20,
    "min_damage": { "math": [ "(u_spell_level('burning_hands') * 1) + 2" ] },
    "max_damage": { "math": [ "(u_spell_level('burning_hands') * 2.6) + 8" ] },
    "min_range": 3,
    "max_range": 5,
    "range_increment": 0.25,
    "min_aoe": 25,
    "max_aoe": 60,
    "aoe_increment": 5.0,
    "spell_class": "KELVINIST",
    "base_casting_time": 100,
    "base_energy_cost": 150,
    "magic_type": "magiclysm_generic_magic",
    "difficulty": 2,
    "damage_type": "heat"
  },
  {
    "id": "frost_spray",
    "type": "SPELL",
    "name": "Frost Spray",
    "description": "You're pretty sure you saw this in a game somewhere.  You fire a short-range cone of ice and cold.",
    "effect": "attack",
    "effect_str": "cold",
    "shape": "cone",
    "affected_body_parts": [ "torso" ],
    "valid_targets": [ "ally", "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "VERBAL", "NO_HANDS", "SPLIT_DAMAGE" ],
    "max_level": 20,
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "min_damage": { "math": [ "(u_spell_level('frost_spray') * 1) + 2" ] },
    "max_damage": { "math": [ "(u_spell_level('frost_spray') * 2.6) + 8" ] },
    "min_range": 3,
    "max_range": 5,
    "range_increment": 0.25,
    "min_aoe": 25,
    "max_aoe": 60,
    "aoe_increment": 5.0,
    "spell_class": "KELVINIST",
    "base_casting_time": 100,
    "base_energy_cost": 100,
    "magic_type": "magiclysm_generic_magic",
    "difficulty": 2,
    "damage_type": "cold"
  },
  {
    "id": "chilling_touch",
    "type": "SPELL",
    "name": "Chilling Touch",
    "description": "Freezes the touched target with intense cold.",
    "valid_targets": [ "hostile" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "NO_PROJECTILE" ],
    "effect": "attack",
    "effect_str": "cold",
    "shape": "blast",
    "affected_body_parts": [ "torso" ],
    "damage_type": "cold",
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "min_damage": { "math": [ "(u_spell_level('chilling_touch') * 0.75) + 1" ] },
    "max_damage": { "math": [ "(u_spell_level('chilling_touch') * 2.3) + 6" ] },
    "min_range": 1,
    "max_range": 1,
    "base_energy_cost": 50,
    "spell_class": "KELVINIST",
    "difficulty": 1,
    "max_level": 10,
    "base_casting_time": 100,
    "magic_type": "magiclysm_generic_magic"
  },
  {
    "id": "glide_ice",
    "type": "SPELL",
    "name": "Glide on Ice",
    "description": "Encases your feet in a magical coating of ice, allowing you to glide along smooth surfaces faster.",
    "valid_targets": [ "none" ],
    "flags": [ "CONJURATION_SPELL", "VERBAL", "NO_HANDS", "NO_LEGS", "CONCENTRATE" ],
    "min_damage": 1,
    "max_damage": 1,
    "effect": "spawn_item",
    "effect_str": "ice_gliders",
    "shape": "blast",
    "magic_type": "magiclysm_generic_magic",
    "spell_class": "KELVINIST",
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "difficulty": 2,
    "max_level": 15,
    "base_casting_time": 650,
    "base_energy_cost": 100,
    "min_duration": 24000,
    "max_duration": 360000,
    "duration_increment": 24000,
    "learn_spells": { "glide_ice_plus": 15 }
  },
  {
    "id": "glide_ice_plus",
    "type": "SPELL",
    "name": "Enhanced Glide on Ice",
    "description": "Encases your feet in a magical coating of ice, allowing you to glide along smooth surfaces faster.  Now you know this spell like the back of your hand, and have started to design your own version.",
    "valid_targets": [ "none" ],
    "flags": [ "CONJURATION_SPELL", "RANDOM_DAMAGE", "VERBAL", "NO_HANDS", "NO_LEGS", "NO_FAIL" ],
    "min_damage": 1,
    "max_damage": 1,
    "effect": "spawn_item",
    "effect_str": "ice_gliders",
    "shape": "blast",
    "magic_type": "magiclysm_generic_magic",
    "spell_class": "KELVINIST",
    "difficulty": 5,
    "max_level": 25,
    "base_casting_time": 650,
    "final_casting_time": 100,
    "casting_time_increment": -22,
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "base_energy_cost": 100,
    "final_energy_cost": 50,
    "energy_increment": -2,
    "min_duration": 360000,
    "max_duration": 9000000,
    "duration_increment": 360000
  },
  {
    "id": "hoary_blast",
    "type": "SPELL",
    "name": "Hoary Blast",
    "description": "You project a glowing white crystal of ice and it explodes on impact into a blossom of shattering cold.",
    "effect": "attack",
    "effect_str": "cold",
    "shape": "blast",
    "affected_body_parts": [ "torso" ],
    "valid_targets": [ "self", "ally", "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "VERBAL", "NO_LEGS", "SPLIT_DAMAGE" ],
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "max_level": 20,
    "min_damage": { "math": [ "(u_spell_level('hoary_blast') * 0.6) + 6" ] },
    "max_damage": { "math": [ "(u_spell_level('hoary_blast') * 2) + 12" ] },
    "min_aoe": 3,
    "max_aoe": 5,
    "aoe_increment": 0.1,
    "min_range": 6,
    "max_range": 20,
    "range_increment": 1.0,
    "spell_class": "KELVINIST",
    "base_casting_time": 200,
    "base_energy_cost": 350,
    "magic_type": "magiclysm_generic_magic",
    "difficulty": 4,
    "damage_type": "cold"
  },
  {
    "id": "ice_shield",
    "type": "SPELL",
    "name": "Ice Shield",
    "description": "Creates a magical shield of ice on your arm, with which you can defend yourself in melee and use it to bash.",
    "valid_targets": [ "self" ],
    "flags": [ "CONJURATION_SPELL", "NO_LEGS", "CONCENTRATE", "VERBAL" ],
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "min_damage": 1,
    "max_damage": 1,
    "effect": "spawn_item",
    "effect_str": "shield_ice",
    "shape": "blast",
    "magic_type": "magiclysm_generic_magic",
    "spell_class": "KELVINIST",
    "difficulty": 3,
    "max_level": 15,
    "base_casting_time": 150,
    "base_energy_cost": 100,
    "min_duration": 24000,
    "max_duration": 360000,
    "duration_increment": 24000,
    "learn_spells": { "ice_shield_plus": 15 }
  },
  {
    "id": "ice_shield_plus",
    "type": "SPELL",
    "name": "Enhanced Ice Shield",
    "description": "Creates a magical shield of ice on your arm, with which you can defend yourself and use it to bash.  Now you know this spell like the back of your hand, and have started to design your own version.",
    "valid_targets": [ "self" ],
    "flags": [ "CONJURATION_SPELL", "NO_LEGS", "VERBAL", "NO_FAIL" ],
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "min_damage": 1,
    "max_damage": 1,
    "effect": "spawn_item",
    "effect_str": "shield_ice",
    "shape": "blast",
    "magic_type": "magiclysm_generic_magic",
    "spell_class": "KELVINIST",
    "difficulty": 5,
    "max_level": 25,
    "base_casting_time": 150,
    "final_casting_time": 50,
    "casting_time_increment": -4,
    "base_energy_cost": 100,
    "final_energy_cost": 50,
    "energy_increment": -2,
    "min_duration": 360000,
    "max_duration": 9000000,
    "duration_increment": 360000
  },
  {
    "id": "frost_armor",
    "type": "SPELL",
    "name": "Frost Armor",
    "description": "Covers you in a thin layer of reactive magical ice to attack those who harm you.",
    "valid_targets": [ "self" ],
    "flags": [ "CONJURATION_SPELL", "NO_LEGS", "CONCENTRATE", "VERBAL", "SOMATIC" ],
    "effect": "spawn_item",
    "effect_str": "armor_frost",
    "shape": "blast",
    "affected_body_parts": [ "head", "torso", "leg_l", "leg_r", "arm_r", "arm_l" ],
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "magic_type": "magiclysm_generic_magic",
    "spell_class": "KELVINIST",
    "difficulty": 5,
    "max_level": 15,
    "base_casting_time": 200,
    "base_energy_cost": 550,
    "min_duration": 24000,
    "max_duration": 360000,
    "duration_increment": 24000,
    "learn_spells": { "frost_armor_plus": 15 }
  },
  {
    "id": "frost_armor_plus",
    "type": "SPELL",
    "name": "Enhanced Frost Armor",
    "description": "Covers you in a thin layer of reactive magical ice to attack those who harm you.  Now you know this spell like the back of your hand, and have started to design your own version.",
    "valid_targets": [ "self" ],
    "flags": [ "CONJURATION_SPELL", "NO_LEGS", "VERBAL", "SOMATIC", "NO_FAIL" ],
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "effect": "spawn_item",
    "effect_str": "armor_frost",
    "shape": "blast",
    "affected_body_parts": [ "head", "torso", "leg_l", "leg_r", "arm_r", "arm_l" ],
    "magic_type": "magiclysm_generic_magic",
    "spell_class": "KELVINIST",
    "difficulty": 5,
    "max_level": 25,
    "base_casting_time": 200,
    "final_casting_time": 100,
    "casting_time_increment": -4,
    "base_energy_cost": 550,
    "final_energy_cost": 200,
    "energy_increment": -14,
    "min_duration": 360000,
    "max_duration": 9000000,
    "duration_increment": 72000
  },
  {
    "id": "armor_frost_counterattack",
    "type": "SPELL",
    "name": { "str": "Frost Armor Counterattack", "//~": "NO_I18N" },
    "description": { "str": "Attacks anyone who hits you when using frost armor", "//~": "NO_I18N" },
    "valid_targets": [ "hostile" ],
    "flags": [ "RANDOM_DAMAGE", "CONCENTRATE", "SOMATIC", "RANDOM_DURATION" ],
    "effect": "attack",
    "effect_str": "slow_freeze_effect",
    "shape": "blast",
    "damage_type": "cold",
    "multiple_projectiles": 2,
    "min_damage": 8,
    "max_damage": 24,
    "min_range": 1,
    "max_range": 1,
    "min_duration": { "math": [ "100 + ( (u_spell_level('frost_armor') * 2) + (u_spell_level('frost_armor_plus') * 4 ) )" ] },
    "max_duration": { "math": [ "250 + ( (u_spell_level('frost_armor') * 5) + (u_spell_level('frost_armor_plus') * 8 ) )" ] },
    "spell_class": "KELVINIST",
    "magic_type": "magiclysm_generic_magic"
  },
  {
    "id": "create_rune_kelvinist",
    "type": "SPELL",
    "name": "Kelvinist Rune",
    "description": "This ritual freezes a small fire in order to create a rune attuned to Kelvinists.  You can use the rune as a catalyst for recipes.",
    "valid_targets": [ "self" ],
    "min_damage": 1,
    "max_damage": 1,
    "effect": "spawn_item",
    "effect_str": "rune_kelvinist",
    "extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ],
    "shape": "blast",
    "base_casting_time": 5000,
    "base_energy_cost": 5,
    "min_duration": 1,
    "max_duration": 2,
    "duration_increment": 1,
    "difficulty": 0,
    "max_level": 0,
    "spell_class": "KELVINIST",
    "magic_type": "magiclysm_generic_magic",
    "flags": [ "CHANNELING_SPELL", "PERMANENT", "NO_LEGS", "CONCENTRATE" ]
  },
  {
    "id": "kelvinist_summon_flamesword",
    "type": "SPELL",
    "name": "Flamesword",
    "description": "This spell ignites a wooden sword, creating a flaming blade able to burn, bruise, and chop.",
    "valid_targets": [ "self" ],
    "flags": [ "CONJURATION_SPELL", "NO_LEGS", "SOMATIC" ],
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "effect": "spawn_item",
    "effect_str": "flamesword",
    "shape": "blast",
    "components": "spell_components_flamesword",
    "min_damage": 1,
    "max_damage": 1,
    "min_duration": 24000,
    "max_duration": 360000,
    "duration_increment": 24000,
    "max_level": 15,
    "spell_class": "KELVINIST",
    "magic_type": "magiclysm_generic_magic",
    "base_casting_time": 250,
    "base_energy_cost": 300,
    "difficulty": 4,
    "learn_spells": { "kelvinist_summon_flamesword_plus": 15 }
  },
  {
    "id": "kelvinist_summon_flamesword_plus",
    "type": "SPELL",
    "name": "Enhanced Flamesword",
    "description": "This spell ignites a wooden sword, creating a flaming blade able to burn, bruise, and chop.  Now you know this spell like the back of your hand, and have started to design your own version.",
    "valid_targets": [ "self" ],
    "flags": [ "CONJURATION_SPELL", "NO_LEGS", "NO_HANDS", "NO_FAIL" ],
    "effect": "spawn_item",
    "effect_str": "flamesword",
    "shape": "blast",
    "components": "spell_components_flamesword",
    "min_damage": 1,
    "max_damage": 1,
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "min_duration": 360000,
    "max_duration": 2160000,
    "duration_increment": 72000,
    "max_level": 25,
    "spell_class": "KELVINIST",
    "magic_type": "magiclysm_generic_magic",
    "base_casting_time": 250,
    "final_casting_time": 100,
    "casting_time_increment": -6,
    "base_energy_cost": 300,
    "final_energy_cost": 100,
    "energy_increment": -8,
    "difficulty": 6
  },
  {
    "id": "kelvinist_flamebreath",
    "type": "SPELL",
    "name": { "str": "Flamebreath" },
    "description": "This spell ignites dust scattered in the air, creating a cone of flame.  The hot ashes can cling to targets, causing additional burns over time.",
    "effect": "attack",
    "shape": "cone",
    "valid_targets": [ "ally", "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "CONCENTRATE", "IGNITE_FLAMMABLE", "SPLIT_DAMAGE" ],
    "components": "spell_components_flamebreath",
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "max_level": 10,
    "min_damage": { "math": [ "(u_spell_level('kelvinist_flamebreath') * 0.6) + 6" ] },
    "max_damage": { "math": [ "(u_spell_level('kelvinist_flamebreath') * 1.8) + 12" ] },
    "min_dot": 2,
    "max_dot": 5,
    "dot_increment": 0.3,
    "min_duration": 400,
    "max_duration": 1000,
    "duration_increment": 60,
    "min_range": 5,
    "max_range": 12,
    "range_increment": 0.7,
    "min_aoe": 15,
    "max_aoe": 30,
    "aoe_increment": 1.5,
    "spell_class": "KELVINIST",
    "base_casting_time": 150,
    "base_energy_cost": 200,
    "magic_type": "magiclysm_generic_magic",
    "difficulty": 5,
    "damage_type": "heat"
  },
  {
    "id": "freezing_touch",
    "type": "SPELL",
    "name": "Freezing Touch",
    "description": "Your hands freeze anything they touch at temperatures so cold it slows down your foes.",
    "valid_targets": [ "hostile" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "NO_PROJECTILE", "SILENT", "NO_HANDS", "NO_HANDS", "SPLIT_DAMAGE" ],
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "effect": "attack",
    "effect_str": "slow_freeze_effect",
    "shape": "blast",
    "damage_type": "cold",
    "min_damage": { "math": [ "(u_spell_level('freezing_touch') * 1.2) + 12" ] },
    "max_damage": { "math": [ "(u_spell_level('freezing_touch') * 4.1) + 22" ] },
    "min_range": 1,
    "max_range": 1,
    "base_energy_cost": 175,
    "final_energy_cost": 75,
    "energy_increment": -5,
    "spell_class": "KELVINIST",
    "min_duration": 1000,
    "max_duration": 1000,
    "difficulty": 7,
    "max_level": 20,
    "base_casting_time": 160,
    "final_casting_time": 40,
    "casting_time_increment": -6,
    "magic_type": "magiclysm_generic_magic"
  },
  {
    "id": "kelvinist_anti_cold",
    "type": "SPELL",
    "name": "Cloak of Warmth",
    "description": "Heat the nearby air, keeping you warm and providing some protection against ice and cold.",
    "valid_targets": [ "self" ],
    "spell_class": "KELVINIST",
    "flags": [ "ENHANCEMENT_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ],
    "effect": "attack",
    "effect_str": "effect_kelvinist_anti_cold",
    "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ],
    "shape": "blast",
    "difficulty": 4,
    "max_level": 20,
    "min_duration": 180000,
    "max_duration": 2160000,
    "duration_increment": 99000,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 250,
    "base_casting_time": 1500
  },
  {
    "id": "kelvinist_anti_heat",
    "type": "SPELL",
    "name": "Cloak of Chill",
    "description": "Cool the nearby air, keeping you cool and providing some protection against heat and flame.",
    "valid_targets": [ "self" ],
    "spell_class": "KELVINIST",
    "flags": [ "ENHANCEMENT_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ],
    "effect": "attack",
    "effect_str": "effect_kelvinist_anti_heat",
    "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ],
    "shape": "blast",
    "difficulty": 4,
    "max_level": 20,
    "min_duration": 180000,
    "max_duration": 2160000,
    "duration_increment": 99000,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 250,
    "base_casting_time": 1500
  },
  {
    "id": "kelvinist_persuasion_spell",
    "type": "SPELL",
    "name": "Flames of Passion",
    "description": "Like the bonfire gathers revelers around it, the kelvinist becomes the life of the party, as their eyes shine with passion and their voice burns with the heat of their conviction.  You will be more convincing while this spell is in effect.  Before the Cataclysm, this was one of the most common spells that apprentices were desperate to learn and master mages were reluctant to teach.",
    "valid_targets": [ "self" ],
    "spell_class": "KELVINIST",
    "flags": [ "ENHANCEMENT_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ],
    "components": "spell_components_flames_of_passion",
    "effect": "attack",
    "effect_str": "effect_kelvinist_flames_of_passion",
    "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ],
    "shape": "blast",
    "difficulty": 3,
    "max_level": 20,
    "min_duration": 90000,
    "max_duration": 990000,
    "duration_increment": 45000,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 350,
    "base_casting_time": 500
  },
  {
    "id": "kelvinist_extinguish_fire_spell",
    "type": "SPELL",
    "name": "Extinguish",
    "description": "Just as the kelvinist can start a fire, they can extinguish it, by transmuting the heat of the fire directly into cold and leaving nothing left to continue the flames.",
    "flags": [ "ENERVATION_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC", "NO_LEGS" ],
    "spell_class": "KELVINIST",
    "valid_targets": [ "ground" ],
    "difficulty": 5,
    "max_level": 20,
    "effect": "ter_transform",
    "effect_str": "ter_kelvinist_extinguish_transform",
    "extra_effects": [
      { "id": "kelvinist_extinguish_fire_emit_cold", "hit_self": true },
      { "id": "eoc_enervation_setup", "hit_self": true }
    ],
    "shape": "blast",
    "min_range": 3,
    "max_range": 20,
    "range_increment": 1,
    "min_aoe": 1,
    "max_aoe": 10,
    "aoe_increment": 0.5,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 250,
    "base_casting_time": 250
  },
  {
    "id": "kelvinist_extinguish_fire_emit_cold",
    "type": "SPELL",
    "name": { "str": "Extinguish Cold Emit", "//~": "NO_I18N" },
    "description": { "str": "The cold emit from the Extinguish spell.  It's a bug if you have it directly.", "//~": "NO_I18N" },
    "flags": [ "ENERVATION_SPELL", "SILENT" ],
    "valid_targets": [ "ground" ],
    "max_level": 20,
    "effect": "emit",
    "effect_str": "emit_cold_air2_stream",
    "shape": "blast",
    "min_range": 3,
    "max_range": 20,
    "range_increment": 1,
    "min_aoe": 1,
    "max_aoe": 10,
    "aoe_increment": 0.5
  },
  {
    "id": "kelvinist_summon_freezer_spell",
    "type": "SPELL",
    "name": { "str": "Freezer Field" },
    "description": "Summon a sphere of ice that will preserve anything placed inside while the container lasts.",
    "flags": [ "CONJURATION_SPELL", "CONCENTRATE", "SOMATIC", "VERBAL" ],
    "valid_targets": [ "self" ],
    "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ],
    "max_level": 15,
    "difficulty": 6,
    "spell_class": "KELVINIST",
    "effect": "spawn_item",
    "effect_str": "item_kelvinist_icy_freezing_container",
    "shape": "blast",
    "min_damage": 1,
    "max_damage": 1,
    "min_duration": 51840000,
    "max_duration": 327240000,
    "duration_increment": 18360000,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 400,
    "base_casting_time": 1500
  },
  {
    "id": "kelvinist_no_emotion_spell",
    "type": "SPELL",
    "name": "The Rime-Covered Heart",
    "description": "Draw on the essence of ice to freeze out all emotion, rendering you comfortably numb.  This spell used to get you on several lists if the government learned that you knew it, back when there was a government to care about that.",
    "valid_targets": [ "self" ],
    "spell_class": "KELVINIST",
    "flags": [ "ENHANCEMENT_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ],
    "effect": "spawn_item",
    "effect_str": "item_kelvinist_frozen_heart",
    "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ],
    "shape": "blast",
    "difficulty": 8,
    "max_level": 15,
    "min_damage": 1,
    "max_damage": 1,
    "min_duration": 60000,
    "max_duration": 960000,
    "duration_increment": 60000,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 650,
    "base_casting_time": 6000
  },
  {
    "id": "kelvinist_firebolt",
    "type": "SPELL",
    "name": "Firebolt",
    "description": "A simple spell that hurls a bolt of fire to the target location.  While not as damaging as some more complex spells, it is quick to cast and will ignite anything flammable at the target.",
    "valid_targets": [ "hostile", "ground", "ally" ],
    "spell_class": "KELVINIST",
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "VERBAL", "SOMATIC", "NO_LEGS", "IGNITE_FLAMMABLE" ],
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "difficulty": 2,
    "max_level": 15,
    "effect": "attack",
    "shape": "blast",
    "damage_type": "heat",
    "min_damage": { "math": [ "(u_spell_level('kelvinist_firebolt') * 0.4) + 3" ] },
    "max_damage": { "math": [ "(u_spell_level('kelvinist_firebolt') * 0.8) + 8" ] },
    "min_range": 2,
    "max_range": 15,
    "range_increment": 1,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 75,
    "base_casting_time": 100,
    "sound_type": "combat",
    "sound_id": "fire_spell",
    "sound_description": "a crackle!"
  },
  {
    "id": "kelvinist_heat_food",
    "type": "SPELL",
    "name": "Baking Hands",
    "description": "With the tiniest amount of heat, unfreeze an item of food or drink and heat it up to a comfortable temperature.",
    "valid_targets": [ "self" ],
    "spell_class": "KELVINIST",
    "flags": [ "CHANNELING_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ],
    "effect": "effect_on_condition",
    "effect_str": "EOC_KELVINIST_HEAT_FOOD_SPELL",
    "components": "spell_components_baking_hands",
    "extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ],
    "shape": "blast",
    "difficulty": 1,
    "max_level": 15,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 200,
    "final_energy_cost": 50,
    "energy_increment": -10,
    "base_casting_time": 750
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_KELVINIST_HEAT_FOOD_SPELL",
    "effect": [
      {
        "u_run_inv_eocs": "manual",
        "search_data": [ { "category": "food" }, { "category": "drink" } ],
        "true_eocs": [
          { "id": "EOC_KELVINIST_HEAT_FOOD_SPELL_ITEM", "effect": [ { "npc_set_flag": "HOT" }, { "npc_unset_flag": "FROZEN" } ] }
        ]
      }
    ]
  },
  {
    "id": "kelvinist_set_everyone_on_fire",
    "type": "SPELL",
    "name": "Flames of the Apocalypse",
    "description": "Force a large amount of burning mana into every hostile target affected by the spell, causing them to explode in flames.  Knowledge of this spell required licensing and registration before the Cataclysm, but you're pretty sure the ATF isn't going to be hassling you any time soon.",
    "valid_targets": [ "hostile", "ground" ],
    "spell_class": "KELVINIST",
    "flags": [ "EVOCATION_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ],
    "effect": "effect_on_condition",
    "effect_str": "EOC_KELVINIST_SET_EVERYONE_ON_FIRE",
    "components": "spell_components_kelvinist_set_everyone_on_fire",
    "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
    "shape": "blast",
    "difficulty": 15,
    "max_level": 25,
    "min_range": 5,
    "max_range": 30,
    "range_increment": 1,
    "min_aoe": 2,
    "max_aoe": 12,
    "aoe_increment": 0.5,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 1000,
    "base_casting_time": 500
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_KELVINIST_SET_EVERYONE_ON_FIRE",
    "condition": "has_alpha",
    "effect": [
      { "math": [ "u_kelvinist_explosion_level = n_spell_level('kelvinist_set_everyone_on_fire')" ] },
      {
        "u_cast_spell": {
          "id": "kelvinist_set_everyone_on_fire_secondary",
          "min_level": { "math": [ "u_kelvinist_explosion_level" ] },
          "hit_self": true
        }
      }
    ]
  },
  {
    "id": "kelvinist_set_everyone_on_fire_secondary",
    "type": "SPELL",
    "name": { "str": "Flames of the Apocalypse Target", "//~": "NO_I18N" },
    "description": { "str": "Stop hitting yourself (with the flames of the apocalypse). You should never see this.", "//~": "NO_I18N" },
    "valid_targets": [ "self", "ground", "ally", "hostile" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "CONCENTRATE", "VERBAL", "SOMATIC", "SPLIT_DAMAGE" ],
    "effect": "attack",
    "effect_str": "onfire",
    "shape": "blast",
    "max_level": 25,
    "min_damage": { "math": [ "(u_kelvinist_explosion_level * 4) + 25" ] },
    "max_damage": { "math": [ "(u_kelvinist_explosion_level * 10) + 45" ] },
    "damage_type": "heat",
    "min_duration": 1000,
    "max_duration": 2500,
    "min_aoe": { "math": [ "(u_kelvinist_explosion_level * 0.333) + 0" ] },
    "max_aoe": { "math": [ "(u_kelvinist_explosion_level * 0.333) + 0" ] },
    "field_id": "fd_fire",
    "min_field_intensity": 2,
    "max_field_intensity": 3,
    "field_chance": 2
  }
]
