mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-25 14:07:18 +01:00
@@ -25,13 +25,10 @@ SUBSYSTEM_DEF(mobs)
|
||||
/datum/controller/subsystem/mobs/fire(resumed = 0)
|
||||
if (!resumed)
|
||||
src.currentrun = mob_list.Copy()
|
||||
process_z.Cut()
|
||||
process_z.len = GLOB.living_players_by_zlevel.len
|
||||
slept_mobs = 0
|
||||
var/level = 1
|
||||
while(process_z.len < GLOB.living_players_by_zlevel.len)
|
||||
process_z.len++
|
||||
for(var/level in 1 to process_z.len)
|
||||
process_z[level] = GLOB.living_players_by_zlevel[level].len
|
||||
level++
|
||||
|
||||
//cache for sanic speed (lists are references anyways)
|
||||
var/list/currentrun = src.currentrun
|
||||
|
||||
@@ -205,10 +205,11 @@ SUBSYSTEM_DEF(supply)
|
||||
else if(islist(SP.access) && SP.one_access)
|
||||
var/list/L = SP.access // access var is a plain var, we need a list
|
||||
A.req_one_access = L.Copy()
|
||||
A.req_access.Cut()
|
||||
A.req_access = null
|
||||
else if(islist(SP.access) && !SP.one_access)
|
||||
var/list/L = SP.access
|
||||
A.req_access = L.Copy()
|
||||
A.req_one_access = null
|
||||
else
|
||||
log_debug("<span class='danger'>Supply pack with invalid access restriction [SP.access] encountered!</span>")
|
||||
|
||||
|
||||
@@ -73,9 +73,9 @@ var/list/runechat_image_cache = list()
|
||||
|
||||
/datum/chatmessage/Destroy()
|
||||
if(owned_by)
|
||||
UnregisterSignal(owned_by, COMSIG_PARENT_QDELETING)
|
||||
LAZYREMOVEASSOC(owned_by.seen_messages, message_loc, src)
|
||||
owned_by.images.Remove(message)
|
||||
UnregisterSignal(owned_by, COMSIG_PARENT_QDELETING)
|
||||
if(message_loc)
|
||||
UnregisterSignal(message_loc, COMSIG_PARENT_QDELETING)
|
||||
owned_by = null
|
||||
@@ -96,6 +96,10 @@ var/list/runechat_image_cache = list()
|
||||
/datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, list/extra_classes, lifespan)
|
||||
set waitfor = FALSE
|
||||
|
||||
if(!target || !owner)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
// Register client who owns this message
|
||||
owned_by = owner.client
|
||||
RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, .proc/qdel_self)
|
||||
@@ -152,6 +156,8 @@ var/list/runechat_image_cache = list()
|
||||
|
||||
text = "[prefixes?.Join(" ")][text]"
|
||||
|
||||
text = encode_html_emphasis(text)
|
||||
|
||||
// We dim italicized text to make it more distinguishable from regular text
|
||||
var/tgt_color = extra_classes.Find("italics") ? target.chat_color_darkened : target.chat_color
|
||||
|
||||
|
||||
@@ -213,10 +213,10 @@
|
||||
*
|
||||
* Arguments:
|
||||
* * datum/target Datum to stop listening to signals from
|
||||
* * sig_typeor_types Signal string key or list of signal keys to stop listening to specifically
|
||||
* * sig_type_or_types Signal string key or list of signal keys to stop listening to specifically
|
||||
*/
|
||||
/datum/proc/UnregisterSignal(datum/target, sig_type_or_types)
|
||||
var/list/lookup = target.comp_lookup
|
||||
var/list/lookup = target?.comp_lookup
|
||||
if(!signal_procs || !signal_procs[target] || !lookup)
|
||||
return
|
||||
if(!islist(sig_type_or_types))
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
/decl/hierarchy/outfit/job/security/detective/forensic
|
||||
name = OUTFIT_JOB_NAME("Forensic technician")
|
||||
head = null
|
||||
suit = /datum/gear/uniform/detective_alt2
|
||||
suit = /obj/item/clothing/suit/storage/det_trench/alt2
|
||||
uniform = /obj/item/clothing/under/det
|
||||
//VOREStation Edit End
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ datum/hSB
|
||||
var/accesses = get_all_accesses()
|
||||
for(var/A in accesses)
|
||||
if(alert(usr, "Will this airlock require [get_access_desc(A)] access?", "Sandbox:", "Yes", "No") == "Yes")
|
||||
hsb.req_access += A
|
||||
LAZYADD(hsb.req_access, A)
|
||||
|
||||
hsb.loc = usr.loc
|
||||
to_chat(usr, "<b>Sandbox: Created an airlock.</b>")
|
||||
|
||||
+35
-26
@@ -1,21 +1,9 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
/obj/var/list/req_access
|
||||
/obj/var/list/req_one_access
|
||||
|
||||
//returns 1 if this mob has sufficient access to use this object
|
||||
/obj/proc/allowed(mob/M)
|
||||
//check if it doesn't require any access at all
|
||||
if(src.check_access(null))
|
||||
return 1
|
||||
|
||||
var/id = M.GetIdCard()
|
||||
if(id)
|
||||
return check_access(id)
|
||||
return 0
|
||||
|
||||
///obj/item/proc/GetAccess()
|
||||
// return list()
|
||||
return check_access(M?.GetIdCard())
|
||||
|
||||
/atom/movable/proc/GetAccess()
|
||||
var/obj/item/weapon/card/id/id = GetIdCard()
|
||||
@@ -25,26 +13,47 @@
|
||||
return null
|
||||
|
||||
/obj/proc/check_access(obj/item/I)
|
||||
return check_access_list(I ? I.GetAccess() : list())
|
||||
return check_access_list(I ? I.GetAccess() : null)
|
||||
|
||||
/obj/proc/check_access_list(var/list/L)
|
||||
if(!L) return 0
|
||||
if(!istype(L, /list)) return 0
|
||||
// We don't require access
|
||||
if(!LAZYLEN(req_access) && !LAZYLEN(req_one_access))
|
||||
return TRUE
|
||||
|
||||
// They passed nothing, but we are something that requires access
|
||||
if(!LAZYLEN(L))
|
||||
return FALSE
|
||||
|
||||
// Run list comparisons
|
||||
return has_access(req_access, req_one_access, L)
|
||||
|
||||
/proc/has_access(var/list/req_access, var/list/req_one_access, var/list/accesses)
|
||||
var/has_RA = LAZYLEN(req_access)
|
||||
var/has_ROA = LAZYLEN(req_one_access)
|
||||
var/has_A = LAZYLEN(accesses)
|
||||
if(!has_RA && !has_ROA) //we need none
|
||||
// Doesn't have access lists, always works
|
||||
if(!LAZYLEN(req_access) && !LAZYLEN(req_one_access))
|
||||
return TRUE
|
||||
if(!has_A) //we need them but don't have them
|
||||
|
||||
// Didn't pass anything to compare
|
||||
if(!LAZYLEN(accesses))
|
||||
return FALSE
|
||||
if(has_RA && length(req_access - accesses)) //we don't have every access we need
|
||||
return FALSE
|
||||
if(has_ROA && !length(req_one_access & accesses)) //we have atleast one access from this list
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
// req_access list has priority if set
|
||||
// Requires at least every access in list
|
||||
if(LAZYLEN(req_access))
|
||||
for(var/req in req_access)
|
||||
if(!(req in accesses))
|
||||
return FALSE
|
||||
// Wasn't missing any accesses
|
||||
return TRUE
|
||||
|
||||
// req_one_access is secondary if set
|
||||
// Requires at least one access in list
|
||||
for(var/req in req_one_access)
|
||||
if(req in accesses)
|
||||
// Found at least one
|
||||
return TRUE
|
||||
|
||||
// Didn't find anything that matched
|
||||
return FALSE
|
||||
|
||||
/proc/get_centcom_access(job)
|
||||
switch(job)
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
else if((occupant.health >= heal_level || occupant.health == occupant.getMaxHealth()) && (!eject_wait))
|
||||
playsound(src, 'sound/machines/medbayscanner1.ogg', 50, 1)
|
||||
audible_message("\The [src] signals that the cloning process is complete.", runemessage = "* ding *")
|
||||
audible_message("\The [src] signals that the cloning process is complete.", runemessage = "ding")
|
||||
connected_message("Cloning Process Complete.")
|
||||
locked = 0
|
||||
go_out()
|
||||
|
||||
@@ -519,9 +519,9 @@
|
||||
if(electronics)
|
||||
sleep(10)
|
||||
if(oldfuel > fuel && oldfood > food)
|
||||
src.audible_message("\The [src] lets out a somehow reassuring chime.", runemessage = "* reassuring chime *")
|
||||
src.audible_message("\The [src] lets out a somehow reassuring chime.", runemessage = "reassuring chime")
|
||||
else if(oldfuel < fuel || oldfood < food)
|
||||
src.audible_message("\The [src] lets out a somehow ominous chime.", runemessage = "* ominous chime *")
|
||||
src.audible_message("\The [src] lets out a somehow ominous chime.", runemessage = "ominous chime")
|
||||
food = oldfood
|
||||
fuel = oldfuel
|
||||
|
||||
|
||||
@@ -130,8 +130,8 @@ Deployable items
|
||||
/obj/machinery/deployable/barrier/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(emagged == 0)
|
||||
emagged = 1
|
||||
req_access.Cut()
|
||||
req_one_access.Cut()
|
||||
LAZYCLEARLIST(req_access)
|
||||
LAZYCLEARLIST(req_one_access)
|
||||
to_chat(user, "You break the ID authentication lock on \the [src].")
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 1, src)
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/button/remote/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(LAZYLEN(req_access) || LAZYLEN(req_one_access.len))
|
||||
req_access = req_access ? list() : null
|
||||
req_one_access = req_one_access ? list() : null // if it's not set keep it not set
|
||||
if(LAZYLEN(req_access) || LAZYLEN(req_one_access))
|
||||
LAZYCLEARLIST(req_access)
|
||||
LAZYCLEARLIST(req_one_access)
|
||||
playsound(src, "sparks", 100, 1)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -1430,10 +1430,10 @@ About the new airlock wires panel:
|
||||
//update the door's access to match the electronics'
|
||||
secured_wires = electronics.secure
|
||||
if(electronics.one_access)
|
||||
if(req_access) req_access.Cut() //YWEdit
|
||||
LAZYCLEARLIST(req_access)
|
||||
req_one_access = src.electronics.conf_access
|
||||
else
|
||||
if(req_one_access) req_one_access.Cut() //YWEdit
|
||||
LAZYCLEARLIST(req_one_access)
|
||||
req_access = src.electronics.conf_access
|
||||
|
||||
//get the name from the assembly
|
||||
@@ -1479,12 +1479,10 @@ About the new airlock wires panel:
|
||||
src.electronics = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
|
||||
//update the electronics to match the door's access
|
||||
if(!src.req_access)
|
||||
src.check_access()
|
||||
if(src.req_access.len)
|
||||
electronics.conf_access = src.req_access
|
||||
else if (src.req_one_access.len)
|
||||
electronics.conf_access = src.req_one_access
|
||||
if(LAZYLEN(req_access))
|
||||
electronics.conf_access = req_access
|
||||
else if (LAZYLEN(req_one_access))
|
||||
electronics.conf_access = req_one_access
|
||||
electronics.one_access = 1
|
||||
|
||||
/obj/machinery/door/airlock/emp_act(var/severity)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/obj/machinery/door/window/New()
|
||||
..()
|
||||
update_nearby_tiles()
|
||||
if (src.req_access && src.req_access.len)
|
||||
if(LAZYLEN(req_access))
|
||||
src.icon_state = "[src.icon_state]"
|
||||
src.base_state = src.icon_state
|
||||
return
|
||||
@@ -38,12 +38,10 @@
|
||||
var/obj/item/weapon/airlock_electronics/ae
|
||||
if(!electronics)
|
||||
ae = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
if(!src.req_access)
|
||||
src.check_access()
|
||||
if(src.req_access.len)
|
||||
ae.conf_access = src.req_access
|
||||
else if (src.req_one_access.len)
|
||||
ae.conf_access = src.req_one_access
|
||||
if(LAZYLEN(req_access))
|
||||
ae.conf_access = req_access
|
||||
else if (LAZYLEN(req_one_access))
|
||||
ae.conf_access = req_one_access
|
||||
ae.one_access = 1
|
||||
else
|
||||
ae = electronics
|
||||
@@ -241,12 +239,10 @@
|
||||
else
|
||||
if(!electronics)
|
||||
wa.electronics = new/obj/item/weapon/airlock_electronics()
|
||||
if(!src.req_access)
|
||||
src.check_access()
|
||||
if(src.req_access.len)
|
||||
wa.electronics.conf_access = src.req_access
|
||||
else if (src.req_one_access.len)
|
||||
wa.electronics.conf_access = src.req_one_access
|
||||
if(LAZYLEN(req_access))
|
||||
wa.electronics.conf_access = req_access
|
||||
else if (LAZYLEN(req_one_access))
|
||||
wa.electronics.conf_access = req_one_access
|
||||
wa.electronics.one_access = 1
|
||||
else
|
||||
wa.electronics = electronics
|
||||
|
||||
@@ -460,7 +460,7 @@
|
||||
return
|
||||
|
||||
playsound(src, 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
audible_message("<span class='warning'>\The [src] lets out a steadily rising hum...</span>", runemessage = "* whines *")
|
||||
audible_message("<span class='warning'>\The [src] lets out a steadily rising hum...</span>", runemessage = "whines")
|
||||
|
||||
if(!do_after(user, chargetime, H))
|
||||
return
|
||||
@@ -527,7 +527,7 @@
|
||||
H.setBrainLoss(brain_damage)
|
||||
|
||||
/obj/item/weapon/shockpaddles/proc/make_announcement(var/message, var/msg_class)
|
||||
audible_message("<b>\The [src]</b> [message]", "\The [src] vibrates slightly.", runemessage = "* buzz *")
|
||||
audible_message("<b>\The [src]</b> [message]", "\The [src] vibrates slightly.", runemessage = "buzz")
|
||||
|
||||
/obj/item/weapon/shockpaddles/emag_act(mob/user)
|
||||
if(safety)
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
playsleepseconds = 1
|
||||
sleep(10)
|
||||
T = get_turf(src)
|
||||
T.audible_message("<font color=Maroon><B>Tape Recorder</B>: End of recording.</font>", runemessage = "* click *")
|
||||
T.audible_message("<font color=Maroon><B>Tape Recorder</B>: End of recording.</font>", runemessage = "click")
|
||||
break
|
||||
else
|
||||
playsleepseconds = mytape.timestamp[i+1] - mytape.timestamp[i]
|
||||
@@ -272,7 +272,7 @@
|
||||
if(playsleepseconds > 14)
|
||||
sleep(10)
|
||||
T = get_turf(src)
|
||||
T.audible_message("<font color=Maroon><B>Tape Recorder</B>: Skipping [playsleepseconds] seconds of silence</font>", runemessage = "* tape winding *")
|
||||
T.audible_message("<font color=Maroon><B>Tape Recorder</B>: Skipping [playsleepseconds] seconds of silence</font>", runemessage = "tape winding")
|
||||
playsleepseconds = 1
|
||||
sleep(10 * playsleepseconds)
|
||||
|
||||
@@ -282,7 +282,7 @@
|
||||
|
||||
if(emagged)
|
||||
var/turf/T = get_turf(src)
|
||||
T.audible_message("<font color=Maroon><B>Tape Recorder</B>: This tape recorder will self-destruct in... Five.</font>", runemessage = "* beep beep *")
|
||||
T.audible_message("<font color=Maroon><B>Tape Recorder</B>: This tape recorder will self-destruct in... Five.</font>", runemessage = "beep beep")
|
||||
sleep(10)
|
||||
T = get_turf(src)
|
||||
T.audible_message("<font color=Maroon><B>Tape Recorder</B>: Four.</font>")
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
|
||||
var/message = sanitize(input(user,"Choose a message to relay to those around you.") as text|null)
|
||||
if(message)
|
||||
audible_message("[bicon(src)] \The [src.name] states, \"[message]\"", runemessage = "* synthesized speech *")
|
||||
audible_message("[bicon(src)] \The [src.name] states, \"[message]\"", runemessage = "synthesized speech")
|
||||
if(ismob(loc))
|
||||
loc.audible_message("", runemessage = "\[TTS Voice\] [message]")
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
sleep(1 SECOND)
|
||||
shadekin.dir = SOUTH
|
||||
sleep(1 SECOND)
|
||||
shadekin.audible_message("<b>[shadekin]</b> belches loudly!", runemessage = "* URRRRRP *")
|
||||
shadekin.audible_message("<b>[shadekin]</b> belches loudly!", runemessage = "URRRRRP")
|
||||
sleep(2 SECONDS)
|
||||
shadekin.phase_shift()
|
||||
target.transforming = FALSE //Undo cheap hack
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
item_state = icon_state
|
||||
wires = new(src)
|
||||
|
||||
if((!req_access || !req_access.len) && (!req_one_access || !req_one_access.len))
|
||||
if(!LAZYLEN(req_access) && !LAZYLEN(req_one_access))
|
||||
locked = 0
|
||||
|
||||
spark_system = new()
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
to_chat(user, "<span class='danger'>It looks like the locking system has been shorted out.</span>")
|
||||
return
|
||||
|
||||
if((!req_access || !req_access.len) && (!req_one_access || !req_one_access.len))
|
||||
if(!LAZYLEN(req_access) && !LAZYLEN(req_one_access))
|
||||
locked = 0
|
||||
to_chat(user, "<span class='danger'>\The [src] doesn't seem to have a locking mechanism.</span>")
|
||||
return
|
||||
@@ -190,8 +190,8 @@
|
||||
|
||||
/obj/item/weapon/rig/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(!subverted)
|
||||
req_access.Cut()
|
||||
req_one_access.Cut()
|
||||
LAZYCLEARLIST(req_access)
|
||||
LAZYCLEARLIST(req_one_access)
|
||||
locked = 0
|
||||
subverted = 1
|
||||
to_chat(user, "<span class='danger'>You short out the access protocol for the suit.</span>")
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
if(usr.stat) return
|
||||
|
||||
if(!jingled)
|
||||
usr.audible_message("[usr] jingles the [src]'s bell.", runemessage = "* jingle *")
|
||||
usr.audible_message("[usr] jingles the [src]'s bell.", runemessage = "jingle")
|
||||
playsound(src, 'sound/items/pickup/ring.ogg', 50, 1)
|
||||
jingled = 1
|
||||
addtimer(CALLBACK(src, .proc/jingledreset), 50)
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
|
||||
// Check for required access.
|
||||
var/obj/item/weapon/card/id/current_id = M.wear_id
|
||||
if(citem.req_access && citem.req_access > 0)
|
||||
if(citem.req_access && citem.req_access > 0) // These are numbers, not lists
|
||||
if(!(istype(current_id) && (citem.req_access in current_id.access)))
|
||||
log_debug("Custom Item: [key_name(M)] Does not have required access.")
|
||||
continue
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
if(use_emote.message_type == AUDIBLE_MESSAGE && is_muzzled())
|
||||
var/muffle_message = use_emote.emote_message_muffled || "makes a muffled sound."
|
||||
audible_message("<b>\The [src]</b> [muffle_message]", runemessage = "* [muffle_message] *")
|
||||
audible_message("<b>\The [src]</b> [muffle_message]", runemessage = "[muffle_message]")
|
||||
return
|
||||
|
||||
next_emote = world.time + use_emote.emote_delay
|
||||
|
||||
@@ -417,7 +417,7 @@
|
||||
if(lockdown)
|
||||
to_chat(user, "<span class='notice'>\The [src]'s control panel thunks, as its cover retracts.</span>")
|
||||
lockdown = 0
|
||||
if(req_access || req_one_access)
|
||||
if(LAZYLEN(req_access) || LAZYLEN(req_one_access))
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
to_chat(user, "<span class='warning'>\The [src]'s access mechanism shorts out.</span>")
|
||||
|
||||
@@ -249,8 +249,10 @@ turf/simulated/mineral/floor/light_corner
|
||||
spawn(1) // Otherwise most of the ore is lost to the explosion, which makes this rather moot.
|
||||
for(var/ore in resources)
|
||||
var/amount_to_give = rand(CEILING(resources[ore]/2, 1), resources[ore]) // Should result in at least one piece of ore.
|
||||
var/oretype = ore_types[ore]
|
||||
if(!oretype)
|
||||
return // this turf can't give that type
|
||||
for(var/i=1, i <= amount_to_give, i++)
|
||||
var/oretype = GLOB.ore_types[ore]
|
||||
new oretype(src)
|
||||
resources[ore] = 0
|
||||
|
||||
|
||||
@@ -481,6 +481,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
/mob/proc/update_following()
|
||||
. = get_turf(src)
|
||||
for(var/mob/observer/dead/M in following_mobs)
|
||||
if(!.)
|
||||
M.stop_following()
|
||||
|
||||
if(M.following != src)
|
||||
following_mobs -= M
|
||||
else
|
||||
|
||||
@@ -13,9 +13,13 @@
|
||||
|
||||
if(SP.speaking && SP.speaking.flags & INNATE) // Snowflake for noise lang
|
||||
if(radio)
|
||||
return SP.speaking.format_message_radio(piece)
|
||||
.["formatted"] = SP.speaking.format_message_radio(piece)
|
||||
.["raw"] = piece
|
||||
return
|
||||
else
|
||||
return SP.speaking.format_message(piece)
|
||||
.["formatted"] = SP.speaking.format_message(piece)
|
||||
.["raw"] = piece
|
||||
return
|
||||
|
||||
if(iteration_count == 1)
|
||||
piece = capitalize(piece)
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
"You begin climbing [direction] \the [src]!",
|
||||
"You hear the grunting and clanging of a metal ladder being used.")
|
||||
|
||||
target_ladder.audible_message("<span class='notice'>You hear something coming [direction] \the [src]</span>", runemessage = "* clank clank *")
|
||||
target_ladder.audible_message("<span class='notice'>You hear something coming [direction] \the [src]</span>", runemessage = "clank clank")
|
||||
|
||||
if(do_after(M, climb_time, src))
|
||||
var/turf/T = get_turf(target_ladder)
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
if(lattice)
|
||||
var/pull_up_time = max(5 SECONDS + (src.movement_delay() * 10), 1)
|
||||
to_chat(src, "<span class='notice'>You grab \the [lattice] and start pulling yourself upward...</span>")
|
||||
destination.audible_message("<span class='notice'>You hear something climbing up \the [lattice].</span>", runemessage = "* clank clang *")
|
||||
destination.audible_message("<span class='notice'>You hear something climbing up \the [lattice].</span>", runemessage = "clank clang")
|
||||
if(do_after(src, pull_up_time))
|
||||
to_chat(src, "<span class='notice'>You pull yourself up.</span>")
|
||||
else
|
||||
@@ -74,7 +74,7 @@
|
||||
if(!destination?.Enter(src, old_dest))
|
||||
to_chat(src, "<span class='notice'>There's something in the way up above in that direction, try another.</span>")
|
||||
return 0
|
||||
destination.audible_message("<span class='notice'>You hear something climbing up \the [catwalk].</span>", runemessage = "* clank clang *")
|
||||
destination.audible_message("<span class='notice'>You hear something climbing up \the [catwalk].</span>", runemessage = "clank clang")
|
||||
if(do_after(src, pull_up_time))
|
||||
to_chat(src, "<span class='notice'>You pull yourself up.</span>")
|
||||
else
|
||||
@@ -90,8 +90,8 @@
|
||||
return 0
|
||||
var/fly_time = max(7 SECONDS + (H.movement_delay() * 10), 1) //So it's not too useful for combat. Could make this variable somehow, but that's down the road.
|
||||
to_chat(src, "<span class='notice'>You begin to fly upwards...</span>")
|
||||
destination.audible_message("<span class='notice'>You hear the flapping of wings.</span>", runemessage = "* flap flap *")
|
||||
H.audible_message("<span class='notice'>[H] begins to flap \his wings, preparing to move upwards!</span>", runemessage = "* flap flap *")
|
||||
destination.audible_message("<span class='notice'>You hear the flapping of wings.</span>", runemessage = "flap flap")
|
||||
H.audible_message("<span class='notice'>[H] begins to flap \his wings, preparing to move upwards!</span>", runemessage = "flap flap")
|
||||
if(do_after(H, fly_time) && H.flying)
|
||||
to_chat(src, "<span class='notice'>You fly upwards.</span>")
|
||||
else
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
if(!is_on())
|
||||
return 0
|
||||
if(!check_fuel() || (use_power_oneoff(charge_per_burn) < charge_per_burn) || check_blockage())
|
||||
audible_message(src,"<span class='warning'>[src] coughs once and goes silent!</span>", runemessage = "* sputtercough *")
|
||||
audible_message(src,"<span class='warning'>[src] coughs once and goes silent!</span>", runemessage = "sputtercough")
|
||||
update_use_power(USE_POWER_OFF)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -111,28 +111,28 @@
|
||||
playsound(src, "sound/machines/copier.ogg", 100, 1)
|
||||
sleep(11)
|
||||
copy(copyitem)
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "* whirr *")
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "whirr")
|
||||
playsound(src, "sound/machines/buzzbeep.ogg", 30)
|
||||
else if (istype(copyitem, /obj/item/weapon/photo))
|
||||
playsound(src, "sound/machines/copier.ogg", 100, 1)
|
||||
sleep(11)
|
||||
photocopy(copyitem)
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "* whirr *")
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "whirr")
|
||||
playsound(src, "sound/machines/buzzbeep.ogg", 30)
|
||||
else if (istype(copyitem, /obj/item/weapon/paper_bundle))
|
||||
sleep(11)
|
||||
playsound(src, "sound/machines/copier.ogg", 100, 1)
|
||||
var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem)
|
||||
sleep(11*B.pages.len)
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "* whirr *")
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "whirr")
|
||||
playsound(src, "sound/machines/buzzbeep.ogg", 30)
|
||||
else if (has_buckled_mobs()) // VOREStation EDIT: For ass-copying.
|
||||
playsound(src, "sound/machines/copier.ogg", 100, 1)
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it attempts to scan.</span>", runemessage = "* whirr *")
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it attempts to scan.</span>", runemessage = "whirr")
|
||||
sleep(rand(20,45)) // Sit with your bare ass on the copier for a random time, feel like a fool, get stared at.
|
||||
copyass(user)
|
||||
sleep(15)
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "* whirr *")
|
||||
audible_message("<span class='notice'>You can hear [src] whirring as it finishes printing.</span>", runemessage = "whirr")
|
||||
playsound(src, "sound/machines/buzzbeep.ogg", 30)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>\The [copyitem] can't be copied by [src].</span>")
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
|
||||
/obj/item/weapon/gun/magnetic/matfed/phoronbore/process()
|
||||
if(generator_state && !mat_storage)
|
||||
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."), runemessage = "* goes quiet *")
|
||||
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."), runemessage = "goes quiet")
|
||||
soundloop.stop()
|
||||
generator_state = GEN_OFF
|
||||
|
||||
@@ -258,12 +258,12 @@
|
||||
soundloop.start()
|
||||
time_started = world.time
|
||||
cell?.use(100)
|
||||
audible_message(SPAN_NOTICE("\The [src] starts chugging."),SPAN_NOTICE("A motor noise starts up."), runemessage = "* whirr *")
|
||||
audible_message(SPAN_NOTICE("\The [src] starts chugging."),SPAN_NOTICE("A motor noise starts up."), runemessage = "whirr")
|
||||
generator_state = GEN_IDLE
|
||||
|
||||
else if(generator_state > GEN_OFF && time_started + 3 SECONDS < world.time)
|
||||
soundloop.stop()
|
||||
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."), runemessage = "* goes quiet *")
|
||||
audible_message(SPAN_NOTICE("\The [src] goes quiet."),SPAN_NOTICE("A motor noise cuts out."), runemessage = "goes quiet")
|
||||
generator_state = GEN_OFF
|
||||
|
||||
/obj/item/weapon/gun/magnetic/matfed/phoronbore/loaded
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
visible_message("<span class='danger'>\The [src] begins to rattle, its acceleration chamber collapsing in on itself!</span>")
|
||||
removable_components = FALSE
|
||||
spawn(15)
|
||||
audible_message("<span class='critical'>\The [src]'s power supply begins to overload as the device crumples!</span>", runemessage = "* VWRRRRRRRR *") //Why are you still holding this?
|
||||
audible_message("<span class='critical'>\The [src]'s power supply begins to overload as the device crumples!</span>", runemessage = "VWRRRRRRRR") //Why are you still holding this?
|
||||
playsound(src, 'sound/effects/grillehit.ogg', 10, 1)
|
||||
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -130,12 +130,12 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
if(2)
|
||||
if(!Console.silent)
|
||||
playsound(Console, 'sound/machines/twobeep.ogg', 50, 1)
|
||||
Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5, runemessage = "* beep! beep! *")
|
||||
Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5, runemessage = "beep! beep!")
|
||||
Console.message_log += list(list("High Priority message from [sender]", "[authmsg]"))
|
||||
else
|
||||
if(!Console.silent)
|
||||
playsound(Console, 'sound/machines/twobeep.ogg', 50, 1)
|
||||
Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'Message from [sender]'"),,4, runemessage = "* beep beep *")
|
||||
Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'Message from [sender]'"),,4, runemessage = "beep beep")
|
||||
Console.message_log += list(list("Message from [sender]", "[authmsg]"))
|
||||
Console.set_light(2)
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
|
||||
else if(((occupant.health == occupant.maxHealth)) && (!eject_wait))
|
||||
playsound(src, 'sound/machines/ding.ogg', 50, 1)
|
||||
audible_message("\The [src] signals that the growing process is complete.", runemessage = "* ding *")
|
||||
audible_message("\The [src] signals that the growing process is complete.", runemessage = "ding")
|
||||
connected_message("Growing Process Complete.")
|
||||
locked = 0
|
||||
go_out()
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
continue
|
||||
if(!H.shuttle_comp || !(get_area(H) in shuttle_area))
|
||||
H.shuttle_comp = null
|
||||
H.audible_message("<span class='warning'>\The [H] pings as it loses it's connection with the ship.</span>", runemessage = "* ping *")
|
||||
H.audible_message("<span class='warning'>\The [H] pings as it loses it's connection with the ship.</span>", runemessage = "ping")
|
||||
H.update_hud("discon")
|
||||
helmets -= H
|
||||
else
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
priority_mode = TRUE
|
||||
cancel_pending_floors()
|
||||
update_ext_panel_icons()
|
||||
control_panel_interior.audible_message("<span class='info'>This turbolift is responding to a priority call. Please exit the lift when it stops and make way.</span>", runemessage = "* BUZZ *")
|
||||
control_panel_interior.audible_message("<span class='info'>This turbolift is responding to a priority call. Please exit the lift when it stops and make way.</span>", runemessage = "BUZZ")
|
||||
spawn(time)
|
||||
priority_mode = FALSE
|
||||
update_ext_panel_icons()
|
||||
@@ -158,7 +158,7 @@
|
||||
doors_closing = 0
|
||||
if(!fire_mode)
|
||||
open_doors()
|
||||
control_panel_interior.audible_message("\The [current_floor.ext_panel] buzzes loudly.", runemessage = "* BUZZ *")
|
||||
control_panel_interior.audible_message("\The [current_floor.ext_panel] buzzes loudly.", runemessage = "BUZZ")
|
||||
playsound(control_panel_interior, "sound/machines/buzz-two.ogg", 50, 1)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -130,10 +130,10 @@
|
||||
return
|
||||
lift.update_fire_mode(!lift.fire_mode)
|
||||
if(lift.fire_mode)
|
||||
audible_message("<span class='danger'>Firefighter Mode Activated. Door safeties disabled. Manual control engaged.</span>", runemessage = "* SCREECH *")
|
||||
audible_message("<span class='danger'>Firefighter Mode Activated. Door safeties disabled. Manual control engaged.</span>", runemessage = "SCREECH")
|
||||
playsound(src, 'sound/machines/airalarm.ogg', 25, 0, 4, volume_channel = VOLUME_CHANNEL_ALARMS)
|
||||
else
|
||||
audible_message("<span class='warning'>Firefighter Mode Deactivated. Door safeties enabled. Automatic control engaged.</span>", runemessage = "* ding *")
|
||||
audible_message("<span class='warning'>Firefighter Mode Deactivated. Door safeties enabled. Automatic control engaged.</span>", runemessage = "ding")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
if(!moved) // nowhere to go....
|
||||
LM.gib()
|
||||
else // the mob is too big to just move, so we need to give up what we're doing
|
||||
audible_message("\The [src]'s motors grind as they quickly reverse direction, unable to safely close.", runemessage = "* WRRRRR *")
|
||||
audible_message("\The [src]'s motors grind as they quickly reverse direction, unable to safely close.", runemessage = "WRRRRR")
|
||||
cur_command = null // the door will just keep trying otherwise
|
||||
return 0
|
||||
return ..()
|
||||
@@ -70,7 +70,7 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
|
||||
"platinum" = 10,
|
||||
"hematite" = 20,
|
||||
"copper" = 8,
|
||||
"tin" = 4,
|
||||
// "tin" = 4,
|
||||
"bauxite" = 4,
|
||||
"rutile" = 4,
|
||||
"carbon" = 20,
|
||||
@@ -87,7 +87,7 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
|
||||
"platinum" = 5,
|
||||
"hematite" = 35,
|
||||
"copper" = 15,
|
||||
"tin" = 10,
|
||||
// "tin" = 10,
|
||||
"bauxite" = 10,
|
||||
"rutile" = 10,
|
||||
"carbon" = 35,
|
||||
|
||||
@@ -97,7 +97,7 @@ CRYOGAIA_TURF_CREATE(/turf/simulated/mineral/floor)
|
||||
"platinum" = 10,
|
||||
"hematite" = 20,
|
||||
"copper" = 8,
|
||||
"tin" = 4,
|
||||
// "tin" = 4,
|
||||
"bauxite" = 4,
|
||||
"rutile" = 4,
|
||||
"carbon" = 20,
|
||||
@@ -114,7 +114,7 @@ CRYOGAIA_TURF_CREATE(/turf/simulated/mineral/floor)
|
||||
"platinum" = 5,
|
||||
"hematite" = 35,
|
||||
"copper" = 15,
|
||||
"tin" = 10,
|
||||
// "tin" = 10,
|
||||
"bauxite" = 10,
|
||||
"rutile" = 10,
|
||||
"carbon" = 35,
|
||||
|
||||
Reference in New Issue
Block a user