Field Types

{
  // Required data
  "type": "field_type", // this is a field type
  "id": "fd_gum_web", // id of the field
  // Array of intensities of the field.
  // The first one is intensity 1, they increase by one each time
  "intensity_levels": [
    {
      "name": "shadow", // name of this level of intensity
      "sym": "a", // Symbol for this field intensity level
      "color": "light_red", // Curses color for the field symbol
      // Visibility
      "transparent": false, // Weather the field can be seen through
      "light_override": 3.7, // The amount of light to be used, ignores ambient light. 100 is daylight 0 is 100% dark.
      "light_color": "#ffd08a", // Color of light to emit
      "light_emitted": 20, // Amount of light to emit
      // Movement
      "dangerous": true, // Weather this intensity is dangerous to go through
      "move_cost": 50, // Move cost of moving through the field
      // Radiation
      "extra_radiation_min": 10, // Minimum amount of extra radiation from entering field
      "extra_radiation_max": 100, // Maximum amount of extra radiation from entering field
      "radiation_hurt_damage_min": 1, // Minimum amount of pain to cause to all bodyparts
      "radiation_hurt_damage_max": 3, // Maximum amount of pain to cause to all bodyparts
      "radiation_hurt_message": "The radioactive gas burns!", // Message to print when getting pain from it
      // Intensity manipulation
      "intensity_upgrade_chance": 10, // One in x chance to upgrade intensity every few ticks
      "intensity_upgrade_duration": 1, // Number of ticks to wait before upgrading intensity
      // Monster Group spawning
      "monster_spawn_chance": 10, // Chance to spawn monsters
      "monster_spawn_count": 10, // Number of monsters to spawn
      "monster_spawn_radius": 10, // Radius to spawn monsters in
      "monster_spawn_group": "GROUP_ZOMBIE", // Group to spawn
      // Misc
      "convection_temperature_mod": 10, // Amount of temperature to add
      // Effects
      "effects": [{
        // Basic information
        "effect_id": "sap", // Effect id to apply
        "body_part": "torso", // Bodypart with the stated id
        "intensity": 1, // Intensity of the effect
        // Duration
        "max_duration": "2 seconds", // Maximum duration of the effect
        "min_duration": "2 seconds", // Minimum duration of the effect
        // Immunity and application chances
        "is_environmental": true, // Will environmental protection protect
        "immune_in_vehicle": true, // Immune when on any vehicle part
        "chance_in_vehicle": 10, // One in x chance to get the effect when meeting above condition
        "immune_inside_vehicle": true, // Immune when on a vehicle part that qualifies as inside
        "chance_inside_vehicle": 10, // One in x chance to get the effect when meeting above condition
        "immune_outside_vehicle": true, // Immune when not on a vehicle part that qualifies as inside
        "chance_outside_vehicle": 10, // On in x chance to get the effect when meeting above condition
        // Messages
        "message": "The sap is sticky!", // Message to print when recieving the effect
        "message_npc": "The sap sticks to <npcname>!", // Message to print when NPC gets effect
        "message_type": "bad", // What type of message is this?
      }],
    },
  ],
  // Graphical
  "display_items": true, // Display the items on the files or not?
  "display_field": true, // Display the field or not?
  "priority": 1, // Priority to display the field's symbol / sprite
  // Immunities
  "immunity_data": {
    "traits": ["M_IMMUNE"], // Array of traits that prevent effects from the field
    "body_part_env_resistance": [["mouth", 15], ["eyes", 15]], // Environemental resistance on bodyparts required to protect from the field
  },
  "immune_mtypes": ["mon_zombie"], // Monster Types immune to the field
  "has_fire": true, // Does fire immunity make you immune to this field
  "has_acid": true, // Does acid immunity?
  "has_elec": true, // What about electricity?
  "has_fume": true, // Shall we change the background color to white on curses?
  // Decaying and spreading
  "underwater_age_speedup": "1 minute", // This many more turns pass on it's age in water
  "outdoor_age_speedup": "1 minute", // This many more turns pass on it's age while in water
  "decay_amount_factor": 5, // Yet another turn increment to the field's age
  "percent_spread": 10, // Percent chance to spread each turn
  "half_life": "10 minutes", // Number of turns til half of it is gone
  "stacking_type": "duration", // Does more field add `intensity` or `duration`
  "wandering_field": "fd_toxic_gas", // Field that this field produces
  "accelerated_decay": true, // Does this field go downward with terrain shifts?
  // Misc
  "gas_absorbption_factor": 10, // Number of charges to eat from the gas mask
  "dirty_transparency_cache": true, // Weather to forcefully recalc the transparency cache. It is automatically set with transparent being false
  "description_affix": "covered in", // Puts this in front of every intensity level name
  "phase": "solid", // Is it solid liquid gas or plasma? Mainly gas has effect on propagation
  "is_splattering": true, // Does this apply blood to vehicle parts?
  "apply_slime_factor": 2, // Applies scent of factor * intensity
  "scent_neutralization": 2, // Reduces scent by this value
  // NPC Complain
  "npc_complain": {
    "chance": 20, // One out of x chance to complain
    "issue": "crack_smoke", // Talk tag to complain about
    "duration": "30 minutes", // How long will they be complaining
    "speech": "<crack_smoke>", // Once again the talk tag to have spoken
  },
  // Monster spawning
  "monster_spawn_chance": 2, // One in x chance to spawn monster
  "monster_spawn_count": 3, // How many monsters to spawn
  "monster_spawn_group": "GROUP_ZOMBIE", // What monster group to spawn
  "monster_spawn_radius": 5, // Tile radius of monster spawn locations
  // Bash data
  "bash": {
    "str_min": 1, // lower bracket of bashing damage required to bash
    "str_max": 3, // higher bracket
    "sound_vol": 2, // noise made when succesfully bashing the field
    "sound_fail_vol": 2, // noise made when failing to bash the field
    "sound": "shwip", // sound on success
    "sound_fail": "shwomp", // sound on failure
    "msg_success": "You brush the gum web aside.", // message on success
    "move_cost": 120, // how many moves it costs to succesfully bash that field (default: 100)
    "items": [ // item dropped upon succesful bashing
      { "item": "2x4", "count": [5, 8] },
      { "item": "nail", "charges": [6, 8] },
      {
        "item": "splinter",
        "count": [3, 6],
      },
      { "item": "rag", "count": [40, 55] },
      { "item": "scrap", "count": [10, 20] },
    ],
  },
}