mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
Merge pull request #3575 from TheDZD/bullshittium-thrusters
Spacepod Tweaks
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 << "<span class='warning'>No energy cell detected.</span>"
|
||||
else if(battery.charge < 3)
|
||||
else if(battery.charge < 1)
|
||||
user << "<span class='warning'>Not enough charge left.</span>"
|
||||
else if(!health)
|
||||
user << "<span class='warning'>She's dead, Jim</span>"
|
||||
else if(empcounter != 0)
|
||||
user << "<span class='warning'>The pod control interface isn't responding. The console indicates [empcounter] seconds before reboot.</span>"
|
||||
else
|
||||
user << "<span class='warning'>Unknown error has occurred, yell at pomf.</span>"
|
||||
user << "<span class='warning'>Unknown error has occurred, yell at the coders.</span>"
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user