mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 04:27:35 +01:00
- Fixed "eternal pointing arrow" bug.
- Vent pumps and scrubbers no longer spam radio broadcasts. Should help with lag a little. - Fixed Gygax construction. - Made Ripley more miner-friendly. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1152 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -36,6 +36,9 @@
|
||||
if (!id_tag)
|
||||
assign_uid()
|
||||
id_tag = num2text(uid)
|
||||
if(ticker && ticker.current_state == 3)//if the game is running
|
||||
src.initialize()
|
||||
src.broadcast_status()
|
||||
..()
|
||||
|
||||
high_volume
|
||||
@@ -61,7 +64,7 @@
|
||||
return
|
||||
if (!node)
|
||||
on = 0
|
||||
broadcast_status()
|
||||
//broadcast_status()
|
||||
if(!on)
|
||||
return 0
|
||||
|
||||
@@ -174,7 +177,6 @@
|
||||
if("toggle_checks")
|
||||
pressure_checks = (pressure_checks?0:3)
|
||||
|
||||
|
||||
if("set_direction")
|
||||
var/number = text2num(signal.data["parameter"])
|
||||
if(number > 0.5)
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
if (!id_tag)
|
||||
assign_uid()
|
||||
id_tag = num2text(uid)
|
||||
if(ticker && ticker.current_state == 3)//if the game is running
|
||||
src.initialize()
|
||||
src.broadcast_status()
|
||||
..()
|
||||
|
||||
update_icon()
|
||||
@@ -79,14 +82,13 @@
|
||||
if (frequency)
|
||||
set_frequency(frequency)
|
||||
|
||||
|
||||
process()
|
||||
..()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if (!node)
|
||||
on = 0
|
||||
broadcast_status()
|
||||
//broadcast_status()
|
||||
if(!on)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -161,13 +161,15 @@
|
||||
/atom/verb/point()
|
||||
set name = "Point To"
|
||||
set src in oview()
|
||||
var/atom/this = src//detach proc from src
|
||||
src = null
|
||||
|
||||
if (!usr || !isturf(usr.loc))
|
||||
return
|
||||
else if (usr.stat != 0 || usr.restrained())
|
||||
return
|
||||
|
||||
var/tile = get_turf(src)
|
||||
var/tile = get_turf(this)
|
||||
if (!tile)
|
||||
return
|
||||
|
||||
@@ -175,7 +177,7 @@
|
||||
spawn (20)
|
||||
del(P)
|
||||
|
||||
usr.visible_message("<b>[usr]</b> points to [src]")
|
||||
usr.visible_message("<b>[usr]</b> points to [this]")
|
||||
|
||||
/obj/decal/point/point()
|
||||
set src in oview()
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
return
|
||||
if (signal.data["area"] != area_uid)
|
||||
return
|
||||
if(!signal.data["device"])
|
||||
return
|
||||
if(!(id_tag in sensors) && !(id_tag in vents))
|
||||
register_env_machine(id_tag, signal.data["device"])
|
||||
if(signal.data["device"] == "AScr")
|
||||
@@ -217,15 +219,17 @@
|
||||
var/sensor_part = "<B>[long_name]</B>:<BR>"
|
||||
|
||||
if(data)
|
||||
sensor_part += {"<B>Operating:</B> <A href='?src=\ref[src];scr_toggle_power=[id_tag]'>[(data["on"]?"on":"off")]</A><BR>
|
||||
<B>Type:</B> <A href='?src=\ref[src];scr_toggle_scrubbing=[id_tag]'>[(data["scrubbing"]?"scrubbing":"syphoning")]</A><BR>"}
|
||||
sensor_part += {"<B>Operating:</B> <A href='?src=\ref[src];command=toggle_power;id=[id_tag]'>[(data["on"]?"on":"off")]</A><BR>
|
||||
<B>Type:</B> <A href='?src=\ref[src];command=toggle_scrubbing;id=[id_tag]'>[(data["scrubbing"]?"scrubbing":"syphoning")]</A><BR>"}
|
||||
if(data["scrubbing"])
|
||||
sensor_part += "<B>Filtering:</B> Carbon Dioxide <A href='?src=\ref[src];scr_toggle_co2_scrub=[id_tag]'>([(data["filter_co2"]?"on":"off")])</A>; Toxins <A href='?src=\ref[src];scr_toggle_tox_scrub=[id_tag]'>([data["filter_toxins"]?"on":"off"])</A>; Nitrous Oxide <A href='?src=\ref[src];scr_toggle_n2o_scrub=[id_tag]'>([data["filter_n2o"]?"on":"off"])</A><BR>"
|
||||
sensor_part += "<A href='?src=\ref[src];scr_toggle_panic_siphon=[id_tag]'><font color='[(data["panic"]?"blue'>Dea":"red'>A")]ctivate panic syphon</A></font><BR>"
|
||||
sensor_part += "<B>Filtering:</B> Carbon Dioxide <A href='?src=\ref[src];command=toggle_co2_scrub;id=[id_tag]'>([(data["filter_co2"]?"on":"off")])</A>; Toxins <A href='?src=\ref[src];command=toggle_tox_scrub;id=[id_tag]'>([data["filter_toxins"]?"on":"off"])</A>; Nitrous Oxide <A href='?src=\ref[src];command=toggle_n2o_scrub;id=[id_tag]'>([data["filter_n2o"]?"on":"off"])</A><BR>"
|
||||
sensor_part += "<A href='?src=\ref[src];command=toggle_panic_siphon;id=[id_tag]'><font color='[(data["panic"]?"blue'>Dea":"red'>A")]ctivate panic syphon</A></font><BR>"
|
||||
if(data["panic"])
|
||||
sensor_part += "<font color='red'><B>PANIC SYPHON ACTIVATED</B></font>"
|
||||
/*
|
||||
if (data["timestamp"]+3 < air_master.current_cycle)
|
||||
sensor_part += "<font color='red'><B>[long_name] not responding.</B></font><BR>"
|
||||
*/
|
||||
sensor_part += "<HR>"
|
||||
else
|
||||
sensor_part = "<FONT color='red'>[long_name] can not be found!</FONT><BR><HR>"
|
||||
@@ -242,10 +246,12 @@
|
||||
var/sensor_part = "<B>[long_name]</B>:<BR>"
|
||||
|
||||
if(data)
|
||||
sensor_part += {"<B>Operating:</B> <A href='?src=\ref[src];v_toggle_power=[id_tag]'>[data["power"]]</A><BR>
|
||||
<B>Pressure checks:</B> <A href='?src=\ref[src];v_toggle_checks=[id_tag]'>[data["checks"]?"on":"off"]</A><BR>"}
|
||||
sensor_part += {"<B>Operating:</B> <A href='?src=\ref[src];command=power_toggle;id=[id_tag]'>[data["power"]]</A><BR>
|
||||
<B>Pressure checks:</B> <A href='?src=\ref[src];command=toggle_checks;id=[id_tag]'>[data["checks"]?"on":"off"]</A><BR>"}
|
||||
/*
|
||||
if (data["timestamp"]+3 < air_master.current_cycle)
|
||||
sensor_part += "<font color='red'><B>[long_name] not responding.</B></font><BR>"
|
||||
*/
|
||||
sensor_part += "<HR>"
|
||||
else
|
||||
sensor_part = "<FONT color='red'>[long_name] can not be found!</FONT><HR>"
|
||||
@@ -292,35 +298,21 @@
|
||||
src.device = "Vents"
|
||||
if(href_list["main"])
|
||||
src.device = null
|
||||
if(href_list["scr_toggle_power"])
|
||||
send_signal(href_list["scr_toggle_power"], "toggle_power")
|
||||
|
||||
if(href_list["scr_toggle_scrubbing"])
|
||||
send_signal(href_list["scr_toggle_scrubbing"], "toggle_scrubbing")
|
||||
|
||||
if(href_list["scr_toggle_co2_scrub"])
|
||||
send_signal(href_list["scr_toggle_co2_scrub"], "toggle_co2_scrub")
|
||||
|
||||
if(href_list["scr_toggle_tox_scrub"])
|
||||
send_signal(href_list["scr_toggle_tox_scrub"], "toggle_tox_scrub")
|
||||
|
||||
if(href_list["scr_toggle_n2o_scrub"])
|
||||
send_signal(href_list["scr_toggle_n2o_scrub"], "toggle_n2o_scrub")
|
||||
|
||||
if(href_list["scr_toggle_panic_siphon"])
|
||||
send_signal(href_list["scr_toggle_panic_siphon"], "toggle_panic_siphon")
|
||||
|
||||
if(href_list["v_toggle_power"])
|
||||
send_signal(href_list["v_toggle_power"], "power_toggle")
|
||||
if(href_list["v_toggle_checks"])
|
||||
send_signal(href_list["v_toggle_checks"], "toggle_checks")
|
||||
|
||||
if(href_list["id"] && href_list["command"])
|
||||
send_signal(href_list["id"],href_list["command"])
|
||||
if(src.device == "Scrubbers")
|
||||
sensor_information[href_list["id"]] = null
|
||||
else if(src.device == "Vents")
|
||||
vent_information[href_list["id"]] = null
|
||||
if(href_list["toggle_panic_siphon_global"])
|
||||
panic = !panic
|
||||
for(var/V in sensors)
|
||||
send_signal(V, "toggle_panic_siphon")
|
||||
sensor_information[V] = null
|
||||
for(var/P in vents)
|
||||
send_signal(P, "power_off")
|
||||
panic = !panic
|
||||
send_signal(P, "power_toggle")
|
||||
vent_information[P] = null
|
||||
|
||||
/* if(href_list["reinit_atmos_machinery"])
|
||||
var/A = get_area(loc)
|
||||
connect_area_atmos_machinery(A)*/
|
||||
|
||||
@@ -48,6 +48,13 @@ datum/controller/game_controller
|
||||
for(var/obj/machinery/atmospherics/machine in world)
|
||||
machine.build_network()
|
||||
|
||||
world << "\red \b Initializing atmos machinery."
|
||||
sleep(-1)
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/T in world)
|
||||
T.broadcast_status()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_scrubber/T in world)
|
||||
T.broadcast_status()
|
||||
|
||||
/*world << "\red \b Initializing atmos machinery"
|
||||
sleep(-1)
|
||||
|
||||
|
||||
@@ -31,12 +31,13 @@
|
||||
return
|
||||
|
||||
/obj/mecha/combat/honker/get_stats_part()
|
||||
var/cell_charge = get_charge()
|
||||
var/output = {"[internal_damage&MECHA_INT_FIRE?"<font color='red'><b>INTERNAL FIRE</b></font><br>":null]
|
||||
[internal_damage&MECHA_INT_TEMP_CONTROL?"<font color='red'><b>CLOWN SUPPORT SYSTEM MALFUNCTION</b></font><br>":null]
|
||||
[internal_damage&MECHA_INT_TANK_BREACH?"<font color='red'><b>GAS TANK HONK</b></font><br>":null]
|
||||
[internal_damage&MECHA_INT_CONTROL_LOST?"<font color='red'><b>HONK-A-DOODLE</b></font> - <a href='?src=\ref[src];repair_int_control_lost=1'>Recalibrate</a><br>":null]
|
||||
<b>IntegriHONK: </b> [health/initial(health)*100] %) <br>
|
||||
<b>PowerHONK charge: </b>[cell.charge/cell.maxcharge*100] %)<br>
|
||||
<b>PowerHONK charge: </b>[isnull(cell_charge)?"Someone HONKed powerHonk!!!":"[cell.percent()]%"])<br>
|
||||
<b>AirHONK pressure: </b>[src.return_pressure()]HoNKs<br>
|
||||
<b>Internal HONKature: </b> [src.air_contents.temperature]°honK|[src.air_contents.temperature - T0C]°honCk<br>
|
||||
<b>Lights: </b>[lights?"on":"off"]<br>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
return 0
|
||||
if(!thrusters && src.pr_inertial_movement.active())
|
||||
return 0
|
||||
if(state || !cell || cell.charge<=0)
|
||||
if(state || !get_charge())
|
||||
return 0
|
||||
var/tmp_step_in = step_in
|
||||
var/tmp_step_energy_drain = step_energy_drain
|
||||
@@ -71,9 +71,10 @@
|
||||
if(usr!=src.occupant)
|
||||
return
|
||||
if(src.occupant)
|
||||
if(cell.charge > 0)
|
||||
if(get_charge() > 0)
|
||||
thrusters = !thrusters
|
||||
src.occupant_message("\blue Thrusters [thrusters?"en":"dis"]abled.")
|
||||
src.log_message("Toggled thrusters.")
|
||||
src.occupant_message("<font color='[src.thrusters?"blue":"red"]'>Thrusters [thrusters?"en":"dis"]abled.")
|
||||
return
|
||||
|
||||
|
||||
@@ -100,7 +101,7 @@
|
||||
if(src.occupant.client)
|
||||
src.zoom = !src.zoom
|
||||
src.log_message("Toggled zoom mode.")
|
||||
src.occupant_message("\blue Zoom mode [zoom?"en":"dis"]abled.")
|
||||
src.occupant_message("<font color='[src.zoom?"blue":"red"]'>Zoom mode [zoom?"en":"dis"]abled.</font>")
|
||||
if(zoom)
|
||||
src.occupant.client.view = 12
|
||||
src.occupant << sound('imag_enh.ogg',volume=50)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
return 0
|
||||
if(!chassis)
|
||||
return 0
|
||||
if(energy_drain && chassis.cell.charge < energy_drain)
|
||||
if(energy_drain && chassis.get_charge() < energy_drain)
|
||||
return 0
|
||||
if(!weapon_ready)
|
||||
return 0
|
||||
@@ -63,10 +63,10 @@
|
||||
proc/rearm()
|
||||
if(missiles < initial(missiles))
|
||||
var/missiles_to_add = initial(missiles) - missiles
|
||||
while(chassis.cell.charge >= missile_energy_cost && missiles_to_add)
|
||||
while(chassis.get_charge() >= missile_energy_cost && missiles_to_add)
|
||||
missiles++
|
||||
missiles_to_add--
|
||||
chassis.cell.charge -= missile_energy_cost
|
||||
chassis.cell.use(missile_energy_cost)
|
||||
chassis.log_message("Rearmed [src.name].")
|
||||
return
|
||||
|
||||
@@ -263,7 +263,7 @@
|
||||
fire(target)
|
||||
if(!chassis)
|
||||
return 0
|
||||
if(energy_drain && chassis.cell.charge < energy_drain)
|
||||
if(energy_drain && chassis.get_charge() < energy_drain)
|
||||
return 0
|
||||
if(!weapon_ready)
|
||||
return 0
|
||||
@@ -271,8 +271,10 @@
|
||||
playsound(chassis, 'AirHorn.ogg', 100, 1)
|
||||
chassis.occupant_message("<font color='red' size='5'>HONK</font>")
|
||||
for(var/mob/living/carbon/M in ohearers(6, chassis))
|
||||
if(istype(M, /mob/living/carbon/human) && istype(M:ears, /obj/item/clothing/ears/earmuffs))
|
||||
continue
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
|
||||
continue
|
||||
M << "<font color='red' size='7'>HONK</font>"
|
||||
M.sleeping = 0
|
||||
M.stuttering += 20
|
||||
@@ -313,10 +315,10 @@
|
||||
proc/rearm()
|
||||
if(projectiles < initial(projectiles))
|
||||
var/projectiles_to_add = initial(projectiles) - projectiles
|
||||
while(chassis.cell.charge >= projectile_energy_cost && projectiles_to_add)
|
||||
while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add)
|
||||
projectiles++
|
||||
projectiles_to_add--
|
||||
chassis.cell.charge -= projectile_energy_cost
|
||||
chassis.cell.use(projectile_energy_cost)
|
||||
chassis.log_message("Rearmed [src.name].")
|
||||
return
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
if(mecha in port.recharge_floor)
|
||||
var/delta = min(max_charge, mecha.cell.maxcharge - mecha.cell.charge)
|
||||
if(delta>0)
|
||||
mecha.cell.charge += delta
|
||||
mecha.cell.give(delta)
|
||||
port.use_power(delta*150)
|
||||
else
|
||||
mecha.occupant_message("<font color='blue'><b>Fully charged.</b></font>")
|
||||
@@ -181,7 +181,8 @@
|
||||
output += {"<b>Mech Bay Recharge Station Data:</b><div style='margin-left: 15px;'>
|
||||
<b>Mecha: </b>[recharge_floor.recharging_mecha||"None"]<br>"}
|
||||
if(recharge_floor.recharging_mecha)
|
||||
output += "<b>Cell charge: </b>[recharge_floor.recharging_mecha.cell?"[recharge_floor.recharging_mecha.cell.charge]/[recharge_floor.recharging_mecha.cell.maxcharge]":"No powercell found"]<br>"
|
||||
var/cell_charge = recharge_floor.recharging_mecha.get_charge()
|
||||
output += "<b>Cell charge: </b>[isnull(cell_charge)?"No powercell found":"[recharge_floor.recharging_mecha.cell.charge]/[recharge_floor.recharging_mecha.cell.maxcharge]"]<br>"
|
||||
output += "</div>"
|
||||
if(!recharge_port)
|
||||
output += "<font color='red'>Mech Bay Power Port not initialized.</font><br>"
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
/obj/mecha/proc/click_action(atom/target,mob/user)
|
||||
if(!src.occupant || src.occupant != user ) return
|
||||
if(user.stat) return
|
||||
if(state || !cell || cell.charge<=0) return
|
||||
if(state || !get_charge()) return
|
||||
if(src == target) return
|
||||
var/dir_to_target = get_dir(src,target)
|
||||
if(dir_to_target && !(dir_to_target & src.dir))//wrong direction
|
||||
@@ -183,7 +183,7 @@
|
||||
return 0
|
||||
if(src.pr_inertial_movement.active())
|
||||
return 0
|
||||
if(state || !cell || cell.charge<=0)
|
||||
if(state || !get_charge())
|
||||
return 0
|
||||
var/move_result = 0
|
||||
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
||||
@@ -428,8 +428,8 @@
|
||||
return ex_act(rand(1,3))//should do for now
|
||||
|
||||
/obj/mecha/emp_act(severity)
|
||||
cell.charge -= min(cell.charge, cell.maxcharge/severity)
|
||||
src.log_message("EMP pulse detected")
|
||||
cell.use(min(cell.charge, cell.maxcharge/severity))
|
||||
src.log_message("EMP detected")
|
||||
take_damage(100 / severity)
|
||||
src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST),1)
|
||||
return
|
||||
@@ -839,13 +839,14 @@
|
||||
|
||||
/obj/mecha/proc/get_stats_part()
|
||||
var/integrity = health/initial(health)*100
|
||||
var/cell_charge = get_charge()
|
||||
var/output = {"[internal_damage&MECHA_INT_FIRE?"<font color='red'><b>INTERNAL FIRE</b></font><br>":null]
|
||||
[internal_damage&MECHA_INT_TEMP_CONTROL?"<font color='red'><b>LIFE SUPPORT SYSTEM MALFUNCTION</b></font><br>":null]
|
||||
[internal_damage&MECHA_INT_TANK_BREACH?"<font color='red'><b>GAS TANK BREACH</b></font><br>":null]
|
||||
[internal_damage&MECHA_INT_CONTROL_LOST?"<font color='red'><b>COORDINATION SYSTEM CALIBRATION FAILURE</b></font> - <a href='?src=\ref[src];repair_int_control_lost=1'>Recalibrate</a><br>":null]
|
||||
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font><br>":null]
|
||||
<b>Integrity: </b> [integrity]%<br>
|
||||
<b>Powercell charge: </b>[cell.charge/cell.maxcharge*100]%<br>
|
||||
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]<br>
|
||||
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
|
||||
<b>Airtank pressure: </b>[src.return_pressure()]kPa<br>
|
||||
<b>Internal temperature: </b> [src.air_contents.temperature]°K|[src.air_contents.temperature - T0C]°C<br>
|
||||
@@ -968,6 +969,10 @@
|
||||
occupant.show_message(rendered, 2)
|
||||
return
|
||||
|
||||
/obj/mecha/proc/get_charge()//returns null if no powercell, else returns cell.charge
|
||||
if(!src.cell) return
|
||||
return max(0, src.cell.charge)
|
||||
|
||||
|
||||
//////////////////////////////////////////
|
||||
//////// Mecha global iterators ////////
|
||||
|
||||
@@ -385,9 +385,9 @@
|
||||
list("key"="/obj/item/weapon/wrench"),//9
|
||||
list("key"="/obj/item/weapon/gun/energy/laser_gun"),//10
|
||||
list("key"="/obj/item/weapon/screwdriver"),//11
|
||||
list("key"="/obj/item/weapon/stock_parts/adv_capacitor"),//12
|
||||
list("key"="/obj/item/weapon/stock_parts/capacitor/adv"),//12
|
||||
list("key"="/obj/item/weapon/screwdriver"),//13
|
||||
list("key"="/obj/item/weapon/stock_parts/adv_scanning_module"),//14
|
||||
list("key"="/obj/item/weapon/stock_parts/scanning_module/adv"),//14
|
||||
list("key"="/obj/item/weapon/screwdriver"),//15
|
||||
list("key"="/obj/item/mecha_parts/circuitboard/gygax/targeting"),//16
|
||||
list("key"="/obj/item/weapon/screwdriver"),//17
|
||||
|
||||
@@ -93,9 +93,10 @@
|
||||
if(!istype(src.loc, /obj/mecha))
|
||||
return 0
|
||||
var/obj/mecha/M = src.loc
|
||||
var/cell_charge = M.get_charge()
|
||||
var/answer = {"<b>Name:</b> [M.name]<br>
|
||||
<b>Integrity:</b> [M.health/initial(M.health)*100]%<br>
|
||||
<b>Cell charge:</b> [M.cell?"[M.cell.charge/M.cell.maxcharge*100]%":"Not found"]<br>
|
||||
<b>Cell charge:</b> [isnull(cell_charge)?"Not found":"[M.cell.percent()]%"]<br>
|
||||
<b>Airtank:</b> [M.return_pressure()]kPa<br>
|
||||
<b>Pilot:</b> [M.occupant||"None"]<br>
|
||||
<b>Location:</b> [get_area(M)||"Unknown"]<br>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
return 0
|
||||
if(!chassis)
|
||||
return 0
|
||||
if(energy_drain && chassis.cell.charge < energy_drain)
|
||||
if(energy_drain && chassis.get_charge() < energy_drain)
|
||||
return 0
|
||||
if(!tool_ready)
|
||||
return 0
|
||||
@@ -143,6 +143,9 @@
|
||||
var/turf/simulated/mineral/M = target
|
||||
chassis.log_message("Drilled through [target]")
|
||||
M.gets_drilled()
|
||||
for(var/turf/simulated/mineral/N in range(chassis,1))
|
||||
if(get_dir(chassis,N)&chassis.dir)
|
||||
N.gets_drilled()
|
||||
else
|
||||
chassis.log_message("Drilled through [target]")
|
||||
target.ex_act(2)
|
||||
|
||||
Reference in New Issue
Block a user