diff --git a/code/game/objects/items/weapons/grenades/atmosgrenade.dm b/code/game/objects/items/weapons/grenades/atmosgrenade.dm index 51c3c9fa079..c62718a1be4 100644 --- a/code/game/objects/items/weapons/grenades/atmosgrenade.dm +++ b/code/game/objects/items/weapons/grenades/atmosgrenade.dm @@ -8,92 +8,22 @@ icon = 'icons/obj/grenade.dmi' icon_state = "syndicate" item_state = "flashbang" - var/gas_type = "fire" - var/max_spread_turfs = 20 - var/gas_debug = 0 -/obj/item/weapon/grenade/gas/overpressure - name = "Overpressure Grenade" - desc = "A compressed gas grenade, used to create crushing pressure in an area." - gas_type = "overpressure" - -/obj/item/weapon/grenade/gas/suffocation - name = "Suffocation Grenade" - desc = "An oxygen depletion grenade, used to ensure anyone entering the target area quickly suffocates." - gas_type = "suffocation" - -/obj/item/weapon/grenade/gas/vacuum - name = "Vacuum Grenade" - desc = "A grenade that completely removes all air and heat from its detonation area." - gas_type = "vacuum" +/obj/item/weapon/grenade/gas/prime() + var/turf/simulated/target_turf = get_turf(src) + if(istype(target_turf)) + target_turf.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 100) + target_turf.air_update_turf() + qdel(src) /obj/item/weapon/grenade/gas/knockout name = "Knockout Grenade" desc = "A grenade that completely removes all air and heat from its detonation area." - gas_type = "knockout" -/obj/item/weapon/grenade/gas/prime() - var/turf/simulated/origin = get_turf(src) - var/list/spread_turfs = list() - var/list/scan_turfs = list() +/obj/item/weapon/grenade/gas/knockout/prime() + var/turf/simulated/target_turf = get_turf(src) + if(istype(target_turf)) + target_turf.atmos_spawn_air(SPAWN_20C | SPAWN_N2O, 100) + target_turf.air_update_turf() + qdel(src) - if(!istype(origin)) - // Error, unsimulated turf. - qdel(src) - return - - scan_turfs += origin - - while(spread_turfs.len < max_spread_turfs && scan_turfs.len) - if(gas_debug) - visible_message("[src] loops: [spread_turfs.len] turfs, [scan_turfs.len] to scan!") - var/turf/scan_from = pick(scan_turfs) - var/list/adj = scan_from.GetAtmosAdjacentTurfs(1) - for(var/turf/simulated/C in adj) - if(!(C in scan_turfs) && C.CanAtmosPass(C)) - scan_turfs += C - spread_turfs += scan_from - scan_turfs -= scan_from - - if(!spread_turfs.len) - visible_message("[src] detonates harmlessly in the airless space.") - qdel(src) - else - if(gas_debug) - visible_message("[src] affects [spread_turfs.len] turfs, with [scan_turfs.len] left to scan!") - for(var/turf/simulated/target_turf in spread_turfs) - switch(gas_type) - if("fire") - target_turf.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 200) // works well - if("overpressure") - target_turf.atmos_spawn_air(SPAWN_20C | SPAWN_NITROGEN, 2000) // kills slowly, but hard to deal with - if("suffocation") - target_turf.atmos_spawn_air(SPAWN_20C | SPAWN_CO2, target_turf.air.oxygen) // knocks out slowly, kills - target_turf.atmos_spawn_air(SPAWN_20C | SPAWN_OXYGEN, target_turf.air.oxygen * -1) - if("knockout") - target_turf.atmos_spawn_air(SPAWN_20C | SPAWN_N2O, 100) // knocks out quickly - if("vacuum") - target_turf.air.nitrogen = 0 - target_turf.air.oxygen = 0 - target_turf.air.nitrogen = 0 - air_master.add_to_active(target_turf, 0) - var/obj/machinery/alarm/air_alarm = locate(/obj/machinery/alarm/) in target_turf - if(istype(air_alarm)) - // break the alarm off the wall - air_alarm.visible_message("[air_alarm] breaks from the rapid change in pressure!") - playsound(air_alarm.loc, 'sound/effects/sparks4.ogg', 50, 1) - new /obj/item/mounted/frame/alarm_frame(air_alarm.loc) - qdel(air_alarm) - var/obj/machinery/atmospherics/unary/vent_pump/v = locate(/obj/machinery/atmospherics/unary/vent_pump) in target_turf - if(istype(v)) - v.welded = 1 - v.update_icon() - v.visible_message("[v] is broken by the rapid pressure change!") - var/obj/machinery/atmospherics/unary/vent_scrubber/s = locate(/obj/machinery/atmospherics/unary/vent_scrubber) in target_turf - if(istype(s)) - s.welded = 1 - s.update_icon() - s.visible_message("[s] is broken by the rapid pressure change!") - target_turf.air_update_turf() - visible_message("[src] detonates!") - qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm index 8ba1782cf18..851c625b765 100644 --- a/code/game/objects/items/weapons/grenades/clusterbuster.dm +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -242,6 +242,16 @@ desc = "Reserved for those pesky request." payload = /mob/living/simple_animal/crab +/obj/item/weapon/grenade/clusterbuster/plasma + name = "Plasma Cluster Grenade" + desc = "For when everything needs to die in a fire." + payload = /obj/item/weapon/grenade/gas + +/obj/item/weapon/grenade/clusterbuster/n2o + name = "N2O Cluster Grenade" + desc = "For when you need to knock out EVERYONE." + payload = /obj/item/weapon/grenade/gas/knockout + ////////////Clusterbuster of Clusterbusters//////////// /obj/item/weapon/grenade/clusterbuster/mega_fox diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 44ead79427f..c089eb5ff9d 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -194,8 +194,5 @@ /obj/item/weapon/storage/box/syndie_kit/atmosgasgrenades/New() ..() - new /obj/item/weapon/grenade/gas(src) - new /obj/item/weapon/grenade/gas/overpressure(src) - new /obj/item/weapon/grenade/gas/suffocation(src) - new /obj/item/weapon/grenade/gas/vacuum(src) - new /obj/item/weapon/grenade/gas/knockout(src) + new /obj/item/weapon/grenade/clusterbuster/plasma(src) + new /obj/item/weapon/grenade/clusterbuster/n2o(src)