[
  {
    "id": "railgun_bullet",
    "type": "requirement",
    "components": [
      [
        [ "8mm_caseless", 1 ],
        [ "8mm_hvp", 1 ],
        [ "8mm_jhp", 1 ],
        [ "9mm", 1 ],
        [ "9mmfmj", 1 ],
        [ "9mmP", 1 ],
        [ "9mmP2", 1 ],
        [ "bp_9mm", 1 ],
        [ "bp_9mmfmj", 1 ],
        [ "reloaded_9mm", 1 ],
        [ "reloaded_9mmfmj", 1 ],
        [ "reloaded_9mmP", 1 ],
        [ "reloaded_9mmP2", 1 ],
        [ "9x18mm", 1 ],
        [ "9x18mmP2", 1 ],
        [ "9x18mmfmj", 1 ],
        [ "bp_9x18mm", 1 ],
        [ "bp_9x18mmfmj", 1 ],
        [ "reloaded_9x18mm", 1 ],
        [ "reloaded_9x18mmP2", 1 ],
        [ "reloaded_9x18mmfmj", 1 ],
        [ "10mm_fmj", 1 ],
        [ "bp_10mm_fmj", 1 ],
        [ "reloaded_10mm_fmj", 1 ],
        [ "12mm", 1 ],
        [ "reloaded_10mm_fmj", 1 ],
        [ "22_cb", 1 ],
        [ "22_fmj", 1 ],
        [ "22_lr", 1 ],
        [ "22_ratshot", 1 ],
        [ "bp_22_fmj", 1 ],
        [ "bp_22_lr", 1 ],
        [ "reloaded_22_lr", 1 ],
        [ "reloaded_22_fmj", 1 ],
        [ "32_acp", 1 ],
        [ "bp_32_acp", 1 ],
        [ "reloaded_32_acp", 1 ],
        [ "38_fmj", 1 ],
        [ "38_special", 1 ],
        [ "38_super", 1 ],
        [ "reloaded_38_fmj", 1 ],
        [ "reloaded_38_special", 1 ],
        [ "reloaded_38_super", 1 ],
        [ "bp_38_fmj", 1 ],
        [ "bp_38_special", 1 ],
        [ "38super_fmj", 1 ],
        [ "reloaded_38super_fmj", 1 ],
        [ "40fmj", 1 ],
        [ "40sw", 1 ],
        [ "bp_40fmj", 1 ],
        [ "bp_40sw", 1 ],
        [ "reloaded_40fmj", 1 ],
        [ "reloaded_40sw", 1 ],
        [ "44fmj", 1 ],
        [ "44magnum", 1 ],
        [ "reloaded_44fmj", 1 ],
        [ "reloaded_44magnum", 1 ],
        [ "bp_44magnum", 1 ],
        [ "bp_44fmj", 1 ],
        [ "45_acp", 1 ],
        [ "45_jhp", 1 ],
        [ "45_super", 1 ],
        [ "bp_45_acp", 1 ],
        [ "bp_45_jhp", 1 ],
        [ "reloaded_45_acp", 1 ],
        [ "reloaded_45_jhp", 1 ],
        [ "reloaded_45_super", 1 ],
        [ "45colt_jhp", 1 ],
        [ "reloaded_45colt_jhp", 1 ],
        [ "46mm", 1 ],
        [ "bp_46mm", 1 ],
        [ "reloaded_46mm", 1 ],
        [ "50bmg", 1 ],
        [ "50match", 1 ],
        [ "50ss", 1 ],
        [ "reloaded_50bmg", 1 ],
        [ "reloaded_50ss", 1 ],
        [ "57mm", 1 ],
        [ "bp_57mm", 1 ],
        [ "reloaded_57mm", 1 ],
        [ "223", 1 ],
        [ "556", 1 ],
        [ "bp_223", 1 ],
        [ "bp_556", 1 ],
        [ "reloaded_223", 1 ],
        [ "reloaded_556", 1 ],
        [ "270win_jsp", 1 ],
        [ "bp_270win_jsp", 1 ],
        [ "reloaded_270win_jsp", 1 ],
        [ "300_winmag", 1 ],
        [ "bp_300_winmag", 1 ],
        [ "reloaded_300_winmag", 1 ],
        [ "300blk", 1 ],
        [ "300blk_ss", 1 ],
        [ "bp_300blk", 1 ],
        [ "reloaded_300blk", 1 ],
        [ "308", 1 ],
        [ "762_51", 1 ],
        [ "bp_308", 1 ],
        [ "bp_762_51", 1 ],
        [ "reloaded_308", 1 ],
        [ "reloaded_762_51", 1 ],
        [ "357mag_fmj", 1 ],
        [ "357mag_jhp", 1 ],
        [ "bp_357mag_fmj", 1 ],
        [ "bp_357mag_jhp", 1 ],
        [ "reloaded_357mag_fmj", 1 ],
        [ "reloaded_357mag_jhp", 1 ],
        [ "357sig_fmj", 1 ],
        [ "357sig_jhp", 1 ],
        [ "reloaded_357sig_fmj", 1 ],
        [ "reloaded_357sig_jhp", 1 ],
        [ "380_FMJ", 1 ],
        [ "380_JHP", 1 ],
        [ "380_p", 1 ],
        [ "bp_380_FMJ", 1 ],
        [ "bp_380_JHP", 1 ],
        [ "reloaded_380_FMJ", 1 ],
        [ "reloaded_380_JHP", 1 ],
        [ "reloaded_380_p", 1 ],
        [ "454_Casull", 1 ],
        [ "reloaded_454_Casull", 1 ],
        [ "bp_454_Casull", 1 ],
        [ "500_Magnum", 1 ],
        [ "bp_500_Magnum", 1 ],
        [ "reloaded_500_Magnum", 1 ],
        [ "545", 1 ],
        [ "545_ap", 1 ],
        [ "reloaded_545", 1 ],
        [ "reloaded_545_ap", 1 ],
        [ "762_jhp", 1 ],
        [ "762_m87", 1 ],
        [ "reloaded_762_jhp", 1 ],
        [ "reloaded_762_m87", 1 ],
        [ "762_54R", 1 ],
        [ "762_25", 1 ],
        [ "762_25hot", 1 ],
        [ "762_25typeP", 1 ],
        [ "bp_762_25", 1 ],
        [ "reloaded_762_25", 1 ],
        [ "3006", 1 ],
        [ "3006fmj", 1 ],
        [ "bp_3006", 1 ],
        [ "bp_3006fmj", 1 ],
        [ "reloaded_3006", 1 ],
        [ "reloaded_3006fmj", 1 ],
        [ "4570_sp", 1 ],
        [ "4570_pen", 1 ],
        [ "4570_low", 1 ],
        [ "reloaded_4570_sp", 1 ],
        [ "reloaded_4570_pen", 1 ],
        [ "reloaded_4570_low", 1 ],
        [ "reloaded_4570_bp", 1 ],
        [ "reloaded_762_jhp", 1 ]
      ]
    ]
  },
  {
    "id": "railgun",
    "type": "SPELL",
    "name": "Railgun",
    "description": "Magnetize a bullet, and fire it at supersonic speeds by applying an opposite magnetic force to the bullet.  Leaves a trail of sparks",
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "LOUD", "SOMATIC", "NO_LEGS", "MUST_HAVE_CLASS_TO_LEARN" ],
    "valid_targets": [ "hostile" ],
    "spell_class": "MAGNETISM_MAGE",
    "magic_type": "magiclysm_generic_magic",
    "damage_type": "bullet",
    "effect": "attack",
    "shape": "blast",
    "max_level": 35,
    "components": "railgun_bullet",
    "min_damage": { "math": [ "(u_spell_level('railgun') * 4.7) + 65" ] },
    "max_damage": { "math": [ "(u_spell_level('railgun') * 8.3) + 80" ] },
    "min_range": 20,
    "max_range": 20,
    "base_casting_time": 400,
    "base_energy_cost": 600,
    "extra_effects": [ { "id": "railgun_sparks" }, { "id": "eoc_evocation_setup", "hit_self": true } ]
  },
  {
    "id": "railgun_sparks",
    "type": "SPELL",
    "name": { "str": "Railgun Sparks", "//~": "NO_I18N" },
    "description": { "str": "The spark portion of the Railgun spell.", "//~": "NO_I18N" },
    "valid_targets": [ "ground", "hostile", "ally" ],
    "effect": "attack",
    "shape": "line",
    "min_aoe": 3,
    "max_aoe": 3,
    "field_id": "fd_electricity",
    "min_field_intensity": 1,
    "max_field_intensity": 1,
    "field_chance": 2
  },
  {
    "id": "magnetismmage_electrolaser",
    "type": "SPELL",
    "name": "Electrolaser",
    "description": "Creates a conductive channel from the caster's hand to the target by ionizing air molecules using a high-powered laser beam, then sends a powerful half million volt charge down the channel.",
    "valid_targets": [ "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "SOMATIC", "NO_LEGS", "LOUD" ],
    "effect": "attack",
    "shape": "line",
    "damage_type": "light",
    "multiple_projectiles": 4,
    "min_damage": { "math": [ "(u_spell_level('magnetismmage_electrolaser') * 0.5) + 5" ] },
    "max_damage": { "math": [ "(u_spell_level('magnetismmage_electrolaser') * 1.3) + 12" ] },
    "min_range": 6,
    "max_range": 26,
    "range_increment": 0.6,
    "min_aoe": 1,
    "max_aoe": 3,
    "aoe_increment": 0.12,
    "max_level": 35,
    "difficulty": 9,
    "spell_class": "MAGNETISM_MAGE",
    "base_casting_time": 250,
    "final_casting_time": 75,
    "casting_time_increment": -5,
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 500,
    "final_energy_cost": 150,
    "energy_increment": -10,
    "field_id": "fd_laser",
    "min_field_intensity": 2,
    "max_field_intensity": 2,
    "field_chance": 1,
    "extra_effects": [ { "id": "magnetismmage_electrolaser_electro" }, { "id": "eoc_evocation_setup", "hit_self": true } ]
  },
  {
    "id": "magnetismmage_electrolaser_electro",
    "type": "SPELL",
    "name": { "str": "Electrolaser Electric Damage", "//~": "NO_I18N" },
    "description": {
      "str": "Give some electric damage for Electrolaser spell.  Subspell; you aren't allowed to see it except in debug mode.",
      "//~": "NO_I18N"
    },
    "valid_targets": [ "hostile", "ground" ],
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE" ],
    "effect": "attack",
    "shape": "line",
    "multiple_projectiles": 4,
    "damage_type": "electric",
    "min_damage": { "math": [ "(u_spell_level('magnetismmage_electrolaser') * 1) + 5" ] },
    "max_damage": { "math": [ "(u_spell_level('magnetismmage_electrolaser') * 2.9) + 12" ] },
    "max_range": 26,
    "min_aoe": 1,
    "max_aoe": 5,
    "aoe_increment": 0.12,
    "max_level": 35,
    "extra_effects": [ { "id": "railgun_sparks" } ]
  },
  {
    "id": "robot_disabler",
    "type": "SPELL",
    "name": { "str": "Surge mod moves", "//~": "NO_I18N" },
    "description": {
      "str": "Subtract some moves from targeted_monster_ids monsters.  Subspell; you aren't allowed to see it except in debug mode.",
      "//~": "NO_I18N"
    },
    "valid_targets": [ "hostile" ],
    "targeted_monster_species": [ "ROBOT", "CYBORG" ],
    "effect": "mod_moves",
    "shape": "blast",
    "max_level": 35,
    "min_damage": -1500,
    "max_damage": -12000,
    "damage_increment": -300,
    "min_aoe": 3,
    "aoe_increment": 0.17,
    "max_aoe": 15
  },
  {
    "id": "robot_disabler_explosion",
    "type": "SPELL",
    "name": "Surge",
    "description": "Send a wave of high-frequency alternating pulses.  It can't hurt living creatures, but is exceptional at stunning and destroying robots.  Even though it isn't an EMP.",
    "flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "NO_LEGS", "LOUD", "SOMATIC" ],
    "valid_targets": [ "hostile", "ground" ],
    "targeted_monster_species": [ "ROBOT", "CYBORG" ],
    "spell_class": "MAGNETISM_MAGE",
    "magic_type": "magiclysm_generic_magic",
    "base_energy_cost": 450,
    "energy_increment": -10.0,
    "final_energy_cost": 100,
    "field_id": "fd_electricity",
    "min_field_intensity": 1,
    "max_field_intensity": 1,
    "field_chance": 3,
    "difficulty": 9,
    "effect": "attack",
    "shape": "blast",
    "damage_type": "electric",
    "min_damage": { "math": [ "(u_spell_level('robot_disabler_explosion') * 3.1) + 5" ] },
    "max_damage": { "math": [ "(u_spell_level('robot_disabler_explosion') * 7.9) + 12" ] },
    "min_range": 10,
    "max_range": 55,
    "range_increment": 1.3,
    "min_aoe": 3,
    "aoe_increment": 0.17,
    "max_aoe": 15,
    "base_casting_time": 400,
    "casting_time_increment": -9,
    "final_casting_time": 100,
    "max_level": 35,
    "extra_effects": [ { "id": "robot_disabler" }, { "id": "eoc_evocation_setup", "hit_self": true } ]
  }
]
