From 6b127b158ff600c6fa36de4d418a431dd4ae3c69 Mon Sep 17 00:00:00 2001 From: TheDZD Date: Thu, 11 Feb 2016 20:35:49 -0500 Subject: [PATCH] Spacepod Tweaks --- code/game/vehicles/spacepods/equipment.dm | 21 +++---- code/game/vehicles/spacepods/spacepod.dm | 68 ++++++++++++----------- 2 files changed, 46 insertions(+), 43 deletions(-) diff --git a/code/game/vehicles/spacepods/equipment.dm b/code/game/vehicles/spacepods/equipment.dm index 80a24e72727..e151e75d99e 100644 --- a/code/game/vehicles/spacepods/equipment.dm +++ b/code/game/vehicles/spacepods/equipment.dm @@ -15,14 +15,12 @@ switch(my_atom.dir) if(NORTH) firstloc = get_step(my_atom, NORTH) - firstloc = get_step(firstloc, NORTH) secondloc = get_step(firstloc,EAST) if(SOUTH) firstloc = get_step(my_atom, SOUTH) secondloc = get_step(firstloc,EAST) if(EAST) firstloc = get_step(my_atom, EAST) - firstloc = get_step(firstloc, EAST) secondloc = get_step(firstloc,NORTH) if(WEST) firstloc = get_step(my_atom, WEST) @@ -72,34 +70,33 @@ var/shot_cost = 0 var/shots_per = 1 var/fire_sound - var/fire_delay = 20 + var/fire_delay = 15 /obj/item/device/spacepod_equipment/weaponry/taser - name = "\improper taser system" - desc = "A weak taser system for space pods, fires electrodes that shock upon impact." + name = "disabler system" + desc = "A weak taser system for space pods, fires disabler beams." icon_state = "pod_taser" projectile_type = "/obj/item/projectile/beam/disabler" - shot_cost = 250 + shot_cost = 400 fire_sound = "sound/weapons/Taser.ogg" /obj/item/device/spacepod_equipment/weaponry/burst_taser - name = "\improper burst taser system" + name = "burst taser system" desc = "A weak taser system for space pods, this one fires 3 at a time." icon_state = "pod_b_taser" projectile_type = "/obj/item/projectile/beam/disabler" - shot_cost = 350 + shot_cost = 1200 shots_per = 3 fire_sound = "sound/weapons/Taser.ogg" - fire_delay = 40 + fire_delay = 30 /obj/item/device/spacepod_equipment/weaponry/laser - name = "\improper laser system" + name = "laser system" desc = "A weak laser system for space pods, fires concentrated bursts of energy" icon_state = "pod_w_laser" projectile_type = "/obj/item/projectile/beam" - shot_cost = 300 + shot_cost = 600 fire_sound = 'sound/weapons/Laser.ogg' - fire_delay = 30 //base item for spacepod misc equipment (tracker) /obj/item/device/spacepod_equipment/misc diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index af322b3f60f..caf7c8b16be 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -49,6 +49,9 @@ var/allow2enter = 1 + var/move_delay = 2 + var/next_move = 0 + /obj/spacepod/New() . = ..() if(!pod_overlays) @@ -723,43 +726,45 @@ /datum/global_iterator/pod_tank_give_air delay = 15 - process(var/obj/spacepod/spacepod) - if(spacepod && spacepod.internal_tank) - var/datum/gas_mixture/tank_air = spacepod.internal_tank.return_air() - var/datum/gas_mixture/cabin_air = spacepod.cabin_air +/datum/global_iterator/pod_tank_give_air/process(var/obj/spacepod/spacepod) + if(spacepod && spacepod.internal_tank) + var/datum/gas_mixture/tank_air = spacepod.internal_tank.return_air() + var/datum/gas_mixture/cabin_air = spacepod.cabin_air - var/release_pressure = ONE_ATMOSPHERE - var/cabin_pressure = cabin_air.return_pressure() - var/pressure_delta = min(release_pressure - cabin_pressure, (tank_air.return_pressure() - cabin_pressure)/2) - var/transfer_moles = 0 - if(pressure_delta > 0) //cabin pressure lower than release pressure - if(tank_air.return_temperature() > 0) - transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = tank_air.remove(transfer_moles) - cabin_air.merge(removed) - else if(pressure_delta < 0) //cabin pressure higher than release pressure - var/datum/gas_mixture/t_air = spacepod.get_turf_air() - pressure_delta = cabin_pressure - release_pressure + var/release_pressure = ONE_ATMOSPHERE + var/cabin_pressure = cabin_air.return_pressure() + var/pressure_delta = min(release_pressure - cabin_pressure, (tank_air.return_pressure() - cabin_pressure)/2) + var/transfer_moles = 0 + if(pressure_delta > 0) //cabin pressure lower than release pressure + if(tank_air.return_temperature() > 0) + transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = tank_air.remove(transfer_moles) + cabin_air.merge(removed) + else if(pressure_delta < 0) //cabin pressure higher than release pressure + var/datum/gas_mixture/t_air = spacepod.get_turf_air() + pressure_delta = cabin_pressure - release_pressure + if(t_air) + pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta) + if(pressure_delta > 0) //if location pressure is lower than cabin pressure + transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) if(t_air) - pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta) - if(pressure_delta > 0) //if location pressure is lower than cabin pressure - transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) - if(t_air) - t_air.merge(removed) - else //just delete the cabin gas, we're in space or some shit - qdel(removed) - else - return stop() - return + t_air.merge(removed) + else //just delete the cabin gas, we're in space or some shit + qdel(removed) + else + return stop() + return /obj/spacepod/relaymove(mob/user, direction) if(!CheckIfOccupant2(user)) handlerelaymove(user, direction) /obj/spacepod/proc/handlerelaymove(mob/user, direction) + if(world.time < next_move) + return 0 var/moveship = 1 - if(battery && battery.charge >= 3 && health && empcounter == 0) + if(battery && battery.charge >= 1 && health && empcounter == 0) src.dir = direction switch(direction) if(NORTH) @@ -783,16 +788,17 @@ else if(!battery) user << "No energy cell detected." - else if(battery.charge < 3) + else if(battery.charge < 1) user << "Not enough charge left." else if(!health) user << "She's dead, Jim" else if(empcounter != 0) user << "The pod control interface isn't responding. The console indicates [empcounter] seconds before reboot." else - user << "Unknown error has occurred, yell at pomf." + user << "Unknown error has occurred, yell at the coders." return 0 - battery.charge = max(0, battery.charge - 3) + battery.charge = max(0, battery.charge - 1) + next_move = world.time + move_delay /obj/spacepod/proc/CheckIfOccupant2(mob/user) if(!src.occupant2)