Merge pull request #8930 from VOREStation/master

August 31 2020 Hotfix
This commit is contained in:
Novacat
2020-08-31 15:45:15 -04:00
committed by GitHub
50 changed files with 1800 additions and 1585 deletions
@@ -25,8 +25,8 @@
"Glass Shattering" = "shatter",
"Grille Damage" = 'sound/effects/grillehit.ogg',
"Energy Pulse" = 'sound/effects/EMPulse.ogg',
"Airlock" = 'sound/machines/airlock.ogg',
"Airlock Creak" = 'sound/machines/airlock_creaking.ogg',
"Airlock" = 'sound/machines/door/old_airlock.ogg',
"Airlock Creak" = 'sound/machines/door/airlock_creaking.ogg',
"Shotgun Pumping" = 'sound/weapons/shotgunpump.ogg',
"Flash" = 'sound/weapons/flash.ogg',
+154 -51
View File
@@ -40,11 +40,15 @@
var/datum/wires/airlock/wires = null
var/open_sound_powered = 'sound/machines/door/covert1o.ogg'
var/open_sound_unpowered = 'sound/machines/airlockforced.ogg'
var/open_sound_unpowered = 'sound/machines/door/airlockforced.ogg'
var/close_sound_powered = 'sound/machines/door/covert1c.ogg'
var/legacy_open_powered = 'sound/machines/door/old_airlock.ogg'
var/legacy_close_powered = 'sound/machines/door/old_airlockclose.ogg'
var/department_open_powered = null
var/department_close_powered = null
var/denied_sound = 'sound/machines/deniedbeep.ogg'
var/bolt_up_sound = 'sound/machines/boltsup.ogg'
var/bolt_down_sound = 'sound/machines/boltsdown.ogg'
var/bolt_up_sound = 'sound/machines/door/boltsup.ogg'
var/bolt_down_sound = 'sound/machines/door/boltsdown.ogg'
/obj/machinery/door/airlock/attack_generic(var/mob/living/user, var/damage)
if(stat & (BROKEN|NOPOWER))
@@ -81,7 +85,7 @@
if(do_after(user,5 SECONDS,src))
visible_message("<span class='danger'>\The [user] forces \the [src] open, sparks flying from its electronics!</span>")
src.do_animate("spark")
playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS)
playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS)
src.locked = 0
src.welded = 0
update_icon()
@@ -90,7 +94,7 @@
else if(src.density)
visible_message("<span class='alium'>\The [user] begins forcing \the [src] open!</span>")
if(do_after(user, 5 SECONDS,src))
playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS)
playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS)
visible_message("<span class='danger'>\The [user] forces \the [src] open!</span>")
open(1)
else
@@ -112,40 +116,50 @@
icon = 'icons/obj/doors/Doorcom.dmi'
req_one_access = list(access_heads)
assembly_type = /obj/structure/door_assembly/door_assembly_com
open_sound_powered = 'sound/machines/door/cmd3o.ogg'
close_sound_powered = 'sound/machines/door/cmd3c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/cmd3o.ogg'
department_close_powered = 'sound/machines/door/cmd3c.ogg'
/obj/machinery/door/airlock/security
name = "Security Airlock"
icon = 'icons/obj/doors/Doorsec.dmi'
req_one_access = list(access_security)
assembly_type = /obj/structure/door_assembly/door_assembly_sec
open_sound_powered = 'sound/machines/door/sec1o.ogg'
close_sound_powered = 'sound/machines/door/sec1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/sec1o.ogg'
department_close_powered = 'sound/machines/door/sec1c.ogg'
/obj/machinery/door/airlock/engineering
name = "Engineering Airlock"
icon = 'icons/obj/doors/Dooreng.dmi'
req_one_access = list(access_engine)
assembly_type = /obj/structure/door_assembly/door_assembly_eng
open_sound_powered = 'sound/machines/door/eng1o.ogg'
close_sound_powered = 'sound/machines/door/eng1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/eng1o.ogg'
department_close_powered = 'sound/machines/door/eng1c.ogg'
/obj/machinery/door/airlock/engineeringatmos
name = "Atmospherics Airlock"
icon = 'icons/obj/doors/Doorengatmos.dmi'
req_one_access = list(access_atmospherics)
assembly_type = /obj/structure/door_assembly/door_assembly_eat
open_sound_powered = 'sound/machines/door/eng1o.ogg'
close_sound_powered = 'sound/machines/door/eng1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/eng1o.ogg'
department_close_powered = 'sound/machines/door/eng1c.ogg'
/obj/machinery/door/airlock/medical
name = "Medical Airlock"
icon = 'icons/obj/doors/Doormed.dmi'
req_one_access = list(access_medical)
assembly_type = /obj/structure/door_assembly/door_assembly_med
open_sound_powered = 'sound/machines/door/med1o.ogg'
close_sound_powered = 'sound/machines/door/med1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/med1o.ogg'
department_close_powered = 'sound/machines/door/med1c.ogg'
/obj/machinery/door/airlock/maintenance
name = "Maintenance Access"
@@ -158,8 +172,10 @@
/obj/machinery/door/airlock/maintenance/cargo
icon = 'icons/obj/doors/Doormaint_cargo.dmi'
req_one_access = list(access_cargo)
open_sound_powered = 'sound/machines/door/door2o.ogg'
close_sound_powered = 'sound/machines/door/door2c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/door2o.ogg'
department_close_powered = 'sound/machines/door/door2c.ogg'
/obj/machinery/door/airlock/maintenance/command
icon = 'icons/obj/doors/Doormaint_command.dmi'
@@ -220,6 +236,7 @@
hitsound = 'sound/effects/Glasshit.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg'
close_sound_powered = 'sound/machines/door/hall1c.ogg'
legacy_open_powered = 'sound/machines/door/windowdoor.ogg'
maxhealth = 300
explosion_resistance = 5
opacity = 0
@@ -294,8 +311,10 @@
assembly_type = /obj/structure/door_assembly/door_assembly_com
glass = 1
req_one_access = list(access_heads)
open_sound_powered = 'sound/machines/door/cmd1o.ogg'
close_sound_powered = 'sound/machines/door/cmd1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/cmd1o.ogg'
department_close_powered = 'sound/machines/door/cmd1c.ogg'
/obj/machinery/door/airlock/glass_engineering
name = "Engineering Airlock"
@@ -307,8 +326,8 @@
assembly_type = /obj/structure/door_assembly/door_assembly_eng
glass = 1
req_one_access = list(access_engine)
open_sound_powered = 'sound/machines/door/eng1o.ogg'
close_sound_powered = 'sound/machines/door/eng1c.ogg'
department_open_powered = 'sound/machines/door/eng1o.ogg'
department_close_powered = 'sound/machines/door/eng1c.ogg'
/obj/machinery/door/airlock/glass_engineeringatmos
name = "Atmospherics Airlock"
@@ -320,8 +339,10 @@
assembly_type = /obj/structure/door_assembly/door_assembly_eat
glass = 1
req_one_access = list(access_atmospherics)
open_sound_powered = 'sound/machines/door/eng1o.ogg'
close_sound_powered = 'sound/machines/door/eng1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/eng1o.ogg'
department_close_powered = 'sound/machines/door/eng1c.ogg'
/obj/machinery/door/airlock/glass_security
name = "Security Airlock"
@@ -333,8 +354,10 @@
assembly_type = /obj/structure/door_assembly/door_assembly_sec
glass = 1
req_one_access = list(access_security)
open_sound_powered = 'sound/machines/door/sec1o.ogg'
close_sound_powered = 'sound/machines/door/sec1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/sec1o.ogg'
department_close_powered = 'sound/machines/door/sec1c.ogg'
/obj/machinery/door/airlock/glass_medical
name = "Medical Airlock"
@@ -346,31 +369,39 @@
assembly_type = /obj/structure/door_assembly/door_assembly_med
glass = 1
req_one_access = list(access_medical)
open_sound_powered = 'sound/machines/door/med1o.ogg'
close_sound_powered = 'sound/machines/door/med1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/med1o.ogg'
department_close_powered = 'sound/machines/door/med1c.ogg'
/obj/machinery/door/airlock/mining
name = "Mining Airlock"
icon = 'icons/obj/doors/Doormining.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_min
req_one_access = list(access_mining)
open_sound_powered = 'sound/machines/door/cgo1o.ogg'
close_sound_powered = 'sound/machines/door/cgo1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/cgo1o.ogg'
department_close_powered = 'sound/machines/door/cgo1c.ogg'
/obj/machinery/door/airlock/atmos
name = "Atmospherics Airlock"
icon = 'icons/obj/doors/Dooratmo.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_atmo
req_one_access = list(access_atmospherics)
open_sound_powered = 'sound/machines/door/eng1o.ogg'
close_sound_powered = 'sound/machines/door/eng1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/eng1o.ogg'
department_close_powered = 'sound/machines/door/eng1c.ogg'
/obj/machinery/door/airlock/research
name = "Research Airlock"
icon = 'icons/obj/doors/Doorresearch.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_research
open_sound_powered = 'sound/machines/door/sci1o.ogg'
close_sound_powered = 'sound/machines/door/sci1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/sci1o.ogg'
department_close_powered = 'sound/machines/door/sci1c.ogg'
/obj/machinery/door/airlock/glass_research
name = "Research Airlock"
@@ -382,8 +413,10 @@
assembly_type = /obj/structure/door_assembly/door_assembly_research
glass = 1
req_one_access = list(access_research)
open_sound_powered = 'sound/machines/door/sci1o.ogg'
close_sound_powered = 'sound/machines/door/sci1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/sci1o.ogg'
department_close_powered = 'sound/machines/door/sci1c.ogg'
/obj/machinery/door/airlock/glass_mining
name = "Mining Airlock"
@@ -395,8 +428,10 @@
assembly_type = /obj/structure/door_assembly/door_assembly_min
glass = 1
req_one_access = list(access_mining)
open_sound_powered = 'sound/machines/door/cgo1o.ogg'
close_sound_powered = 'sound/machines/door/cgo1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/cgo1o.ogg'
department_close_powered = 'sound/machines/door/cgo1c.ogg'
/obj/machinery/door/airlock/glass_atmos
name = "Atmospherics Airlock"
@@ -408,8 +443,10 @@
assembly_type = /obj/structure/door_assembly/door_assembly_atmo
glass = 1
req_one_access = list(access_atmospherics)
open_sound_powered = 'sound/machines/door/eng1o.ogg'
close_sound_powered = 'sound/machines/door/eng1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/eng1o.ogg'
department_close_powered = 'sound/machines/door/eng1c.ogg'
/obj/machinery/door/airlock/gold
name = "Gold Airlock"
@@ -490,8 +527,10 @@
icon = 'icons/obj/doors/Doorsci.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_science
req_one_access = list(access_research)
open_sound_powered = 'sound/machines/door/sci1o.ogg'
close_sound_powered = 'sound/machines/door/sci1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/sci1o.ogg'
department_close_powered = 'sound/machines/door/sci1c.ogg'
/obj/machinery/door/airlock/glass_science
name = "Glass Airlocks"
@@ -500,8 +539,10 @@
assembly_type = /obj/structure/door_assembly/door_assembly_science
glass = 1
req_one_access = list(access_research)
open_sound_powered = 'sound/machines/door/sci1o.ogg'
close_sound_powered = 'sound/machines/door/sci1c.ogg'
open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off.
department_open_powered = 'sound/machines/door/sci1o.ogg'
department_close_powered = 'sound/machines/door/sci1c.ogg'
/obj/machinery/door/airlock/highsecurity
name = "Secure Airlock"
@@ -1172,10 +1213,41 @@ About the new airlock wires panel:
use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people
//if the door is unpowered then it doesn't make sense to hear the woosh of a pneumatic actuator
if(arePowerSystemsOn())
playsound(src, open_sound_powered, 50, 1, volume_channel = VOLUME_CHANNEL_DOORS)
else
playsound(src, open_sound_unpowered, 75, 1, volume_channel = VOLUME_CHANNEL_DOORS)
for(var/P in player_list)
var/mob/M = P
if(!M || !M.client)
continue
var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds)
var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds)
var/sound
var/volume
if(old_sounds) // Do we have old sounds enabled? Play these even if we have department door sounds enabled.
if(arePowerSystemsOn())
sound = legacy_open_powered
volume = 50
else
sound = open_sound_unpowered
volume = 75
else if(!old_sounds && department_door_sounds && src.department_open_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these.
if(arePowerSystemsOn())
sound = department_open_powered
volume = 50
else
sound = open_sound_unpowered
volume = 75
else // Else, play these.
if(arePowerSystemsOn())
sound = open_sound_powered
volume = 50
else
sound = open_sound_unpowered
volume = 75
var/turf/T = get_turf(M)
var/distance = get_dist(T, get_turf(src))
if(distance <= world.view * 2)
if(T && T.z == get_z(src))
M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS)
if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density)
src.closeOther.close()
@@ -1270,10 +1342,41 @@ About the new airlock wires panel:
use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people
has_beeped = 0
if(arePowerSystemsOn())
playsound(src, close_sound_powered, 50, 1, volume_channel = VOLUME_CHANNEL_DOORS)
else
playsound(src, open_sound_unpowered, 75, 1, volume_channel = VOLUME_CHANNEL_DOORS)
for(var/P in player_list)
var/mob/M = P
if(!M || !M.client)
continue
var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds)
var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds)
var/sound
var/volume
if(old_sounds)
if(arePowerSystemsOn())
sound = legacy_close_powered
volume = 50
else
sound = open_sound_unpowered
volume = 75
else if(!old_sounds && department_door_sounds && src.department_close_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these.
if(arePowerSystemsOn())
sound = department_close_powered
volume = 50
else
sound = open_sound_unpowered
volume = 75
else
if(arePowerSystemsOn())
sound = close_sound_powered
volume = 50
else
sound = open_sound_unpowered
volume = 75
var/turf/T = get_turf(M)
var/distance = get_dist(T, get_turf(src))
if(distance <= world.view * 2)
if(T && T.z == get_z(src))
M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS)
for(var/turf/turf in locs)
var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf)
if(killthis)
+5 -5
View File
@@ -25,8 +25,8 @@
var/icon_state_opening = null
var/icon_state_closed = null
var/icon_state_closing = null
var/open_sound = 'sound/machines/blastdooropen.ogg'
var/close_sound = 'sound/machines/blastdoorclose.ogg'
var/open_sound = 'sound/machines/door/blastdooropen.ogg'
var/close_sound = 'sound/machines/door/blastdoorclose.ogg'
var/damage = BLAST_DOOR_CRUSH_DAMAGE
var/multiplier = 1 // The multiplier for how powerful our YEET is.
@@ -125,7 +125,7 @@
// Description: Opens or closes the door, depending on current state. No checks are done inside this proc.
/obj/machinery/door/blast/proc/force_toggle(var/forced = 0, mob/user as mob)
if (forced)
playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
if(src.density)
src.force_open()
@@ -219,13 +219,13 @@
if(src.density)
visible_message("<span class='alium'>\The [user] begins forcing \the [src] open!</span>")
if(do_after(user, 15 SECONDS,src))
playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
visible_message("<span class='danger'>\The [user] forces \the [src] open!</span>")
force_open(1)
else
visible_message("<span class='alium'>\The [user] begins forcing \the [src] closed!</span>")
if(do_after(user, 5 SECONDS,src))
playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
visible_message("<span class='danger'>\The [user] forces \the [src] closed!</span>")
force_close(1)
else
+2 -2
View File
@@ -200,14 +200,14 @@
if(src.blocked)
visible_message("<span class='alium'>\The [user] begins digging into \the [src] internals!</span>")
if(do_after(user,5 SECONDS,src))
playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
src.blocked = 0
update_icon()
open(1)
else if(src.density)
visible_message("<span class='alium'>\The [user] begins forcing \the [src] open!</span>")
if(do_after(user, 2 SECONDS,src))
playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
visible_message("<span class='danger'>\The [user] forces \the [src] open!</span>")
open(1)
else
+2 -2
View File
@@ -115,7 +115,7 @@
if (!operating) //in case of emag
operating = 1
flick(text("[src.base_state]opening"), src)
playsound(src, 'sound/machines/windowdoor.ogg', 100, 1)
playsound(src, 'sound/machines/door/windowdoor.ogg', 100, 1)
sleep(10)
explosion_resistance = 0
@@ -132,7 +132,7 @@
return FALSE
operating = TRUE
flick(text("[]closing", src.base_state), src)
playsound(src, 'sound/machines/windowdoor.ogg', 100, 1)
playsound(src, 'sound/machines/door/windowdoor.ogg', 100, 1)
density = TRUE
update_icon()
+3 -6
View File
@@ -45,10 +45,7 @@ var/list/doppler_arrays = list()
/obj/machinery/doppler_array/power_change()
..()
if(stat & BROKEN)
icon_state = "[initial(icon_state)]-broken"
if(!(stat & NOPOWER))
icon_state = initial(icon_state)
else
if(!(stat & NOPOWER))
icon_state = initial(icon_state)
else
icon_state = "[initial(icon_state)]-off"
icon_state = "[initial(icon_state)]_off"
+3 -3
View File
@@ -33,7 +33,7 @@
if(FD.blocked)
FD.visible_message("<span class='danger'>\The [chassis] begins prying on \the [FD]!</span>")
if(do_after(chassis.occupant,10 SECONDS,FD))
playsound(FD, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(FD, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
FD.blocked = 0
FD.update_icon()
FD.open(1)
@@ -41,7 +41,7 @@
else if(FD.density)
FD.visible_message("<span class='warning'>\The [chassis] begins forcing \the [FD] open!</span>")
if(do_after(chassis.occupant, 5 SECONDS,FD))
playsound(FD, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(FD, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
FD.visible_message("<span class='danger'>\The [chassis] forces \the [FD] open!</span>")
FD.open(1)
else
@@ -57,7 +57,7 @@
if(do_after(chassis.occupant, 15 SECONDS,AD) && chassis.Adjacent(AD))
AD.welded = FALSE
AD.update_icon()
playsound(AD, 'sound/machines/airlock_creaking.ogg', 100, 1)
playsound(AD, 'sound/machines/door/airlock_creaking.ogg', 100, 1)
AD.visible_message("<span class='danger'>\The [chassis] tears \the [AD] open!</span>")
if(!AD.welded)
if(density)
+1 -1
View File
@@ -1891,7 +1891,7 @@
update_cell_alerts()
update_damage_alerts()
set_dir(dir_in)
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
playsound(src, 'sound/machines/door/windowdoor.ogg', 50, 1)
if(occupant.client && cloaked_selfimage)
occupant.client.images += cloaked_selfimage
play_entered_noise(occupant)
+5 -1
View File
@@ -65,7 +65,7 @@
icon_state = "popcorn"
/obj/item/trash/tuna
name = "tuna can"
name = "fish flake packet"
icon_state = "tuna"
/obj/item/trash/sosjerky
@@ -110,6 +110,10 @@
name = "candy wrapper"
icon_state = "kokobar"
/obj/item/trash/skrellsnax
name = "skrellsnax packet"
icon_state = "skrellsnacks"
/obj/item/trash/gumpack
name = "gum packet"
icon_state = "gum_pack"
@@ -341,6 +341,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/smokable/cigarette/cigar
name = "premium cigar"
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
description_fluff = "While the label does say that this is a 'premium cigar', it really cannot match other types of cigars on the market. Is it a quality cigarette? Perhaps. Was it hand-made with care? No."
icon_state = "cigar2"
type_butt = /obj/item/trash/cigbutt/cigarbutt
throw_speed = 0.5
@@ -358,12 +359,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba
name = "\improper Cohiba Robusto cigar"
desc = "There's little more you could want from a cigar."
description_fluff = "Cohiba has been a popular cigar company for centuries. They are still based out of Cuba and refuse to expand and therefore have a very limited quantity, making their cigars coveted all through known space. Robusto is one of their most popular shapes of cigars."
icon_state = "cigar2"
nicotine_amt = 7
/obj/item/clothing/mask/smokable/cigarette/cigar/havana
name = "premium Havanian cigar"
desc = "A cigar fit for only the best of the best."
description_fluff = "'Havanian' is an umbrella term for any cigar made in the typical handmade style of Cuba. This particular cigar is from Gilthari's cigar manufacturers and produced galaxy-wide. While this way of making quality cigars has become slightly bastardized over the years, overall quality has remained relatively the same, even if there is a large quantity of 'Havanian' cigars."
icon_state = "cigar2"
max_smoketime = 7200
smoketime = 7200
@@ -403,6 +406,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/smokable/pipe
name = "smoking pipe"
desc = "A pipe, for smoking. Made of fine, stained cherry wood."
description_fluff = "ClassiCo Accessories and Haberdashers, originating out of Mars, claim to produce products 'for the modern gentlefolk'. Most of their items are high-end and expensive, but they pledge to back their prices up with quality, and usually do."
icon_state = "pipe"
item_state = "pipe"
smoketime = 0
@@ -59,7 +59,7 @@
//try to crush it
if(ispath(trash))
if(contents.len && user.a_intent == I_HURT) // only crumple with things inside on harmintent.
user.visible_message(SPAN_DANGER("You crush \the [src], spilling its contents everywhere!"), SPAN_DANGER("[user] crushes \the [src], spilling its contents everywhere!"))
user.visible_message(SPAN_DANGER("[user] crushes \the [src], spilling its contents everywhere!"), SPAN_DANGER("You crush \the [src], spilling its contents everywhere!"))
spill()
else
to_chat(user, SPAN_NOTICE("You crumple up \the [src].")) //make trash
@@ -204,6 +204,7 @@
/obj/item/weapon/storage/fancy/cigarettes
name = "\improper pack of Trans-Stellar Duty-frees"
desc = "A ubiquitous brand of cigarettes, found in every major spacefaring corporation in the universe. As mild and flavorless as it gets."
description_fluff = "The Trans-Stellar Duty-Free Cigarette Company was created as an imprint of NanoTrasen. They are the most boring, tasteless, dry cigarettes on the market, but due to just how unremarkable (not to mention cheap to produce) they are, they sold in vending machines in almost every corner of the galaxy."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cigpacket"
item_state_slots = list(slot_r_hand_str = "cigpacket", slot_l_hand_str = "cigpacket")
@@ -318,7 +319,7 @@
/obj/item/weapon/storage/fancy/cigar
name = "cigar case"
desc = "A case for holding your cigars when you are not smoking them."
description_fluff = "The tastefully engraved palm tree tells you that these 'Corona Grande' premium cigars are only sold on the luxury cruises and resorts of Oasis, though ten separate companies produce them for that purpose galaxy-wide. The standard is however very high."
description_fluff = "The tastefully engraved palm tree tells you that these 'Palma Grande' premium cigars are only sold on the luxury cruises and resorts of Oasis, though ten separate companies produce them for that purpose galaxy-wide. The standard is however very high."
icon_state = "cigarcase"
icon = 'icons/obj/cigarettes.dmi'
w_class = ITEMSIZE_TINY
+1 -1
View File
@@ -157,7 +157,7 @@ var/static/list/scarySounds = list(
'sound/effects/Glassbr3.ogg',
'sound/items/Welder.ogg',
'sound/items/Welder2.ogg',
'sound/machines/airlock.ogg',
'sound/machines/door/old_airlock.ogg',
'sound/effects/clownstep1.ogg',
'sound/effects/clownstep2.ogg'
)
+23 -3
View File
@@ -2,6 +2,8 @@
set category = "Fun"
set name = "Quick NIF"
set desc = "Spawns a NIF into someone in quick-implant mode."
var/input_NIF
if(!check_rights(R_ADMIN))
return
@@ -24,9 +26,27 @@
return
if(H.species.flags & NO_SCAN)
var/obj/item/device/nif/S = /obj/item/device/nif/bioadap
input_NIF = initial(S.name)
new /obj/item/device/nif/bioadap(H)
else
new /obj/item/device/nif(H)
var/list/NIF_types = typesof(/obj/item/device/nif)
var/list/NIFs = list()
for(var/NIF_type in NIF_types)
var/obj/item/device/nif/S = NIF_type
NIFs[capitalize(initial(S.name))] = NIF_type
var/list/show_NIFs = sortList(NIFs) // the list that will be shown to the user to pick from
input_NIF = input("Pick the NIF type","Quick NIF") in show_NIFs
var/chosen_NIF = NIFs[capitalize(input_NIF)]
if(chosen_NIF)
new chosen_NIF(H)
else
new /obj/item/device/nif(H)
log_and_message_admins("[key_name(src)] Quick NIF'd [H.real_name] with a [input_NIF].")
feedback_add_details("admin_verb","QNIF") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_and_message_admins("[key_name(src)] Quick NIF'd [H.real_name].")
feedback_add_details("admin_verb","QNIF") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -152,6 +152,18 @@ var/list/_client_preferences_by_type
key = "SOUND_AIRPUMP"
enabled_description = "Audible"
disabled_description = "Silent"
/datum/client_preference/old_door_sounds
description ="Old Door Sounds"
key = "SOUND_OLDDOORS"
enabled_description = "Old"
disabled_description = "New"
/datum/client_preference/department_door_sounds
description ="Department-Specific Door Sounds"
key = "SOUND_DEPARTMENTDOORS"
enabled_description = "Enabled"
disabled_description = "Disabled"
/datum/client_preference/pickup_sounds
description = "Picked Up Item Sounds"
@@ -18,4 +18,8 @@
/datum/gear/shoes/siren
display_name = "boots, Siren"
path = /obj/item/clothing/shoes/boots/fluff/siren
path = /obj/item/clothing/shoes/boots/fluff/siren
/datum/gear/shoes/toeless
display_name = "toe-less jackboots"
path = /obj/item/clothing/shoes/boots/jackboots/toeless
@@ -253,6 +253,36 @@
SScharacter_setup.queue_preferences_save(prefs)
feedback_add_details("admin_verb","TAirPumpNoise")
/client/verb/toggle_old_door_sounds()
set name = "Toggle Old Door Sounds"
set category = "Preferences"
set desc = "Toggles New/Old Door Sounds"
var/pref_path = /datum/client_preference/old_door_sounds
toggle_preference(pref_path)
to_chat(src, "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear the legacy door sounds.")
SScharacter_setup.queue_preferences_save(prefs)
feedback_add_details("admin_verb","TOldDoorSounds")
/client/verb/toggle_department_door_sounds()
set name = "Toggle Department Door Sounds"
set category = "Preferences"
set desc = "Toggles Department-Specific Door Sounds"
var/pref_path = /datum/client_preference/department_door_sounds
toggle_preference(pref_path)
to_chat(src, "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear per-department door sounds.")
SScharacter_setup.queue_preferences_save(prefs)
feedback_add_details("admin_verb","TDepartmentDoorSounds")
/client/verb/toggle_pickup_sounds()
set name = "Toggle Picked Up Item Sounds"
+1 -1
View File
@@ -35,7 +35,7 @@
T.amount = starting_funds
if(!source_db)
//set a random date, time and location some time over the past few decades
T.date = "[num2text(rand(1,31))] [pick("January","February","March","April","May","June","July","August","September","October","November","December")], 25[rand(10,56)]"
T.date = "[num2text(rand(1,28))] [pick("January","February","March","April","May","June","July","August","September","October","November","December")], 23[rand(12,19)]" // VOREStation Edit: lore-compliant dates
T.time = "[rand(0,24)]:[rand(11,59)]"
T.source_terminal = "NTGalaxyNet Terminal #[rand(111,1111)]"
-50
View File
@@ -1,50 +0,0 @@
/obj/item/weapon/reagent_containers/food/snacks/candy
description_fluff = "The Candy Bar is a copylefted recipe designed by information freedom activists to bring the delicious taste of nougat to the masses. It's cheap, familiar, and easy to synthesize, so most food vendors stock it."
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar
description_fluff = "The SWOLEMAX protien bar is the flagship product of SWOLEMAX, a health foods corporation recently independent of Centauri Provisions. It tastes like a brick of ashes."
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
description_fluff = "Nobody knows why Nanotrasen keeps making these waxy pieces of sugar and bone glue, but a handful of people swear by them. Purportedly popular with Skrell children, dubiously enough."
/obj/item/weapon/reagent_containers/food/snacks/chips
description_fluff = "Actual potatos haven't been used in potato chips for centuries. They're mostly a denatured nutrient slurry pressed into a chip-shaped mold and salted. Still tastes the same."
/obj/item/weapon/reagent_containers/food/snacks/donut
description_fluff = "These donuts claim to be made fresh daily in a boutique bakery in New Reykjavik and delivered to Nanotrasen's hardworking asset protection crew. They're probably synthesized."
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
description_fluff = "DONKpockets were originally a Nanotrasen product, an attempt to break into the food market controlled by Centauri Provisions. Somehow, Centauri wound up with the rights to the DONK brand, ending Nanotrasen's ambitions. They taste pretty okay."
/obj/item/weapon/reagent_containers/food/snacks/pie
description_fluff = "One of the more esoteric terms of the Nanotrasen-Centauri Noncompetition Agreement of 2545 was a requirement that Nanotrasen stock these pies on all their stations. They're calibrated for commedic value, not taste."
/obj/item/weapon/reagent_containers/food/snacks/sosjerky
description_fluff = "Space Cows, here, being an affectionate name given by early colonists to the massive food synthesizers used to sustain independent outposts before the dominance of hydroponics. Tastes like cardboard rubbed in meat seasoning."
/obj/item/weapon/reagent_containers/food/snacks/no_raisin
description_fluff = "Originally Raisin Blend no. 4, 4noraisins obtained their current name in the Skadi Positronic Exclusion Crisis of 2442, where they were rebranded as part of the protests." //the exclusion crisis, presumably, involved positronic immigration being banned for no raisin
/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie
description_fluff = "Space Twinkies, a modification of a flagship product of one of Centauri Provision's predecessor corporations, are designed to withstand vacuum, radiation, dehydration, and long periods of acceleration without losing their shape or taste. They're not great, but they have earned their names (and enormous revenue for their parent company)."
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers
description_fluff = "Cheesie Honkers, a previously niche line of cheese puffs from a subsidiary of a subsidiary of Centauri Provisions, rose to household-name status when their tell-tale orange dust was used as evidence to convict notorious positronic serial killer Etoid in 2404."
/obj/item/weapon/reagent_containers/food/snacks/syndicake
description_fluff = "Due to ongoing litigation concerning the business practices of the Cakemakers' Syndicate, access to this product has been removed from all Centauri and Getmore vending machines. This is a shame, because Syndi-Cakes are generally regarded as the most appetizing thing in them."
/obj/item/weapon/reagent_containers/food/snacks/twobread
description_fluff = "The most popular recipe from the Morpheus Cyberkinetics cookbook 'Calories for Organics'"
/obj/item/weapon/reagent_containers/food/snacks/liquidfood
description_fluff = "A survival food commonly packed onto short-distance bluespace shuttles and similar vessels. Tastes like chalk, but is packed full of nutrients and will keep you alive."
/obj/item/weapon/reagent_containers/food/snacks/tastybread
description_fluff = "This is the product that brought Centauri Provisions into the limelight. A product of the earliest extrasolar colony of Heaven, the Bread Tube, while bland, contains all the nutrients a spacer needs to get through the day and is decidedly edible when compared to some of its competitors."
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks
description_fluff = "A jerky product made of Go'moa mushrooms native to the Skrellian homeworld of Qerr'balak. SkrellSnaks are actually a product of Natuna, designed to welcome Ue-Katish refugees to their colony. The brand was recreated by Centauri Provisions after Natuna and SolGov broke off diplomatic relations."
/obj/item/weapon/reagent_containers/food/snacks/unajerky
description_fluff = "Removed from Getmore vendors pending approval from the SolGov Nutrition Council, Sissalik Jerky remains a popular snack for Unathi immigrants and daredevils looking for a meaty, spicy treat that makes Scaredy's look like tofu."
@@ -1,39 +0,0 @@
/obj/item/weapon/storage/fancy/cigarettes
description_fluff = "The Trans-Stellar Duty-Free Cigarette Company was created as an imprint of NanoTrasen. They are the most boring, tasteless, dry cigarettes on the market, but due to how generic they are, they are still the most well-known and widespread cigarettes in the universe."
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco
description_fluff = "DromedaryCo is one of the oldest companies that produces cigarettes. Being a company that has changed hands and names several times through the years, their cigarettes are now very different from the original, and old-timers tend to complain about the quality of their current product. While their profits have been dwindling over the past few years due to marketing schemes deemed 'unethical', they still remain on the forefront of the smokeable industry."
/obj/item/weapon/storage/fancy/cigarettes/killthroat
description_fluff = "AcmeCo, a subsidiary of Xion Manufacturing Group, is known for their signature high-tar cigarettes. Some accuse the cigarettes of having harmful things in them beyond tar, but Xion officials refuse to comment on the issue."
/obj/item/weapon/storage/fancy/cigarettes/luckystars
description_fluff = "Lucky Stars were created on Venus by a researcher seeking to make a good quality cigarette from pod-based tobacco plants. The researcher only managed to make these, but made quite a profit off of them nonetheless."
/obj/item/weapon/storage/fancy/cigarettes/jerichos
description_fluff = "Stealth Assault Enterprises ex-contractors once decided to make a cigarette that was easy to light and had a waterproof case, specifically tailored for soldiers. They created Jerichos. Jerichos are known for their hickory smoke and warm feeling in your lungs. They are loved by soldiers and people employed in para-military outfits."
/obj/item/weapon/storage/fancy/cigarettes/menthols
description_fluff = "The Temperamento Menthol Company is a large cigarette company based in Mars. They have been around since the very dawn of human colonization and have remained a favorite for those seeking a more numbing cigarette.<br>\
<br>\
This is a pack of Temperamento Menthols, the main product of the company. They taste like menthol, surprisingly enough."
/obj/item/weapon/storage/fancy/cigarettes/carcinomas
description_fluff = "The CarcinoCo was originally destined to fail, as the company blatantly advertized themselves as creating the 'most cancerous cigarette'. The cigarettes became a hit among those rich enough to afford regular lung replacements."
/obj/item/weapon/storage/fancy/cigarettes/professionals
description_fluff = "Decades ago, probably before you were born, Gilthari Exports created the Professional 120s. They wanted to make a fancy cigarette that would be considered a luxury. Nowadays, they are generally concidered an emblem of the nouveau riche and the elderly. They are, however, very high-quality and made from the very best Solar tobacco."
/obj/item/clothing/mask/smokable/cigarette/cigar
description_fluff = "While the label does say that this is a 'premium cigar', it really cannot match other types of cigars on the market. Is it a quality cigarette? Perhaps. Was it hand-made with care? No. This is what differentiates between quality products that Gilthari puts out and NanoTrasen 'premium' cigars like this one."
/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba
description_fluff = "Cohiba has been a popular cigar company for centuries. They are still based out of Cuba and refuse to expand and therefore have a very limited quantity, making their cigars coveted all through known space. Robusto is one of their most popular shapes of cigars."
/obj/item/clothing/mask/smokable/cigarette/cigar/havana
description_fluff = "'Havanian' is an umbrella term for any cigar made in the typical handmade style of Cuba. This particular cigar is from Gilthari's cigar manufacturers. While this way of making quality cigars has become slightly bastardized over the years, overall quality has remained relatively the same, even if there is a large quantity of 'Havanian' cigars."
/obj/item/clothing/mask/smokable/pipe
description_fluff = "ClassiCo Accessories and Haberdashers is a widespread company originating out of Mars. They seek to create quality goods to give men a more 'classy' look. Most of their items are high-end and expensive, but they plege to back their prices up with quality.<br>\
<br>\
This pipe is a ClassiCo pipe. It is made out of fine, stained cherry wood."
+2 -2
View File
@@ -112,7 +112,7 @@ mob/living/carbon/proc/handle_hallucinations()
//Strange audio
//to_chat(src, "Strange Audio")
switch(rand(1,12))
if(1) src << 'sound/machines/airlock.ogg'
if(1) src << 'sound/machines/door/old_airlock.ogg'
if(2)
if(prob(50))src << 'sound/effects/Explosion1.ogg'
else src << 'sound/effects/Explosion2.ogg'
@@ -121,7 +121,7 @@ mob/living/carbon/proc/handle_hallucinations()
if(5) src << 'sound/effects/Glassbr2.ogg'
if(6) src << 'sound/effects/Glassbr3.ogg'
if(7) src << 'sound/machines/twobeep.ogg'
if(8) src << 'sound/machines/windowdoor.ogg'
if(8) src << 'sound/machines/door/windowdoor.ogg'
if(9)
//To make it more realistic, I added two gunshots (enough to kill)
src << 'sound/weapons/Gunshot1.ogg'
+1 -1
View File
@@ -66,7 +66,7 @@
name = "\improper Diet Dr. Gibb"
desc = "A delicious mixture of 42 different flavors, one of which is water."
description_fluff = "Following a 2490 lawsuit and a spate of deaths, Gilthari Exports reminds customers that the 'Dr.' legally stands for 'Drink'."
icon_state = "diet_dr_gibb"
icon_state = "dr_gibb_diet"
center_of_mass = list("x"=16, "y"=8)
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb_diet/Initialize()
+13 -6
View File
@@ -342,7 +342,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy/gummy
name = "\improper AlliCo Gummies"
desc = "Somehow, there's never enough cola bottles."
description_fluff = "AlliCo's grab-bags of gummy candies come in over a thousand novelty shapes and dozens of flavours. Shoes, astronauts, bunny rabbits and singularities all made an appearance."
description_fluff = "AlliCo's grab-bags of gummy candies come in over a thousand novelty shapes and dozens of flavours. Shoes, astronauts, bunny rabbits and singularities all make an appearance."
icon = 'icons/obj/food_snacks.dmi'
icon_state = "candy_gums"
trash = /obj/item/trash/candy/gums
@@ -369,6 +369,7 @@
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
name = "candy corn"
desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas."
description_fluff = "Nobody knows why Nanotrasen keeps making these waxy pieces of sugar and bone glue, but a handful of people swear by them. Purportedly popular with Skrell children, dubiously enough."
icon_state = "candy_corn"
filling_color = "#FFFCB0"
center_of_mass = list("x"=14, "y"=10)
@@ -383,7 +384,7 @@
/obj/item/weapon/reagent_containers/food/snacks/chips
name = "\improper What-The-Crisps"
desc = "Commander Riker's What-The-Crisps, lightly salted."
description_fluff = "What-The-Crisps' retro-styled starship commander has been a marketing staple for almost 200 years."
description_fluff = "What-The-Crisps' retro-styled starship commander has been a marketing staple for almost 200 years. Actual potatos haven't been used in potato chips for centuries. They're mostly a denatured nutrient slurry pressed into a chip-shaped mold and salted. Still tastes the same."
icon = 'icons/obj/food_snacks.dmi'
icon_state = "chips"
trash = /obj/item/trash/chips
@@ -510,6 +511,7 @@
/obj/item/weapon/reagent_containers/food/snacks/donut
name = "donut"
desc = "Goes great with Robust Coffee."
description_fluff = "These donuts claim to be made fresh daily in a boutique bakery in New Reykjavik and delivered to Nanotrasen's hardworking asset protection crew. They're probably synthesized."
icon_state = "donut1"
filling_color = "#D9C386"
var/overlay_state = "box-donut1"
@@ -1146,6 +1148,7 @@
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
name = "Donk-pocket"
desc = "The food of choice for the seasoned traitor."
description_fluff = "DONKpockets were originally a Nanotrasen product, an attempt to break into the food market controlled by Centauri Provisions. Somehow, Centauri wound up with the rights to the DONK brand, ending Nanotrasen's ambitions. They taste pretty okay."
icon_state = "donkpocket"
filling_color = "#DEDEAB"
center_of_mass = list("x"=16, "y"=10)
@@ -1381,6 +1384,7 @@
/obj/item/weapon/reagent_containers/food/snacks/pie
name = "Banana Cream Pie"
desc = "Just like back home, on clown planet! HONK!"
description_fluff = "One of the more esoteric terms of the Nanotrasen-Centauri Noncompetition Agreement of 2545 was a requirement that Nanotrasen stock these pies on all their stations. They're calibrated for comedic value, not taste."
icon_state = "pie"
trash = /obj/item/trash/plate
filling_color = "#FBFFB8"
@@ -1663,7 +1667,7 @@
icon = 'icons/obj/food_snacks.dmi'
icon_state = "4no_raisins"
desc = "Best raisins in the universe. Not sure why."
description_fluff = "The popularity of dried foods across the galaxy is either a direct result of ease of shipping, or a clever marketing ploy by corporations trying to cut back costs. Whatever it is, there must be SOME reason?"
description_fluff = "Originally Raisin Blend no. 4, 4noraisins obtained their current name in the Skadi Positronic Exclusion Crisis of 2442, where they were rebranded as part of the protests. The exclusion crisis, so the story goes, involved positronic immigration being banned for no raisin."
trash = /obj/item/trash/raisins
filling_color = "#343834"
center_of_mass = list("x"=15, "y"=4)
@@ -2653,6 +2657,7 @@
/obj/item/weapon/reagent_containers/food/snacks/twobread
name = "Two Bread"
desc = "It is very bitter and winy."
description_fluff = "The most popular recipe from the Morpheus Cyberkinetics cookbook 'Calories for Organics'"
icon_state = "twobread"
filling_color = "#DBCC9A"
center_of_mass = list("x"=15, "y"=12)
@@ -4056,6 +4061,7 @@
/obj/item/weapon/reagent_containers/food/snacks/liquidfood
name = "\improper LiquidFood Ration"
desc = "A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy?"
description_fluff = "A survival food commonly packed onto short-distance bluespace shuttles and similar vessels. Tastes like chalk, but is packed full of nutrients and will keep you alive."
icon_state = "liquidfood"
trash = /obj/item/trash/liquidfood
filling_color = "#A8A8A8"
@@ -4117,7 +4123,7 @@
/obj/item/weapon/reagent_containers/food/snacks/tastybread
name = "bread tube"
desc = "Bread in a tube. Chewy...and surprisingly tasty."
description_fluff = "Due to the high-fructose corn syrup content of NanoTrasen's own-brand bread tubes, many jurisdictions classify them as a confectionary."
description_fluff = "This is the product that brought Centauri Provisions into the limelight. A product of the earliest extrasolar colony of Heaven, the Bread Tube, while bland, contains all the nutrients a spacer needs to get through the day and is decidedly edible when compared to some of its competitors. Due to the high-fructose corn syrup content of NanoTrasen's own-brand bread tubes, many jurisdictions classify them as a confectionary."
icon = 'icons/obj/food_snacks.dmi'
icon_state = "tastybread"
trash = /obj/item/trash/tastybread
@@ -4133,9 +4139,10 @@
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks
name = "\improper SkrellSnax"
desc = "Cured fungus shipped all the way from Qerr'balak, almost like jerky! Almost."
description_fluff = "Despite the packaging, most SkrellSnax sold in Vir are produced using locally-grown fungi in controversial Skrell-owned biodomes on the suface of Sif."
description_fluff = "Despite the packaging, most SkrellSnax sold in Vir are produced using locally-grown, Qerr'Balak-native Go'moa fungi in controversial Skrell-owned biodomes on the suface of Sif. SkrellSnax were originally a product of Natuna, designed to welcome Ue-Katish refugees to their colony. The brand was recreated by Centauri Provisions after Natuna and SolGov broke off diplomatic relations."
icon = 'icons/obj/food_snacks.dmi'
icon_state = "skrellsnacks"
trash = /obj/item/trash/skrellsnax
filling_color = "#A66829"
center_of_mass = list("x"=15, "y"=12)
nutriment_amt = 10
@@ -4150,7 +4157,7 @@
icon = 'icons/obj/food_snacks.dmi'
icon_state = "unathitinred"
desc = "An incredibly well made jerky, shipped in all the way from Moghes."
description_fluff = "The exact meat and spices used in the curing of Sissalik Jerky are a well-kept secret, and thought to not exist at all outside of Hegemony space. Many have tried to replicate the flavour, but none have come close, so the brand remains a highly prized import."
description_fluff = "The exact meat and spices used in the curing of Sissalik Jerky are a well-kept secret, and thought to not exist at all outside of Hegemony space. Many have tried to replicate the flavour, but none have come close, so the brand remains a highly prized import. "
trash = /obj/item/trash/unajerky
filling_color = "#631212"
center_of_mass = list("x"=15, "y"=9)
@@ -250,7 +250,7 @@
//Strange audio
//to_chat(src, "Strange Audio")
switch(rand(1,12))
if(1) src << 'sound/machines/airlock.ogg'
if(1) src << 'sound/machines/door/old_airlock.ogg'
if(2)
if(prob(50))src << 'sound/effects/Explosion1.ogg'
else src << 'sound/effects/Explosion2.ogg'
@@ -259,7 +259,7 @@
if(5) src << 'sound/effects/Glassbr2.ogg'
if(6) src << 'sound/effects/Glassbr3.ogg'
if(7) src << 'sound/machines/twobeep.ogg'
if(8) src << 'sound/machines/windowdoor.ogg'
if(8) src << 'sound/machines/door/windowdoor.ogg'
if(9)
//To make it more realistic, I added two gunshots (enough to kill)
src << 'sound/weapons/Gunshot1.ogg'
+19 -23
View File
@@ -686,13 +686,26 @@
add_fingerprint(user)
if(istype(user,/mob/living/carbon/human))
if(opened && !wiresexposed && (!istype(user, /mob/living/silicon)))
var/datum/robot_component/cell_component = components["power cell"]
if(cell)
cell.update_icon()
cell.add_fingerprint(user)
user.put_in_active_hand(cell)
to_chat(user, "You remove \the [cell].")
cell = null
cell_component.wrapped = null
cell_component.installed = 0
updateicon()
else if(cell_component.installed == -1)
cell_component.installed = 0
var/obj/item/broken_device = cell_component.wrapped
to_chat(user, "You remove \the [broken_device].")
user.put_in_active_hand(broken_device)
if(istype(user,/mob/living/carbon/human) && !opened)
var/mob/living/carbon/human/H = user
//VOREStation Removal
//if(H.species.can_shred(H))
// attack_generic(H, rand(30,50), "slashed")
// return
//Adding borg petting. Help intent pets, Disarm intent taps, Grab should remove the battery for replacement, and Harm is punching(no damage)
//Adding borg petting. Help intent pets, Disarm intent taps and Harm is punching(no damage)
switch(H.a_intent)
if(I_HELP)
visible_message("<span class='notice'>[H] pets [src].</span>")
@@ -712,23 +725,6 @@
visible_message("<span class='warning'>[H] taps [src].</span>")
return
if(opened && !wiresexposed && (!istype(user, /mob/living/silicon)))
var/datum/robot_component/cell_component = components["power cell"]
if(cell)
cell.update_icon()
cell.add_fingerprint(user)
user.put_in_active_hand(cell)
to_chat(user, "You remove \the [cell].")
cell = null
cell_component.wrapped = null
cell_component.installed = 0
updateicon()
else if(cell_component.installed == -1)
cell_component.installed = 0
var/obj/item/broken_device = cell_component.wrapped
to_chat(user, "You remove \the [broken_device].")
user.put_in_active_hand(broken_device)
//Robots take half damage from basic attacks.
/mob/living/silicon/robot/attack_generic(var/mob/user, var/damage, var/attack_message)
return ..(user,FLOOR(damage/2, 1),attack_message)
@@ -6,7 +6,7 @@
/mob/living/simple_mob/vore/rabbit
name = "rabbit"
desc = "It's a fluffy, smol bunny! Adorable!"
tt_desc = "Vulpes zerda"
tt_desc = "Oryctolagus cuniculus domesticus"
icon_state = "rabbit_brown"
icon_living = "rabbit_brown"
@@ -26,12 +26,12 @@
melee_damage_lower = 1
melee_damage_upper = 3
attacktext = list("nipped")
movement_cooldown = 3
say_list_type = /datum/say_list/rabbit
ai_holder_type = /datum/ai_holder/simple_mob/passive
// Vore vars
vore_active = 1
vore_bump_chance = 10
@@ -40,16 +40,16 @@
vore_pounce_maxhealth = 100 // They won't pounce by default, as they're passive. This is just so the nom check succeeds. :u
vore_default_mode = DM_HOLD
vore_icons = SA_ICON_LIVING
var/body_color //brown, black and white, leave blank for random
var/grumpiness = 0 // This determines how grumpy we are. Pet us to increase it, leave us alone to decrease.
var/last_pet // This tracks the last time someone patted us.
var/grump_decay = 5 SECONDS // This is how quickly our grumpiness decays.
/mob/living/simple_mob/vore/rabbit/New()
. = ..()
if(!body_color)
body_color = pick( list("brown","black","white") )
icon_state = "rabbit_[body_color]"
@@ -57,16 +57,16 @@
icon_living = "rabbit_[body_color]"
icon_dead = "rabbit_[body_color]_dead"
icon_rest = "rabbit_[body_color]_rest"
/mob/living/simple_mob/vore/rabbit/Life()
. = ..()
if(grumpiness > 0 && last_pet > (world.time + grump_decay))
grumpiness = max(0, grumpiness-rand(5,10)) // Subtract grumpiness randomly in a range of 5-10 if we've not been PAT in the last 5 seconds.
/mob/living/simple_mob/vore/rabbit/examine(mob/user)
. = ..()
switch(grumpiness)
if(-INFINITY to 25)
. += "They appear calm."
@@ -76,14 +76,14 @@
. += "They seem very annoyed, perhaps you should stop petting them."
if(75 to INFINITY)
. += "They are very angry. Petting them will likely result in unpleasant things."
/mob/living/simple_mob/vore/rabbit/attack_hand(mob/user)
. = ..()
if(user.a_intent == I_HELP) // only patpet on help. :p
grumpiness = CLAMP(grumpiness + rand(5, 10), 0, 120)
last_pet = world.time
if(grumpiness > 90) // Annoyed bunbun :U
var/pounce_chance = CanPounceTarget(user)
if(pounce_chance)
@@ -93,58 +93,60 @@
speak = list("chrrrs.")
emote_hear = list("screms.")
emote_see = list("earflicks","wiggles it's tail", "wiggles its nose")
/mob/living/simple_mob/vore/rabbit/black
icon_state = "rabbit_black"
icon_living = "rabbit_black"
icon_dead = "rabbit_black_dead"
icon_rest = "rabbit_black_rest"
body_color = "black"
/mob/living/simple_mob/vore/rabbit/white
icon_state = "rabbit_white"
icon_living = "rabbit_white"
icon_dead = "rabbit_white_dead"
icon_rest = "rabbit_white_rest"
body_color = "white"
/mob/living/simple_mob/vore/rabbit/brown
icon_state = "rabbit_brown"
icon_living = "rabbit_brown"
icon_dead = "rabbit_brown_dead"
icon_rest = "rabbit_brown_rest"
body_color = "brown"
/mob/living/simple_mob/vore/rabbit/white/lennie
name = "Lennie"
desc = "A large but somewhat dumb-looking rabbit. Has a little collar that says 'Lennie'!"
/mob/living/simple_mob/vore/rabbit/brown/george
name = "George"
desc = "A small and quick bunny with a restless expression in its eyes. Has a little collar that says 'George'!"
/mob/living/simple_mob/vore/rabbit/killer
tt_desc = "Oryctolagus cuniculus homicidam"
icon_state = "rabbit_killer"
icon_living = "rabbit_killer"
icon_dead = "rabbit_killer_dead"
icon_rest = "rabbit_killer_rest"
maxHealth = 2000
health = 2000
harm_intent_damage = 5
melee_damage_lower = 1
melee_damage_upper = 3
attacktext = list("nipped")
movement_cooldown = 0.5 // very fast bunbun.
vore_pounce_chance = 100
vore_pounce_falloff = 0.2
body_color = "killer" // Set this so New() doesn't try to randomize us.
say_list_type = /datum/say_list/rabbit
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
/mob/living/simple_mob/vore/rabbit/killer/ex_act()
gib()
+6 -6
View File
@@ -234,22 +234,22 @@
if(isliving(src))
var/mob/living/L = src //VOREStation Edit Start. Flight on mobs.
if(L.flying) //Some other checks are done in the wings_toggle proc
if(L.nutrition > 2)
L.adjust_nutrition(-2) //You use up 2 nutrition per TILE and tick of flying above open spaces. If people wanna flap their wings in the hallways, shouldn't penalize them for it.
if(L.nutrition > 0.5)
L.adjust_nutrition(-0.5) //You use up -0.5 nutrition per TILE and tick of flying above open spaces. If people wanna flap their wings in the hallways, shouldn't penalize them for it.
if(L.incapacitated(INCAPACITATION_ALL))
L.stop_flying()
//Just here to see if the person is KO'd, stunned, etc. If so, it'll move onto can_fall.
else if (L.nutrition > 1000) //Eat too much while flying? Get fat and fall.
to_chat(L, "<span class='danger'>You're too heavy! Your wings give out and you plummit to the ground!</span>")
L.stop_flying() //womp womp.
else if(L.nutrition < 300 && L.nutrition > 289) //290 would be risky, as metabolism could mess it up. Let's do 289.
else if(L.nutrition < 300 && L.nutrition > 299.4) //290 would be risky, as metabolism could mess it up. Let's do 289.
to_chat(L, "<span class='danger'>You are starting to get fatigued... You probably have a good minute left in the air, if that. Even less if you continue to fly around! You should get to the ground soon!</span>") //Ticks are, on average, 3 seconds. So this would most likely be 90 seconds, but lets just say 60.
L.adjust_nutrition(-10)
L.adjust_nutrition(-0.5)
return
else if(L.nutrition < 100 && L.nutrition > 89)
else if(L.nutrition < 100 && L.nutrition > 99.4)
to_chat(L, "<span class='danger'>You're seriously fatigued! You need to get to the ground immediately and eat before you fall!</span>")
return
else if(L.nutrition < 2) //Should have listened to the warnings!
else if(L.nutrition < 10) //Should have listened to the warnings!
to_chat(L, "<span class='danger'>You lack the strength to keep yourself up in the air...</span>")
L.stop_flying()
else
+3
View File
@@ -42,6 +42,9 @@
data["busy_msg"] = busy_msg
data["search"] = search
data["builder_page"] = builder_page
data["design_page"] = design_page
data["info"] = null
if(!locked && !busy_msg)
data["info"] = list(
+16 -24
View File
@@ -43,6 +43,7 @@ research holder datum.
** Master Types **
** Includes all the helper procs and basic tech processing. **
***************************************************************/
GLOBAL_LIST_INIT(design_datums, list())
/datum/research //Holder for all the existing, archived, and known tech. Individual to console.
var/list/known_tech = list() //List of locally known tech. Datum/tech go here.
@@ -50,19 +51,25 @@ research holder datum.
var/list/known_designs = list() //List of available designs.
/datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated.
for(var/T in typesof(/datum/tech) - /datum/tech)
known_tech += new T(src)
for(var/D in typesof(/datum/design) - /datum/design)
possible_designs += new D(src)
// generate_integrated_circuit_designs()
if(!LAZYLEN(GLOB.design_datums))
for(var/T in typesof(/datum/design) - /datum/design)
GLOB.design_datums += new T
possible_designs = GLOB.design_datums
if(!LAZYLEN(known_tech))
for(var/T in typesof(/datum/tech) - /datum/tech)
known_tech += new T
RefreshResearch()
/datum/research/techonly
/datum/research/techonly/New()
for(var/T in typesof(/datum/tech) - /datum/tech)
known_tech += new T(src)
RefreshResearch()
. = ..()
possible_designs = list()
known_designs = list()
/datum/research/techonly/RefreshResearch()
. = ..()
known_designs = list() // Just in case
//Checks to see if design has all the required pre-reqs.
//Input: datum/design; Output: 0/1 (false/true)
@@ -117,21 +124,6 @@ research holder datum.
var/datum/tech/check_tech = T
if(initial(check_tech.id) == ID)
return initial(check_tech.name)
/*
/datum/research/proc/generate_integrated_circuit_designs()
spawn(2 SECONDS) // So the list has time to initialize.
for(var/obj/item/integrated_circuit/IC in all_integrated_circuits)
if(IC.spawn_flags & IC_SPAWN_RESEARCH)
var/datum/design/D = new /datum/design/circuit(src)
D.name = "Custom circuitry \[[IC.category_text]\] ([IC.name])"
D.id = "ic-[lowertext(IC.name)]"
if(IC.origin_tech && IC.origin_tech.len)
D.req_tech = IC.origin_tech.Copy()
else
D.req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
D.build_path = IC.type
possible_designs += D
*/
/***************************************************************
** Technology Datums **
+8 -2
View File
@@ -52,9 +52,15 @@
var/list/map_levels = uniquelist(using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE))
data["map_levels"] = map_levels
data["crewmembers"] = list()
var/list/crewmembers = list()
for(var/zlevel in map_levels)
data["crewmembers"] += crew_repository.health_data(zlevel)
crewmembers += crew_repository.health_data(zlevel)
// This is apparently necessary, because the above loop produces an emergent behavior
// of telling you what coordinates someone is at even without sensors on,
// because it strictly sorts by zlevel from bottom to top, and by coordinates from top left to bottom right.
shuffle_inplace(crewmembers)
data["crewmembers"] = crewmembers
return data
@@ -215,6 +215,7 @@
current = null
else
QDEL_LIST_NULL(positive_locations)
positive_locations = list()
QDEL_NULL(current)
return TRUE
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

+37 -26
View File
@@ -511,10 +511,22 @@
/turf/simulated/floor/tiled/eris/steel,
/area/talon/deckone/brig)
"bh" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
/obj/structure/table/standard,
/obj/item/device/defib_kit/loaded,
/obj/item/weapon/storage/belt/medical/emt,
/obj/item/device/sleevemate,
/obj/item/weapon/storage/firstaid/surgery,
/obj/item/stack/nanopaste{
pixel_x = -7;
pixel_y = -4
},
/obj/item/stack/nanopaste{
pixel_x = 9;
pixel_y = -4
},
/obj/item/device/robotanalyzer{
pixel_y = -8
},
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/talon/deckone/medical)
"bi" = (
@@ -742,7 +754,8 @@
"bE" = (
/obj/machinery/vending/engineering{
products = list(/obj/item/clothing/under/rank/chief_engineer = 4, /obj/item/clothing/under/rank/engineer = 4, /obj/item/clothing/shoes/orange = 4, /obj/item/clothing/head/hardhat = 4, /obj/item/weapon/storage/belt/utility = 4, /obj/item/clothing/glasses/meson = 4, /obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/tool/screwdriver = 12, /obj/item/weapon/tool/crowbar = 12, /obj/item/weapon/tool/wirecutters = 12, /obj/item/device/multitool = 12, /obj/item/weapon/tool/wrench = 12, /obj/item/device/t_scanner = 12, /obj/item/stack/cable_coil/heavyduty = 8, /obj/item/weapon/cell = 8, /obj/item/weapon/weldingtool = 8, /obj/item/clothing/head/welding = 8, /obj/item/weapon/light/tube = 10, /obj/item/clothing/head/hardhat/red = 4, /obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5, /obj/item/weapon/stock_parts/micro_laser = 5, /obj/item/weapon/stock_parts/matter_bin = 5, /obj/item/weapon/stock_parts/manipulator = 5, /obj/item/weapon/stock_parts/console_screen = 5);
req_log_access = 301;
req_access = list(301);
req_log_access = list(301);
req_one_access = list(301)
},
/turf/simulated/floor/tiled/eris/dark/brown_platform,
@@ -752,8 +765,8 @@
/obj/item/weapon/storage/toolbox/electrical,
/obj/item/stack/marker_beacon/thirty,
/obj/item/weapon/pipe_dispenser,
/obj/structure/closet/hydrant{
pixel_y = 32
/obj/machinery/alarm/talon{
pixel_y = 28
},
/turf/simulated/floor/tiled/eris/dark/brown_platform,
/area/talon/deckone/port_eng_store)
@@ -1170,6 +1183,21 @@
/obj/structure/vehiclecage/spacebike,
/turf/simulated/floor/tiled/eris/steel,
/area/talon/deckone/central_hallway)
"cs" = (
/obj/structure/closet/hydrant{
pixel_x = -32;
pixel_y = 0
},
/turf/simulated/floor/tiled/eris/dark/brown_platform,
/area/talon/deckone/port_eng_store)
"ct" = (
/obj/structure/table/standard,
/obj/item/device/defib_kit/jumper_kit/loaded,
/obj/item/device/defib_kit/loaded,
/obj/item/weapon/storage/belt/medical/emt,
/obj/item/device/sleevemate,
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/talon/deckone/medical)
"cv" = (
/obj/machinery/vending/coffee,
/turf/simulated/floor/tiled/steel_ridged,
@@ -1519,14 +1547,6 @@
},
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/brig)
"eV" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
/obj/structure/table/standard,
/obj/item/weapon/storage/firstaid/surgery,
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/talon/deckone/medical)
"fi" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4;
@@ -4947,15 +4967,6 @@
/obj/item/weapon/pen,
/turf/simulated/floor/tiled/eris/steel/cargo,
/area/talon/deckone/workroom)
"Nt" = (
/obj/machinery/alarm/talon{
dir = 4;
icon_state = "alarm0";
pixel_x = -22;
pixel_y = 0
},
/turf/simulated/floor/tiled/eris/dark/brown_platform,
/area/talon/deckone/port_eng_store)
"Nu" = (
/obj/structure/table/standard,
/obj/fiftyspawner/glass,
@@ -14496,7 +14507,7 @@ dH
am
gU
dR
Nt
cs
gU
NP
ho
@@ -17184,7 +17195,7 @@ xH
aw
Xd
be
eV
bh
dO
uN
SI
@@ -17610,7 +17621,7 @@ dz
Rk
Gb
bC
bh
ct
dO
Gt
SI
+15 -15
View File
@@ -379,7 +379,6 @@
pixel_y = 0
},
/obj/structure/table/standard,
/obj/item/weapon/paper/talon_shields,
/obj/structure/closet/hydrant{
pixel_x = 0;
pixel_y = 32;
@@ -667,6 +666,20 @@
},
/turf/simulated/floor/wood,
/area/talon/decktwo/sec_room)
"bA" = (
/obj/machinery/power/apc/talon{
cell_type = /obj/item/weapon/cell/apc;
dir = 8;
name = "west bump";
pixel_x = -28
},
/obj/structure/cable/green{
icon_state = "0-4"
},
/obj/structure/table/standard,
/obj/item/weapon/paper/talon_shields,
/turf/simulated/floor/tiled/eris/dark/violetcorener,
/area/talon/decktwo/tech)
"bB" = (
/obj/machinery/alarm/talon{
dir = 4;
@@ -2253,19 +2266,6 @@
"pi" = (
/turf/simulated/floor/hull/airless,
/area/talon/maintenance/decktwo_solars)
"pp" = (
/obj/machinery/power/apc/talon{
cell_type = /obj/item/weapon/cell/apc;
dir = 8;
name = "west bump";
pixel_x = -28
},
/obj/structure/cable/green{
icon_state = "0-4"
},
/obj/structure/table/standard,
/turf/simulated/floor/tiled/eris/dark/violetcorener,
/area/talon/decktwo/tech)
"pt" = (
/obj/effect/map_helper/airlock/door/ext_door,
/obj/machinery/door/airlock/glass_external{
@@ -14326,7 +14326,7 @@ NT
bF
ds
aZ
pp
bA
Db
iV
ds
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -18,7 +18,7 @@ const canBeMade = (recipe, materials) => {
for (let mat_id of recipeRequiredMaterials) {
let material = materials.find(val => val.name === mat_id);
if (!material) {
return false;
continue; // yes, if we cannot find the material, we just ignore it :V
}
if (material.amount < recipe.requirements[mat_id]) {
return false;
+8 -4
View File
@@ -1,9 +1,9 @@
import { sortBy } from 'common/collections';
import { flow } from 'common/fp';
import { useBackend, useLocalState } from "../backend";
import { Window } from "../layouts";
import { NanoMap, Box, Table, Button, Tabs, Icon, NumberInput } from "../components";
import { TableCell } from '../components/Table';
import { COLORS } from '../constants.js';
import { Fragment } from 'inferno';
export const CrewMonitor = () => {
@@ -22,9 +22,13 @@ export const CrewMonitor = () => {
export const CrewMonitorContent = (props, context) => {
const { act, data, config } = useBackend(context);
const [tabIndex, setTabIndex] = useLocalState(context, 'tabIndex', 0);
const crew = sortBy(
cm => cm.name,
)(data.crewmembers || []);
const crew = flow([
sortBy(cm => cm.name),
sortBy(cm => cm?.x),
sortBy(cm => cm?.y),
sortBy(cm => cm?.realZ),
])(data.crewmembers || []);
const [
mapZoom,
@@ -36,11 +36,26 @@ const ResearchConsoleViewResearch = (props, context) => {
);
};
const PaginationTitle = (props, context) => {
const { data } = useBackend(context);
const {
title,
target,
} = props;
let page = data[target];
if (typeof page === "number") {
return title + " - Page " + (page + 1);
}
return title;
};
const PaginationChevrons = (props, context) => {
const { act } = useBackend(context);
const {
length,
target,
} = props;
@@ -67,14 +82,14 @@ const ResearchConsoleViewDesigns = (props, context) => {
} = data;
return (
<Section title="Researched Technologies & Designs" buttons={
<Section title={<PaginationTitle title="Researched Technologies & Designs" target="design_page" />} buttons={
<Fragment>
<Button
icon="print"
onClick={() => act("print", { print: 2 })}>
Print This Page
</Button>
{<PaginationChevrons length={designs && designs.length} target={"design_page"} /> || null}
{<PaginationChevrons target={"design_page"} /> || null}
</Fragment>
}>
<Input
@@ -213,15 +228,17 @@ const DataDisk = (props, context) => {
if (saveDialog) {
return (
<Section title="Load Design to Disk" buttons={
<Fragment>
<Button
icon="arrow-left"
content="Back"
onClick={() => setSaveDialog(false)} />
{<PaginationChevrons length={designs && designs.length} target={"design_page"} /> || null}
</Fragment>
}>
<Section
title={<PaginationTitle title="Load Design to Disk" target="design_page" />}
buttons={
<Fragment>
<Button
icon="arrow-left"
content="Back"
onClick={() => setSaveDialog(false)} />
{<PaginationChevrons target={"design_page"} /> || null}
</Fragment>
}>
<Input
fluid
placeholder="Search for..."
@@ -411,9 +428,11 @@ const ResearchConsoleBuildMenu = (props, context) => {
}
return (
<Section title="Designs" buttons={
<PaginationChevrons length={designs && designs.length} target={"builder_page"} />
}>
<Section
title={<PaginationTitle target="builder_page" title="Designs" />}
buttons={
<PaginationChevrons target={"builder_page"} />
}>
<Input
fluid
placeholder="Search for..."
@@ -483,7 +502,7 @@ const ResearchConsoleConstructor = (props, context) => {
if (!linked || !linked.present) {
return (
<Section title={name}>
No protolathe found.
No {name} found.
</Section>
);
}
File diff suppressed because one or more lines are too long
-2
View File
@@ -2067,12 +2067,10 @@
#include "code\modules\examine\descriptions\containers.dm"
#include "code\modules\examine\descriptions\devices.dm"
#include "code\modules\examine\descriptions\engineering.dm"
#include "code\modules\examine\descriptions\food.dm"
#include "code\modules\examine\descriptions\machines.dm"
#include "code\modules\examine\descriptions\medical.dm"
#include "code\modules\examine\descriptions\mobs.dm"
#include "code\modules\examine\descriptions\paperwork.dm"
#include "code\modules\examine\descriptions\smokeables.dm"
#include "code\modules\examine\descriptions\stacks.dm"
#include "code\modules\examine\descriptions\structures.dm"
#include "code\modules\examine\descriptions\telecomms.dm"