mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 13:07:46 +01:00
Merge branch 'master' into hook-kill-v10-final-ultimate-final
This commit is contained in:
@@ -41,7 +41,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
power_environ = FALSE
|
||||
valid_territory = FALSE
|
||||
outdoors = TRUE
|
||||
ambientsounds = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/traitor.ogg')
|
||||
ambientsounds = SPACE_SOUNDS
|
||||
|
||||
/area/space/nearstation
|
||||
icon_state = "space_near"
|
||||
@@ -88,39 +88,33 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/shuttle/escape
|
||||
name = "\improper Emergency Shuttle"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle2"
|
||||
nad_allowed = TRUE
|
||||
|
||||
/area/shuttle/pod_1
|
||||
name = "\improper Escape Pod One"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle"
|
||||
nad_allowed = TRUE
|
||||
|
||||
/area/shuttle/pod_2
|
||||
name = "\improper Escape Pod Two"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle"
|
||||
nad_allowed = TRUE
|
||||
|
||||
/area/shuttle/pod_3
|
||||
name = "\improper Escape Pod Three"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle"
|
||||
nad_allowed = TRUE
|
||||
parallax_movedir = EAST
|
||||
|
||||
/area/shuttle/pod_4
|
||||
name = "\improper Escape Pod Four"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle"
|
||||
nad_allowed = TRUE
|
||||
parallax_movedir = EAST
|
||||
|
||||
/area/shuttle/escape_pod1
|
||||
name = "\improper Escape Pod One"
|
||||
music = "music/escape.ogg"
|
||||
nad_allowed = TRUE
|
||||
|
||||
/area/shuttle/escape_pod1/station
|
||||
@@ -134,7 +128,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/shuttle/escape_pod2
|
||||
name = "\improper Escape Pod Two"
|
||||
music = "music/escape.ogg"
|
||||
nad_allowed = TRUE
|
||||
|
||||
/area/shuttle/escape_pod2/station
|
||||
@@ -148,7 +141,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/shuttle/escape_pod3
|
||||
name = "\improper Escape Pod Three"
|
||||
music = "music/escape.ogg"
|
||||
nad_allowed = TRUE
|
||||
|
||||
/area/shuttle/escape_pod3/station
|
||||
@@ -162,7 +154,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/shuttle/escape_pod5 //Pod 4 was lost to meteors
|
||||
name = "\improper Escape Pod Five"
|
||||
music = "music/escape.ogg"
|
||||
nad_allowed = TRUE
|
||||
|
||||
/area/shuttle/escape_pod5/station
|
||||
@@ -176,7 +167,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/shuttle/mining
|
||||
name = "\improper Mining Shuttle"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/transport
|
||||
@@ -217,7 +207,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/shuttle/siberia
|
||||
name = "\improper Labor Camp Shuttle"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/specops
|
||||
@@ -300,7 +289,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area/shuttle/research
|
||||
name = "\improper Research Shuttle"
|
||||
music = "music/escape.ogg"
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/research/station
|
||||
@@ -469,6 +457,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
requires_power = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
nad_allowed = TRUE
|
||||
ambientsounds = HIGHSEC_SOUNDS
|
||||
|
||||
/area/syndicate_mothership/control
|
||||
name = "\improper Syndicate Control Room"
|
||||
@@ -490,6 +479,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
requires_power = FALSE
|
||||
valid_territory = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
ambientsounds = MINING_SOUNDS
|
||||
|
||||
/area/asteroid/cave // -- TLE
|
||||
name = "\improper Asteroid - Underground"
|
||||
@@ -604,7 +594,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
//Maintenance
|
||||
/area/maintenance
|
||||
ambientsounds = list('sound/ambience/ambimaint1.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimaint3.ogg', 'sound/ambience/ambimaint4.ogg', 'sound/ambience/ambimaint5.ogg')
|
||||
ambientsounds = MAINTENANCE_SOUNDS
|
||||
valid_territory = FALSE
|
||||
|
||||
/area/maintenance/atmos_control
|
||||
@@ -774,12 +764,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/bridge
|
||||
name = "\improper Bridge"
|
||||
icon_state = "bridge"
|
||||
music = "signal"
|
||||
ambientsounds = list('sound/ambience/signal.ogg')
|
||||
|
||||
/area/bridge/meeting_room
|
||||
name = "\improper Heads of Staff Meeting Room"
|
||||
icon_state = "meeting"
|
||||
music = null
|
||||
|
||||
/area/crew_quarters/captain
|
||||
name = "\improper Captain's Office"
|
||||
@@ -940,10 +929,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "\improper Abandoned Library"
|
||||
icon_state = "library"
|
||||
|
||||
/area/chapel
|
||||
icon_state = "chapel"
|
||||
ambientsounds = HOLY_SOUNDS
|
||||
|
||||
/area/chapel/main
|
||||
name = "\improper Chapel"
|
||||
icon_state = "chapel"
|
||||
ambientsounds = list('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg','sound/ambience/ambicha4.ogg','sound/music/traitor.ogg')
|
||||
|
||||
/area/chapel/office
|
||||
name = "\improper Chapel Office"
|
||||
@@ -1078,7 +1069,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
//Engineering
|
||||
/area/engine
|
||||
ambientsounds = list('sound/ambience/ambisin1.ogg','sound/ambience/ambisin2.ogg','sound/ambience/ambisin3.ogg','sound/ambience/ambisin4.ogg')
|
||||
ambientsounds = ENGINEERING_SOUNDS
|
||||
|
||||
/area/engine/engine_smes
|
||||
name = "\improper Engineering SMES"
|
||||
@@ -1132,6 +1123,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
requires_power = FALSE
|
||||
valid_territory = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
|
||||
ambientsounds = ENGINEERING_SOUNDS
|
||||
|
||||
/area/solar/auxport
|
||||
name = "\improper Fore Port Solar Array"
|
||||
@@ -1198,18 +1190,17 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/teleporter
|
||||
name = "\improper Teleporter"
|
||||
icon_state = "teleporter"
|
||||
music = "signal"
|
||||
ambientsounds = ENGINEERING_SOUNDS
|
||||
|
||||
/area/gateway
|
||||
name = "\improper Gateway"
|
||||
icon_state = "teleporter"
|
||||
music = "signal"
|
||||
ambientsounds = ENGINEERING_SOUNDS
|
||||
|
||||
/area/AIsattele
|
||||
name = "\improper Abandoned Teleporter"
|
||||
icon_state = "teleporter"
|
||||
music = "signal"
|
||||
ambientsounds = list('sound/ambience/ambimalf.ogg')
|
||||
ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/signal.ogg')
|
||||
|
||||
/area/toxins/explab
|
||||
name = "\improper E.X.P.E.R.I-MENTOR Lab"
|
||||
@@ -1221,42 +1212,39 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
//MedBay
|
||||
|
||||
/area/medical
|
||||
ambientsounds = MEDICAL_SOUNDS
|
||||
|
||||
/area/medical/medbay
|
||||
name = "\improper Medbay"
|
||||
icon_state = "medbay"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
|
||||
//Medbay is a large area, these additional areas help level out APC load.
|
||||
/area/medical/medbay2
|
||||
name = "\improper Medbay"
|
||||
icon_state = "medbay2"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
|
||||
/area/medical/medbay3
|
||||
name = "\improper Medbay"
|
||||
icon_state = "medbay3"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
|
||||
|
||||
/area/medical/biostorage
|
||||
name = "\improper Medical Storage"
|
||||
icon_state = "medbaysecstorage"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
|
||||
/area/medical/reception
|
||||
name = "\improper Medbay Reception"
|
||||
icon_state = "medbay"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
|
||||
/area/medical/psych
|
||||
name = "\improper Psych Room"
|
||||
icon_state = "medbaypsych"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
ambientsounds = list('sound/ambience/aurora_caelus_short.ogg')
|
||||
|
||||
/area/medical/medbreak
|
||||
name = "\improper Break Room"
|
||||
icon_state = "medbaybreak"
|
||||
music = 'sound/ambience/signal.ogg'
|
||||
|
||||
/area/medical/patients_rooms
|
||||
name = "\improper Patient's Rooms"
|
||||
@@ -1313,7 +1301,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/medical/morgue
|
||||
name = "\improper Morgue"
|
||||
icon_state = "morgue"
|
||||
ambientsounds = list('sound/ambience/ambimo1.ogg','sound/ambience/ambimo2.ogg')
|
||||
ambientsounds = SPOOKY_SOUNDS
|
||||
|
||||
/area/medical/chemistry
|
||||
name = "\improper Chemistry"
|
||||
@@ -1361,6 +1349,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
//Security
|
||||
|
||||
/area/security
|
||||
ambientsounds = HIGHSEC_SOUNDS
|
||||
|
||||
/area/security/main
|
||||
name = "\improper Security Office"
|
||||
icon_state = "securityoffice"
|
||||
@@ -1493,6 +1484,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/security/detectives_office
|
||||
name = "\improper Detective's Office"
|
||||
icon_state = "detective"
|
||||
ambientsounds = list('sound/ambience/ambidet1.ogg', 'sound/ambience/ambidet2.ogg')
|
||||
|
||||
/area/security/range
|
||||
name = "\improper Firing Range"
|
||||
@@ -1841,6 +1833,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/construction
|
||||
name = "\improper Construction Area"
|
||||
icon_state = "yellow"
|
||||
ambientsounds = ENGINEERING_SOUNDS
|
||||
|
||||
/area/mining_construction
|
||||
name = "Auxillary Base Construction"
|
||||
@@ -1933,6 +1926,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/ai_monitored/storage/eva
|
||||
name = "EVA Storage"
|
||||
icon_state = "eva"
|
||||
ambientsounds = HIGHSEC_SOUNDS
|
||||
|
||||
/area/ai_monitored/storage/secure
|
||||
name = "Secure Storage"
|
||||
@@ -1943,7 +1937,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
icon_state = "storage"
|
||||
|
||||
/area/turret_protected/
|
||||
ambientsounds = list('sound/ambience/ambimalf.ogg')
|
||||
ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg')
|
||||
|
||||
/area/turret_protected/ai_upload
|
||||
name = "\improper AI Upload Chamber"
|
||||
@@ -2005,7 +1999,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
// Telecommunications Satellite
|
||||
|
||||
/area/tcommsat
|
||||
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg', 'sound/ambience/ambitech.ogg',\
|
||||
'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg', 'sound/ambience/ambimystery.ogg')
|
||||
|
||||
/area/tcommsat/chamber
|
||||
name = "\improper Telecoms Central Compartment"
|
||||
@@ -2053,6 +2048,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "\improper Strange Location"
|
||||
icon_state = "away"
|
||||
report_alerts = FALSE
|
||||
ambientsounds = AWAY_MISSION_SOUNDS
|
||||
|
||||
/area/awaymission/example
|
||||
name = "\improper Strange Station"
|
||||
@@ -2067,7 +2063,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
icon_state = "beach"
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
requires_power = FALSE
|
||||
ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg','sound/ambience/seag2.ogg','sound/ambience/seag2.ogg')
|
||||
ambientsounds = list('sound/ambience/shore.ogg', 'sound/ambience/seag1.ogg', 'sound/ambience/seag2.ogg', 'sound/ambience/seag2.ogg', 'sound/ambience/ambiodd.ogg', 'sound/ambience/ambinice.ogg')
|
||||
|
||||
/area/awaymission/undersea
|
||||
name = "Undersea"
|
||||
|
||||
+13
-15
@@ -26,7 +26,6 @@
|
||||
var/power_equip = TRUE
|
||||
var/power_light = TRUE
|
||||
var/power_environ = TRUE
|
||||
var/music = null
|
||||
var/used_equip = FALSE
|
||||
var/used_light = FALSE
|
||||
var/used_environ = FALSE
|
||||
@@ -56,12 +55,7 @@
|
||||
var/global/global_uid = 0
|
||||
var/uid
|
||||
|
||||
var/list/ambientsounds = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg',\
|
||||
'sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg',\
|
||||
'sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg',\
|
||||
'sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg',\
|
||||
'sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg',\
|
||||
'sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg')
|
||||
var/list/ambientsounds = GENERIC_SOUNDS
|
||||
|
||||
var/fast_despawn = FALSE
|
||||
var/can_get_auto_cryod = TRUE
|
||||
@@ -379,20 +373,24 @@
|
||||
|
||||
// Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch
|
||||
if(L && L.client && !L.client.ambience_playing && (L.client.prefs.sound & SOUND_BUZZ)) //split off the white noise from the rest of the ambience because of annoyance complaints - Kluys
|
||||
L.client.ambience_playing = 1
|
||||
L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = CHANNEL_BUZZ)
|
||||
L.client.ambience_playing = TRUE
|
||||
SEND_SOUND(L, sound('sound/ambience/shipambience.ogg', repeat = TRUE, wait = FALSE, volume = 35, channel = CHANNEL_BUZZ))
|
||||
else if(L && L.client && !(L.client.prefs.sound & SOUND_BUZZ))
|
||||
L.client.ambience_playing = 0
|
||||
L.client.ambience_playing = FALSE
|
||||
|
||||
if(prob(35) && L && L.client && (L.client.prefs.sound & SOUND_AMBIENCE))
|
||||
var/sound = pick(ambientsounds)
|
||||
|
||||
if(!L.client.played)
|
||||
L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = CHANNEL_AMBIENCE)
|
||||
L.client.played = 1
|
||||
spawn(600) //ewww - this is very very bad
|
||||
if(L && L.client)
|
||||
L.client.played = 0
|
||||
SEND_SOUND(L, sound(sound, repeat = FALSE, wait = FALSE, volume = 25, channel = CHANNEL_AMBIENCE))
|
||||
L.client.played = TRUE
|
||||
addtimer(CALLBACK(L.client, /client/proc/ResetAmbiencePlayed), 600)
|
||||
|
||||
/**
|
||||
* Reset the played var to false on the client
|
||||
*/
|
||||
/client/proc/ResetAmbiencePlayed()
|
||||
played = FALSE
|
||||
|
||||
/area/proc/gravitychange(var/gravitystate = 0, var/area/A)
|
||||
A.has_gravity = gravitystate
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
/area/mine/explored
|
||||
name = "Mine"
|
||||
icon_state = "explored"
|
||||
music = null
|
||||
always_unpowered = TRUE
|
||||
requires_power = TRUE
|
||||
poweralm = FALSE
|
||||
@@ -15,7 +14,7 @@
|
||||
power_equip = FALSE
|
||||
power_light = FALSE
|
||||
outdoors = TRUE
|
||||
ambientsounds = list('sound/ambience/ambimine.ogg')
|
||||
ambientsounds = MINING_SOUNDS
|
||||
flags = NONE
|
||||
|
||||
/area/mine/dangerous/explored/golem
|
||||
@@ -24,7 +23,6 @@
|
||||
/area/mine/unexplored
|
||||
name = "Mine"
|
||||
icon_state = "unexplored"
|
||||
music = null
|
||||
always_unpowered = TRUE
|
||||
requires_power = TRUE
|
||||
poweralm = FALSE
|
||||
@@ -32,7 +30,7 @@
|
||||
power_equip = FALSE
|
||||
power_light = FALSE
|
||||
outdoors = TRUE
|
||||
ambientsounds = list('sound/ambience/ambimine.ogg')
|
||||
ambientsounds = MINING_SOUNDS
|
||||
flags = NONE
|
||||
|
||||
/area/mine/lobby
|
||||
@@ -80,6 +78,7 @@
|
||||
/area/mine/laborcamp/security
|
||||
name = "Labor Camp Security"
|
||||
icon_state = "security"
|
||||
ambientsounds = HIGHSEC_SOUNDS
|
||||
|
||||
/area/mine/podbay
|
||||
name = "Mining Podbay"
|
||||
@@ -95,26 +94,24 @@
|
||||
/area/lavaland/surface
|
||||
name = "Lavaland"
|
||||
icon_state = "explored"
|
||||
music = null
|
||||
always_unpowered = TRUE
|
||||
poweralm = FALSE
|
||||
power_environ = FALSE
|
||||
power_equip = FALSE
|
||||
power_light = FALSE
|
||||
requires_power = TRUE
|
||||
ambientsounds = list('sound/ambience/ambilava.ogg')
|
||||
ambientsounds = MINING_SOUNDS
|
||||
|
||||
/area/lavaland/underground
|
||||
name = "Lavaland Caves"
|
||||
icon_state = "unexplored"
|
||||
music = null
|
||||
always_unpowered = TRUE
|
||||
requires_power = TRUE
|
||||
poweralm = FALSE
|
||||
power_environ = FALSE
|
||||
power_equip = FALSE
|
||||
power_light = FALSE
|
||||
ambientsounds = list('sound/ambience/ambilava.ogg')
|
||||
ambientsounds = MINING_SOUNDS
|
||||
|
||||
/area/lavaland/surface/outdoors
|
||||
name = "Lavaland Wastes"
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
/area/ruin/powered/clownplanet
|
||||
icon_state = "dk_yellow"
|
||||
ambientsounds = list('sound/music/clown.ogg')
|
||||
|
||||
/area/ruin/powered/animal_hospital
|
||||
icon_state = "dk_yellow"
|
||||
@@ -38,7 +39,7 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base
|
||||
name = "Secret Base"
|
||||
icon_state = "dk_yellow"
|
||||
ambientsounds = list('sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg')
|
||||
ambientsounds = HIGHSEC_SOUNDS
|
||||
report_alerts = FALSE
|
||||
hide_attacklogs = TRUE
|
||||
|
||||
|
||||
+41
-10
@@ -14,6 +14,7 @@
|
||||
var/germ_level = GERM_LEVEL_AMBIENT // The higher the germ level, the more germ on the atom.
|
||||
var/simulated = TRUE //filter for actions - used by lighting overlays
|
||||
var/atom_say_verb = "says"
|
||||
var/bubble_icon = "default" ///what icon the mob uses for speechbubbles
|
||||
var/dont_save = FALSE // For atoms that are temporary by necessity - like lighting overlays
|
||||
|
||||
///Chemistry.
|
||||
@@ -721,17 +722,38 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
var/mob/M = loc
|
||||
M.update_inv_shoes()
|
||||
|
||||
/mob/living/carbon/human/clean_blood()
|
||||
if(gloves)
|
||||
/mob/living/carbon/human/clean_blood(clean_hands = TRUE, clean_mask = TRUE, clean_feet = TRUE)
|
||||
if(w_uniform && !(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT))
|
||||
if(w_uniform.clean_blood())
|
||||
update_inv_w_uniform()
|
||||
if(gloves && !(wear_suit && wear_suit.flags_inv & HIDEGLOVES))
|
||||
if(gloves.clean_blood())
|
||||
clean_blood()
|
||||
update_inv_gloves()
|
||||
gloves.germ_level = 0
|
||||
else
|
||||
..() // Clear the Blood_DNA list
|
||||
if(bloody_hands)
|
||||
bloody_hands = 0
|
||||
update_inv_gloves()
|
||||
gloves.germ_level = 0
|
||||
clean_hands = FALSE
|
||||
if(shoes && !(wear_suit && wear_suit.flags_inv & HIDESHOES))
|
||||
if(shoes.clean_blood())
|
||||
update_inv_shoes()
|
||||
clean_feet = FALSE
|
||||
if(s_store && !(wear_suit && wear_suit.flags_inv & HIDESUITSTORAGE))
|
||||
if(s_store.clean_blood())
|
||||
update_inv_s_store()
|
||||
if(lip_style && !(head && head.flags_inv & HIDEMASK))
|
||||
lip_style = null
|
||||
update_body()
|
||||
if(glasses && !(wear_mask && wear_mask.flags_inv & HIDEEYES))
|
||||
if(glasses.clean_blood())
|
||||
update_inv_glasses()
|
||||
if(l_ear && !(wear_mask && wear_mask.flags_inv & HIDEEARS))
|
||||
if(l_ear.clean_blood())
|
||||
update_inv_ears()
|
||||
if(r_ear && !(wear_mask && wear_mask.flags_inv & HIDEEARS))
|
||||
if(r_ear.clean_blood())
|
||||
update_inv_ears()
|
||||
if(belt)
|
||||
if(belt.clean_blood())
|
||||
update_inv_belt()
|
||||
..(clean_hands, clean_mask, clean_feet)
|
||||
update_icons() //apply the now updated overlays to the mob
|
||||
|
||||
/atom/proc/add_vomit_floor(toxvomit = FALSE, green = FALSE)
|
||||
@@ -819,7 +841,16 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
/atom/proc/atom_say(message)
|
||||
if(!message)
|
||||
return
|
||||
audible_message("<span class='game say'><span class='name'>[src]</span> [atom_say_verb], \"[message]\"</span>")
|
||||
var/list/speech_bubble_hearers = list()
|
||||
for(var/mob/M in get_mobs_in_view(7, src))
|
||||
M.show_message("<span class='game say'><span class='name'>[src]</span> [atom_say_verb], \"[message]\"</span>", 2, null, 1)
|
||||
if(M.client)
|
||||
speech_bubble_hearers += M.client
|
||||
|
||||
if(length(speech_bubble_hearers))
|
||||
var/image/I = image('icons/mob/talk.dmi', src, "[bubble_icon][say_test(message)]", FLY_LAYER)
|
||||
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
|
||||
INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_hearers, 30)
|
||||
|
||||
/atom/proc/speech_bubble(bubble_state = "", bubble_loc = src, list/bubble_recipients = list())
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
pass_flags = PASSBLOB
|
||||
faction = list(ROLE_BLOB)
|
||||
bubble_icon = "blob"
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 360
|
||||
|
||||
@@ -89,41 +89,40 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/blob/core/proc/create_overmind(var/client/new_overmind, var/override_delay)
|
||||
/obj/structure/blob/core/proc/create_overmind(client/new_overmind, override_delay)
|
||||
if(overmind_get_delay > world.time && !override_delay)
|
||||
return
|
||||
|
||||
overmind_get_delay = world.time + 3000 // 5 minutes
|
||||
overmind_get_delay = world.time + 5 MINUTES
|
||||
|
||||
if(overmind)
|
||||
qdel(overmind)
|
||||
|
||||
INVOKE_ASYNC(src, .proc/get_new_overmind, new_overmind)
|
||||
|
||||
/obj/structure/blob/core/proc/get_new_overmind(client/new_overmind)
|
||||
var/mob/C = null
|
||||
var/list/candidates = list()
|
||||
|
||||
spawn()
|
||||
if(!new_overmind)
|
||||
if(is_offspring)
|
||||
candidates = pollCandidates("Do you want to play as a blob offspring?", ROLE_BLOB, 1)
|
||||
else
|
||||
candidates = pollCandidates("Do you want to play as a blob?", ROLE_BLOB, 1)
|
||||
|
||||
if(candidates.len)
|
||||
C = pick(candidates)
|
||||
if(!new_overmind)
|
||||
if(is_offspring)
|
||||
candidates = pollCandidates("Do you want to play as a blob offspring?", ROLE_BLOB, 1)
|
||||
else
|
||||
C = new_overmind
|
||||
candidates = pollCandidates("Do you want to play as a blob?", ROLE_BLOB, 1)
|
||||
|
||||
if(C)
|
||||
var/mob/camera/blob/B = new(src.loc)
|
||||
B.key = C.key
|
||||
B.blob_core = src
|
||||
src.overmind = B
|
||||
color = overmind.blob_reagent_datum.color
|
||||
if(B.mind && !B.mind.special_role)
|
||||
B.mind.make_Overmind()
|
||||
spawn(0)
|
||||
if(is_offspring)
|
||||
B.is_offspring = TRUE
|
||||
if(length(candidates))
|
||||
C = pick(candidates)
|
||||
else
|
||||
C = new_overmind
|
||||
|
||||
if(C && !QDELETED(src))
|
||||
var/mob/camera/blob/B = new(loc)
|
||||
B.key = C.key
|
||||
B.blob_core = src
|
||||
overmind = B
|
||||
color = overmind.blob_reagent_datum.color
|
||||
if(B.mind && !B.mind.special_role)
|
||||
B.mind.make_Overmind()
|
||||
B.is_offspring = is_offspring
|
||||
|
||||
/obj/structure/blob/core/proc/lateblobtimer()
|
||||
addtimer(CALLBACK(src, .proc/lateblobcheck), 50)
|
||||
|
||||
@@ -36,11 +36,9 @@
|
||||
to_chat(user, "We haven't prepared our sting yet!")
|
||||
if(!iscarbon(target))
|
||||
return
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.isSynthetic())
|
||||
to_chat(user, "<span class='warning'>This won't work on synthetics.</span>")
|
||||
return
|
||||
if(ismachineperson(target))
|
||||
to_chat(user, "<span class='warning'>This won't work on synthetics.</span>")
|
||||
return
|
||||
if(!isturf(user.loc))
|
||||
return
|
||||
if(!AStar(user, target.loc, /turf/proc/Distance, user.mind.changeling.sting_range, simulated_only = 0))
|
||||
|
||||
@@ -808,6 +808,7 @@ GLOBAL_LIST_EMPTY(teleport_runes)
|
||||
allow_excess_invokers = 1
|
||||
icon_state = "5"
|
||||
invoke_damage = 5
|
||||
var/summoning = FALSE
|
||||
var/summontime = 0
|
||||
|
||||
/obj/effect/rune/summon/invoke(var/list/invokers)
|
||||
@@ -819,6 +820,11 @@ GLOBAL_LIST_EMPTY(teleport_runes)
|
||||
var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of [SSticker.cultdat.entity_title3]") as null|anything in cultists
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated())
|
||||
return
|
||||
if(summoning)
|
||||
to_chat(user, "<span class='cultitalic'>You are already summoning a target!</span>")
|
||||
fail_invoke()
|
||||
return
|
||||
|
||||
if(!cultist_to_summon)
|
||||
to_chat(user, "<span class='cultitalic'>You require a summoning target!</span>")
|
||||
fail_invoke()
|
||||
@@ -841,18 +847,20 @@ GLOBAL_LIST_EMPTY(teleport_runes)
|
||||
new /obj/effect/temp_visual/cult/sparks(get_turf(cultist_to_summon)) //observer warning
|
||||
log_game("Summon Cultist rune failed - holywater in target")
|
||||
return
|
||||
|
||||
summoning = TRUE
|
||||
..()
|
||||
if(hard_summon)
|
||||
summontime = 20
|
||||
|
||||
if(do_after(user, summontime, target = loc))
|
||||
if(do_after(user, summontime, target = src))
|
||||
summoning = FALSE // Here incase the proc stops after the qdel
|
||||
cultist_to_summon.visible_message("<span class='warning'>[cultist_to_summon] suddenly disappears in a flash of red light!</span>", \
|
||||
"<span class='cultitalic'><b>Overwhelming vertigo consumes you as you are hurled through the air!</b></span>")
|
||||
visible_message("<span class='warning'>A foggy shape materializes atop [src] and solidifies into [cultist_to_summon]!</span>")
|
||||
|
||||
cultist_to_summon.forceMove(get_turf(src))
|
||||
qdel(src)
|
||||
summoning = FALSE
|
||||
|
||||
//Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby
|
||||
/obj/effect/rune/blood_boil
|
||||
|
||||
@@ -480,8 +480,8 @@ Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
H.update_inv_r_hand()
|
||||
|
||||
/obj/item/abductor_baton/proc/StunAttack(mob/living/L,mob/living/user)
|
||||
user.lastattacked = L
|
||||
L.lastattacker = user
|
||||
L.lastattacker = user.real_name
|
||||
L.lastattackerckey = user.ckey
|
||||
|
||||
L.Stun(7)
|
||||
L.Weaken(7)
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
icon = 'icons/mob/swarmer.dmi'
|
||||
desc = "Robotic constructs of unknown design, swarmers seek only to consume materials and replicate themselves indefinitely."
|
||||
speak_emote = list("tones")
|
||||
bubble_icon = "swarmer"
|
||||
health = 40
|
||||
maxHealth = 40
|
||||
status_flags = CANPUSH
|
||||
@@ -604,7 +605,7 @@
|
||||
if(!istype(L, /mob/living/simple_animal/hostile/swarmer))
|
||||
playsound(loc,'sound/effects/snap.ogg',50, 1, -1)
|
||||
L.electrocute_act(0, src, 1, TRUE, TRUE)
|
||||
if(isrobot(L) || L.isSynthetic())
|
||||
if(isrobot(L) || ismachineperson(L))
|
||||
L.Weaken(5)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
real_name = "Guardian Spirit"
|
||||
desc = "A mysterious being that stands by it's charge, ever vigilant."
|
||||
speak_emote = list("intones")
|
||||
bubble_icon = "guardian"
|
||||
response_help = "passes through"
|
||||
response_disarm = "flails at"
|
||||
response_harm = "punches"
|
||||
|
||||
@@ -573,9 +573,10 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
|
||||
// /vg/; Vox Inviolate for humans :V
|
||||
/datum/objective/minimize_casualties
|
||||
explanation_text = "Minimise casualties."
|
||||
|
||||
/datum/objective/minimize_casualties/check_completion()
|
||||
if(owner.kills.len>5) return 0
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
//Vox heist objectives.
|
||||
|
||||
@@ -781,16 +782,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
|
||||
explanation_text = "Follow the Inviolate. Minimise death and loss of resources."
|
||||
|
||||
/datum/objective/heist/inviolate_death/check_completion()
|
||||
var/vox_allowed_kills = 3 // The number of people the vox can accidently kill. Mostly a counter to people killing themselves if a raider touches them to force fail.
|
||||
var/vox_total_kills = 0
|
||||
|
||||
var/datum/game_mode/heist/H = SSticker.mode
|
||||
for(var/datum/mind/raider in H.raiders)
|
||||
vox_total_kills += raider.kills.len // Kills are listed in the mind; uses this to calculate vox kills
|
||||
|
||||
if(vox_total_kills > vox_allowed_kills) return 0
|
||||
return 1
|
||||
|
||||
return TRUE
|
||||
|
||||
// Traders
|
||||
// These objectives have no check_completion, they exist only to tell Sol Traders what to aim for.
|
||||
|
||||
@@ -194,8 +194,8 @@ Made by Xhuis
|
||||
return 1
|
||||
var/mob/living/M = thrall_mind.current
|
||||
if(issilicon(M))
|
||||
M.audible_message("<span class='notice'>[M] lets out a short blip.</span>", \
|
||||
"<span class='userdanger'>You have been turned into a robot! You are no longer a thrall! Though you try, you cannot remember anything about your servitude...</span>")
|
||||
M.audible_message("<span class='notice'>[M] lets out a short blip.</span>")
|
||||
to_chat(M, "<span class='userdanger'>You have been turned into a robot! You are no longer a thrall! Though you try, you cannot remember anything about your servitude...</span>")
|
||||
else
|
||||
M.visible_message("<span class='big'>[M] looks like [M.p_their()] mind is [M.p_their()] own again!</span>", \
|
||||
"<span class='userdanger'>A piercing white light floods your eyes. Your mind is your own again! Though you try, you cannot remember anything about the shadowlings or your time \
|
||||
@@ -244,8 +244,8 @@ Made by Xhuis
|
||||
ling_mind.RemoveSpell(S)
|
||||
var/mob/living/M = ling_mind.current
|
||||
if(issilicon(M))
|
||||
M.audible_message("<span class='notice'>[M] lets out a short blip.</span>", \
|
||||
"<span class='userdanger'>You have been turned into a robot! You are no longer a shadowling! Though you try, you cannot remember anything about your time as one...</span>")
|
||||
M.audible_message("<span class='notice'>[M] lets out a short blip.</span>")
|
||||
to_chat(M, "<span class='userdanger'>You have been turned into a robot! You are no longer a shadowling! Though you try, you cannot remember anything about your time as one...</span>")
|
||||
else
|
||||
M.visible_message("<span class='big'>[M] screams and contorts!</span>", \
|
||||
"<span class='userdanger'>THE LIGHT-- YOUR MIND-- <i>BURNS--</i></span>")
|
||||
|
||||
@@ -470,7 +470,7 @@ GLOBAL_LIST_EMPTY(multiverse)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("cyborg")
|
||||
if(!ismachine(M))
|
||||
if(!ismachineperson(M))
|
||||
for(var/obj/item/organ/O in M.bodyparts)
|
||||
O.robotize(make_tough = 1)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
title = "Cyborg"
|
||||
flag = JOB_CYBORG
|
||||
department_flag = JOBCAT_ENGSEC
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "your laws and the AI" //Nodrak
|
||||
department_head = list("AI")
|
||||
selection_color = "#ddffdd"
|
||||
|
||||
@@ -223,6 +223,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/card/id/nanotrasen
|
||||
l_pocket = /obj/item/flash
|
||||
r_pocket = /obj/item/clothing/accessory/lawyers_badge
|
||||
pda = /obj/item/pda/heads/magistrate
|
||||
backpack_contents = list(
|
||||
/obj/item/melee/classic_baton/telescopic = 1
|
||||
@@ -262,9 +263,12 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses/read_only
|
||||
id = /obj/item/card/id/security
|
||||
l_pocket = /obj/item/laser_pointer
|
||||
r_pocket = /obj/item/flash
|
||||
r_pocket = /obj/item/clothing/accessory/lawyers_badge
|
||||
l_hand = /obj/item/storage/briefcase
|
||||
pda = /obj/item/pda/lawyer
|
||||
backpack_contents = list(
|
||||
/obj/item/flash = 1
|
||||
)
|
||||
implants = list(/obj/item/implant/mindshield)
|
||||
satchel = /obj/item/storage/backpack/satchel_sec
|
||||
dufflebag = /obj/item/storage/backpack/duffel/security
|
||||
|
||||
@@ -282,14 +282,14 @@
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
if(ismachine(H))
|
||||
if(ismachineperson(H))
|
||||
var/obj/item/organ/internal/cyberimp/brain/clown_voice/implant = new
|
||||
implant.insert(H)
|
||||
|
||||
H.dna.SetSEState(GLOB.clumsyblock, TRUE)
|
||||
genemutcheck(H, GLOB.clumsyblock, null, MUTCHK_FORCED)
|
||||
H.dna.default_blocks.Add(GLOB.clumsyblock)
|
||||
if(!ismachine(H))
|
||||
if(!ismachineperson(H))
|
||||
H.dna.SetSEState(GLOB.comicblock, TRUE)
|
||||
genemutcheck(H, GLOB.comicblock, null, MUTCHK_FORCED)
|
||||
H.dna.default_blocks.Add(GLOB.comicblock)
|
||||
|
||||
@@ -322,16 +322,18 @@
|
||||
apply_mode()
|
||||
|
||||
|
||||
/obj/machinery/alarm/proc/handle_heating_cooling(var/datum/gas_mixture/environment, var/datum/tlv/cur_tlv, var/turf/simulated/location)
|
||||
/obj/machinery/alarm/proc/handle_heating_cooling(datum/gas_mixture/environment, datum/tlv/cur_tlv, turf/simulated/location)
|
||||
cur_tlv = TLV["temperature"]
|
||||
//Handle temperature adjustment here.
|
||||
if(environment.temperature < target_temperature - 2 || environment.temperature > target_temperature + 2 || regulating_temperature)
|
||||
//If it goes too far, we should adjust ourselves back before stopping.
|
||||
if(!cur_tlv.get_danger_level(target_temperature))
|
||||
var/datum/gas_mixture/gas = location.remove_air(0.25 * environment.total_moles())
|
||||
if(!gas)
|
||||
return
|
||||
if(!regulating_temperature)
|
||||
regulating_temperature = 1
|
||||
visible_message("\The [src] clicks as it starts [environment.temperature > target_temperature ? "cooling" : "heating"] the room.",\
|
||||
"You hear a click and a faint electronic hum.")
|
||||
visible_message("\The [src] clicks as it starts [environment.temperature > target_temperature ? "cooling" : "heating"] the room.", "You hear a click and a faint electronic hum.")
|
||||
|
||||
if(target_temperature > MAX_TEMPERATURE)
|
||||
target_temperature = MAX_TEMPERATURE
|
||||
@@ -339,9 +341,8 @@
|
||||
if(target_temperature < MIN_TEMPERATURE)
|
||||
target_temperature = MIN_TEMPERATURE
|
||||
|
||||
var/datum/gas_mixture/gas = location.remove_air(0.25*environment.total_moles())
|
||||
var/heat_capacity = gas.heat_capacity()
|
||||
var/energy_used = max( abs( heat_capacity*(gas.temperature - target_temperature) ), MAX_ENERGY_CHANGE)
|
||||
var/energy_used = max(abs(heat_capacity * (gas.temperature - target_temperature) ), MAX_ENERGY_CHANGE)
|
||||
|
||||
//Use power. Assuming that each power unit represents 1000 watts....
|
||||
use_power(energy_used/1000, ENVIRON)
|
||||
@@ -349,16 +350,15 @@
|
||||
//We need to cool ourselves.
|
||||
if(heat_capacity)
|
||||
if(environment.temperature > target_temperature)
|
||||
gas.temperature -= energy_used/heat_capacity
|
||||
gas.temperature -= energy_used / heat_capacity
|
||||
else
|
||||
gas.temperature += energy_used/heat_capacity
|
||||
gas.temperature += energy_used / heat_capacity
|
||||
|
||||
environment.merge(gas)
|
||||
|
||||
if(abs(environment.temperature - target_temperature) <= 0.5)
|
||||
regulating_temperature = 0
|
||||
visible_message("\The [src] clicks quietly as it stops [environment.temperature > target_temperature ? "cooling" : "heating"] the room.",\
|
||||
"You hear a click as a faint electronic humming stops.")
|
||||
visible_message("\The [src] clicks quietly as it stops [environment.temperature > target_temperature ? "cooling" : "heating"] the room.", "You hear a click as a faint electronic humming stops.")
|
||||
|
||||
/obj/machinery/alarm/update_icon()
|
||||
if(wiresexposed)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
active_power_usage = 500
|
||||
light_color = LIGHT_COLOR_DARKBLUE
|
||||
circuit = /obj/item/circuitboard/crew
|
||||
var/datum/nano_module/crew_monitor/crew_monitor
|
||||
var/datum/tgui_module/crew_monitor/crew_monitor
|
||||
|
||||
/obj/machinery/computer/crew/New()
|
||||
crew_monitor = new(src)
|
||||
@@ -20,17 +20,15 @@
|
||||
|
||||
/obj/machinery/computer/crew/attack_ai(mob/user)
|
||||
attack_hand(user)
|
||||
ui_interact(user)
|
||||
|
||||
|
||||
/obj/machinery/computer/crew/attack_hand(mob/user)
|
||||
add_fingerprint(user)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
ui_interact(user)
|
||||
tgui_interact(user)
|
||||
|
||||
/obj/machinery/computer/crew/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
crew_monitor.ui_interact(user, ui_key, ui, force_open)
|
||||
/obj/machinery/computer/crew/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state)
|
||||
crew_monitor.tgui_interact(user, ui_key, ui, force_open)
|
||||
|
||||
/obj/machinery/computer/crew/interact(mob/user)
|
||||
crew_monitor.ui_interact(user)
|
||||
crew_monitor.tgui_interact(user)
|
||||
|
||||
@@ -89,12 +89,12 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
|
||||
|
||||
/obj/machinery/doppler_array/proc/print_explosive_logs(mob/user)
|
||||
if(!logged_explosions.len)
|
||||
atom_say("<span class='notice'>No logs currently stored in internal database.</span>")
|
||||
atom_say("No logs currently stored in internal database.")
|
||||
return
|
||||
if(active_timers)
|
||||
to_chat(user, "<span class='notice'>[src] is already printing something, please wait.</span>")
|
||||
return
|
||||
atom_say("<span class='notice'>Printing explosive log. Standby...</span>")
|
||||
atom_say("Printing explosive log. Standby...")
|
||||
addtimer(CALLBACK(src, .proc/print), 50)
|
||||
|
||||
/obj/machinery/doppler_array/proc/print()
|
||||
|
||||
@@ -177,8 +177,8 @@
|
||||
F.broken = 0
|
||||
F.times_used = 0
|
||||
F.icon_state = "flash"
|
||||
if(istype(O,/obj/item/gun/energy/disabler/cyborg))
|
||||
var/obj/item/gun/energy/disabler/cyborg/D = O
|
||||
if(istype(O,/obj/item/gun/energy))
|
||||
var/obj/item/gun/energy/D = O
|
||||
if(D.cell.charge < D.cell.maxcharge)
|
||||
var/obj/item/ammo_casing/energy/E = D.ammo_type[D.select]
|
||||
D.cell.give(E.e_cost)
|
||||
|
||||
@@ -225,7 +225,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles)
|
||||
message_log += "<B>Message sent to [recipient] at [station_time_timestamp()]</B><BR>[message]"
|
||||
Radio.autosay("Alert; a new requests console message received for [recipient] from [department]", null, "[radiochannel]")
|
||||
else
|
||||
audible_message(text("[bicon(src)] *The Requests Console beeps: '<b>NOTICE:</b> No server detected!'"),,4)
|
||||
atom_say("No server detected!")
|
||||
|
||||
//Handle screen switching
|
||||
if(href_list["setScreen"])
|
||||
@@ -256,7 +256,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles)
|
||||
else if(world.time < print_cooldown)
|
||||
error_message = "Please allow the printer time to prepare the next shipping label."
|
||||
if(error_message)
|
||||
audible_message(text("[bicon(src)] *The Requests Console beeps: '<b>NOTICE:</b> [error_message]'"),,4)
|
||||
atom_say("[error_message]")
|
||||
return
|
||||
print_label(ship_tag_name, ship_tag_index)
|
||||
shipping_log += "<B>Shipping Label printed for [ship_tag_name]</b><br>[msgVerified]"
|
||||
|
||||
@@ -166,10 +166,6 @@
|
||||
var/mob/M = A
|
||||
if(istype(firer, /mob))
|
||||
add_attack_logs(firer, M, "Mecha-shot with <b>[src]</b>")
|
||||
if(!iscarbon(firer))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = firer
|
||||
else
|
||||
add_attack_logs(null, M, "Mecha-shot with <b>[src]</b>")
|
||||
if(life <= 0)
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
/turf/simulated/floor/mech_bay_recharge_floor/airless
|
||||
icon_state = "recharge_floor_asteroid"
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/obj/machinery/mech_bay_recharge_port
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
force = 5
|
||||
max_integrity = 300 //max_integrity is base health
|
||||
armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
|
||||
bubble_icon = "machine"
|
||||
var/list/facing_modifiers = list(MECHA_FRONT_ARMOUR = 1.5, MECHA_SIDE_ARMOUR = 1, MECHA_BACK_ARMOUR = 0.5)
|
||||
var/ruin_mecha = FALSE //if the mecha starts on a ruin, don't automatically give it a tracking beacon to prevent metagaming.
|
||||
var/initial_icon = null //Mech type for resetting icon. Only used for reskinning kits (see custom items)
|
||||
@@ -1446,8 +1447,10 @@
|
||||
diag_hud_set_mechtracking()
|
||||
|
||||
|
||||
/obj/mecha/speech_bubble(var/bubble_state = "",var/bubble_loc = src, var/list/bubble_recipients = list())
|
||||
flick_overlay(image('icons/mob/talk.dmi', bubble_loc, bubble_state,MOB_LAYER+1), bubble_recipients, 30)
|
||||
/obj/mecha/speech_bubble(bubble_state = "", bubble_loc = src, list/bubble_recipients = list())
|
||||
var/image/I = image('icons/mob/talk.dmi', bubble_loc, bubble_state, FLY_LAYER)
|
||||
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
|
||||
INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, bubble_recipients, 30)
|
||||
|
||||
/obj/mecha/update_remote_sight(mob/living/user)
|
||||
if(occupant_sight_flags)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/lootdoubles = 1 //if the same item can be spawned twice
|
||||
var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect)
|
||||
|
||||
/obj/effect/spawner/lootdrop/Initialize(mapload)
|
||||
/obj/effect/spawner/lootdrop/New()
|
||||
..()
|
||||
if(loot && loot.len)
|
||||
for(var/i = lootcount, i > 0, i--)
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
if(lootspawn)
|
||||
new lootspawn(loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/lootdrop/armory_contraband
|
||||
name = "armory contraband gun spawner"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY)
|
||||
new /turf/simulated/wall/vault(locate(i,j,z),type)
|
||||
else
|
||||
new /turf/simulated/floor/vault(locate(i,j,z),type)
|
||||
var/turf/T = new /turf/simulated/floor/vault(locate(i, j, z))
|
||||
T.icon_state = "[type]vault"
|
||||
|
||||
qdel(src)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
desc = "Huh."
|
||||
allow_wrap = FALSE
|
||||
|
||||
/obj/item/storage/pill_bottle/random_drug_bottle/New()
|
||||
..()
|
||||
/obj/item/storage/pill_bottle/random_drug_bottle/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/food/pill/random_drugs(src)
|
||||
|
||||
@@ -241,6 +241,7 @@
|
||||
user.base_icon = disguise
|
||||
user.icon_state = disguise
|
||||
user.cham_proj = src
|
||||
user.bubble_icon = "robot"
|
||||
active = TRUE
|
||||
user.update_icons()
|
||||
|
||||
@@ -249,6 +250,7 @@
|
||||
S = user
|
||||
user.base_icon = initial(user.base_icon)
|
||||
user.icon_state = initial(user.icon_state)
|
||||
user.bubble_icon = "syndibot"
|
||||
active = FALSE
|
||||
user.update_icons()
|
||||
|
||||
|
||||
@@ -113,7 +113,6 @@
|
||||
/obj/item/flash/attack(mob/living/M, mob/user)
|
||||
if(!try_use_flash(user))
|
||||
return 0
|
||||
|
||||
if(iscarbon(M))
|
||||
flash_carbon(M, user, 5, 1)
|
||||
if(overcharged)
|
||||
@@ -121,22 +120,12 @@
|
||||
M.IgniteMob()
|
||||
burn_out()
|
||||
return 1
|
||||
|
||||
else if(issilicon(M))
|
||||
if(isrobot(M))
|
||||
var/mob/living/silicon/robot/R = M
|
||||
if(R.module) // Perhaps they didn't choose a module yet
|
||||
for(var/obj/item/borg/combat/shield/S in R.module.modules)
|
||||
if(R.activated(S))
|
||||
add_attack_logs(user, M, "Flashed with [src]")
|
||||
user.visible_message("<span class='disarm'>[user] tries to overloads [M]'s sensors with the [src.name], but is blocked by [M]'s shield!</span>", "<span class='danger'>You try to overload [M]'s sensors with the [src.name], but are blocked by [M.p_their()] shield!</span>")
|
||||
return 1
|
||||
add_attack_logs(user, M, "Flashed with [src]")
|
||||
if(M.flash_eyes(affect_silicon = 1))
|
||||
M.Weaken(rand(5,10))
|
||||
user.visible_message("<span class='disarm'>[user] overloads [M]'s sensors with the [src.name]!</span>", "<span class='danger'>You overload [M]'s sensors with the [src.name]!</span>")
|
||||
return 1
|
||||
|
||||
user.visible_message("<span class='disarm'>[user] fails to blind [M] with the [src.name]!</span>", "<span class='warning'>You fail to blind [M] with the [src.name]!</span>")
|
||||
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
if(disarmed)
|
||||
visible_message("<span class='danger'>[bicon(src)] Sparks briefly jump out of the [correct_wire] wire on \the [src], but it's disarmed!")
|
||||
return
|
||||
src.audible_message("[bicon(src)] <b>[src]</b> beeps, \"Enjoy the pizza!\"")
|
||||
atom_say("Enjoy the pizza!")
|
||||
src.visible_message("<span class='userdanger'>\The [src] violently explodes!</span>")
|
||||
explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb
|
||||
qdel(src)
|
||||
|
||||
@@ -623,6 +623,9 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
|
||||
..()
|
||||
set_frequency(ERT_FREQ)
|
||||
|
||||
/obj/item/radio/borg/ert/specops
|
||||
keyslot = new /obj/item/encryptionkey/centcom
|
||||
|
||||
/obj/item/radio/borg/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/encryptionkey/))
|
||||
user.set_machine(src)
|
||||
|
||||
@@ -141,7 +141,7 @@ REAGENT SCANNER
|
||||
|
||||
// Used by the PDA medical scanner too
|
||||
/proc/healthscan(mob/user, mob/living/M, mode = 1, advanced = FALSE)
|
||||
if(!ishuman(M) || M.isSynthetic())
|
||||
if(!ishuman(M) || ismachineperson(M))
|
||||
//these sensors are designed for organic life
|
||||
to_chat(user, "<span class='notice'>Analyzing Results for ERROR:\n\t Overall Status: ERROR</span>")
|
||||
to_chat(user, "\t Key: <font color='blue'>Suffocation</font>/<font color='green'>Toxin</font>/<font color='#FFA500'>Burns</font>/<font color='red'>Brute</font>")
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
slot_flags = SLOT_BELT
|
||||
origin_tech = "programming=3;materials=3;magnets=3"
|
||||
var/datum/nano_module/crew_monitor/crew_monitor
|
||||
var/datum/tgui_module/crew_monitor/crew_monitor
|
||||
|
||||
/obj/item/sensor_device/New()
|
||||
..()
|
||||
@@ -17,7 +17,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/sensor_device/attack_self(mob/user as mob)
|
||||
ui_interact(user)
|
||||
tgui_interact(user)
|
||||
|
||||
/obj/item/sensor_device/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
crew_monitor.ui_interact(user, ui_key, ui, force_open)
|
||||
/obj/item/sensor_device/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state)
|
||||
crew_monitor.tgui_interact(user, ui_key, ui, force_open)
|
||||
|
||||
@@ -9,23 +9,23 @@
|
||||
origin_tech = "programming=2"
|
||||
var/locked = 0
|
||||
var/installed = 0
|
||||
var/require_module = 0
|
||||
var/require_module = FALSE
|
||||
var/module_type = null
|
||||
|
||||
/obj/item/borg/upgrade/proc/action(mob/living/silicon/robot/R)
|
||||
if(R.stat == DEAD)
|
||||
to_chat(usr, "<span class='notice'>[src] will not function on a deceased cyborg.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
if(module_type && !istype(R.module, module_type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/reset
|
||||
name = "cyborg module reset board"
|
||||
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the cyborg."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
require_module = 1
|
||||
require_module = TRUE
|
||||
|
||||
/obj/item/borg/upgrade/reset/action(mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
@@ -55,7 +55,7 @@
|
||||
R.custom_name = heldname
|
||||
R.real_name = heldname
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/restart
|
||||
name = "cyborg emergency reboot module"
|
||||
@@ -77,14 +77,14 @@
|
||||
GLOB.alive_mob_list += R
|
||||
R.notify_ai(1)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/borg/upgrade/vtec
|
||||
name = "robotic VTEC Module"
|
||||
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
require_module = 1
|
||||
require_module = TRUE
|
||||
origin_tech = "engineering=4;materials=5;programming=4"
|
||||
|
||||
/obj/item/borg/upgrade/vtec/action(var/mob/living/silicon/robot/R)
|
||||
@@ -97,14 +97,14 @@
|
||||
|
||||
R.speed = -1 // Gotta go fast.
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/disablercooler
|
||||
name = "cyborg rapid disabler cooling module"
|
||||
desc = "Used to cool a mounted disabler, increasing the potential current in it and thus its recharge rate."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
origin_tech = "engineering=4;powerstorage=4;combat=4"
|
||||
require_module = 1
|
||||
require_module = TRUE
|
||||
module_type = /obj/item/robot_module/security
|
||||
|
||||
/obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/R)
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
T.charge_delay = max(2 , T.charge_delay - 4)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/thrusters
|
||||
name = "ion thruster upgrade"
|
||||
@@ -139,14 +139,14 @@
|
||||
return
|
||||
|
||||
R.ionpulse = 1
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/ddrill
|
||||
name = "mining cyborg diamond drill"
|
||||
desc = "A diamond drill replacement for the mining module's standard drill."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
origin_tech = "engineering=4;materials=5"
|
||||
require_module = 1
|
||||
require_module = TRUE
|
||||
module_type = /obj/item/robot_module/miner
|
||||
|
||||
/obj/item/borg/upgrade/ddrill/action(mob/living/silicon/robot/R)
|
||||
@@ -161,14 +161,14 @@
|
||||
R.module.modules += new /obj/item/pickaxe/drill/cyborg/diamond(R.module)
|
||||
R.module.rebuild()
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/soh
|
||||
name = "mining cyborg satchel of holding"
|
||||
desc = "A satchel of holding replacement for mining cyborg's ore satchel module."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
origin_tech = "engineering=4;materials=4;bluespace=4"
|
||||
require_module = 1
|
||||
require_module = TRUE
|
||||
module_type = /obj/item/robot_module/miner
|
||||
|
||||
/obj/item/borg/upgrade/soh/action(mob/living/silicon/robot/R)
|
||||
@@ -181,35 +181,46 @@
|
||||
R.module.modules += new /obj/item/storage/bag/ore/holding(R.module)
|
||||
R.module.rebuild()
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/syndicate
|
||||
name = "illegal equipment module"
|
||||
name = "safety override module"
|
||||
desc = "Unlocks the hidden, deadlier functions of a cyborg. Also prevents emag subversion."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
origin_tech = "combat=4;syndicate=1"
|
||||
require_module = 1
|
||||
require_module = TRUE
|
||||
|
||||
/obj/item/borg/upgrade/syndicate/action(mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(R.emagged)
|
||||
return
|
||||
|
||||
if(R.weapons_unlock)
|
||||
to_chat(R, "<span class='warning'>Internal diagnostic error: incompatible upgrade module detected.</span>");
|
||||
return
|
||||
|
||||
R.emagged = 1
|
||||
return TRUE
|
||||
|
||||
return 1
|
||||
/obj/item/borg/upgrade/lavaproof
|
||||
name = "mining cyborg lavaproof chassis"
|
||||
desc = "An upgrade kit to apply specialized coolant systems and insulation layers to a mining cyborg's chassis, enabling them to withstand exposure to molten rock."
|
||||
icon_state = "ash_plating"
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF
|
||||
require_module = TRUE
|
||||
module_type = /obj/item/robot_module/miner
|
||||
|
||||
/obj/item/borg/upgrade/lavaproof/action(mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
return
|
||||
if(istype(R))
|
||||
R.weather_immunities += "lava"
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/selfrepair
|
||||
name = "self-repair module"
|
||||
desc = "This module will repair the cyborg over time."
|
||||
icon_state = "cyborg_upgrade5"
|
||||
require_module = 1
|
||||
require_module = TRUE
|
||||
var/repair_amount = -1
|
||||
var/repair_tick = 1
|
||||
var/msg_cooldown = 0
|
||||
@@ -230,7 +241,7 @@
|
||||
icon_state = "selfrepair_off"
|
||||
var/datum/action/A = new /datum/action/item_action/toggle(src)
|
||||
A.Grant(R)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/selfrepair/Destroy()
|
||||
cyborg = null
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
E.heal_damage(0, remheal, 0, 1) //Healing Burn
|
||||
remheal = nremheal
|
||||
user.visible_message("<span class='notice'>\The [user] applies some nanite paste at \the [M]'s [E.name] with \the [src].</span>")
|
||||
if(H.bleed_rate && H.isSynthetic())
|
||||
if(H.bleed_rate && ismachineperson(H))
|
||||
H.bleed_rate = 0
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Nothing to fix here.</span>")
|
||||
|
||||
@@ -1408,6 +1408,7 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
name = "xenomorph action figure"
|
||||
desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
bubble_icon = "alien"
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/toy/toy_xeno/attack_self(mob/user)
|
||||
@@ -1416,7 +1417,7 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
user.visible_message("<span class='notice'>[user] pulls back the string on [src].</span>")
|
||||
icon_state = "[initial(icon_state)]_used"
|
||||
sleep(5)
|
||||
audible_message("<span class='danger'>[bicon(src)] Hiss!</span>")
|
||||
atom_say("Hiss!")
|
||||
var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg')
|
||||
playsound(get_turf(src), pick(possible_sounds), 50, 1)
|
||||
spawn(45)
|
||||
|
||||
@@ -477,9 +477,7 @@ GLOBAL_LIST_INIT(rcd_door_types, list(
|
||||
return R.cell.charge >= (amount * use_multiplier)
|
||||
|
||||
/obj/item/rcd/proc/detonate_pulse()
|
||||
audible_message("<span class='danger'><b>[src] begins to vibrate and \
|
||||
buzz loudly!</b></span>","<span class='danger'><b>[src] begins \
|
||||
vibrating violently!</b></span>")
|
||||
audible_message("<span class='danger'><b>[src] begins to vibrate and buzz loudly!</b></span>", "<span class='danger'><b>[src] begins vibrating violently!</b></span>")
|
||||
// 5 seconds to get rid of it
|
||||
addtimer(CALLBACK(src, .proc/detonate_pulse_explode), 50)
|
||||
|
||||
|
||||
@@ -147,10 +147,6 @@
|
||||
to_chat(user, "<span class='notice'>You inject yourself with [src].</span>")
|
||||
|
||||
add_attack_logs(user, M, attack_log, ATKLOG_ALL)
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
|
||||
inject(M, user)
|
||||
used = TRUE
|
||||
|
||||
@@ -189,8 +189,8 @@
|
||||
L.apply_effect(STUTTER, stunforce)
|
||||
|
||||
if(user)
|
||||
user.lastattacked = L
|
||||
L.lastattacker = user
|
||||
L.lastattacker = user.real_name
|
||||
L.lastattackerckey = user.ckey
|
||||
L.visible_message("<span class='danger'>[user] has stunned [L] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] has stunned you with [src]!</span>")
|
||||
add_attack_logs(user, L, "stunned")
|
||||
|
||||
@@ -347,6 +347,7 @@ a {
|
||||
.["Make speed process"] = "?_src_=vars;makespeedy=[UID()]"
|
||||
else
|
||||
.["Make normal process"] = "?_src_=vars;makenormalspeed=[UID()]"
|
||||
.["Modify armor values"] = "?_src_=vars;modifyarmor=[UID()]"
|
||||
|
||||
/obj/proc/check_uplink_validity()
|
||||
return TRUE
|
||||
|
||||
@@ -115,6 +115,8 @@
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/big(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/big(src)
|
||||
new /obj/item/clothing/accessory/lawyers_badge(src)
|
||||
new /obj/item/clothing/accessory/lawyers_badge(src)
|
||||
|
||||
//Paramedic
|
||||
|
||||
|
||||
@@ -466,3 +466,4 @@
|
||||
new /obj/item/gavelhammer(src)
|
||||
new /obj/item/clothing/head/justice_wig(src)
|
||||
new /obj/item/clothing/accessory/medal/legal(src)
|
||||
new /obj/item/clothing/accessory/lawyers_badge(src)
|
||||
|
||||
@@ -403,75 +403,7 @@
|
||||
L.ExtinguishMob()
|
||||
L.adjust_fire_stacks(-20) //Douse ourselves with water to avoid fire more easily
|
||||
to_chat(L, "<span class='warning'>You've been drenched in water!</span>")
|
||||
if(iscarbon(O))
|
||||
var/mob/living/carbon/M = O
|
||||
if(M.r_hand)
|
||||
M.r_hand.clean_blood()
|
||||
if(M.l_hand)
|
||||
M.l_hand.clean_blood()
|
||||
if(M.back)
|
||||
if(M.back.clean_blood())
|
||||
M.update_inv_back()
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/washgloves = 1
|
||||
var/washshoes = 1
|
||||
var/washmask = 1
|
||||
var/washears = 1
|
||||
var/washglasses = 1
|
||||
|
||||
if(H.wear_suit)
|
||||
washgloves = !(H.wear_suit.flags_inv & HIDEGLOVES)
|
||||
washshoes = !(H.wear_suit.flags_inv & HIDESHOES)
|
||||
|
||||
if(H.head)
|
||||
washmask = !(H.head.flags_inv & HIDEMASK)
|
||||
washglasses = !(H.head.flags_inv & HIDEEYES)
|
||||
washears = !(H.head.flags_inv & HIDEEARS)
|
||||
|
||||
if(H.wear_mask)
|
||||
if(washears)
|
||||
washears = !(H.wear_mask.flags_inv & HIDEEARS)
|
||||
if(washglasses)
|
||||
washglasses = !(H.wear_mask.flags_inv & HIDEEYES)
|
||||
|
||||
if(H.head)
|
||||
if(H.head.clean_blood())
|
||||
H.update_inv_head()
|
||||
if(H.wear_suit)
|
||||
if(H.wear_suit.clean_blood())
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.w_uniform)
|
||||
if(H.w_uniform.clean_blood())
|
||||
H.update_inv_w_uniform()
|
||||
if(H.gloves && washgloves)
|
||||
if(H.gloves.clean_blood())
|
||||
H.update_inv_gloves()
|
||||
if(H.shoes && washshoes)
|
||||
if(H.shoes.clean_blood())
|
||||
H.update_inv_shoes()
|
||||
if(H.wear_mask && washmask)
|
||||
if(H.wear_mask.clean_blood())
|
||||
H.update_inv_wear_mask()
|
||||
if(H.glasses && washglasses)
|
||||
if(H.glasses.clean_blood())
|
||||
H.update_inv_glasses()
|
||||
if(H.l_ear && washears)
|
||||
if(H.l_ear.clean_blood())
|
||||
H.update_inv_ears()
|
||||
if(H.r_ear && washears)
|
||||
if(H.r_ear.clean_blood())
|
||||
H.update_inv_ears()
|
||||
if(H.belt)
|
||||
if(H.belt.clean_blood())
|
||||
H.update_inv_belt()
|
||||
else
|
||||
if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags
|
||||
if(M.wear_mask.clean_blood())
|
||||
M.update_inv_wear_mask()
|
||||
|
||||
else
|
||||
O.clean_blood()
|
||||
L.clean_blood()
|
||||
|
||||
if(isturf(loc))
|
||||
var/turf/tile = loc
|
||||
|
||||
@@ -8,12 +8,6 @@
|
||||
nitrogen = MOLES_N2STANDARD
|
||||
var/to_be_destroyed = 0 //Used for fire, if a melting temperature was reached, it will be destroyed
|
||||
var/max_fire_temperature_sustained = 0 //The max temperature of the fire which it was subjected to
|
||||
var/dirtoverlay = null
|
||||
|
||||
/turf/simulated/New()
|
||||
..()
|
||||
levelupdate()
|
||||
visibilityChanged()
|
||||
|
||||
/turf/simulated/proc/break_tile()
|
||||
return
|
||||
|
||||
@@ -31,8 +31,8 @@ GLOBAL_LIST_INIT(icons_to_ignore_at_floor_init, list("damaged1","damaged2","dama
|
||||
var/list/burnt_states = list("floorscorched1", "floorscorched2")
|
||||
var/list/prying_tool_list = list(TOOL_CROWBAR) //What tool/s can we use to pry up the tile?
|
||||
|
||||
/turf/simulated/floor/New()
|
||||
..()
|
||||
/turf/simulated/floor/Initialize(mapload)
|
||||
. = ..()
|
||||
if(icon_state in GLOB.icons_to_ignore_at_floor_init) //so damaged/burned tiles or plating icons aren't saved as the default
|
||||
icon_regular_floor = "floor"
|
||||
else
|
||||
|
||||
@@ -49,9 +49,9 @@
|
||||
floor_tile = /obj/item/stack/tile/grass
|
||||
broken_states = list("sand")
|
||||
|
||||
/turf/simulated/floor/grass/Initialize()
|
||||
/turf/simulated/floor/grass/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/grass/update_icon()
|
||||
icon_state = "grass[pick("1","2","3","4")]"
|
||||
@@ -80,10 +80,9 @@
|
||||
)
|
||||
|
||||
|
||||
/turf/simulated/floor/carpet/New()
|
||||
..()
|
||||
if(broken || burnt)
|
||||
make_plating()
|
||||
/turf/simulated/floor/carpet/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/turf/simulated/floor/carpet/update_icon()
|
||||
if(!..())
|
||||
@@ -119,18 +118,18 @@
|
||||
broken_states = list("damaged")
|
||||
plane = PLANE_SPACE
|
||||
|
||||
/turf/simulated/floor/fakespace/New()
|
||||
..()
|
||||
icon_state = "[rand(0,25)]"
|
||||
|
||||
/turf/simulated/floor/carpet/arcade
|
||||
icon = 'icons/goonstation/turf/floor.dmi'
|
||||
icon_state = "arcade"
|
||||
floor_tile = /obj/item/stack/tile/arcade_carpet
|
||||
smooth = SMOOTH_FALSE
|
||||
/turf/simulated/floor/fakespace/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = SPACE_ICON_STATE
|
||||
|
||||
/turf/simulated/floor/fakespace/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
|
||||
underlay_appearance.icon = 'icons/turf/space.dmi'
|
||||
underlay_appearance.icon_state = SPACE_ICON_STATE
|
||||
underlay_appearance.plane = PLANE_SPACE
|
||||
return TRUE
|
||||
|
||||
/turf/simulated/floor/carpet/arcade
|
||||
icon = 'icons/goonstation/turf/floor.dmi'
|
||||
icon_state = "arcade"
|
||||
floor_tile = /obj/item/stack/tile/arcade_carpet
|
||||
smooth = SMOOTH_FALSE
|
||||
|
||||
@@ -8,9 +8,6 @@
|
||||
light_power = 0.75
|
||||
light_color = LIGHT_COLOR_LAVA
|
||||
|
||||
/turf/simulated/floor/plating/lava/New()
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/plating/lava/ex_act()
|
||||
return
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
var/state = LIGHTFLOOR_ON
|
||||
var/can_modify_colour = TRUE
|
||||
|
||||
/turf/simulated/floor/light/New()
|
||||
..()
|
||||
/turf/simulated/floor/light/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/turf/simulated/floor/light/update_icon()
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
icon_state = ""
|
||||
var/list/icons = list()
|
||||
|
||||
/turf/simulated/floor/mineral/New()
|
||||
..()
|
||||
/turf/simulated/floor/mineral/Initialize(mapload)
|
||||
. = ..()
|
||||
broken_states = list("[initial(icon_state)]_dam")
|
||||
|
||||
/turf/simulated/floor/mineral/update_icon()
|
||||
@@ -97,24 +97,24 @@
|
||||
broken_states = list("titanium_dam1","titanium_dam2","titanium_dam3","titanium_dam4","titanium_dam5")
|
||||
|
||||
/turf/simulated/floor/mineral/titanium/airless
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/floor/mineral/titanium/blue
|
||||
icon_state = "titanium_blue"
|
||||
|
||||
/turf/simulated/floor/mineral/titanium/blue/airless
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/floor/mineral/titanium/yellow
|
||||
icon_state = "titanium_yellow"
|
||||
|
||||
/turf/simulated/floor/mineral/titanium/yellow/airless
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/floor/mineral/titanium/purple
|
||||
@@ -122,8 +122,8 @@
|
||||
floor_tile = /obj/item/stack/tile/mineral/titanium/purple
|
||||
|
||||
/turf/simulated/floor/mineral/titanium/purple/airless
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
//PLASTITANIUM (syndieshuttle)
|
||||
@@ -137,8 +137,8 @@
|
||||
icon_state = "plastitanium_red"
|
||||
|
||||
/turf/simulated/floor/mineral/plastitanium/red/airless
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/floor/mineral/plastitanium/red/brig
|
||||
@@ -179,8 +179,8 @@
|
||||
spam_flag = world.time + 10
|
||||
|
||||
/turf/simulated/floor/mineral/bananium/airless
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
|
||||
@@ -254,8 +254,8 @@
|
||||
floor_tile = /obj/item/stack/tile/mineral/abductor
|
||||
icons = list("alienpod1", "alienpod2", "alienpod3", "alienpod4", "alienpod5", "alienpod6", "alienpod7", "alienpod8", "alienpod9")
|
||||
|
||||
/turf/simulated/floor/mineral/abductor/New()
|
||||
..()
|
||||
/turf/simulated/floor/mineral/abductor/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "alienpod[rand(1,9)]"
|
||||
|
||||
/turf/simulated/floor/mineral/abductor/break_tile()
|
||||
|
||||
@@ -3,19 +3,11 @@
|
||||
icon_state = "rockvault"
|
||||
smooth = SMOOTH_FALSE
|
||||
|
||||
/turf/simulated/floor/vault/New(location, vtype)
|
||||
..()
|
||||
icon_state = "[vtype]vault"
|
||||
|
||||
/turf/simulated/wall/vault
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "rockvault"
|
||||
smooth = SMOOTH_FALSE
|
||||
|
||||
/turf/simulated/wall/vault/New(location, vtype)
|
||||
..()
|
||||
icon_state = "[vtype]vault"
|
||||
|
||||
/turf/simulated/floor/bluegrid
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "bcircuit"
|
||||
@@ -35,12 +27,12 @@
|
||||
/turf/simulated/floor/greengrid/airless
|
||||
icon_state = "gcircuit"
|
||||
name = "airless floor"
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/floor/greengrid/airless/New()
|
||||
..()
|
||||
/turf/simulated/floor/greengrid/airless/Initialize(mapload)
|
||||
. = ..()
|
||||
name = "floor"
|
||||
|
||||
/turf/simulated/floor/redgrid
|
||||
@@ -78,8 +70,8 @@
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
var/obj/machinery/poolcontroller/linkedcontroller = null
|
||||
|
||||
/turf/simulated/floor/beach/water/New()
|
||||
..()
|
||||
/turf/simulated/floor/beach/water/Initialize(mapload)
|
||||
. = ..()
|
||||
var/image/overlay_image = image('icons/misc/beach.dmi', icon_state = "water5", layer = ABOVE_MOB_LAYER)
|
||||
overlay_image.plane = GAME_PLANE
|
||||
overlays += overlay_image
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
|
||||
/turf/simulated/floor/plasteel/airless
|
||||
name = "airless floor"
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/floor/plasteel/airless/New()
|
||||
..()
|
||||
/turf/simulated/floor/plasteel/airless/Initialize(mapload)
|
||||
. = ..()
|
||||
name = "floor"
|
||||
|
||||
/turf/simulated/floor/plasteel/airless/indestructible // For bomb testing range
|
||||
|
||||
@@ -14,17 +14,17 @@
|
||||
"xeno" = list('sound/effects/footstep/plating_xeno.ogg')
|
||||
)
|
||||
|
||||
/turf/simulated/floor/plating/New()
|
||||
..()
|
||||
/turf/simulated/floor/plating/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_plating = icon_state
|
||||
update_icon()
|
||||
|
||||
/turf/simulated/floor/plating/damaged/New()
|
||||
..()
|
||||
/turf/simulated/floor/plating/damaged/Initialize(mapload)
|
||||
. = ..()
|
||||
break_tile()
|
||||
|
||||
/turf/simulated/floor/plating/burnt/New()
|
||||
..()
|
||||
/turf/simulated/floor/plating/burnt/Initialize(mapload)
|
||||
. = ..()
|
||||
burn_tile()
|
||||
|
||||
/turf/simulated/floor/plating/update_icon()
|
||||
@@ -113,12 +113,12 @@
|
||||
/turf/simulated/floor/plating/airless
|
||||
icon_state = "plating"
|
||||
name = "airless plating"
|
||||
oxygen = 0.01
|
||||
nitrogen = 0.01
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/floor/plating/airless/New()
|
||||
..()
|
||||
/turf/simulated/floor/plating/airless/Initialize(mapload)
|
||||
. = ..()
|
||||
name = "plating"
|
||||
|
||||
/turf/simulated/floor/engine
|
||||
@@ -190,8 +190,8 @@
|
||||
name = "engraved floor"
|
||||
icon_state = "cult"
|
||||
|
||||
/turf/simulated/floor/engine/cult/New()
|
||||
..()
|
||||
/turf/simulated/floor/engine/cult/Initialize(mapload)
|
||||
. = ..()
|
||||
if(SSticker.mode)//only do this if the round is going..otherwise..fucking asteroid..
|
||||
icon_state = SSticker.cultdat.cult_floor_icon_state
|
||||
|
||||
@@ -275,8 +275,8 @@
|
||||
icon = 'icons/turf/floors/ironsand.dmi'
|
||||
icon_state = "ironsand1"
|
||||
|
||||
/turf/simulated/floor/plating/ironsand/New()
|
||||
..()
|
||||
/turf/simulated/floor/plating/ironsand/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "ironsand[rand(1,15)]"
|
||||
|
||||
/turf/simulated/floor/plating/ironsand/remove_plating()
|
||||
@@ -359,8 +359,8 @@
|
||||
name = "alien floor"
|
||||
icon_state = "alienpod1"
|
||||
|
||||
/turf/simulated/floor/plating/abductor/New()
|
||||
..()
|
||||
/turf/simulated/floor/plating/abductor/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "alienpod[rand(1,9)]"
|
||||
|
||||
/turf/simulated/floor/plating/ice
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
sheet_amount = 1
|
||||
girder_type = /obj/structure/girder/cult
|
||||
|
||||
/turf/simulated/wall/cult/New()
|
||||
..()
|
||||
/turf/simulated/wall/cult/Initialize(mapload)
|
||||
. = ..()
|
||||
if(SSticker.mode)//game hasn't started offically don't do shit..
|
||||
new /obj/effect/temp_visual/cult/turf(src)
|
||||
icon_state = SSticker.cultdat.cult_wall_icon_state
|
||||
@@ -72,10 +72,7 @@
|
||||
realappearance.linked = src
|
||||
|
||||
/turf/simulated/wall/clockwork/Destroy()
|
||||
if(realappearance)
|
||||
qdel(realappearance)
|
||||
realappearance = null
|
||||
|
||||
QDEL_NULL(realappearance)
|
||||
return ..()
|
||||
|
||||
/turf/simulated/wall/clockwork/ReplaceWithLattice()
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
/turf/space/Initialize(mapload)
|
||||
if(!istype(src, /turf/space/transit))
|
||||
icon_state = SPACE_ICON_STATE
|
||||
vis_contents.Cut() //removes inherited overlays
|
||||
|
||||
if(initialized)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
initialized = TRUE
|
||||
|
||||
var/area/A = loc
|
||||
if(!IS_DYNAMIC_LIGHTING(src) && IS_DYNAMIC_LIGHTING(A))
|
||||
@@ -34,12 +39,6 @@
|
||||
|
||||
return INITIALIZE_HINT_NORMAL
|
||||
|
||||
/turf/space/Destroy(force)
|
||||
if(force)
|
||||
. = ..()
|
||||
else
|
||||
return QDEL_HINT_LETMELIVE
|
||||
|
||||
/turf/space/BeforeChange()
|
||||
..()
|
||||
var/datum/space_level/S = GLOB.space_manager.get_zlev(z)
|
||||
|
||||
@@ -125,9 +125,9 @@
|
||||
/turf/space/transit/attackby()
|
||||
return
|
||||
|
||||
/turf/space/transit/New()
|
||||
/turf/space/transit/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/turf/space/transit/proc/update_icon()
|
||||
var/p = 9
|
||||
|
||||
+44
-25
@@ -31,21 +31,29 @@
|
||||
|
||||
var/image/obscured //camerachunks
|
||||
|
||||
var/changing_turf = FALSE
|
||||
|
||||
var/list/blueprint_data //for the station blueprints, images of objects eg: pipes
|
||||
|
||||
var/list/footstep_sounds
|
||||
var/shoe_running_volume = 50
|
||||
var/shoe_walking_volume = 20
|
||||
|
||||
/turf/New()
|
||||
..()
|
||||
/turf/Initialize(mapload)
|
||||
if(initialized)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
initialized = TRUE
|
||||
|
||||
// by default, vis_contents is inherited from the turf that was here before
|
||||
vis_contents.Cut()
|
||||
|
||||
levelupdate()
|
||||
if(smooth)
|
||||
queue_smooth(src)
|
||||
visibilityChanged()
|
||||
|
||||
for(var/atom/movable/AM in src)
|
||||
Entered(AM)
|
||||
if(smooth && SSticker && SSticker.current_state == GAME_STATE_PLAYING)
|
||||
queue_smooth(src)
|
||||
|
||||
/turf/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
var/area/A = loc
|
||||
if(!IS_DYNAMIC_LIGHTING(src) && IS_DYNAMIC_LIGHTING(A))
|
||||
@@ -54,19 +62,34 @@
|
||||
if(light_power && light_range)
|
||||
update_light()
|
||||
|
||||
if (opacity)
|
||||
if(opacity)
|
||||
has_opaque_atom = TRUE
|
||||
|
||||
/turf/Destroy()
|
||||
// Adds the adjacent turfs to the current atmos processing
|
||||
if(SSair)
|
||||
for(var/direction in GLOB.cardinal)
|
||||
if(atmos_adjacent_turfs & direction)
|
||||
var/turf/simulated/T = get_step(src, direction)
|
||||
if(istype(T))
|
||||
SSair.add_to_active(T)
|
||||
return INITIALIZE_HINT_NORMAL
|
||||
|
||||
/turf/Destroy(force)
|
||||
. = QDEL_HINT_IWILLGC
|
||||
if(!changing_turf)
|
||||
stack_trace("Incorrect turf deletion")
|
||||
changing_turf = FALSE
|
||||
if(force)
|
||||
..()
|
||||
//this will completely wipe turf state
|
||||
var/turf/B = new world.turf(src)
|
||||
for(var/A in B.contents)
|
||||
qdel(A)
|
||||
return
|
||||
// Adds the adjacent turfs to the current atmos processing
|
||||
for(var/direction in GLOB.cardinal)
|
||||
if(atmos_adjacent_turfs & direction)
|
||||
var/turf/simulated/T = get_step(src, direction)
|
||||
if(istype(T))
|
||||
SSair.add_to_active(T)
|
||||
SSair.remove_from_active(src)
|
||||
visibilityChanged()
|
||||
QDEL_LIST(blueprint_data)
|
||||
initialized = FALSE
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
/turf/attack_hand(mob/user as mob)
|
||||
user.Move_Pulled(src)
|
||||
@@ -196,10 +219,10 @@
|
||||
var/old_corners = corners
|
||||
|
||||
BeforeChange()
|
||||
if(SSair)
|
||||
SSair.remove_from_active(src)
|
||||
|
||||
var/old_baseturf = baseturf
|
||||
changing_turf = TRUE
|
||||
qdel(src) //Just get the side effects and call Destroy
|
||||
var/turf/W = new path(src)
|
||||
W.baseturf = old_baseturf
|
||||
|
||||
@@ -212,7 +235,6 @@
|
||||
if(SSlighting.initialized)
|
||||
recalc_atom_opacity()
|
||||
lighting_object = old_lighting_object
|
||||
|
||||
affecting_lights = old_affecting_lights
|
||||
corners = old_corners
|
||||
if(old_opacity != opacity || dynamic_lighting != old_dynamic_lighting)
|
||||
@@ -511,12 +533,9 @@
|
||||
I.appearance = AM.appearance
|
||||
I.appearance_flags = RESET_COLOR|RESET_ALPHA|RESET_TRANSFORM
|
||||
I.loc = src
|
||||
I.dir = AM.dir
|
||||
I.setDir(AM.dir)
|
||||
I.alpha = 128
|
||||
|
||||
if(!blueprint_data)
|
||||
blueprint_data = list()
|
||||
blueprint_data += I
|
||||
LAZYADD(blueprint_data, I)
|
||||
|
||||
/turf/proc/add_blueprints_preround(atom/movable/AM)
|
||||
if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING)
|
||||
|
||||
@@ -40,6 +40,6 @@
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/unsimulated/floor/plating/airless/New()
|
||||
..()
|
||||
/turf/unsimulated/floor/plating/airless/Initialize(mapload)
|
||||
. = ..()
|
||||
name = "plating"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
icon = 'icons/misc/beach.dmi'
|
||||
var/water_overlay_image = null
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
/turf/unsimulated/beach/New()
|
||||
..()
|
||||
|
||||
/turf/unsimulated/beach/Initialize(mapload)
|
||||
. = ..()
|
||||
if(water_overlay_image)
|
||||
var/image/overlay_image = image('icons/misc/beach.dmi', icon_state = water_overlay_image, layer = ABOVE_MOB_LAYER)
|
||||
overlay_image.plane = GAME_PLANE
|
||||
@@ -15,10 +15,10 @@
|
||||
name = "Sand"
|
||||
icon_state = "desert"
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
|
||||
/turf/unsimulated/beach/sand/New() //adds some aesthetic randomness to the beach sand
|
||||
|
||||
/turf/unsimulated/beach/sand/Initialize(mapload)
|
||||
. = ..() //adds some aesthetic randomness to the beach sand
|
||||
icon_state = pick("desert", "desert0", "desert1", "desert2", "desert3", "desert4")
|
||||
..()
|
||||
|
||||
/turf/unsimulated/beach/sand/dense //for boundary "walls"
|
||||
density = 1
|
||||
@@ -42,7 +42,7 @@
|
||||
/turf/unsimulated/beach/water/Entered(atom/movable/AM, atom/OldLoc)
|
||||
. = ..()
|
||||
if(!linkedcontroller)
|
||||
return
|
||||
return
|
||||
if(ismob(AM))
|
||||
linkedcontroller.mobinpool += AM
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
/turf/unsimulated/beach/water/edge_drop)
|
||||
var/obj/effect/beach_drop_overlay/water_overlay
|
||||
|
||||
/turf/unsimulated/beach/water/drop/New()
|
||||
..()
|
||||
/turf/unsimulated/beach/water/drop/Initialize(mapload)
|
||||
. = ..()
|
||||
water_overlay = new(src)
|
||||
|
||||
/turf/unsimulated/beach/water/drop/Destroy()
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
name = "grass patch"
|
||||
icon_state = "grass1"
|
||||
|
||||
/turf/unsimulated/floor/grass/New()
|
||||
..()
|
||||
/turf/unsimulated/floor/grass/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "grass[rand(1,4)]"
|
||||
|
||||
/turf/unsimulated/floor/snow
|
||||
@@ -20,8 +20,8 @@
|
||||
name = "alien floor"
|
||||
icon_state = "alienpod1"
|
||||
|
||||
/turf/unsimulated/floor/abductor/New()
|
||||
..()
|
||||
/turf/unsimulated/floor/abductor/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "alienpod[rand(1,9)]"
|
||||
|
||||
/turf/unsimulated/floor/vox
|
||||
|
||||
@@ -426,10 +426,12 @@ GLOBAL_VAR_INIT(failed_old_db_connections, 0)
|
||||
GLOB.world_runtime_log = "[GLOB.log_directory]/runtime.log"
|
||||
GLOB.world_qdel_log = "[GLOB.log_directory]/qdel.log"
|
||||
GLOB.world_asset_log = "[GLOB.log_directory]/asset.log"
|
||||
GLOB.tgui_log = "[GLOB.log_directory]/tgui.log"
|
||||
start_log(GLOB.world_game_log)
|
||||
start_log(GLOB.world_href_log)
|
||||
start_log(GLOB.world_runtime_log)
|
||||
start_log(GLOB.world_qdel_log)
|
||||
start_log(GLOB.tgui_log)
|
||||
|
||||
// This log follows a special format and this path should NOT be used for anything else
|
||||
GLOB.runtime_summary_log = "data/logs/runtime_summary.log"
|
||||
|
||||
Reference in New Issue
Block a user