extreme optimization project to maybe fix game
This commit is contained in:
@@ -380,12 +380,24 @@
|
||||
/atom/proc/assume_air(datum/gas_mixture/giver)
|
||||
return null
|
||||
|
||||
/atom/proc/assume_air_moles(datum/gas_mixture/giver, moles)
|
||||
return null
|
||||
|
||||
/atom/proc/assume_air_ratio(datum/gas_mixture/giver, ratio)
|
||||
return null
|
||||
|
||||
/atom/proc/remove_air(amount)
|
||||
return null
|
||||
|
||||
/atom/proc/remove_air_ratio(ratio)
|
||||
return null
|
||||
|
||||
/atom/proc/transfer_air(datum/gas_mixture/taker, amount)
|
||||
return null
|
||||
|
||||
/atom/proc/transfer_air_ratio(datum/gas_mixture/taker, ratio)
|
||||
return null
|
||||
|
||||
/atom/proc/return_air()
|
||||
if(loc)
|
||||
return loc.return_air()
|
||||
|
||||
@@ -203,11 +203,7 @@
|
||||
equipment.Cut()
|
||||
cell = null
|
||||
internal_tank = null
|
||||
if(loc)
|
||||
loc.assume_air(cabin_air)
|
||||
air_update_turf()
|
||||
else
|
||||
qdel(cabin_air)
|
||||
assume_air(cabin_air)
|
||||
cabin_air = null
|
||||
qdel(spark_system)
|
||||
spark_system = null
|
||||
@@ -321,13 +317,7 @@
|
||||
|
||||
if(internal_damage & MECHA_INT_TANK_BREACH) //remove some air from internal tank
|
||||
if(internal_tank)
|
||||
var/datum/gas_mixture/int_tank_air = internal_tank.return_air()
|
||||
var/datum/gas_mixture/leaked_gas = int_tank_air.remove_ratio(0.1)
|
||||
if(loc)
|
||||
loc.assume_air(leaked_gas)
|
||||
air_update_turf()
|
||||
else
|
||||
qdel(leaked_gas)
|
||||
assume_air_ratio(internal_tank.return_air(), 0.1)
|
||||
|
||||
if(internal_damage & MECHA_INT_SHORT_CIRCUIT)
|
||||
if(get_charge())
|
||||
@@ -350,8 +340,7 @@
|
||||
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)
|
||||
tank_air.transfer_to(cabin_air,transfer_moles)
|
||||
else if(pressure_delta < 0) //cabin pressure higher than release pressure
|
||||
var/datum/gas_mixture/t_air = return_air()
|
||||
pressure_delta = cabin_pressure - release_pressure
|
||||
@@ -359,11 +348,7 @@
|
||||
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)
|
||||
cabin_air.transfer_to(t_air, transfer_moles)
|
||||
|
||||
if(occupant)
|
||||
if(cell)
|
||||
|
||||
@@ -242,7 +242,13 @@
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
/obj/effect/chrono_field/assume_air()
|
||||
return 0
|
||||
return null
|
||||
|
||||
/obj/effect/chrono_field/assume_air_moles()
|
||||
return null
|
||||
|
||||
/obj/effect/chrono_field/assume_air_ratio()
|
||||
return null
|
||||
|
||||
/obj/effect/chrono_field/return_air() //we always have nominal air and temperature
|
||||
var/datum/gas_mixture/GM = new
|
||||
|
||||
@@ -172,20 +172,15 @@
|
||||
if(!target_self)
|
||||
target.set_volume(target.return_volume() + tank_two.volume)
|
||||
target.set_volume(target.return_volume() + tank_one.air_contents.return_volume())
|
||||
var/datum/gas_mixture/temp
|
||||
temp = tank_one.air_contents.remove_ratio(1)
|
||||
target.merge(temp)
|
||||
tank_one.air_contents.transfer_ratio_to(target, 1)
|
||||
if(!target_self)
|
||||
temp = tank_two.air_contents.remove_ratio(1)
|
||||
target.merge(temp)
|
||||
tank_two.air_contents.transfer_ratio_to(target, 1)
|
||||
|
||||
/obj/item/transfer_valve/proc/split_gases()
|
||||
if (!valve_open || !tank_one || !tank_two)
|
||||
return
|
||||
var/ratio1 = tank_one.air_contents.return_volume()/tank_two.air_contents.return_volume()
|
||||
var/datum/gas_mixture/temp
|
||||
temp = tank_two.air_contents.remove_ratio(ratio1)
|
||||
tank_one.air_contents.merge(temp)
|
||||
tank_two.air_contents.transfer_ratio_to(tank_one.air_contents, ratio1)
|
||||
tank_two.air_contents.set_volume(tank_two.air_contents.return_volume() - tank_one.air_contents.return_volume())
|
||||
|
||||
/*
|
||||
|
||||
@@ -79,27 +79,27 @@
|
||||
var/weight = getweight(user, STAM_COST_ATTACK_MOB_MULT)
|
||||
if(!user.UseStaminaBuffer(weight, warn = TRUE))
|
||||
return FALSE
|
||||
var/datum/gas_mixture/gasused = tank.air_contents.remove(gasperfist * fisto_setting)
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T)
|
||||
return FALSE
|
||||
var/totalitemdamage = target.pre_attacked_by(src, user)
|
||||
T.assume_air(gasused)
|
||||
T.air_update_turf()
|
||||
if(!gasused)
|
||||
var/moles_used = gasperfist * fisto_setting
|
||||
if(!moles_used)
|
||||
to_chat(user, "<span class='warning'>\The [src]'s tank is empty!</span>")
|
||||
target.apply_damage((totalitemdamage / 5), BRUTE)
|
||||
playsound(loc, 'sound/weapons/punch1.ogg', 50, 1)
|
||||
target.visible_message("<span class='danger'>[user]'s powerfist lets out a dull thunk as [user.p_they()] punch[user.p_es()] [target.name]!</span>", \
|
||||
"<span class='userdanger'>[user]'s punches you!</span>")
|
||||
return
|
||||
if(gasused.total_moles() < gasperfist * fisto_setting)
|
||||
if(tank.air_contents.total_moles() < moles_used)
|
||||
to_chat(user, "<span class='warning'>\The [src]'s piston-ram lets out a weak hiss, it needs more gas!</span>")
|
||||
playsound(loc, 'sound/weapons/punch4.ogg', 50, 1)
|
||||
target.apply_damage((totalitemdamage / 2), BRUTE)
|
||||
target.visible_message("<span class='danger'>[user]'s powerfist lets out a weak hiss as [user.p_they()] punch[user.p_es()] [target.name]!</span>", \
|
||||
"<span class='userdanger'>[user]'s punch strikes with force!</span>")
|
||||
return
|
||||
T.assume_air_moles(tank.air_contents, gasperfist * fisto_setting)
|
||||
T.air_update_turf()
|
||||
target.apply_damage(totalitemdamage * fisto_setting, BRUTE, wound_bonus = -25*fisto_setting**2)
|
||||
target.visible_message("<span class='danger'>[user]'s powerfist lets out a loud hiss as [user.p_they()] punch[user.p_es()] [target.name]!</span>", \
|
||||
"<span class='userdanger'>You cry out in pain as [user]'s punch flings you backwards!</span>")
|
||||
|
||||
@@ -77,13 +77,7 @@
|
||||
turn_off(user)
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/removed = air_contents.remove(num)
|
||||
if(removed.total_moles() < 0.005)
|
||||
turn_off(user)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
T.assume_air(removed)
|
||||
assume_air_moles(air_contents, num)
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -116,13 +110,7 @@
|
||||
turn_off(user)
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/removed = air_contents.remove(num)
|
||||
if(removed.total_moles() < 0.005)
|
||||
turn_off(user)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
T.assume_air(removed)
|
||||
assume_air_moles(air_contents, num)
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -249,6 +249,18 @@
|
||||
check_status()
|
||||
return 1
|
||||
|
||||
/obj/item/tank/assume_air_moles(datum/gas_mixture/giver, moles)
|
||||
giver.transfer_to(air_contents, moles)
|
||||
|
||||
check_status()
|
||||
return 1
|
||||
|
||||
/obj/item/tank/assume_air_ratio(datum/gas_mixture/giver, ratio)
|
||||
giver.transfer_ratio_to(air_contents, ratio)
|
||||
|
||||
check_status()
|
||||
return 1
|
||||
|
||||
/obj/item/tank/proc/remove_air_volume(volume_to_return)
|
||||
if(!air_contents)
|
||||
return null
|
||||
|
||||
@@ -96,6 +96,31 @@
|
||||
else
|
||||
return null
|
||||
|
||||
/obj/assume_air_moles(datum/gas_mixture/giver, moles)
|
||||
if(loc)
|
||||
return loc.assume_air_moles(giver, moles)
|
||||
else
|
||||
return null
|
||||
|
||||
/obj/assume_air_ratio(datum/gas_mixture/giver, ratio)
|
||||
if(loc)
|
||||
return loc.assume_air_ratio(giver, ratio)
|
||||
else
|
||||
return null
|
||||
|
||||
/obj/transfer_air(datum/gas_mixture/taker, moles)
|
||||
if(loc)
|
||||
return loc.transfer_air(taker, moles)
|
||||
else
|
||||
return null
|
||||
|
||||
/obj/transfer_air_ratio(datum/gas_mixture/taker, ratio)
|
||||
if(loc)
|
||||
return loc.transfer_air_ratio(taker, ratio)
|
||||
else
|
||||
return null
|
||||
|
||||
|
||||
/obj/remove_air(amount)
|
||||
if(loc)
|
||||
return loc.remove_air(amount)
|
||||
|
||||
@@ -149,9 +149,7 @@
|
||||
pod_moving = 0
|
||||
if(!QDELETED(pod))
|
||||
var/datum/gas_mixture/floor_mixture = loc.return_air()
|
||||
var/tot_volume = pod.air_contents.return_volume() + floor_mixture.return_volume()
|
||||
pod.air_contents.merge(floor_mixture.remove_ratio(1))
|
||||
floor_mixture.merge(pod.air_contents.remove_ratio(floor_mixture.return_volume()/tot_volume))
|
||||
equalize_all_gases_in_list(list(pod.air_contents,floor_mixture))
|
||||
air_update_turf()
|
||||
|
||||
/obj/structure/transit_tube/station/init_tube_dirs()
|
||||
|
||||
@@ -153,12 +153,25 @@
|
||||
/obj/structure/transit_tube_pod/assume_air(datum/gas_mixture/giver)
|
||||
return air_contents.merge(giver)
|
||||
|
||||
/obj/structure/transit_tube_pod/assume_air_moles(datum/gas_mixture/giver, moles)
|
||||
return giver.transfer_to(air_contents, moles)
|
||||
|
||||
/obj/structure/transit_tube_pod/assume_air_ratio(datum/gas_mixture/giver, ratio)
|
||||
return giver.transfer_ratio_to(air_contents, ratio)
|
||||
|
||||
/obj/structure/transit_tube_pod/remove_air(amount)
|
||||
return air_contents.remove(amount)
|
||||
|
||||
/obj/structure/transit_tube_pod/remove_air_ratio(ratio)
|
||||
return air_contents.remove_ratio(ratio)
|
||||
|
||||
/obj/structure/transit_tube_pod/transfer_air(datum/gas_mixture/taker, moles)
|
||||
return air_contents.transfer_to(taker, moles)
|
||||
|
||||
/obj/structure/transit_tube_pod/transfer_air_ratio(datum/gas_mixture/taker, ratio)
|
||||
return air_contents.transfer_ratio_to(taker, ratio)
|
||||
|
||||
|
||||
/obj/structure/transit_tube_pod/relaymove(mob/mob, direction)
|
||||
if(istype(mob) && mob.client)
|
||||
if(!moving)
|
||||
|
||||
Reference in New Issue
Block a user