mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-29 08:11:11 +01:00
@@ -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',
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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'
|
||||
)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)]"
|
||||
|
||||
|
||||
@@ -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."
|
||||
@@ -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'
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
+2
-2
@@ -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'
|
||||
|
||||
@@ -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()
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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 **
|
||||
|
||||
@@ -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 |
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+1342
-1252
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user