This proposal intends to overhaul and standardize incendiaries/incendiary mechanics so they're not basically ridiculous like that absurd Napalm recipe that uses phoron for some reason, and flamethrowers utilizing phoron instead of hydrocarbons.
New chemistry recipes have been added that enable napalm, fuel and plastics manufacturing.
Have some related music: https://www.youtube.com/watch?v=azCq5qQodU8 | https://www.youtube.com/watch?v=Z5t6nYs8QH0
Benefits (How this will benefit the server and game as a whole):
Improved realism.
Vastly improves existing incendiary mechanics, making them more intuitive and logical and less totally arbitrary; gets rid of 'magical fire'.
Easier incendiary manufacture that doesn't rely on a precious and extremely limited commodity (phoron), particularly as there is no mining department. Gives chemistry a way to manufacture plastics and replenish fuel and napalm stores.
Details (Description of how you think this would work, the benefits, etc):
General Incendiary Mechanics:
Flammable/incendiary substances now apply X burning stacks to a turf/mob/etc. Each cycle the burning stack value for each flame is reduced and burning damage is applied (to all Mobs and susceptible Objects/Walls in a burning tile or to a burning Mob; either via existing temperature mechanics or a formula that scales burn damage with burning temperature). Then, if the fire is on a Turf or Mob and there is a combustable substance/object in an adjacent Turf or on an adjacent Mob (or in a Mob's case, in the same space) that the fire is hot enough to ignite, it will spread there. When the burning stack value of a Mob or Turf is reduced to 0 or less, the burning on that Mob or Turf ends immediately. Though such fires do not consume oxygen or convert it into CO2/waste gas (out of necessity to prevent atmos fuckery), they need sufficient levels of atmospheric oxygen to ignite, and a burning fire starved of adequate oxygen will rapidly lose burn stacks each cycle. Water and other extinguishing substances work by reducing burning stack values, as does stop drop and roll for Marines, and perhaps using the Aid intent on an ignited Xeno (including oneself) as a Xeno while stationary for 1+ seconds. Fires do not raise atmospheric temperatures (again out of necessity).
Objects in a burning tile may be consumed by a fire if the fire is hot enough to combust/destroy it (paper has a much lower point of combustion than say a wooden wall/barricade, and extremely high temperatures are required to melt/destroy a metal wall). Objects that combust add burn stacks to a fire, and present an avenue for fire spread; these mechanics are lower priority and can be added later (adding burning metrics/data and such to shitloads of objects is definitely tedious fucking work).
Each flammable/incendiary substance has the following standard properties: a stack value per # of Units/U, ignition point and burning temperature.
The higher the stack value, the longer something burns (obviously).
The higher the burning temperature, the more burn damage dealt (Thermite and Napalm burn hotter than say oil). If multiple flammable substances are ignited on the same Turf/Mob, their burning stacks are combined and a weighted average is used to determine the burning temperature as determined by the amount of each flammable substance. The illumination produced by a fire also scales with its burning temperature.
Ignition point determines at what temperature the substance actually combusts (oil combusts at a much lower temperature than proper jelled napalm or thermite).
Recipes (Common incendiary substances):
Modern napalm is essentially an oil derivative and mixture of hydrocarbons (benzene, gasoline, polystyrene; basically a fuck ton of C and H with the occasional O per certain gasoline compositions). Also it probably should not ignite immediately on mixing; proper napalm is actually quite stable and requires a specialized igniter.
Oil: C + H (Imidazoline synthesis takes priority when Dylovene is present)
Properties: Low ignition point, moderate # of burn stacks, low burning temperature.
Plasticide: Oil + N + S (Already exists as a chem; now it can be synthesized)
Properties: Plastic. Used as a solidifying/gelling agent for napalm.
Welding Fuel: Oil + O + Ethanol (Already exists as a chem; now it can be synthesized)
Properties: Low ignition point, very low # of burn stacks, very high burning temperature
Napalm: Welding Fuel + Plasticide; now needs to be heated in order to ignite (such as via an igniting device or high ambient temperatures) instead of autoigniting when synthesized.
Properties: Moderate ignition point (simple flames won't produce enough heat; an Igniter will), high # of burn stacks, high burning temperature
Thermite: Recipe unchanged.
Properties: High ignition point, extremely low # of burn stacks, extremely high burning temperature. Melts any incendiary device it's used with, and will spread thermite in/ignite the user Mob and that user's Turf (for example a flamethrower would melt after one use and ignite the user/user's tile).
Utilization of Incendiaries: Incendiary agents are typically used in grenades and flamethrowers; the grenade or flamethrower disperses a quantity of the substance over an area of Turfs/tiles (and all Mobs in that area) and immediately ignites it.
Incendiary agents may also be spread on a Turf/tile to be ignited later as a trap; this usually leaves conspicuous puddles of viscous or slippery goop. Acid (Corrosive Acid and Boiler Gas and Acid Sprays) can neutralize such puddles/spilt incendiary agents.
Implementation (Optional, if you have an idea how to implement it):
Coding changes. Recipes provided below:
Code: Select all
oil
name = "Oil"
id = "oil"
result = "oil"
required_reagents = list("carbon" = 1, "hydrogen" = 1)
result_amount = 2
fuel
name = "Welding fuel"
id = "fuel"
result = "fuel"
required_reagents = list("oil" = 1, "oxygen" = 1, "ethanol" = 1)
result_amount = 3
plasticide
name = "Plasticide"
id = "plasticide"
result = "plasticide"
required_reagents = list("oil" = 1, "nitrogen" = 1, "sulfur" = 1)
result_amount = 3
napalm
name = "Napalm"
id = "napalm"
result = "napalm"
required_reagents = list("fuel" = 1, "plasticide" = 1)
result_amount = 2