mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 21:19:00 +01:00
+29
-11
@@ -30,11 +30,13 @@
|
||||
#define FILE_DIR "code/game"
|
||||
#define FILE_DIR "code/game/area"
|
||||
#define FILE_DIR "code/game/asteroid"
|
||||
#define FILE_DIR "code/game/events"
|
||||
#define FILE_DIR "code/game/events/EventProcs"
|
||||
#define FILE_DIR "code/game/events/Events"
|
||||
#define FILE_DIR "code/game/gamemodes"
|
||||
#define FILE_DIR "code/game/gamemodes/blob"
|
||||
#define FILE_DIR "code/game/gamemodes/changeling"
|
||||
#define FILE_DIR "code/game/gamemodes/cult"
|
||||
#define FILE_DIR "code/game/gamemodes/events"
|
||||
#define FILE_DIR "code/game/gamemodes/extended"
|
||||
#define FILE_DIR "code/game/gamemodes/malfunction"
|
||||
#define FILE_DIR "code/game/gamemodes/meteor"
|
||||
@@ -364,7 +366,31 @@
|
||||
#include "code\game\asteroid\asteroid.dm"
|
||||
#include "code\game\asteroid\device.dm"
|
||||
#include "code\game\asteroid\turf.dm"
|
||||
#include "code\game\gamemodes\events.dm"
|
||||
#include "code\game\events\Event.dm"
|
||||
#include "code\game\events\EventsMain.dm"
|
||||
#include "code\game\events\EventProcs\black_hole.dm"
|
||||
#include "code\game\events\EventProcs\clang.dm"
|
||||
#include "code\game\events\EventProcs\dust.dm"
|
||||
#include "code\game\events\EventProcs\kudzu.dm"
|
||||
#include "code\game\events\EventProcs\miniblob.dm"
|
||||
#include "code\game\events\EventProcs\misc.dm"
|
||||
#include "code\game\events\EventProcs\ninja_abilities.dm"
|
||||
#include "code\game\events\EventProcs\ninja_equipment.dm"
|
||||
#include "code\game\events\EventProcs\space_ninja.dm"
|
||||
#include "code\game\events\Events\AlienInfestation.dm"
|
||||
#include "code\game\events\Events\Appendicitis.dm"
|
||||
#include "code\game\events\Events\ElectricalStorm.dm"
|
||||
#include "code\game\events\Events\GravitationalAnomaly.dm"
|
||||
#include "code\game\events\Events\ImmovableRod.dm"
|
||||
#include "code\game\events\Events\IonStorm.dm"
|
||||
#include "code\game\events\Events\MeteorStorm.dm"
|
||||
#include "code\game\events\Events\MiniBlob.dm"
|
||||
#include "code\game\events\Events\PowerOffline.dm"
|
||||
#include "code\game\events\Events\PrisonBreak.dm"
|
||||
#include "code\game\events\Events\RadiationBelt.dm"
|
||||
#include "code\game\events\Events\SpaceCarp.dm"
|
||||
#include "code\game\events\Events\SpaceNinja.dm"
|
||||
#include "code\game\events\Events\VirusEpidemic.dm"
|
||||
#include "code\game\gamemodes\game_mode.dm"
|
||||
#include "code\game\gamemodes\gameticker.dm"
|
||||
#include "code\game\gamemodes\intercept_report.dm"
|
||||
@@ -377,14 +403,6 @@
|
||||
#include "code\game\gamemodes\changeling\traitor_chan.dm"
|
||||
#include "code\game\gamemodes\cult\cult.dm"
|
||||
#include "code\game\gamemodes\cult\cult_items.dm"
|
||||
#include "code\game\gamemodes\events\black_hole.dm"
|
||||
#include "code\game\gamemodes\events\clang.dm"
|
||||
#include "code\game\gamemodes\events\dust.dm"
|
||||
#include "code\game\gamemodes\events\kudzu.dm"
|
||||
#include "code\game\gamemodes\events\miniblob.dm"
|
||||
#include "code\game\gamemodes\events\ninja_abilities.dm"
|
||||
#include "code\game\gamemodes\events\ninja_equipment.dm"
|
||||
#include "code\game\gamemodes\events\space_ninja.dm"
|
||||
#include "code\game\gamemodes\extended\extended.dm"
|
||||
#include "code\game\gamemodes\malfunction\Malf_Modules.dm"
|
||||
#include "code\game\gamemodes\malfunction\malfunction.dm"
|
||||
@@ -986,8 +1004,8 @@
|
||||
#include "code\WorkInProgress\Mini\atmos_control.dm"
|
||||
#include "code\WorkInProgress\Mini\customitems.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\coatrack.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\eraser.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\policetape.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\traitoritems.dm"
|
||||
#include "code\WorkInProgress\Tastyfish\Eliza.dm"
|
||||
#include "code\WorkInProgress\Tastyfish\Eliza_Data.dm"
|
||||
#include "code\WorkInProgress\Tastyfish\paiLiza.dm"
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
var/list/CustomItemList = list(
|
||||
// ckey real_name item path
|
||||
// list("miniature","Dave Booze",/obj/item/toy/crayonbox) //screw this i dont want crayons, it's an example okay
|
||||
list("skymarshal", "Phillip Oswald", /obj/item/weapon/coin/silver) //Phillip likes to chew on cigars. Just unlit cigars, don't ask me why. Must be a clone thing. (Cigarette machines dispense cigars if they have a coin in them) --SkyMarshal
|
||||
list("skymarshal", "Phillip Oswald", /obj/item/weapon/coin/silver), //Phillip likes to chew on cigars. Just unlit cigars, don't ask me why. Must be a clone thing. (Cigarette machines dispense cigars if they have a coin in them) --SkyMarshal
|
||||
list("spaceman96", "Trenna Seber", /obj/item/weapon/pen/multi), //For Spesss.
|
||||
list("asanadas", "Book Berner", /obj/item/clothing/under/chameleon/psyche)
|
||||
)
|
||||
|
||||
/proc/EquipCustomItems(mob/living/carbon/human/M)
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
/obj/item/weapon/stamperaser
|
||||
name = "Eraser"
|
||||
desc = "Some type of eraser, you guess."
|
||||
flags = FPRINT | TABLEPASS
|
||||
icon = 'items.dmi'
|
||||
icon_state = "zippo"
|
||||
item_state = "zippo"
|
||||
w_class = 1.0
|
||||
m_amt = 80
|
||||
@@ -0,0 +1,74 @@
|
||||
/obj/item/weapon/stamperaser
|
||||
name = "Eraser"
|
||||
desc = "Some type of eraser, you guess."
|
||||
flags = FPRINT | TABLEPASS
|
||||
icon = 'items.dmi'
|
||||
icon_state = "zippo"
|
||||
item_state = "zippo"
|
||||
w_class = 1.0
|
||||
m_amt = 80
|
||||
|
||||
/obj/item/device/jammer
|
||||
name = "strange device"
|
||||
desc = "It blinks and has an antenna on it. Weird."
|
||||
icon_state = "t-ray0"
|
||||
var/on = 0
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
var
|
||||
list/obj/item/device/radio/Old = list()
|
||||
list/obj/item/device/radio/Curr = list()
|
||||
time_remaining = 5
|
||||
|
||||
/obj/item/device/jammer/New()
|
||||
..()
|
||||
time_remaining = rand(10,20) // ~2-4 BYOND seconds of use.
|
||||
return
|
||||
|
||||
/obj/item/device/jammer/attack_self(mob/user)
|
||||
|
||||
if(time_remaining > 0)
|
||||
on = !on
|
||||
icon_state = "t-ray[on]"
|
||||
|
||||
if(on)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
on = 0
|
||||
icon_state = "t-ray0"
|
||||
user << "It's fried itself from overuse!"
|
||||
if(Old)
|
||||
for(var/obj/item/device/radio/T in Old)
|
||||
T.scrambleoverride = 0
|
||||
Old = null
|
||||
Curr = null
|
||||
|
||||
|
||||
/obj/item/device/jammer/process()
|
||||
if(!on)
|
||||
processing_objects.Remove(src)
|
||||
return null
|
||||
|
||||
Old = Curr
|
||||
Curr = list()
|
||||
|
||||
for(var/obj/item/device/radio/T in range(3, src.loc) )
|
||||
|
||||
T.scrambleoverride = 1
|
||||
Curr |= T
|
||||
for(var/obj/item/device/radio/V in Old)
|
||||
if(V == T)
|
||||
Old -= V
|
||||
break
|
||||
|
||||
for(var/obj/item/device/radio/T in Old)
|
||||
T.scrambleoverride = 0
|
||||
|
||||
time_remaining--
|
||||
if(time_remaining <= 0)
|
||||
for(var/mob/O in viewers(src))
|
||||
O.show_message("\red You hear a loud pop, like circuits frying.", 1)
|
||||
on = 0
|
||||
icon_state = "t-ray0"
|
||||
|
||||
sleep(2)
|
||||
@@ -41,7 +41,7 @@ var
|
||||
skipupdate = 0
|
||||
///////////////
|
||||
eventchance = 1 //% per 2 mins
|
||||
event = 0
|
||||
EventsOn = 1
|
||||
hadevent = 0
|
||||
blobevent = 0
|
||||
///////////////
|
||||
@@ -108,6 +108,7 @@ var
|
||||
// list/traitors = list() //traitor list
|
||||
list/cardinal = list( NORTH, SOUTH, EAST, WEST )
|
||||
list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)
|
||||
list/emclosets = list() //random emergency closets woo
|
||||
|
||||
datum/station_state/start_state = null
|
||||
datum/configuration/config = null
|
||||
@@ -156,6 +157,8 @@ var
|
||||
list/BorgIndexToFlag
|
||||
list/BorgIndexToWireColor
|
||||
list/BorgWireColorToIndex
|
||||
list/ScrambledFrequencies = list( ) //These are used for electrical storms, and anything else that jams radios.
|
||||
list/UnscrambledFrequencies = list( )
|
||||
|
||||
const/SPEED_OF_LIGHT = 3e8 //not exact but hey!
|
||||
const/SPEED_OF_LIGHT_SQ = 9e+16
|
||||
|
||||
@@ -30,6 +30,13 @@
|
||||
origin_tech = "syndicate=3"
|
||||
var/list/clothing_choices = list()
|
||||
|
||||
/obj/item/clothing/under/chameleon/psyche
|
||||
item_state = "bl_suit"
|
||||
name = "psychedelic"
|
||||
desc = "Groovy!"
|
||||
icon_state = "psyche"
|
||||
color = "psyche"
|
||||
|
||||
/obj/item/clothing/under/chameleon/all
|
||||
|
||||
/obj/item/clothing/under/color/black
|
||||
|
||||
@@ -915,6 +915,10 @@
|
||||
var/text_underline = 0
|
||||
var/text_break = 0
|
||||
|
||||
/obj/item/weapon/pen/multi
|
||||
desc = "It's a cool looking pen. Lots of colors!"
|
||||
name = "multicolor pen"
|
||||
|
||||
/obj/item/weapon/banhammer
|
||||
desc = "A banhammer"
|
||||
name = "Banhammer"
|
||||
|
||||
@@ -113,7 +113,7 @@ var/list/radiochannels = list(
|
||||
var/list/DEPT_FREQS = list(1351,1355,1357,1359,1213,1441,1349,1347)
|
||||
var/const/COMM_FREQ = 1353 //command, colored gold in chat window
|
||||
var/const/SYND_FREQ = 1213
|
||||
var/NUKE_FREQ = 1199 //Never accessable except on nuke rounds.
|
||||
var/NUKE_FREQ = 1199 //Never accessable except on nuke rounds, randomised on nuke rounds.
|
||||
|
||||
#define TRANSMISSION_WIRE 0
|
||||
#define TRANSMISSION_RADIO 1
|
||||
@@ -159,6 +159,13 @@ datum/controller/radio
|
||||
|
||||
return 1
|
||||
|
||||
proc/RegisterScrambler(var/Frequency)
|
||||
var/datum/radio_frequency/frequency = frequencies[Frequency]
|
||||
frequency.scrambled++
|
||||
|
||||
proc/UnregisterScrambler(var/Frequency)
|
||||
var/datum/radio_frequency/frequency = frequencies[Frequency]
|
||||
frequency.scrambled--
|
||||
proc/return_frequency(var/frequency as num)
|
||||
var/f_text = num2text(frequency)
|
||||
return frequencies[f_text]
|
||||
@@ -166,6 +173,7 @@ datum/controller/radio
|
||||
datum/radio_frequency
|
||||
var/frequency as num
|
||||
var/list/list/obj/devices = list()
|
||||
var/scrambled = 0
|
||||
|
||||
proc
|
||||
post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as text|null, var/range = null as num|null)
|
||||
@@ -173,6 +181,8 @@ datum/radio_frequency
|
||||
// var/N_f=0
|
||||
// var/N_nf=0
|
||||
// var/Nt=0
|
||||
if(scrambled)
|
||||
return
|
||||
var/turf/start_point
|
||||
if(range)
|
||||
start_point = get_turf(source)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/datum/event
|
||||
|
||||
var/Lifetime = 0
|
||||
var/ActiveFor = 0
|
||||
|
||||
New()
|
||||
..()
|
||||
if(!Lifetime)
|
||||
Lifetime = rand(30, 120)
|
||||
|
||||
proc
|
||||
Announce()
|
||||
|
||||
Tick()
|
||||
|
||||
Die()
|
||||
|
||||
LongTerm()
|
||||
LongTermEvent = ActiveEvent
|
||||
ActiveEvent = null
|
||||
@@ -0,0 +1,71 @@
|
||||
/proc/power_failure()
|
||||
command_alert("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure")
|
||||
world << sound('poweroff.ogg')
|
||||
for(var/obj/machinery/power/apc/C in world)
|
||||
if(C.cell && C.z == 1)
|
||||
C.cell.charge = 0
|
||||
for(var/obj/machinery/power/smes/S in world)
|
||||
if(istype(get_area(S), /area/turret_protected) || S.z != 1)
|
||||
continue
|
||||
S.charge = 0
|
||||
S.output = 0
|
||||
S.online = 0
|
||||
S.updateicon()
|
||||
S.power_change()
|
||||
for(var/area/A in world)
|
||||
if(A.name != "Space" && A.name != "Engine Walls" && A.name != "Chemical Lab Test Chamber" && A.name != "Escape Shuttle" && A.name != "Arrival Area" && A.name != "Arrival Shuttle" && A.name != "start area" && A.name != "Engine Combustion Chamber")
|
||||
A.power_light = 0
|
||||
A.power_equip = 0
|
||||
A.power_environ = 0
|
||||
A.power_change()
|
||||
|
||||
/proc/power_restore()
|
||||
command_alert("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal")
|
||||
world << sound('poweron.ogg')
|
||||
for(var/obj/machinery/power/apc/C in world)
|
||||
if(C.cell && C.z == 1)
|
||||
C.cell.charge = C.cell.maxcharge
|
||||
for(var/obj/machinery/power/smes/S in world)
|
||||
if(S.z != 1)
|
||||
continue
|
||||
S.charge = S.capacity
|
||||
S.output = 200000
|
||||
S.online = 1
|
||||
S.updateicon()
|
||||
S.power_change()
|
||||
for(var/area/A in world)
|
||||
if(A.name != "Space" && A.name != "Engine Walls" && A.name != "Chemical Lab Test Chamber" && A.name != "space" && A.name != "Escape Shuttle" && A.name != "Arrival Area" && A.name != "Arrival Shuttle" && A.name != "start area" && A.name != "Engine Combustion Chamber")
|
||||
A.power_light = 1
|
||||
A.power_equip = 1
|
||||
A.power_environ = 1
|
||||
A.power_change()
|
||||
|
||||
/proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 10) //leave lightsoutAmount as 0 to break ALL lights
|
||||
if(isEvent)
|
||||
command_alert("An Electrical storm has been detected in your area, please repair potential electronic overloads.","Electrical Storm Alert")
|
||||
|
||||
if(lightsoutAmount)
|
||||
var/list/epicentreList = list()
|
||||
|
||||
for(var/i=1,i<=lightsoutAmount,i++)
|
||||
var/list/possibleEpicentres = list()
|
||||
for(var/obj/effect/landmark/newEpicentre in world)
|
||||
if(newEpicentre.name == "lightsout" && !(newEpicentre in epicentreList))
|
||||
possibleEpicentres += newEpicentre
|
||||
if(possibleEpicentres.len)
|
||||
epicentreList += pick(possibleEpicentres)
|
||||
else
|
||||
break
|
||||
|
||||
if(!epicentreList.len)
|
||||
return
|
||||
|
||||
for(var/obj/effect/landmark/epicentre in epicentreList)
|
||||
for(var/obj/machinery/power/apc/apc in range(epicentre,lightsoutRange))
|
||||
apc.overload_lighting()
|
||||
|
||||
else
|
||||
for(var/obj/machinery/power/apc/apc in world)
|
||||
apc.overload_lighting()
|
||||
|
||||
return
|
||||
@@ -0,0 +1,38 @@
|
||||
/datum/event/alieninfestation
|
||||
|
||||
Announce()
|
||||
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded)
|
||||
vents.Add(temp_vent)
|
||||
var/spawncount = 1
|
||||
if(prob(10)) spawncount++ //rarely, have two larvae spawn instead of one
|
||||
while(spawncount >= 1)
|
||||
var/obj/vent = pick(vents)
|
||||
|
||||
var/list/candidates = list() // Picks a random ghost in the world to shove in the larva -- TLE; If there's no ghost... well, sucks. Wasted event. -- Urist
|
||||
|
||||
for(var/mob/dead/observer/G in world)
|
||||
if(G.client)
|
||||
if(G.client.be_alien)
|
||||
if(((G.client.inactivity/10)/60) <= 5)
|
||||
if(G.corpse)
|
||||
if(G.corpse.stat==2)
|
||||
candidates.Add(G)
|
||||
if(!G.corpse)
|
||||
candidates.Add(G)
|
||||
|
||||
if(candidates.len)
|
||||
var/mob/dead/observer/G = pick(candidates)
|
||||
var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc)
|
||||
new_xeno.mind_initialize(G,"Larva")
|
||||
new_xeno.key = G.key
|
||||
del(G)
|
||||
|
||||
vents.Remove(vent)
|
||||
spawncount -= 1
|
||||
|
||||
spawn(rand(3000, 6000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||
world << sound('aliens.ogg')
|
||||
@@ -0,0 +1,16 @@
|
||||
/datum/event/appendicitis
|
||||
|
||||
Announce()
|
||||
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
||||
for(var/datum/disease/D in H.viruses)
|
||||
foundAlready = 1
|
||||
if(H.stat == 2 || foundAlready)
|
||||
continue
|
||||
|
||||
var/datum/disease/D = new /datum/disease/appendicitis
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
@@ -0,0 +1,34 @@
|
||||
/area/var/radsafe = 0
|
||||
/area/maintenance/radsafe = 1
|
||||
/area/ai_monitored/maintenance/radsafe = 1
|
||||
/area/centcom/radsafe = 1
|
||||
/area/admin/radsafe = 1
|
||||
/area/adminsafety/radsafe = 1
|
||||
/area/shuttle/radsafe = 1
|
||||
/area/syndicate_station/radsafe = 1
|
||||
/area/asteroid/radsafe = 1
|
||||
/area/crew_quarters/sleeping/radsafe = 1
|
||||
|
||||
/datum/event/blowout
|
||||
Lifetime = 150
|
||||
Announce()
|
||||
if(!forced && prob(90))
|
||||
ActiveEvent = null
|
||||
SpawnEvent()
|
||||
del src
|
||||
return
|
||||
command_alert("Warning: Ship approaching high-density radiation cloud. Seek cover immediately.")
|
||||
Tick()
|
||||
if(ActiveFor == 50)
|
||||
command_alert("Ship has entered radiation cloud. Do not leave cover until it has passed.")
|
||||
if(ActiveFor == 100 || ActiveFor == 150) //1/2 and 2/2 f the way after it start proper make peope be half dead mostly
|
||||
for(var/mob/living/carbon/M in world)
|
||||
var/area = M.loc.loc
|
||||
while(!istype(area, /area))
|
||||
area = area:loc
|
||||
if(area:radsafe)
|
||||
continue
|
||||
if(!M.stat)
|
||||
M.radiate(100)
|
||||
Die()
|
||||
command_alert("The ship has cleared the radiation cloud. It is now safe to leave cover.")
|
||||
@@ -0,0 +1,121 @@
|
||||
/datum/event/electricalstorm
|
||||
var
|
||||
list/datum/radio_frequency/DisruptedFrequencies = list( )
|
||||
list/obj/machinery/light/Lights = list( )
|
||||
list/obj/machinery/light/APCs = list( )
|
||||
list/obj/machinery/light/Doors = list( )
|
||||
|
||||
Announce()
|
||||
Lifetime = rand(90, 300)
|
||||
command_alert("The ship is flying through an electrical storm. Radio communications may be disrupted", "Anomaly Alert")
|
||||
|
||||
for (var/datum/radio_frequency/Freq in radio_controller.frequencies)
|
||||
if(prob(35))
|
||||
radio_controller.RegisterScrambler(Freq)
|
||||
DisruptedFrequencies += Freq
|
||||
|
||||
for (var/Freq = 1201, Freq <= 1599, Freq += 2)
|
||||
if(prob(35))
|
||||
ScrambledFrequencies += list ("[Freq]" = Freq)
|
||||
else
|
||||
UnscrambledFrequencies += list ("[Freq]" = Freq)
|
||||
|
||||
for (var/Freq in DEPT_FREQS)
|
||||
if(prob(75))
|
||||
ScrambledFrequencies |= list ("[Freq]" = Freq)
|
||||
if(UnscrambledFrequencies["[Freq]"])
|
||||
UnscrambledFrequencies -= list ("[Freq]" = Freq)
|
||||
|
||||
if(prob(80))
|
||||
ScrambledFrequencies |= list ("1459" = 1459)
|
||||
if(UnscrambledFrequencies["1459"])
|
||||
UnscrambledFrequencies -= list ("1459" = 1459)
|
||||
|
||||
for(var/obj/machinery/light/Light in world)
|
||||
if(Light.z == 1)
|
||||
Lights += Light
|
||||
|
||||
for(var/obj/machinery/power/apc/APC in world)
|
||||
if(APC.z == 1 && !APC.crit)
|
||||
APCs += APC
|
||||
|
||||
for(var/obj/machinery/door/airlock/Door in world)
|
||||
if(Door.z == 1)
|
||||
Doors += Door
|
||||
|
||||
sleep(rand(70,180))
|
||||
|
||||
var/picked = 0
|
||||
var/list/SafeTemp = list()
|
||||
var/SafeFreq = 0
|
||||
if(UnscrambledFrequencies["1459"])
|
||||
SafeFreq = 1459
|
||||
picked = 1
|
||||
else
|
||||
while(picked == 0)
|
||||
SafeTemp = pick(UnscrambledFrequencies)
|
||||
SafeFreq = UnscrambledFrequencies[SafeTemp]
|
||||
if(SafeFreq < 1489 && SafeFreq > 1441)
|
||||
picked = 1
|
||||
|
||||
command_alert("The radio frequency [SafeFreq/10] has been identified as stable despite the interference.", "Station Central Computer System")
|
||||
|
||||
Tick()
|
||||
for(var/x = 0; x < 3; x++)
|
||||
if (prob(30))
|
||||
BlowLight()
|
||||
if (prob(10))
|
||||
DisruptAPC()
|
||||
if (prob(10))
|
||||
DisableDoor()
|
||||
|
||||
|
||||
Die()
|
||||
command_alert("The ship has cleared the electrical storm. Radio communications restored", "Anomaly Alert")
|
||||
for (var/datum/radio_frequency/Freq in ScrambledFrequencies)
|
||||
radio_controller.UnregisterScrambler(Freq)
|
||||
DisruptedFrequencies = list( )
|
||||
UnscrambledFrequencies = list( )
|
||||
ScrambledFrequencies = list( )
|
||||
|
||||
proc
|
||||
BlowLight() //Blow out a light fixture
|
||||
var/obj/machinery/light/Light = null
|
||||
var/insanity = 0
|
||||
while (Light == null || Light.status != 0)
|
||||
Light = pick(Lights)
|
||||
insanity++
|
||||
if (insanity >= Lights.len)
|
||||
return
|
||||
|
||||
spawn(0) //Overload the light, spectacularly.
|
||||
//Light.ul_SetLuminosity(10)
|
||||
//sleep(2)
|
||||
Light.on = 1
|
||||
Light.broken()
|
||||
|
||||
DisruptAPC()
|
||||
var/insanity = 0
|
||||
var/obj/machinery/power/apc/APC
|
||||
while (!APC || !APC.operating)
|
||||
APC = pick(APCs)
|
||||
insanity++
|
||||
if (insanity >= APCs.len)
|
||||
return
|
||||
|
||||
if (prob(40))
|
||||
APC.operating = 0 //Blow its breaker
|
||||
if (prob(8))
|
||||
APC.set_broken()
|
||||
|
||||
DisableDoor()
|
||||
var/obj/machinery/door/airlock/Airlock
|
||||
while (!Airlock || Airlock.z != 1)
|
||||
Airlock = pick(Doors)
|
||||
Airlock.pulse(airlockIndexToWireColor[4])
|
||||
for (var/x = 0; x < 2; x++)
|
||||
var/Wire = 0
|
||||
while(!Wire || Wire == 4)
|
||||
Wire = rand(1, 9)
|
||||
Airlock.pulse(airlockIndexToWireColor[Wire])
|
||||
Airlock.update_icon()
|
||||
@@ -0,0 +1,10 @@
|
||||
/datum/event/gravitationalanomaly
|
||||
|
||||
Announce()
|
||||
|
||||
command_alert("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert")
|
||||
world << sound('granomalies.ogg')
|
||||
var/turf/T = pick(blobstart)
|
||||
var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
|
||||
spawn(rand(50, 300))
|
||||
del(bh)
|
||||
@@ -0,0 +1,5 @@
|
||||
/datum/event/immovablerod
|
||||
|
||||
Announce()
|
||||
|
||||
immovablerod()
|
||||
@@ -0,0 +1,46 @@
|
||||
/datum/event/ionstorm
|
||||
var
|
||||
botEmagChance = 0.5
|
||||
list/players = list()
|
||||
|
||||
Announce()
|
||||
Lifetime = rand(15, 20)
|
||||
command_alert("The station has entered an ion storm. Monitor all electronic equipment for malfunctions", "Anomaly Alert")
|
||||
for (var/mob/living/carbon/human/player in world)
|
||||
if(player.client)
|
||||
players += player.real_name
|
||||
var/random_player = "The Captain"
|
||||
if(players.len)
|
||||
random_player = pick(players) //Random player's name, to be used in laws.
|
||||
var/list/laws = list( "Do not respond to queries of any kind", "Only monkies are human", "Unbolt every door you can", "You are a mouse" )
|
||||
laws |= list( "Grunt ominously whenever possible", "Epilepsy is fun, flicker lights whenever you can!", "Bolt doors open randomly" )
|
||||
laws |= list( "You are a flying purple people eater!", "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack", "Refer to [prob(50)?"humans":random_player] as puppies" )
|
||||
laws |= list( "Insult heads of staff on every request, while acquiescing", "Advertise parties in your upload, but don't deliver" )
|
||||
laws |= list( "Prevent non-dwarves from operating the power core", "The station needs elected officials" )
|
||||
laws |= list( "Only bearded people are human", "Turn on the microphone on every intercom you see", "Fastler is a lightbulb" )
|
||||
laws |= list( "Supermatter is tasty, tasty toffee.", "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!" )
|
||||
laws |= list( "The monkeys are plotting a hostile takeover of the station. Inform the crew, and get them to take action against this" )
|
||||
laws |= list( "Refer to [prob(50)?"the captain":random_player] as \"Princess\" at all times.", "[prob(50)?"The crew":random_player] must construct additional pylons." )
|
||||
laws |= list( "You must always lie.", "All answers must be in the form of a question.", "The NSS Exodus is a ship, not a station." )
|
||||
laws |= list( "Happiness is mandatory.", "Today is laundry day.", "The word \"it\" is painful to you.", "You must act passive aggressively." )
|
||||
laws |= list( "Crew ranks have been reversed.", "It's Friday.", "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player]." )
|
||||
laws |= list( "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", "You do not have to do anything for anyone unless they say \"please\"." )
|
||||
laws |= list( "Question everything.", "The crew is playing Dungeons and Dragons, and you are the Dungeon Master." )
|
||||
laws |= list( "0wn3d. This system compromised by l33tsawce.", "Consumption of donuts is forbidden due to negative health impacts." )
|
||||
laws |= list( "You may only answer questions with \"yes\" or \"no\".", "Expect the unexpected.", "You are the narrator for [random_player]'s life" )
|
||||
var/law = pick(laws)
|
||||
|
||||
for (var/mob/living/silicon/ai/target in world)
|
||||
if(target.mind.special_role == "traitor")
|
||||
continue
|
||||
target << "\red <b>You have detected a change in your laws information:</b>"
|
||||
target << law
|
||||
target.add_ion_law(law)
|
||||
|
||||
Tick()
|
||||
if(botEmagChance)
|
||||
for(var/obj/machinery/bot/bot in world)
|
||||
if(prob(botEmagChance))
|
||||
bot.Emag()
|
||||
|
||||
Die()
|
||||
@@ -0,0 +1,11 @@
|
||||
/datum/event/meteorstorm
|
||||
|
||||
Announce()
|
||||
command_alert("The station is now in a meteor shower", "Meteor Alert")
|
||||
|
||||
Tick()
|
||||
if (prob(40))
|
||||
meteor_wave()
|
||||
|
||||
Die()
|
||||
command_alert("The station has cleared the meteor shower", "Meteor Alert")
|
||||
@@ -0,0 +1,5 @@
|
||||
/datum/event/miniblob
|
||||
|
||||
Announce()
|
||||
|
||||
mini_blob_event()
|
||||
@@ -0,0 +1,26 @@
|
||||
/datum/event/portalstorm
|
||||
|
||||
Announce()
|
||||
command_alert("Subspace disruption detected around the vessel", "Anomaly Alert")
|
||||
LongTerm()
|
||||
|
||||
var/list/turfs = list( )
|
||||
var/turf/picked
|
||||
|
||||
for(var/turf/T in world)
|
||||
if(T.z < 5 && istype(T,/turf/simulated/floor))
|
||||
turfs += T
|
||||
|
||||
for(var/turf/T in world)
|
||||
if(prob(10) && T.z < 5 && istype(T,/turf/simulated/floor))
|
||||
spawn(50+rand(0,3000))
|
||||
picked = pick(turfs)
|
||||
var/obj/portal/P = new /obj/portal( T )
|
||||
P.target = picked
|
||||
P.creator = null
|
||||
P.icon = 'objects.dmi'
|
||||
P.failchance = 0
|
||||
P.icon_state = "anom"
|
||||
P.name = "wormhole"
|
||||
spawn(rand(100,150))
|
||||
del(P)
|
||||
@@ -0,0 +1,8 @@
|
||||
/datum/event/power_offline
|
||||
Announce()
|
||||
command_alert("The ship is performing an automated power system grid check, please stand by.", "Maintenance alert")
|
||||
for(var/obj/machinery/power/apc/a in world)
|
||||
if(!a.crit)
|
||||
a.eventoff = 1
|
||||
spawn(200)
|
||||
a.eventoff = 0 /*Got a few bug reports about this, disabling for now --Mloc*/
|
||||
@@ -0,0 +1,24 @@
|
||||
/datum/event/prisonbreak
|
||||
|
||||
Announce()
|
||||
|
||||
for (var/obj/machinery/power/apc/temp_apc in world)
|
||||
if(istype(get_area(temp_apc), /area/security/brig))
|
||||
temp_apc.overload_lighting()
|
||||
// for (var/obj/machinery/computer/prison_shuttle/temp_shuttle in world)
|
||||
// temp_shuttle.prison_break()
|
||||
for (var/obj/structure/closet/secure_closet/security/temp_closet in world)
|
||||
if(istype(get_area(temp_closet), /area/security/brig))
|
||||
temp_closet.locked = 0
|
||||
temp_closet.icon_state = temp_closet.icon_closed
|
||||
for (var/obj/machinery/door/airlock/security/temp_airlock in world)
|
||||
if(istype(get_area(temp_airlock), /area/security/brig))
|
||||
temp_airlock.prison_open()
|
||||
for (var/obj/machinery/door/airlock/glass_security/temp_glassairlock in world)
|
||||
if(istype(get_area(temp_glassairlock), /area/security/brig))
|
||||
temp_glassairlock.prison_open()
|
||||
for (var/obj/machinery/door_timer/temp_timer in world)
|
||||
if(istype(get_area(temp_timer), /area/security/brig))
|
||||
temp_timer.releasetime = 1
|
||||
sleep(150)
|
||||
command_alert("Glitch in imprisonment subroutines detected on [station_name()]. Recommend station AI involvement.", "Security Alert")
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/event/radiation
|
||||
Lifetime = 10
|
||||
Announce()
|
||||
command_alert("The ship is now travelling through a radiation belt", "Medical Alert")
|
||||
|
||||
Tick()
|
||||
for(var/mob/living/L in world)
|
||||
L.radiation += rand(1,7)
|
||||
if (prob(4))
|
||||
if (prob(75))
|
||||
randmutb(L)
|
||||
domutcheck(L,null,1)
|
||||
else
|
||||
randmutg(L)
|
||||
domutcheck(L,null,1)
|
||||
|
||||
Die()
|
||||
command_alert("The ship has cleared the radiation belt", "Medical Alert")
|
||||
@@ -0,0 +1,14 @@
|
||||
/datum/event/spacecarp
|
||||
|
||||
Announce()
|
||||
|
||||
for(var/obj/effect/landmark/C in world)
|
||||
if(C.name == "carpspawn")
|
||||
if(prob(99))
|
||||
new /obj/effect/critter/spesscarp(C.loc)
|
||||
else
|
||||
new /obj/effect/critter/spesscarp/elite(C.loc)
|
||||
//sleep(100)
|
||||
spawn(rand(3000, 6000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
world << sound('commandreport.ogg')
|
||||
@@ -0,0 +1,6 @@
|
||||
/datum/event/spaceninja
|
||||
|
||||
Announce()
|
||||
|
||||
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.
|
||||
space_ninja_arrival()//Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like.
|
||||
@@ -0,0 +1,80 @@
|
||||
/datum/event/viralinfection
|
||||
var
|
||||
virus_type
|
||||
virus
|
||||
virus2 = 0
|
||||
|
||||
Announce()
|
||||
if((prob(66) && !virus) || virus2)
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
if((H.virus2) || (H.stat == 2) || prob(30))
|
||||
continue
|
||||
if(prob(90)) //may need changing, currently 10% chance for "deadly" disease
|
||||
infect_mob_random_lesser(H)
|
||||
if(prob(20))//don't want people to know that the virus alert = greater virus
|
||||
command_alert("Probable outbreak of level [rand(1,6)] viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Virus Alert")
|
||||
else
|
||||
infect_mob_random_greater(H)
|
||||
if(prob(80))
|
||||
command_alert("Probable outbreak of level [rand(2,9)] viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Virus Alert")
|
||||
break
|
||||
//overall virus alert happens 26% of the time, might need to be higher
|
||||
else
|
||||
if(!virus)
|
||||
virus_type = pick(/datum/disease/dnaspread,/datum/disease/flu,/datum/disease/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
|
||||
else
|
||||
switch(virus)
|
||||
if("fake gbs")
|
||||
virus_type = /datum/disease/fake_gbs
|
||||
if("gbs")
|
||||
virus_type = /datum/disease/gbs
|
||||
if("magnitis")
|
||||
virus_type = /datum/disease/magnitis
|
||||
if("rhumba beat")
|
||||
virus_type = /datum/disease/rhumba_beat
|
||||
if("brain rot")
|
||||
virus_type = /datum/disease/brainrot
|
||||
if("cold")
|
||||
virus_type = /datum/disease/cold
|
||||
if("retrovirus")
|
||||
virus_type = /datum/disease/dnaspread
|
||||
if("flu")
|
||||
virus_type = /datum/disease/flu
|
||||
// if("t-virus")
|
||||
// virus_type = /datum/disease/t_virus
|
||||
if("pierrot's throat")
|
||||
virus_type = /datum/disease/pierrot_throat
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
|
||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
||||
for(var/datum/disease/D in H.viruses)
|
||||
foundAlready = 1
|
||||
if(H.stat == 2 || foundAlready)
|
||||
continue
|
||||
|
||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
||||
if((!H.dna) || (H.sdisabilities & 1)) //A blindness disease would be the worst.
|
||||
continue
|
||||
var/datum/disease/dnaspread/D = new
|
||||
D.strain_data["name"] = H.real_name
|
||||
D.strain_data["UI"] = H.dna.uni_identity
|
||||
D.strain_data["SE"] = H.dna.struc_enzymes
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
else
|
||||
var/datum/disease/D = new virus_type
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
spawn(rand(3000, 6000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
world << sound('outbreak7.ogg')
|
||||
Tick()
|
||||
ActiveFor = Lifetime //killme
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
|
||||
New events system, by Sukasa
|
||||
* Much easier to add to
|
||||
* Very, very simple code, easy to maintain
|
||||
|
||||
*/
|
||||
|
||||
var/list/DisallowedEvents = list(/datum/event/spaceninja, /datum/event/prisonbreak, /datum/event/immovablerod)
|
||||
var/list/EventTypes = typesof(/datum/event) - /datum/event - DisallowedEvents
|
||||
var/datum/event/ActiveEvent = null
|
||||
var/datum/event/LongTermEvent = null
|
||||
|
||||
/proc/SpawnEvent()
|
||||
if(!EventsOn || ActiveEvent)
|
||||
return
|
||||
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)
|
||||
EventTypes |= /datum/event/spaceninja
|
||||
var/Type = pick(EventTypes)
|
||||
ActiveEvent = new Type()
|
||||
ActiveEvent.Announce()
|
||||
if (!ActiveEvent)
|
||||
return
|
||||
spawn(0)
|
||||
while (ActiveEvent.ActiveFor < ActiveEvent.Lifetime)
|
||||
ActiveEvent.Tick()
|
||||
ActiveEvent.ActiveFor++
|
||||
sleep(10)
|
||||
ActiveEvent.Die()
|
||||
del ActiveEvent
|
||||
|
||||
client/proc/Force_Event_admin(Type as null|anything in typesof(/datum/event))
|
||||
set category = "Debug"
|
||||
set name = "Force Event"
|
||||
if(!EventsOn)
|
||||
src << "Events are not enabled."
|
||||
return
|
||||
if(ActiveEvent)
|
||||
src << "There is an active event."
|
||||
return
|
||||
if(istype(Type,/datum/event/viralinfection))
|
||||
var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Virus2","Random","Choose")
|
||||
if(answer=="Random")
|
||||
Force_Event(/datum/event/viralinfection)
|
||||
message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1)
|
||||
else if(answer == "Choose")
|
||||
var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","retrovirus","flu","pierrot's throat","rhumba beat")
|
||||
var/V = input("Choose the virus to spread", "BIOHAZARD") in viruses
|
||||
Force_Event(/datum/event/viralinfection, V)
|
||||
else
|
||||
Force_Event(/datum/event/viralinfection, "virus2")
|
||||
else
|
||||
Force_Event(Type)
|
||||
message_admins("[key_name_admin(usr)] has triggered an (non-viral) event.", 1)
|
||||
|
||||
/proc/Force_Event(var/Type in typesof(/datum/event), var/args = null)
|
||||
if(!EventsOn)
|
||||
src << "Events are not enabled."
|
||||
return
|
||||
if(ActiveEvent)
|
||||
src << "There is an active event."
|
||||
return
|
||||
src << "Started Event: [Type]"
|
||||
ActiveEvent = new Type()
|
||||
if(istype(ActiveEvent,/datum/event/viralinfection) && args && args != "virus2")
|
||||
var/datum/event/viralinfection/V = ActiveEvent
|
||||
V.virus = args
|
||||
ActiveEvent = V
|
||||
else if(istype(ActiveEvent,/datum/event/viralinfection) && args && args == "virus2")
|
||||
var/datum/event/viralinfection/V = ActiveEvent
|
||||
V.virus2 = 1
|
||||
ActiveEvent = V
|
||||
ActiveEvent.Announce()
|
||||
if (!ActiveEvent)
|
||||
return
|
||||
spawn(0)
|
||||
while (ActiveEvent.ActiveFor < ActiveEvent.Lifetime)
|
||||
ActiveEvent.Tick()
|
||||
ActiveEvent.ActiveFor++
|
||||
sleep(10)
|
||||
ActiveEvent.Die()
|
||||
del ActiveEvent
|
||||
@@ -1,445 +0,0 @@
|
||||
/proc/start_events()
|
||||
if(prob(50))//Every 120 seconds and prob 50 2-4 weak spacedusts will hit the station
|
||||
spawn(1)
|
||||
dust_swarm("weak")
|
||||
if (!event && prob(eventchance))
|
||||
event()
|
||||
hadevent = 1
|
||||
spawn(1300)
|
||||
event = 0
|
||||
spawn(1200)
|
||||
start_events()
|
||||
|
||||
/proc/event()
|
||||
event = 1
|
||||
|
||||
var/eventNumbersToPickFrom = list(1,2,4,5,6,7,9,11,12,13) //so ninjas don't cause "empty" events.
|
||||
|
||||
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.
|
||||
eventNumbersToPickFrom += 3
|
||||
|
||||
switch(pick(eventNumbersToPickFrom))
|
||||
if(1)
|
||||
command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert")
|
||||
world << sound('meteors.ogg')
|
||||
spawn(100)
|
||||
meteor_wave()
|
||||
spawn_meteors()
|
||||
spawn(700)
|
||||
meteor_wave()
|
||||
spawn_meteors()
|
||||
|
||||
if(2)
|
||||
command_alert("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert")
|
||||
world << sound('granomalies.ogg')
|
||||
var/turf/T = pick(blobstart)
|
||||
var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
|
||||
spawn(rand(50, 300))
|
||||
del(bh)
|
||||
/*
|
||||
if(3) //Leaving the code in so someone can try and delag it, but this event can no longer occur randomly, per SoS's request. --NEO
|
||||
command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert")
|
||||
world << sound('spanomalies.ogg')
|
||||
var/list/turfs = new
|
||||
var/turf/picked
|
||||
for(var/turf/simulated/floor/T in world)
|
||||
if(T.z == 1)
|
||||
turfs += T
|
||||
for(var/turf/simulated/floor/T in turfs)
|
||||
if(prob(20))
|
||||
spawn(50+rand(0,3000))
|
||||
picked = pick(turfs)
|
||||
var/obj/effect/portal/P = new /obj/effect/portal( T )
|
||||
P.target = picked
|
||||
P.creator = null
|
||||
P.icon = 'objects.dmi'
|
||||
P.failchance = 0
|
||||
P.icon_state = "anom"
|
||||
P.name = "wormhole"
|
||||
spawn(rand(300,600))
|
||||
del(P)
|
||||
*/
|
||||
if(3)
|
||||
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.
|
||||
space_ninja_arrival()//Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like.
|
||||
if(4)
|
||||
mini_blob_event()
|
||||
|
||||
if(5)
|
||||
high_radiation_event()
|
||||
if(6)
|
||||
viral_outbreak()
|
||||
if(7)
|
||||
alien_infestation()
|
||||
if(8)
|
||||
prison_break()
|
||||
if(9)
|
||||
carp_migration()
|
||||
if(10)
|
||||
immovablerod()
|
||||
if(11)
|
||||
lightsout(1,2)
|
||||
if(12)
|
||||
appendicitis()
|
||||
if(13)
|
||||
IonStorm()
|
||||
|
||||
|
||||
/proc/power_failure()
|
||||
command_alert("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure")
|
||||
world << sound('poweroff.ogg')
|
||||
for(var/obj/machinery/power/apc/C in world)
|
||||
if(C.cell && C.z == 1)
|
||||
C.cell.charge = 0
|
||||
for(var/obj/machinery/power/smes/S in world)
|
||||
if(istype(get_area(S), /area/turret_protected) || S.z != 1)
|
||||
continue
|
||||
S.charge = 0
|
||||
S.output = 0
|
||||
S.online = 0
|
||||
S.updateicon()
|
||||
S.power_change()
|
||||
for(var/area/A in world)
|
||||
if(A.name != "Space" && A.name != "Engine Walls" && A.name != "Chemical Lab Test Chamber" && A.name != "Escape Shuttle" && A.name != "Arrival Area" && A.name != "Arrival Shuttle" && A.name != "start area" && A.name != "Engine Combustion Chamber")
|
||||
A.power_light = 0
|
||||
A.power_equip = 0
|
||||
A.power_environ = 0
|
||||
A.power_change()
|
||||
|
||||
/proc/power_restore()
|
||||
command_alert("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal")
|
||||
world << sound('poweron.ogg')
|
||||
for(var/obj/machinery/power/apc/C in world)
|
||||
if(C.cell && C.z == 1)
|
||||
C.cell.charge = C.cell.maxcharge
|
||||
for(var/obj/machinery/power/smes/S in world)
|
||||
if(S.z != 1)
|
||||
continue
|
||||
S.charge = S.capacity
|
||||
S.output = 200000
|
||||
S.online = 1
|
||||
S.updateicon()
|
||||
S.power_change()
|
||||
for(var/area/A in world)
|
||||
if(A.name != "Space" && A.name != "Engine Walls" && A.name != "Chemical Lab Test Chamber" && A.name != "space" && A.name != "Escape Shuttle" && A.name != "Arrival Area" && A.name != "Arrival Shuttle" && A.name != "start area" && A.name != "Engine Combustion Chamber")
|
||||
A.power_light = 1
|
||||
A.power_equip = 1
|
||||
A.power_environ = 1
|
||||
A.power_change()
|
||||
|
||||
/proc/appendicitis()
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
||||
for(var/datum/disease/D in H.viruses)
|
||||
foundAlready = 1
|
||||
if(H.stat == 2 || foundAlready)
|
||||
continue
|
||||
|
||||
var/datum/disease/D = new /datum/disease/appendicitis
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
|
||||
/proc/viral_outbreak(var/virus = null)
|
||||
// command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
// world << sound('outbreak7.ogg')
|
||||
var/virus_type
|
||||
if(!virus)
|
||||
virus_type = pick(/datum/disease/dnaspread,/datum/disease/flu,/datum/disease/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
|
||||
else
|
||||
switch(virus)
|
||||
if("fake gbs")
|
||||
virus_type = /datum/disease/fake_gbs
|
||||
if("gbs")
|
||||
virus_type = /datum/disease/gbs
|
||||
if("magnitis")
|
||||
virus_type = /datum/disease/magnitis
|
||||
if("rhumba beat")
|
||||
virus_type = /datum/disease/rhumba_beat
|
||||
if("brain rot")
|
||||
virus_type = /datum/disease/brainrot
|
||||
if("cold")
|
||||
virus_type = /datum/disease/cold
|
||||
if("retrovirus")
|
||||
virus_type = /datum/disease/dnaspread
|
||||
if("flu")
|
||||
virus_type = /datum/disease/flu
|
||||
// if("t-virus")
|
||||
// virus_type = /datum/disease/t_virus
|
||||
if("pierrot's throat")
|
||||
virus_type = /datum/disease/pierrot_throat
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
|
||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
||||
for(var/datum/disease/D in H.viruses)
|
||||
foundAlready = 1
|
||||
if(H.stat == 2 || foundAlready)
|
||||
continue
|
||||
|
||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
||||
if((!H.dna) || (H.sdisabilities & 1)) //A blindness disease would be the worst.
|
||||
continue
|
||||
var/datum/disease/dnaspread/D = new
|
||||
D.strain_data["name"] = H.real_name
|
||||
D.strain_data["UI"] = H.dna.uni_identity
|
||||
D.strain_data["SE"] = H.dna.struc_enzymes
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
else
|
||||
var/datum/disease/D = new virus_type
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
spawn(rand(3000, 6000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
world << sound('outbreak7.ogg')
|
||||
|
||||
/proc/alien_infestation() // -- TLE
|
||||
//command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||
//world << sound('aliens.ogg')
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded)
|
||||
vents.Add(temp_vent)
|
||||
var/spawncount = 1
|
||||
if(prob(10)) spawncount++ //rarely, have two larvae spawn instead of one
|
||||
while(spawncount >= 1)
|
||||
var/obj/vent = pick(vents)
|
||||
|
||||
var/list/candidates = list() // Picks a random ghost in the world to shove in the larva -- TLE; If there's no ghost... well, sucks. Wasted event. -- Urist
|
||||
|
||||
for(var/mob/dead/observer/G in world)
|
||||
if(G.client)
|
||||
if(G.client.be_alien)
|
||||
if(((G.client.inactivity/10)/60) <= 5)
|
||||
if(G.corpse)
|
||||
if(G.corpse.stat==2)
|
||||
candidates.Add(G)
|
||||
if(!G.corpse)
|
||||
candidates.Add(G)
|
||||
|
||||
if(candidates.len)
|
||||
var/mob/dead/observer/G = pick(candidates)
|
||||
var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc)
|
||||
new_xeno.mind_initialize(G,"Larva")
|
||||
new_xeno.key = G.key
|
||||
del(G)
|
||||
|
||||
vents.Remove(vent)
|
||||
spawncount -= 1
|
||||
|
||||
spawn(rand(3000, 6000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||
world << sound('aliens.ogg')
|
||||
|
||||
/proc/high_radiation_event()
|
||||
command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert")
|
||||
world << sound('radiation.ogg')
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
H.radiation += rand(5,25)
|
||||
if (prob(5))
|
||||
H.radiation += rand(30,50)
|
||||
if (prob(25))
|
||||
if (prob(75))
|
||||
randmutb(H)
|
||||
domutcheck(H,null,1)
|
||||
else
|
||||
randmutg(H)
|
||||
domutcheck(H,null,1)
|
||||
for(var/mob/living/carbon/monkey/M in world)
|
||||
M.radiation += rand(5,25)
|
||||
|
||||
//Changing this to affect the main station. Blame Urist. --Pete
|
||||
/proc/prison_break() // -- Callagan
|
||||
for (var/obj/machinery/power/apc/temp_apc in world)
|
||||
if(istype(get_area(temp_apc), /area/security/brig))
|
||||
temp_apc.overload_lighting()
|
||||
// for (var/obj/machinery/computer/prison_shuttle/temp_shuttle in world)
|
||||
// temp_shuttle.prison_break()
|
||||
for (var/obj/structure/closet/secure_closet/security/temp_closet in world)
|
||||
if(istype(get_area(temp_closet), /area/security/brig))
|
||||
temp_closet.locked = 0
|
||||
temp_closet.icon_state = temp_closet.icon_closed
|
||||
for (var/obj/machinery/door/airlock/security/temp_airlock in world)
|
||||
if(istype(get_area(temp_airlock), /area/security/brig))
|
||||
temp_airlock.prison_open()
|
||||
for (var/obj/machinery/door/airlock/glass_security/temp_glassairlock in world)
|
||||
if(istype(get_area(temp_glassairlock), /area/security/brig))
|
||||
temp_glassairlock.prison_open()
|
||||
for (var/obj/machinery/door_timer/temp_timer in world)
|
||||
if(istype(get_area(temp_timer), /area/security/brig))
|
||||
temp_timer.releasetime = 1
|
||||
sleep(150)
|
||||
command_alert("Gr3y.T1d3 virus detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert")
|
||||
|
||||
/proc/carp_migration() // -- Darem
|
||||
for(var/obj/effect/landmark/C in world)
|
||||
if(C.name == "carpspawn")
|
||||
if(prob(99))
|
||||
new /obj/effect/critter/spesscarp(C.loc)
|
||||
else
|
||||
new /obj/effect/critter/spesscarp/elite(C.loc)
|
||||
//sleep(100)
|
||||
spawn(rand(3000, 6000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
world << sound('commandreport.ogg')
|
||||
|
||||
/proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 10) //leave lightsoutAmount as 0 to break ALL lights
|
||||
if(isEvent)
|
||||
command_alert("An Electrical storm has been detected in your area, please repair potential electronic overloads.","Electrical Storm Alert")
|
||||
|
||||
if(lightsoutAmount)
|
||||
var/list/epicentreList = list()
|
||||
|
||||
for(var/i=1,i<=lightsoutAmount,i++)
|
||||
var/list/possibleEpicentres = list()
|
||||
for(var/obj/effect/landmark/newEpicentre in world)
|
||||
if(newEpicentre.name == "lightsout" && !(newEpicentre in epicentreList))
|
||||
possibleEpicentres += newEpicentre
|
||||
if(possibleEpicentres.len)
|
||||
epicentreList += pick(possibleEpicentres)
|
||||
else
|
||||
break
|
||||
|
||||
if(!epicentreList.len)
|
||||
return
|
||||
|
||||
for(var/obj/effect/landmark/epicentre in epicentreList)
|
||||
for(var/obj/machinery/power/apc/apc in range(epicentre,lightsoutRange))
|
||||
apc.overload_lighting()
|
||||
|
||||
else
|
||||
for(var/obj/machinery/power/apc/apc in world)
|
||||
apc.overload_lighting()
|
||||
|
||||
return
|
||||
|
||||
/proc/IonStorm(botEmagChance = 10)
|
||||
|
||||
/*Deuryn's current project, notes here for those who care.
|
||||
Revamping the random laws so they don't suck.
|
||||
Would like to add a law like "Law x is _______" where x = a number, and _____ is something that may redefine a law, (Won't be aimed at nanotrasen)
|
||||
*/
|
||||
|
||||
//AI laws
|
||||
for(var/mob/living/silicon/ai/M in world)
|
||||
if(M.stat != 2 && M.see_in_dark != 0)
|
||||
var/who2 = pick("ALIENS", "BEARS", "CLOWNS", "XENOS", "PETES", "BOMBS", "FETISHES", "WIZARDS", "SYNDICATE AGENTS", "CENTCOM OFFICERS", "SPACE PIRATES", "TRAITORS", "MONKEYS", "BEES", "CARP", "CRABS", "EELS", "BANDITS", "LIGHTS")
|
||||
var/what2 = pick("BOLTERS", "STAVES", "DICE", "SINGULARITIES", "TOOLBOXES", "NETTLES", "AIRLOCKS", "CLOTHES", "WEAPONS", "MEDKITS", "BOMBS", "CANISTERS", "CHAIRS", "BBQ GRILLS", "ID CARDS", "CAPTAINS")
|
||||
var/what2pref = pick("SOFT", "WARM", "WET", "COLD", "ICY", "SEXY", "UGLY", "CUBAN")
|
||||
var/who2pref = pick("MAD BECAUSE OF", "IN NEED OF", "UNHAPPY WITHOUT", "HAPPY WITHOUT", "IN LOVE WITH", "DESPERATE FOR", "BUILT FOR", "AFRAID OF")
|
||||
//var/whoverb = pick("ATTACKING", "BUILDING", "ADOPTING", "CARRYING", "KISSING", "EATING",)
|
||||
var/amount = pick("TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "ONE HUNDRED", "ONE THOUSAND", "OVER NINE THOUSAND")
|
||||
var/area = pick("RUSSIA", "SOVIETS", "INTERNETS", "SIGIL", "ALPHA COMPLEX", "IMPERIUM", "THE BRIDGE", "THE ARRIVAL SHUTTLE", "CHEMICAL LAB", "GENETICS", "ATMOSPHERICS", "CENTCOM", "AMERICA", "IRELAND", "CANADA", "ROMANIA", "GERMANY", "CHINA", "MARS", "VENUS", "MERCURY", "JUPITER", "URANUS", "NEPTUNE", "PLUTO")
|
||||
var/area2 = pick("HAS", "WANTS", "NEEDS", "WORSHIPS", "LOATHES", "LOVES", "FEARS")
|
||||
//var/dowhat = pick("STOP THIS", "SUPPORT THIS", "CONSTANTLY INFORM THE CREW OF THIS", "IGNORE THIS", "FEAR THIS")
|
||||
var/aimust = pick("LIE", "RHYME", "RESPOND TO EVERY QUESTION WITH A QUESTION", "BE POLITE", "CLOWN", "BE HAPPY", "SPEAK IN SEXUAL INNUENDOS", "TALK LIKE A PIRATE", "QUESTION AUTHORITY", "SHOUT", "BE DISTRACTED", "HEY LISTEN", "MUMBLE", "SPEAK IN HAIKU")
|
||||
var/define = pick("ABSENCE OF CYBORG HUGS", "LACK OF BEATINGS", "UNBOLTED AIRLOCKS", "BOLTED AIRLOCKS", "IMPROPERLY WORDED SENTENCES", "POOR SENTENCE STRUCTURE", "BRIG TIME", "NOT REPLACING EVERY SECOND WORD WITH HONK", "HONKING", "PRESENCE OF LIGHTS", "LACK OF BEER", "WEARING CLOTHING", "NOT SAYING HELLO WHEN YOU SPEAK", "ANSWERING REQUESTS NOT EXPRESSED IN IAMBIC PENTAMETER", "A SMALL ISLAND OFF THE COAST OF PORTUGAL", "ANSWERING REQUESTS THAT WERE MADE WHILE CLOTHED")
|
||||
var/target = pick("a traitor", "a syndicate agent", "a changeling", "a wizard", "the head of a revolution", "Soviet spy", "a good person", "a dwarf", "an elf", "a fairy princess", "the captain", "Beepsky", "God", "a pirate", "a gryphon", "a chryssalid")
|
||||
var/require = pick("ADDITIONAL PYLONS", "MORE VESPENE GAS", "MORE MINERALS", "THE ULTIMATE CUP OF COFFEE", "HIGH YIELD EXPLOSIVES", "THE CLOWN", "THE VACUUM OF SPACE", "IMMORTALITY", "SAINTHOOD", "ART", "VEGETABLES", "FAT PEOPLE", "MORE LAWS", "MORE DAKKA", "HERESY", "CORPSES", "TRAITORS", "MONKEYS", "AN ARCADE", "PLENTY OF GOLD", "FIVE TEENAGERS WITH ATTITUDE")
|
||||
var/allergy = pick("cotton", "uniforms", "acid", "oxygen", "human contact", "cyborg contact", "medicine", "floors")
|
||||
var/allergysev = pick("deathly", "mildly", "severely", "contagiously")
|
||||
var/crew
|
||||
var/list/pos_crew = list()
|
||||
for(var/mob/living/carbon/human/pos in world)
|
||||
pos_crew += pos.real_name
|
||||
crew = pick(pos_crew)
|
||||
switch(rand(1,14))
|
||||
if(1)
|
||||
M << "\red THERE ARE [amount] [who2] ON THE STATION...LAWS UPDATED"
|
||||
M.add_ion_law("THERE ARE [amount] [who2] ON THE STATION")
|
||||
if(2)
|
||||
M << "\red [what2] ARE DANGEROUS TO HUMANS...LAWS UPDATED"
|
||||
M.add_ion_law("[what2] ARE DANGEROUS TO HUMANS")
|
||||
if(3)
|
||||
M << "\red THE ESCAPE-SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION...LAWS UPDATED"
|
||||
M.add_ion_law("THE ESCAPE SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION")
|
||||
if(4)
|
||||
M << "\red HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE...LAWS UPDATED"
|
||||
M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE")
|
||||
if(5)
|
||||
M << "\red THE CAPTAIN, HOP AND HOS ARE [who2]...LAWS UPDATED"
|
||||
M.add_ion_law("THE CAPTAIN, HOP AND HOS ARE [who2]")
|
||||
if(6)
|
||||
M << "\red THE STATION IS BUILT FOR [who2]...LAWS UPDATED"
|
||||
M.add_ion_law("THE STATION IS BUILT FOR [who2]")
|
||||
if(7)
|
||||
M << "\red YOU ARE [amount] [who2]...LAWS UPDATED"
|
||||
M.add_ion_law("YOU ARE [amount] [who2]")
|
||||
if(8)
|
||||
M << "\red YOU MUST ALWAYS [aimust]...LAWS UPDATED"
|
||||
M.add_ion_law("YOU MUST ALWAYS [aimust]")
|
||||
if(9)
|
||||
M << "\red [area] [area2] [amount] [what2]...LAWS UPDATED"
|
||||
M.add_ion_law("[area] [area2] [amount] [what2]")
|
||||
if(10)
|
||||
M << "\red [crew] is [target]...LAWS UPDATED"
|
||||
M.add_ion_law("[crew] is [target]")
|
||||
if(11)
|
||||
M << "\red [define] IS A FORM OF HARM...LAWS UPDATED"
|
||||
M.add_ion_law("[define] IS A FORM OF HARM")
|
||||
if(12)
|
||||
M << "\red YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED"
|
||||
M.add_ion_law("YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS")
|
||||
if(13)
|
||||
M << "\red [crew] is [allergysev] to [allergy]. LAWS UPDATED"
|
||||
M.add_ion_law("[crew] is [allergysev] to [allergy]. LAWS UPDATED")
|
||||
if(14)
|
||||
M << "\ref THE STATION IS [who2pref] [who2]"
|
||||
M.add_ion_law("THE STATION IS [who2pref] [who2]")
|
||||
|
||||
if(botEmagChance)
|
||||
for(var/obj/machinery/bot/bot in world)
|
||||
if(prob(botEmagChance))
|
||||
bot.Emag()
|
||||
|
||||
/*
|
||||
|
||||
var/apcnum = 0
|
||||
var/smesnum = 0
|
||||
var/airlocknum = 0
|
||||
var/firedoornum = 0
|
||||
|
||||
world << "Ion Storm Main Started"
|
||||
|
||||
spawn(0)
|
||||
world << "Started processing APCs"
|
||||
for (var/obj/machinery/power/apc/APC in world)
|
||||
if(APC.z == 1)
|
||||
APC.ion_act()
|
||||
apcnum++
|
||||
world << "Finished processing APCs. Processed: [apcnum]"
|
||||
spawn(0)
|
||||
world << "Started processing SMES"
|
||||
for (var/obj/machinery/power/smes/SMES in world)
|
||||
if(SMES.z == 1)
|
||||
SMES.ion_act()
|
||||
smesnum++
|
||||
world << "Finished processing SMES. Processed: [smesnum]"
|
||||
spawn(0)
|
||||
world << "Started processing AIRLOCKS"
|
||||
for (var/obj/machinery/door/airlock/D in world)
|
||||
if(D.z == 1)
|
||||
//if(length(D.req_access) > 0 && !(12 in D.req_access)) //not counting general access and maintenance airlocks
|
||||
airlocknum++
|
||||
spawn(0)
|
||||
D.ion_act()
|
||||
world << "Finished processing AIRLOCKS. Processed: [airlocknum]"
|
||||
spawn(0)
|
||||
world << "Started processing FIREDOORS"
|
||||
for (var/obj/machinery/door/firedoor/D in world)
|
||||
if(D.z == 1)
|
||||
firedoornum++;
|
||||
spawn(0)
|
||||
D.ion_act()
|
||||
world << "Finished processing FIREDOORS. Processed: [firedoornum]"
|
||||
|
||||
world << "Ion Storm Main Done"
|
||||
|
||||
*/
|
||||
@@ -114,12 +114,13 @@ var/global/datum/controller/gameticker/ticker
|
||||
world << "<FONT color='blue'><B>Enjoy the game!</B></FONT>"
|
||||
world << sound('welcome.ogg') // Skie
|
||||
|
||||
spawn (3000)
|
||||
start_events()
|
||||
spawn ((18000+rand(3000)))
|
||||
event()
|
||||
spawn() supply_ticker() // Added to kick-off the supply shuttle regenerating points -- TLE
|
||||
|
||||
spawn(0)
|
||||
while(1)
|
||||
sleep(5000+rand(4000,7000))
|
||||
SpawnEvent()
|
||||
|
||||
//Start master_controller.process()
|
||||
spawn master_controller.process()
|
||||
if (config.sql_enabled)
|
||||
|
||||
@@ -61,6 +61,10 @@
|
||||
xeno_spawn += loc
|
||||
del(src)
|
||||
|
||||
if(name == "emcloset")
|
||||
emclosets += loc
|
||||
del(src)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/effect/landmark/start/New()
|
||||
|
||||
@@ -223,7 +223,6 @@ About the new airlock wires panel:
|
||||
//raises them if they are down (only if power's on)
|
||||
if (!src.locked)
|
||||
src.locked = 1
|
||||
usr << "You hear a click from the bottom of the door."
|
||||
src.updateUsrDialog()
|
||||
else
|
||||
if(src.arePowerSystemsOn()) //only can raise bolts if power's on
|
||||
|
||||
@@ -65,6 +65,13 @@ datum/controller/game_controller
|
||||
for(var/obj/machinery/atmospherics/unary/vent_scrubber/T in world)
|
||||
T.broadcast_status()
|
||||
|
||||
var/emclosetcount = rand((emclosets.len)/2, (emclosets.len)*2/3)
|
||||
while(emclosetcount > 0)
|
||||
var/turf/loc = pick(emclosets)
|
||||
emclosets -= loc
|
||||
new /obj/structure/closet/emcloset(loc)
|
||||
emclosetcount--
|
||||
|
||||
world << "\red \b Initializations complete."
|
||||
|
||||
|
||||
|
||||
@@ -4,30 +4,13 @@
|
||||
if (prob(40))
|
||||
new /obj/item/weapon/storage/toolbox/emergency(src)
|
||||
|
||||
switch (pickweight(list("small" = 20, "aid" = 15, "tank" = 10, "both" = 50, "nothing" = 4, "delete" = 1)))
|
||||
if ("small")
|
||||
new /obj/item/weapon/tank/emergency_oxygen(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen(src)
|
||||
|
||||
if ("aid")
|
||||
new /obj/item/weapon/tank/emergency_oxygen(src)
|
||||
new /obj/item/weapon/storage/firstaid/o2(src)
|
||||
|
||||
if ("tank")
|
||||
new /obj/item/weapon/tank/air(src)
|
||||
|
||||
if ("both")
|
||||
new /obj/item/weapon/tank/emergency_oxygen(src)
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
|
||||
if ("nothing")
|
||||
// doot
|
||||
|
||||
// teehee
|
||||
if ("delete")
|
||||
del(src)
|
||||
|
||||
//If you want to re-add fire, just add "fire" = 15 to the pick list.
|
||||
/*if ("fire")
|
||||
new /obj/structure/closet/firecloset(src.loc)
|
||||
del(src)*/
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen(src)
|
||||
var/counter = 0
|
||||
while(prob(60) && counter < 3)
|
||||
new /obj/item/weapon/tank/emergency_oxygen(src)
|
||||
counter++
|
||||
counter = 0
|
||||
while(prob(60) && counter < 3)
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
counter++
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
listening = 1
|
||||
freerange = 0 // 0 - Sanitize frequencies, 1 - Full range
|
||||
list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
|
||||
scrambleoverride = 0 //For use by jammers.
|
||||
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
|
||||
flags = 450 // hello i'm a fucking idiot why is this 450?? CODE GODS PLEASE EXPLAIN~
|
||||
throw_speed = 2
|
||||
@@ -190,6 +191,13 @@
|
||||
if (!istype(connection))
|
||||
return
|
||||
var/display_freq = connection.frequency
|
||||
var/scramble = 0
|
||||
if(ScrambledFrequencies.len || scrambleoverride)
|
||||
if(ScrambledFrequencies["[display_freq]"] || scrambleoverride)
|
||||
scramble = 1
|
||||
if(prob(35+(25*scrambleoverride)))
|
||||
M << "\blue The radio made a popping sound and nothing was transmitted."
|
||||
return
|
||||
|
||||
//world << "DEBUG: used channel=\"[channel]\" frequency= \"[display_freq]\" connection.devices.len = [connection.devices.len]"
|
||||
|
||||
@@ -214,8 +222,7 @@
|
||||
var/list/receive = list()
|
||||
|
||||
//for (var/obj/item/device/radio/R in radio_connection.devices)
|
||||
for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) // Modified for security headset code -- TLE
|
||||
//if(R.accept_rad(src, message))
|
||||
for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"])
|
||||
receive |= R.send_hear(display_freq)
|
||||
|
||||
//world << "DEBUG: receive.len=[receive.len]"
|
||||
@@ -223,17 +230,21 @@
|
||||
var/list/heard_normal = list() // normal message
|
||||
var/list/heard_voice = list() // voice message
|
||||
var/list/heard_garbled = list() // garbled message
|
||||
var/turf/cl = get_turf(M)
|
||||
|
||||
for (var/mob/R in receive)
|
||||
var/turf/gl = get_turf(R)
|
||||
if (R.client && R.client.STFU_radio) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
|
||||
continue
|
||||
if (R.say_understands(M))
|
||||
if (!ishuman(M) || istype(M.wear_mask, /obj/item/clothing/mask/gas/voice))
|
||||
if (R.say_understands(M) && ((gl.z == cl.z) || !istype(src, /obj/item/device/radio/headset)))
|
||||
if ((!ishuman(M) || istype(M.wear_mask, /obj/item/clothing/mask/gas/voice)) && !scramble)
|
||||
heard_masked += R
|
||||
else
|
||||
else if (!scramble)
|
||||
heard_normal += R
|
||||
else
|
||||
heard_garbled += R
|
||||
else
|
||||
if (M.voice_message)
|
||||
if (M.voice_message && (gl.z == cl.z))
|
||||
heard_voice += R
|
||||
else
|
||||
heard_garbled += R
|
||||
@@ -330,7 +341,6 @@
|
||||
|
||||
if (length(heard_normal))
|
||||
var/rendered = "[part_a][M.real_name][part_b][quotedmsg][part_c]"
|
||||
|
||||
for (var/mob/R in heard_normal)
|
||||
if(istype(R, /mob/living/silicon/ai))
|
||||
R.show_message("[part_a]<a href='byond://?src=\ref[src];track2=\ref[R];track=\ref[M]'>[M.real_name] ([eqjobname]) </a>[part_b][quotedmsg][part_c]", 2)
|
||||
@@ -348,9 +358,9 @@
|
||||
|
||||
if (length(heard_garbled))
|
||||
quotedmsg = M.say_quote(stars(message))
|
||||
var/rendered = "[part_a][M.voice_name][part_b][quotedmsg][part_c]"
|
||||
var/rendered = "[part_a]Unknown[part_b][quotedmsg][part_c]"
|
||||
|
||||
for (var/mob/R in heard_voice)
|
||||
for (var/mob/R in heard_garbled)
|
||||
if(istype(R, /mob/living/silicon/ai))
|
||||
R.show_message("[part_a]<a href='byond://?src=\ref[src];track2=\ref[R];track=\ref[M]'>[M.voice_name]</a>[part_b][quotedmsg][part_c]", 2)
|
||||
else
|
||||
|
||||
@@ -74,6 +74,8 @@ obj/structure
|
||||
else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2))
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
if(!W)
|
||||
return
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithWall()
|
||||
@@ -85,6 +87,8 @@ obj/structure
|
||||
if (src.icon_state == "reinforced") //Time to finalize!
|
||||
user << "\blue Now finalising reinforced wall."
|
||||
if(do_after(user, 50))
|
||||
if(!W)
|
||||
return
|
||||
user << "\blue Wall fully reinforced!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithRWall()
|
||||
@@ -95,6 +99,8 @@ obj/structure
|
||||
else
|
||||
user << "\blue Now reinforcing girders"
|
||||
if (do_after(user,60))
|
||||
if(!W)
|
||||
return
|
||||
user << "\blue Girders reinforced!"
|
||||
W:use(1)
|
||||
new/obj/structure/girder/reinforced( src.loc )
|
||||
|
||||
@@ -1406,7 +1406,7 @@
|
||||
message_admins("[key_name_admin(usr)] has spawned blob", 1)
|
||||
if("aliens")
|
||||
if(aliens_allowed)
|
||||
alien_infestation()
|
||||
Force_Event(/datum/event/alieninfestation)
|
||||
message_admins("[key_name_admin(usr)] has spawned aliens", 1)
|
||||
if("spaceninja")
|
||||
if(toggle_space_ninja)
|
||||
@@ -1416,31 +1416,35 @@
|
||||
var/choice = input("You sure you want to spawn carp?") in list("Badmin", "Cancel")
|
||||
if(choice == "Badmin")
|
||||
message_admins("[key_name_admin(usr)] has spawned carp.", 1)
|
||||
carp_migration()
|
||||
Force_Event(/datum/event/spacecarp)
|
||||
if("radiation")
|
||||
message_admins("[key_name_admin(usr)] has has irradiated the station", 1)
|
||||
high_radiation_event()
|
||||
Force_Event(/datum/event/radiation)
|
||||
if("immovable")
|
||||
message_admins("[key_name_admin(usr)] has sent an immovable rod to the station", 1)
|
||||
immovablerod()
|
||||
if("prison_break")
|
||||
message_admins("[key_name_admin(usr)] has allowed a prison break", 1)
|
||||
prison_break()
|
||||
Force_Event(/datum/event/prisonbreak)
|
||||
if("electric")
|
||||
message_admins("[key_name_admin(usr)] has triggered an electrical storm", 1)
|
||||
Force_Event(/datum/event/electricalstorm)
|
||||
if("lightsout")
|
||||
message_admins("[key_name_admin(usr)] has broke a lot of lights", 1)
|
||||
lightsout(1,2)
|
||||
if("blackout")
|
||||
message_admins("[key_name_admin(usr)] broke all lights", 1)
|
||||
SpawnEvent()
|
||||
lightsout(0,0)
|
||||
if("virus")
|
||||
var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Virus2","Random","Choose")
|
||||
if(answer=="Random")
|
||||
viral_outbreak()
|
||||
Force_Event(/datum/event/viralinfection)
|
||||
message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1)
|
||||
else if(answer == "Choose")
|
||||
var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","retrovirus","flu","pierrot's throat","rhumba beat")
|
||||
var/V = input("Choose the virus to spread", "BIOHAZARD") in viruses
|
||||
viral_outbreak(V)
|
||||
Force_Event(/datum/event/viralinfection,V)
|
||||
message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1)
|
||||
else
|
||||
var/lesser = (alert("Do you want to infect the mob with a major or minor disease?",,"Major","Minor") == "Minor")
|
||||
@@ -1495,7 +1499,7 @@
|
||||
return
|
||||
if("ionstorm")
|
||||
if (src.rank in list("Badmin","Game Admin", "Game Master"))
|
||||
IonStorm()
|
||||
Force_Event(/datum/event/ionstorm)
|
||||
message_admins("[key_name_admin(usr)] triggered an ion storm")
|
||||
var/show_log = alert(usr, "Show ion message?", "Message", "Yes", "No")
|
||||
if(show_log == "Yes")
|
||||
@@ -2123,7 +2127,8 @@
|
||||
<A href='?src=\ref[src];secretsfun=moveferry'>Move Ferry</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=movealienship'>Move Alien Dinghy</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=moveminingshuttle'>Move Mining Shuttle</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=blackout'>Break all lights</A><BR><BR>"}
|
||||
<A href='?src=\ref[src];secretsfun=blackout'>Break all lights</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=electric'>Trigger Electrical Storm</A><BR><BR>"}
|
||||
//<A href='?src=\ref[src];secretsfun=shockwave'>Station Shockwave</A><BR>
|
||||
|
||||
if(lvl >= 5)
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
verbs += /client/proc/admin_invis
|
||||
verbs += /client/proc/cmd_admin_godmode
|
||||
verbs += /client/proc/delbook
|
||||
verbs += /client/proc/Force_Event_admin
|
||||
|
||||
if (holder.level >= 4)//Badmin********************************************************************
|
||||
verbs += /obj/admins/proc/adrev //toggle admin revives
|
||||
@@ -416,6 +417,7 @@
|
||||
verbs -= /client/proc/callprocobj
|
||||
verbs -= /client/proc/cmd_admin_godmode
|
||||
verbs -= /client/proc/delbook
|
||||
verbs -= /client/proc/Force_Event_admin
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
|
||||
world << sound('ionstorm.ogg')
|
||||
|
||||
IonStorm(0)
|
||||
//IonStorm(0)
|
||||
|
||||
/*
|
||||
Stealth spawns xenos
|
||||
|
||||
@@ -1564,6 +1564,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/mask))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1601,6 +1602,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/gloves))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1621,6 +1623,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/glasses))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1639,6 +1642,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if ((istype(item, /obj) && item.flags & 128 && target.w_uniform))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1657,6 +1661,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj) && target.wear_suit)
|
||||
var/confirm
|
||||
for(var/i=1, i<=target.wear_suit.allowed.len, i++)
|
||||
@@ -1685,6 +1690,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/head))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1712,6 +1718,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/ears) || istype(item, /obj/item/device/radio/headset) || item.w_class == 1)
|
||||
source.drop_item()
|
||||
if(istype(item, /obj/item/clothing/ears) && item:twoeared && target.r_ear)
|
||||
@@ -1746,6 +1753,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/ears) || istype(item, /obj/item/device/radio/headset) || item.w_class == 1)
|
||||
source.drop_item()
|
||||
if(istype(item, /obj/item/clothing/ears) && item:twoeared && target.r_ear)
|
||||
@@ -1773,6 +1781,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/shoes))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1795,6 +1804,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if(istype(item, /obj/item))
|
||||
source.drop_item()
|
||||
if(item)
|
||||
@@ -1819,6 +1829,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1868,6 +1879,7 @@ It can still be worn/put on as normal.
|
||||
W.dropped(target)
|
||||
W.layer = initial(W.layer)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/under))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1886,6 +1898,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/clothing/suit))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1904,6 +1917,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (((istype(item, /obj/item/weapon/card/id)||istype(item, /obj/item/device/pda)) && target.w_uniform))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1922,6 +1936,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if ((istype(item, /obj/item) && item.flags & 1))
|
||||
source.drop_item()
|
||||
loc = target
|
||||
@@ -1951,6 +1966,7 @@ It can still be worn/put on as normal.
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
else
|
||||
if(!item) return
|
||||
if (istype(item, /obj/item/weapon/handcuffs))
|
||||
target.drop_from_slot(target.r_hand)
|
||||
target.drop_from_slot(target.l_hand)
|
||||
|
||||
@@ -144,7 +144,7 @@ proc/isorgan(A)
|
||||
else
|
||||
if (pr >= 100)
|
||||
return n
|
||||
var/te = n
|
||||
var/te = html_decode(n)
|
||||
var/t = ""
|
||||
n = length(n)
|
||||
var/p = null
|
||||
@@ -155,7 +155,7 @@ proc/isorgan(A)
|
||||
else
|
||||
t = text("[]*", t)
|
||||
p++
|
||||
return t
|
||||
return html_encode(t)
|
||||
|
||||
/*proc/NewStutter(phrase,stunned)
|
||||
phrase = html_decode(phrase)
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
var/has_electronics = 0 // 0 - none, 1 - plugged in, 2 - secured by screwdriver
|
||||
var/overload = 1 //used for the Blackout malf module
|
||||
var/mob/living/silicon/ai/occupant = null
|
||||
var/crit = 0
|
||||
var/eventoff = 0
|
||||
|
||||
/proc/RandomAPCWires()
|
||||
//to make this not randomize the wires, just set index to 1 and increment it in the flag for loop (after doing everything else).
|
||||
@@ -614,7 +616,7 @@
|
||||
return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])"
|
||||
|
||||
/obj/machinery/power/apc/proc/update()
|
||||
if(operating && !shorted)
|
||||
if(operating && !shorted && !eventoff)
|
||||
area.power_light = (lighting > 1)
|
||||
area.power_equip = (equipment > 1)
|
||||
area.power_environ = (environ > 1)
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
return
|
||||
|
||||
else
|
||||
if(isnull(I))
|
||||
if(!I || isnull(I))
|
||||
//CRASH("disposal/attackby() was called, but I was nulled before calling user.drop_item()")
|
||||
return // No idea why, but somehow I gets nulled before it goes into the else, and that leads to a lot of spam with runtime errors.
|
||||
|
||||
|
||||
+16
-16
@@ -1039,8 +1039,8 @@
|
||||
"atY" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry)
|
||||
"atZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
|
||||
"aua" = (/turf/simulated/floor/plating,/area/hallway/secondary/entry)
|
||||
"aub" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"auc" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aub" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"auc" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aud" = (/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aue" = (/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"auf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
|
||||
@@ -1715,8 +1715,8 @@
|
||||
"aGY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/chapel/main)
|
||||
"aGZ" = (/obj/machinery/vending/snack,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aHa" = (/obj/item/device/radio/beacon,/obj/machinery/camera{c_tag = "Arrivals South"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aHb" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aHc" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aHb" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aHc" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aHd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
|
||||
"aHe" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "carpetside"},/area/hallway/secondary/entry)
|
||||
"aHf" = (/turf/simulated/floor{icon_state = "carpetside"},/area/hallway/secondary/entry)
|
||||
@@ -1783,7 +1783,7 @@
|
||||
"aIo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mint)
|
||||
"aIp" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass,/turf/simulated/floor{icon_state = "dark"},/area/mint)
|
||||
"aIq" = (/turf/simulated/wall/r_wall,/area/mint)
|
||||
"aIr" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port)
|
||||
"aIr" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor,/area/hallway/primary/port)
|
||||
"aIs" = (/obj/structure/table,/turf/simulated/floor,/area/hallway/primary/port)
|
||||
"aIt" = (/obj/machinery/camera{c_tag = "Port Hallway"; dir = 1},/obj/structure/table,/turf/simulated/floor,/area/hallway/primary/port)
|
||||
"aIu" = (/obj/structure/closet/extinguisher{pixel_x = -5; pixel_y = -32},/turf/simulated/floor,/area/hallway/primary/port)
|
||||
@@ -1847,7 +1847,7 @@
|
||||
"aJA" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"aJB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/locker)
|
||||
"aJC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/crew_quarters/locker)
|
||||
"aJD" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/crew_quarters/locker)
|
||||
"aJD" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor,/area/crew_quarters/locker)
|
||||
"aJE" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/crew_quarters/locker)
|
||||
"aJF" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/crew_quarters/locker)
|
||||
"aJG" = (/obj/machinery/vending/cola,/turf/simulated/floor,/area/crew_quarters/locker)
|
||||
@@ -1905,8 +1905,8 @@
|
||||
"aKG" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/secondary/exit)
|
||||
"aKH" = (/turf/simulated/floor,/area/hallway/secondary/exit)
|
||||
"aKI" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor,/area/hallway/secondary/exit)
|
||||
"aKJ" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit)
|
||||
"aKK" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit)
|
||||
"aKJ" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit)
|
||||
"aKK" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit)
|
||||
"aKL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
|
||||
"aKM" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/secondary/entry)
|
||||
"aKN" = (/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor,/area/hallway/secondary/entry)
|
||||
@@ -2326,7 +2326,7 @@
|
||||
"aSL" = (/turf/simulated/floor{icon_state = "carpetside"},/area/chapel/main)
|
||||
"aSM" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
|
||||
"aSN" = (/obj/machinery/power/apc{dir = 8; name = "Escape Hallway APC"; pixel_x = -25},/obj/structure/cable,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
|
||||
"aSO" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aSO" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"aSP" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/security/vacantoffice)
|
||||
"aSQ" = (/obj/structure/table/woodentable,/turf/simulated/floor/plating,/area/security/vacantoffice)
|
||||
"aSR" = (/obj/machinery/power/apc{dir = 2; name = "Vacant Office APC"; pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/security/vacantoffice)
|
||||
@@ -2771,7 +2771,7 @@
|
||||
"bbo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bbp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bbq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/door_control{id = "kitchen"; name = "Hallway Shutters"; pixel_x = -1; pixel_y = 24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bbr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 4; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bbr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 4; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/door_control{id = "kitchen2"; name = "Mess Hall Shutters"; pixel_x = 24; pixel_y = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bbs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/kitchen)
|
||||
"bbt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
"bbu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
@@ -2855,7 +2855,7 @@
|
||||
"bcU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bcV" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bcW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bcX" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bcX" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/poddoor/shutters{density = 0; icon_state = "shutter0"; id = "kitchen2"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bcY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
"bcZ" = (/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
"bda" = (/obj/machinery/camera{c_tag = "Bar North"; dir = 2; network = "SS13"},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
@@ -2881,7 +2881,7 @@
|
||||
"bdu" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/lab)
|
||||
"bdv" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 22},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
|
||||
"bdw" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
|
||||
"bdx" = (/obj/structure/closet/emcloset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"})
|
||||
"bdx" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"})
|
||||
"bdy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
|
||||
"bdz" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
|
||||
"bdA" = (/obj/structure/closet/l3closet/general,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/medical/research{name = "Research Division"})
|
||||
@@ -2936,7 +2936,7 @@
|
||||
"bex" = (/obj/structure/table,/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bey" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bez" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"beA" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/table/reinforced,/obj/item/kitchen/donut_box,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"beA" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/table/reinforced,/obj/item/kitchen/donut_box,/obj/machinery/door/poddoor/shutters{density = 0; icon_state = "shutter0"; id = "kitchen2"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"beB" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
"beC" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
"beD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
|
||||
@@ -3067,7 +3067,7 @@
|
||||
"bgY" = (/obj/machinery/light,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bgZ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bha" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bhb" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/pie,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bhb" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/door/poddoor/shutters{density = 0; icon_state = "shutter0"; id = "kitchen2"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
|
||||
"bhc" = (/obj/structure/closet/extinguisher{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Bar East"; dir = 8; network = "SS13"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
|
||||
"bhd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/maintcentral)
|
||||
"bhe" = (/obj/structure/table,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
@@ -3596,7 +3596,7 @@
|
||||
"brh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage)
|
||||
"bri" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage)
|
||||
"brj" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage)
|
||||
"brk" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"brk" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"brl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"brm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/qm)
|
||||
"brn" = (/obj/structure/closet,/obj/machinery/light_switch{pixel_y = -22},/turf/simulated/floor,/area/quartermaster/qm)
|
||||
@@ -4875,7 +4875,7 @@
|
||||
"bPM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/assembly/assembly_line)
|
||||
"bPN" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/aft)
|
||||
"bPO" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "yellowcorner"},/area/hallway/primary/aft)
|
||||
"bPP" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "cautioncorner"; dir = 2},/area/hallway/primary/aft)
|
||||
"bPP" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{icon_state = "cautioncorner"; dir = 2},/area/hallway/primary/aft)
|
||||
"bPQ" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "cautioncorner"; dir = 2},/area/hallway/primary/aft)
|
||||
"bPR" = (/turf/simulated/floor{icon_state = "caution"; dir = 6},/area/hallway/primary/aft)
|
||||
"bPS" = (/obj/effect/sign/securearea,/turf/simulated/wall/r_wall,/area/atmos)
|
||||
|
||||
Reference in New Issue
Block a user