[ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Locked
User avatar
Surrealistik
Registered user
Posts: 1870
Joined: 04 Jul 2015, 17:57

[ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by Surrealistik » 22 Jul 2015, 15:48

CM Version (alpha or Regular):

Alpha

Summary (a quick, 2-3 sentence summary):

The Napalm chemical formula makes no sense; why is plasma/phoron a component? Aluminum only makes an iota of sense as a reference to aluminum salts in very old napalm compositions.

New chemistry recipes have been added that enable napalm, fuel and plastics manufacturing.

Also it would be preferable if we could use napalm as the basis/universal fuel of all incendiary weapons, including the flamethrower, rather than phoron.

Benefits (How this will benefit the server and game as a whole):

Improved realism. 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):

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; napalm is actually quite stable and requires an igniter.

So, new recipes:

Oil: C + H (Imidazoline synthesis takes priority when Dylovene is present)

Plasticide: Oil + N + S (Already exists as a chem; now it can be synthesized)

Welding Fuel: Oil + O + Ethanol (Already exists as a chem; now it can be synthesized)

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.


Napalm in grenades: Ignites an area upon detonation as though it were subject to the flamethrower. Mobs in the area accumulate several burn stacks and are also ignited. Size of the area depends on the amount of napalm in the grenade.

Oil and welder fuel act in a similar way but burn for a shorter duration and apply fewer burn stacks to mobs caught in the blast.


Implementation (Optional, if you have an idea how to implement it):

Chemistry-Recipes.dm:

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

Chemistry-Reagents.dm:

Code: Select all

		oil
			name = "Oil"
			id = "oil"
			description = "Black gold; the classic hydrocarbon. Flammable."
			reagent_state = LIQUID
			color = "#660000" // rgb: 102, 0, 0
			overdose = REAGENTS_OVERDOSE

			glass_icon_state = "dr_gibb_glass"
			glass_name = "glass of oil"
			glass_desc = "Unless you are chemical synthesizer or machine, this is probably not safe for consumption."

			reaction_obj(var/obj/O, var/volume)
				var/turf/T = get_turf(O)
				if(!T)
					return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO
				new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
				if(ignite)
					spawn (0) T.hotspot_expose(700, 400)
			reaction_turf(var/turf/T, var/volume)
				new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
				if(ignite)
					spawn (0) T.hotspot_expose(700, 400)
				return
			on_mob_life(var/mob/living/M as mob)
				if(!M) M = holder.my_atom
				M.adjustToxLoss(1)
				..()
				return
			reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
				if(!istype(M, /mob/living))
					return
				if(method == TOUCH)
					M.adjust_fire_stacks(volume / 12) //Not as flammable as welding fuel
					if(ignite)
						M.IgniteMob()
					return


		fuel
			name = "Welding fuel"
			id = "fuel"
			description = "Required for welders. Flamable."
			reagent_state = LIQUID
			color = "#660000" // rgb: 102, 0, 0
			overdose = REAGENTS_OVERDOSE

			glass_icon_state = "dr_gibb_glass"
			glass_name = "glass of welder fuel"
			glass_desc = "Unless you are an industrial tool, this is probably not safe for consumption."

			reaction_obj(var/obj/O, var/volume)
				var/turf/T = get_turf(O)
				if(!T)
					return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO
				new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
				if(ignite)
					spawn (0) T.hotspot_expose(700, 400)
			reaction_turf(var/turf/T, var/volume)
				new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
				if(ignite)
					spawn (0) T.hotspot_expose(700, 400)
				return
			on_mob_life(var/mob/living/M as mob)
				if(!M) M = holder.my_atom
				M.adjustToxLoss(1)
				..()
				return
			reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
				if(!istype(M, /mob/living))
					return
				if(method == TOUCH)
					M.adjust_fire_stacks(volume / 10)
					if(ignite)
						M.IgniteMob()
					return

		napalm
			name = "Napalm"
			id = "napalm"
			description = "Jellied napalm; weaponized hydrocarbon. Highly flammable."
			reagent_state = LIQUID
			color = "#660000" // rgb: 102, 0, 0
			overdose = REAGENTS_OVERDOSE

			glass_icon_state = "dr_gibb_glass"
			glass_name = "glass of napalm"
			glass_desc = "Unless you are an incendiary device, this is probably not safe for consumption."

			reaction_obj(var/obj/O, var/volume)
				var/turf/T = get_turf(O)
				if(!T)
					return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO
				new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
				if(ignite)
					//world << "reaction_obj: [id] ignited."//Debug notice
					spawn (0) T.hotspot_expose(700, 400)
			reaction_turf(var/turf/T, var/volume)
				new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
				if(ignite)
					//world << "reaction_turf: [id] ignited."//Debug notice
					spawn (0) T.hotspot_expose(700, 400)
				return
			on_mob_life(var/mob/living/M as mob)
				if(!M) M = holder.my_atom
				M.adjustToxLoss(1)
				..()
				return
			reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
				if(!istype(M, /mob/living))
					return
				if(method == TOUCH)
					M.adjust_fire_stacks(volume / 4) //Insanely flammable
					//world << "reaction_mob: Fire stacks: [M.fire_stacks]." //Debug notice
					if(ignite)
						//world << "reaction_mob: [id] ignited." //Debug notice
						M.IgniteMob()
					return
Chemistry-Holder.dm -> reaction() proc

Code: Select all

			reaction(var/atom/A, var/method=TOUCH, var/volume_modifier=0, var/ignite=0)

				switch(method)
					if(TOUCH)
						for(var/datum/reagent/R in reagent_list)
							if(ignite)
								R.ignite = 1
								//world << "reaction: [R.id] Ignite Status: [R.ignite]" //Debug notification
							if(ismob(A))
								spawn(0)
									if(!R) return
									else R.reaction_mob(A, TOUCH, R.volume+volume_modifier)
							if(isturf(A))
								spawn(0)
									if(!R) return
									else R.reaction_turf(A, R.volume+volume_modifier)
							if(isobj(A))
								spawn(0)
									if(!R) return
									else R.reaction_obj(A, R.volume+volume_modifier)
					if(INGEST)
						for(var/datum/reagent/R in reagent_list)
							if(ismob(A) && R)
								spawn(0)
									if(!R) return
									else R.reaction_mob(A, INGEST, R.volume+volume_modifier)
							if(isturf(A) && R)
								spawn(0)
									if(!R) return
									else R.reaction_turf(A, R.volume+volume_modifier)
							if(isobj(A) && R)
								spawn(0)
									if(!R) return
									else R.reaction_obj(A, R.volume+volume_modifier)
				return
Minor coding changes.
Last edited by Surrealistik on 29 Jul 2015, 11:59, edited 5 times in total.
Sur 'Druglord' Lahzar; Field Engineer, Perpetually Understaffed and Exasperated CMO/Doctor/Researcher
Bando 'Baldboi' Badderson; PFC, Five foot ten of pure bald glory.

Field Engineer Guide
Medbay Guide
Utility PFC Guide

User avatar
Mordrehel
Registered user
Posts: 250
Joined: 24 Apr 2015, 15:15

Re: [ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by Mordrehel » 22 Jul 2015, 16:41

Its disabled....
Image

Credit goes to NobodySpecialzz for this beautiful image

User avatar
Surrealistik
Registered user
Posts: 1870
Joined: 04 Jul 2015, 17:57

Re: [ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by Surrealistik » 22 Jul 2015, 18:34

Sure; no reason we can't have these nice things now though, since atmos is no longer an issue. Beyond that, psuedofires could be used that don't mess with atmos.
Sur 'Druglord' Lahzar; Field Engineer, Perpetually Understaffed and Exasperated CMO/Doctor/Researcher
Bando 'Baldboi' Badderson; PFC, Five foot ten of pure bald glory.

Field Engineer Guide
Medbay Guide
Utility PFC Guide

User avatar
MrJJJ
Registered user
Posts: 1935
Joined: 12 Jan 2015, 10:51
Location: Spider Lab

Re: [ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by MrJJJ » 23 Jul 2015, 05:34

I was the one who asked for napalm to be disabeled due to its shitiness, meta game and power game
It could fry anything it ever saw very quick, there was no reason to make it icly, why would you make a fire grenade that can potentialy burn EVERYTHING very quick and cause huge problems? it also not only fucked up things for marines, aliens as well

User avatar
Lostmixup
Donor
Donor
Posts: 1020
Joined: 20 May 2015, 16:25
Location: Cloud 9

Re: [ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by Lostmixup » 23 Jul 2015, 09:25

MrJJJ wrote:I was the one who asked for napalm to be disabeled due to its shitiness, meta game and power game
It could fry anything it ever saw very quick, there was no reason to make it icly, why would you make a fire grenade that can potentialy burn EVERYTHING very quick and cause huge problems? it also not only fucked up things for marines, aliens as well
To be fair, I don't think soldiers care that bad about the ethical treatment of aliens.
Default Scrolly Blur

User avatar
Surrealistik
Registered user
Posts: 1870
Joined: 04 Jul 2015, 17:57

Re: [ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by Surrealistik » 23 Jul 2015, 11:37

MrJJJ wrote:I was the one who asked for napalm to be disabeled due to its shitiness, meta game and power game
It could fry anything it ever saw very quick, there was no reason to make it icly, why would you make a fire grenade that can potentialy burn EVERYTHING very quick and cause huge problems? it also not only fucked up things for marines, aliens as well
To be honest, I see explosives (stun + a spike of unavoidable front loaded damage) and even polyacid gas (which typically _instakills_) being worse for marines from a friendly fire perspective, with the atmos issue being gone.

Concerning meta, before you see the weed/egg spam everywhere, you might have a point; afterwords not so much. To be fair, incendiary nades have about as much right to exist, and are about as meta as flamethrowers, serving similar roles: clearing shit out and area denial.

As for the rest, balancing napalm is a matter of getting the variables right: burn stack amount, burn stack duration, damage per tick, damage per fire exposure, etc. Better to balance than ban.
Sur 'Druglord' Lahzar; Field Engineer, Perpetually Understaffed and Exasperated CMO/Doctor/Researcher
Bando 'Baldboi' Badderson; PFC, Five foot ten of pure bald glory.

Field Engineer Guide
Medbay Guide
Utility PFC Guide

User avatar
Evilkyle24
Registered user
Posts: 539
Joined: 30 May 2015, 21:46

Re: [ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by Evilkyle24 » 28 Jul 2015, 15:00

+1
KILL IT WITH FIRE!
Image

User avatar
Surrealistik
Registered user
Posts: 1870
Joined: 04 Jul 2015, 17:57

Re: [ALPHA] Napalm Overhaul; Napalm As Incendiary Fuel

Post by Surrealistik » 29 Jul 2015, 11:54

Added code for the recipes and incendiary chems to the OP. The Ignite variable required for these chems to ignite immediately when interacting with turfs/mobs is included in the base set of reagent variables under Chemistry-Reagents.dm. This variable is set to TRUE when an Ignite variable passed to the reaction() proc under Chemistry-Holder.dm. Currently only chem_grenade.dm -> prime() proc passes the Ignite variable as TRUE, so napalm and other incendiaries will typically only ignite on reaction through the chem_grenade.dm -> prime() proc (though you can have other processes pass along the Ignite variable to the reaction() proc).

I have no idea how fire is actually implemented in CM, such as if you're using a custom system that's an offshoot of ZAS atmospherics or something completely separate, so you'll have to replace the HotSpot lines after the Ignite check for the incendiaries under Chemistry_Reagents.dm as needed.
Sur 'Druglord' Lahzar; Field Engineer, Perpetually Understaffed and Exasperated CMO/Doctor/Researcher
Bando 'Baldboi' Badderson; PFC, Five foot ten of pure bald glory.

Field Engineer Guide
Medbay Guide
Utility PFC Guide

Locked