mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
New turf proc: assume_gas(). Maps to air.adjust_gas_temp(). Lots of optimizations to processing, fire, lighting, HasEntered() and more. Zones now process all fire data and existance in one go, fire objects only handle spreading. Most code has been ported straight so some of it mightn't be ideally structured for the new gas_mixtures. Signed-off-by: Mloc-Argent <colmohici@gmail.com>
172 lines
4.0 KiB
Plaintext
172 lines
4.0 KiB
Plaintext
/* The old single tank bombs that dont really work anymore
|
|
/obj/effect/spawner/bomb
|
|
name = "bomb"
|
|
icon = 'icons/mob/screen1.dmi'
|
|
icon_state = "x"
|
|
var/btype = 0 //0 = radio, 1= prox, 2=time
|
|
var/explosive = 1 // 0= firebomb
|
|
var/btemp = 500 // bomb temperature (degC)
|
|
var/active = 0
|
|
|
|
/obj/effect/spawner/bomb/radio
|
|
btype = 0
|
|
|
|
/obj/effect/spawner/bomb/proximity
|
|
btype = 1
|
|
|
|
/obj/effect/spawner/bomb/timer
|
|
btype = 2
|
|
|
|
/obj/effect/spawner/bomb/timer/syndicate
|
|
btemp = 450
|
|
|
|
/obj/effect/spawner/bomb/suicide
|
|
btype = 3
|
|
|
|
/obj/effect/spawner/bomb/New()
|
|
..()
|
|
|
|
switch (src.btype)
|
|
// radio
|
|
if (0)
|
|
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank(src.loc)
|
|
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
|
var/obj/item/device/radio/signaler/p1 = new /obj/item/device/radio/signaler(R)
|
|
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
|
R.part1 = p1
|
|
R.part2 = p2
|
|
R.part3 = p3
|
|
p1.master = R
|
|
p2.master = R
|
|
p3.master = R
|
|
R.status = explosive
|
|
p1.b_stat = 0
|
|
p2.secured = 1
|
|
p3.air_contents.temperature = btemp + T0C
|
|
|
|
// proximity
|
|
if (1)
|
|
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank(src.loc)
|
|
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
|
var/obj/item/device/prox_sensor/p1 = new /obj/item/device/prox_sensor(R)
|
|
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
|
R.part1 = p1
|
|
R.part2 = p2
|
|
R.part3 = p3
|
|
p1.master = R
|
|
p2.master = R
|
|
p3.master = R
|
|
R.status = explosive
|
|
|
|
p3.air_contents.temperature = btemp + T0C
|
|
p2.secured = 1
|
|
|
|
if(src.active)
|
|
R.part1.secured = 1
|
|
R.part1.icon_state = text("motion[]", 1)
|
|
R.c_state(1, src)
|
|
|
|
// timer
|
|
if (2)
|
|
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank(src.loc)
|
|
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
|
|
var/obj/item/device/timer/p1 = new /obj/item/device/timer(R)
|
|
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
|
R.part1 = p1
|
|
R.part2 = p2
|
|
R.part3 = p3
|
|
p1.master = R
|
|
p2.master = R
|
|
p3.master = R
|
|
R.status = explosive
|
|
|
|
p3.air_contents.temperature = btemp + T0C
|
|
p2.secured = 1
|
|
//bombvest
|
|
if(3)
|
|
var/obj/item/clothing/suit/armor/a_i_a_ptank/R = new /obj/item/clothing/suit/armor/a_i_a_ptank(src.loc)
|
|
var/obj/item/weapon/tank/phoron/p4 = new /obj/item/weapon/tank/phoron(R)
|
|
var/obj/item/device/healthanalyzer/p1 = new /obj/item/device/healthanalyzer(R)
|
|
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
|
|
var/obj/item/clothing/suit/armor/vest/p3 = new /obj/item/clothing/suit/armor/vest(R)
|
|
R.part1 = p1
|
|
R.part2 = p2
|
|
R.part3 = p3
|
|
R.part4 = p4
|
|
p1.master = R
|
|
p2.master = R
|
|
p3.master = R
|
|
p4.master = R
|
|
R.status = explosive
|
|
|
|
p4.air_contents.temperature = btemp + T0C
|
|
p2.secured = 1
|
|
|
|
del(src)
|
|
*/
|
|
|
|
/obj/effect/spawner/newbomb
|
|
name = "bomb"
|
|
icon = 'icons/mob/screen1.dmi'
|
|
icon_state = "x"
|
|
var/btype = 0 // 0=radio, 1=prox, 2=time
|
|
|
|
timer
|
|
btype = 2
|
|
|
|
syndicate
|
|
|
|
proximity
|
|
btype = 1
|
|
|
|
radio
|
|
btype = 0
|
|
|
|
|
|
/obj/effect/spawner/newbomb/New()
|
|
..()
|
|
|
|
var/obj/item/device/transfer_valve/V = new(src.loc)
|
|
var/obj/item/weapon/tank/phoron/PT = new(V)
|
|
var/obj/item/weapon/tank/oxygen/OT = new(V)
|
|
|
|
V.tank_one = PT
|
|
V.tank_two = OT
|
|
|
|
PT.master = V
|
|
OT.master = V
|
|
|
|
PT.air_contents.temperature = PHORON_FLASHPOINT
|
|
PT.air_contents.adjust_multi("phoron", 12, "carbon_dioxide", 8)
|
|
|
|
OT.air_contents.temperature = PHORON_FLASHPOINT
|
|
OT.air_contents.adjust_gas("oxygen", 20)
|
|
|
|
var/obj/item/device/assembly/S
|
|
|
|
switch (src.btype)
|
|
// radio
|
|
if (0)
|
|
|
|
S = new/obj/item/device/assembly/signaler(V)
|
|
|
|
// proximity
|
|
if (1)
|
|
|
|
S = new/obj/item/device/assembly/prox_sensor(V)
|
|
|
|
// timer
|
|
if (2)
|
|
|
|
S = new/obj/item/device/assembly/timer(V)
|
|
|
|
|
|
V.attached_device = S
|
|
|
|
S.holder = V
|
|
S.toggle_secure()
|
|
|
|
V.update_icon()
|
|
|
|
del(src)
|