mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-03-30
# Conflicts: # .travis.yml # code/ATMOSPHERICS/components/unary/outlet_injector.dm # code/__defines/_planes+layers.dm # code/__defines/chemistry.dm # code/__defines/mobs.dm # code/_helpers/mobs.dm # code/_onclick/hud/robot.dm # code/game/area/areas.dm # code/game/machinery/computer/supply.dm # code/game/machinery/cryopod.dm # code/game/machinery/doors/airlock.dm # code/game/objects/items/devices/communicator/UI.dm # code/game/objects/items/devices/communicator/messaging.dm # code/game/sound.dm # code/game/supplyshuttle.dm # code/game/turfs/flooring/flooring_decals.dm # code/modules/admin/admin.dm # code/modules/client/preference_setup/occupation/occupation.dm # code/modules/events/event_container.dm # code/modules/mob/dead/observer/observer.dm # code/modules/mob/language/language.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_powers.dm # code/modules/mob/living/carbon/human/life.dm # code/modules/mob/living/carbon/human/species/species_shapeshift.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_powers.dm # code/modules/mob/living/say.dm # code/modules/mob/living/simple_animal/animals/bear.dm # code/modules/mob/living/simple_animal/animals/cat.dm # code/modules/mob/living/simple_animal/animals/parrot.dm # code/modules/mob/logout.dm # code/modules/mob/mob_helpers.dm # code/modules/organs/organ.dm # code/modules/organs/organ_icon.dm # code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm # code/modules/reagents/reagent_containers/syringes.dm # code/modules/shuttles/shuttle.dm # html/changelogs/.all_changelog.yml # maps/RandomZLevels/wildwest.dm # maps/southern_cross/items/clothing/sc_head.dm # maps/southern_cross/southern_cross-1.dmm # vorestation.dme
This commit is contained in:
@@ -17,7 +17,8 @@ Pipelines + Other Objects -> Pipe network
|
||||
var/nodealert = 0
|
||||
var/power_rating //the maximum amount of power the machine can use to do work, affects how powerful the machine is, in Watts
|
||||
|
||||
layer = 2.4 //under wires with their 2.44
|
||||
layer = PIPES_LAYER
|
||||
plane = PLATING_PLANE
|
||||
|
||||
var/pipe_flags = PIPING_DEFAULT_LAYER_ONLY // Allow other layers by exception basis.
|
||||
var/connect_types = CONNECT_TYPE_REGULAR
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
icon = 'icons/atmos/injector.dmi'
|
||||
icon_state = "map_injector"
|
||||
pipe_state = "injector"
|
||||
layer = 3
|
||||
|
||||
name = "air injector"
|
||||
desc = "Passively injects air into its surroundings. Has a valve attached to it that can control flow rate."
|
||||
|
||||
@@ -34,7 +34,8 @@ obj/machinery/atmospherics/pipe/mains_component
|
||||
|
||||
obj/machinery/atmospherics/mains_pipe
|
||||
icon = 'icons/obj/atmospherics/mainspipe.dmi'
|
||||
layer = 2.4 //under wires with their 2.5
|
||||
layer = PIPES_LAYER
|
||||
plane = PLATING_PLANE
|
||||
|
||||
var/volume = 0
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
icon = 'icons/atmos/pipes.dmi'
|
||||
icon_state = ""
|
||||
level = 2
|
||||
layer = 2.4 //under wires with their 2.44
|
||||
|
||||
volume = 35
|
||||
|
||||
|
||||
@@ -40,39 +40,73 @@ What is the naming convention for planes or layers?
|
||||
|
||||
*/
|
||||
|
||||
#define SPACE_PLANE -32 // Reserved for use in space/parallax
|
||||
#define PARALLAX_PLANE -30 // Reserved for use in space/parallax
|
||||
#define PLANE_ADMIN1 -92 //Purely for shenanigans
|
||||
#define PLANE_ADMIN2 -91 //And adminbuse
|
||||
#define PLANE_ADMIN3 -90 //And generating salt
|
||||
|
||||
#define SPACE_PLANE -82 // Reserved for use in space/parallax
|
||||
#define PARALLAX_PLANE -80 // Reserved for use in space/parallax
|
||||
|
||||
// OPENSPACE_PLANE reserves all planes between OPENSPACE_PLANE_START and OPENSPACE_PLANE_END inclusive
|
||||
#define OPENSPACE_PLANE -55 // /turf/simulated/open will use OPENSPACE_PLANE + z (Valid z's being 2 thru 17)
|
||||
#define OPENSPACE_PLANE_START -53
|
||||
#define OPENSPACE_PLANE_END -38
|
||||
#define OVER_OPENSPACE_PLANE -37
|
||||
#define OPENSPACE_PLANE -75 // /turf/simulated/open will use OPENSPACE_PLANE + z (Valid z's being 2 thru 17)
|
||||
#define OPENSPACE_PLANE_START -73
|
||||
#define OPENSPACE_PLANE_END -58
|
||||
#define OVER_OPENSPACE_PLANE -57
|
||||
|
||||
// Turf Planes
|
||||
#define SPACE_PLANE -43 // Space turfs themselves
|
||||
#define PLATING_PLANE -44 // Plating
|
||||
#define DISPOSAL_LAYER 2.1 // Under objects, even when planeswapped
|
||||
#define WIRES_LAYER 2.2 // Under objects, even when planeswapped
|
||||
#define PIPES_LAYER 2.3 // Under objects, even when planeswapped
|
||||
#define ABOVE_UTILITY 2.5 // Above stuff like pipes and wires
|
||||
#define TURF_PLANE -45 // Turfs themselves, most flooring
|
||||
#define ABOVE_TURF_LAYER 2.1 // Snow and such
|
||||
#define DECAL_PLANE -44 // Permanent decals
|
||||
#define DIRTY_PLANE -43 // Nonpermanent decals
|
||||
#define BLOOD_PLANE -42 // Blood is really dirty, but we can do special stuff if we separate it
|
||||
|
||||
// Obj planes
|
||||
#define OBJ_PLANE -35
|
||||
#define HIDING_LAYER 2.6 // Layer at which mobs hide to be under things like tables
|
||||
#define DOOR_OPEN_LAYER 2.7 // Under all objects if opened. 2.7 due to tables being at 2.6
|
||||
#define TABLE_LAYER 2.8 // Just under stuff that wants to be slightly below common objects.
|
||||
#define UNDER_JUNK_LAYER 2.9 // Things that want to be slightly below common objects
|
||||
// Turf/Obj layer boundary
|
||||
#define ABOVE_JUNK_LAYER 3.1 // Things that want to be slightly above common objects
|
||||
#define DOOR_CLOSED_LAYER 3.1 // Doors when closed
|
||||
#define WINDOW_LAYER 3.2 // Windows
|
||||
#define ON_WINDOW_LAYER 3.3 // Ontop of a window
|
||||
#define SHOWER_OPEN_LAYER 3.4 // Showers when open
|
||||
// Obj/Mob layer boundary
|
||||
#define SHOWER_CLOSED_LAYER 4.2 // Should be converted to plane swaps
|
||||
|
||||
// Mob planes
|
||||
#define MOB_PLANE -25
|
||||
#define BELOW_MOB_LAYER 3.9 // Should be converted to plane swaps
|
||||
#define ABOVE_MOB_LAYER 4.1 // Should be converted to plane swaps
|
||||
|
||||
// Top plane (in the sense that it's the highest in 'the world' and not a UI element)
|
||||
#define ABOVE_PLANE -10
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
#define PLANE_WORLD 0 // BYOND's default value for plane, the "base plane"
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//#define AREA_LAYER 1 //For easy recordkeeping; this is a byond define
|
||||
|
||||
//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define
|
||||
#define DECALS_LAYER 2.01
|
||||
#define OVERTURF_LAYER 2.1
|
||||
#define HIDING_LAYER 2.45 //Layer at which mobs hide to be under things like tables
|
||||
#define DOOR_OPEN_LAYER 2.7 //Under all objects if opened. 2.7 due to tables being at 2.6
|
||||
|
||||
//#define OBJ_LAYER 3 //For easy recordkeeping; this is a byond define
|
||||
#define DOOR_CLOSED_LAYER 3.1 //Above most items if closed
|
||||
#define SHOWER_OPEN_LAYER 3.4
|
||||
#define BELOW_MOB_LAYER 3.9
|
||||
|
||||
//#define MOB_LAYER 4 //For easy recordkeeping; this is a byond define
|
||||
#define ABOVE_MOB_LAYER 4.1
|
||||
#define SHOWER_CLOSED_LAYER 4.2
|
||||
|
||||
|
||||
//#define FLY_LAYER 5 //For easy recordkeeping; this is a byond define
|
||||
#define LIGHTING_LAYER 11 //Layer that lighting used to be on (now it's on a plane)
|
||||
#define HUD_LAYER 20 //Above lighting, but below obfuscation. For in-game HUD effects (whereas SCREEN_LAYER is for abstract/OOC things like inventory slots)
|
||||
#define SCREEN_LAYER 22 //Mob HUD/effects layer
|
||||
|
||||
#define PLANE_ADMIN1 3 //Purely for shenanigans (below lighting)
|
||||
|
||||
#define HUD_LAYER 20 // Above lighting, but below obfuscation. For in-game HUD effects (whereas SCREEN_LAYER is for abstract/OOC things like inventory slots)
|
||||
#define SCREEN_LAYER 22 // Mob HUD/effects layer
|
||||
|
||||
#define PLANE_PLANETLIGHTING 4 //Lighting on planets
|
||||
#define PLANE_LIGHTING 5 //Where the lighting (and darkness) lives
|
||||
#define PLANE_LIGHTING_ABOVE 6 //For glowy eyes etc. that shouldn't be affected by darkness
|
||||
|
||||
@@ -93,8 +127,6 @@ What is the naming convention for planes or layers?
|
||||
|
||||
#define PLANE_MESONS 30 //Stuff seen with mesons, like open ceilings. This is 30 for downstreams.
|
||||
|
||||
#define PLANE_ADMIN2 33 //Purely for shenanigans (above lighting)
|
||||
|
||||
//Fullscreen overlays under inventory
|
||||
#define PLANE_FULLSCREEN 90 //Blindness, mesons, druggy, etc
|
||||
#define OBFUSCATION_LAYER 5 //Where images covering the view for eyes are put
|
||||
@@ -111,8 +143,6 @@ What is the naming convention for planes or layers?
|
||||
#define LAYER_HUD_ABOVE 4 //Things that reside above items (highlights)
|
||||
#define PLANE_PLAYER_HUD_ITEMS 96 //Separate layer with which to apply colorblindness
|
||||
|
||||
#define PLANE_ADMIN3 99 //Purely for shenanigans (above HUD)
|
||||
|
||||
|
||||
//////////////////////////
|
||||
/atom/proc/hud_layerise()
|
||||
@@ -125,4 +155,4 @@ What is the naming convention for planes or layers?
|
||||
|
||||
|
||||
// Check if a mob can "logically" see an atom plane
|
||||
#define MOB_CAN_SEE_PLANE(M, P) (P == PLANE_WORLD || (P >= OPENSPACE_PLANE_START && P <= OPENSPACE_PLANE_END) || (P in M.planes_visible))
|
||||
#define MOB_CAN_SEE_PLANE(M, P) (P <= PLANE_WORLD || (P in M.planes_visible))
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define IS_SLIME 8
|
||||
|
||||
#define CE_STABLE "stable" // Inaprovaline
|
||||
#define CE_ANTIBIOTIC "antibiotic" // Spaceacilin
|
||||
#define CE_ANTIBIOTIC "antibiotic" // Antibiotics
|
||||
#define CE_BLOODRESTORE "bloodrestore" // Iron/nutriment
|
||||
#define CE_PAINKILLER "painkiller"
|
||||
#define CE_ALCOHOL "alcohol" // Liver filtering
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
#define REAGENTS_PER_SHEET 20
|
||||
|
||||
// Attached to CE_ANTIBIOTIC
|
||||
#define ANTIBIO_NORM 1
|
||||
#define ANTIBIO_OD 2
|
||||
#define ANTIBIO_SUPER 3
|
||||
|
||||
@@ -88,17 +88,17 @@
|
||||
#define slot_back 3
|
||||
#define slot_belt 4
|
||||
#define slot_wear_id 5
|
||||
#define slot_l_store 6
|
||||
#define slot_r_store 7 //Some things may reference this, try to keep it here
|
||||
#define slot_s_store 6
|
||||
#define slot_l_store 7
|
||||
#define slot_r_store 8 //Some things may reference this, try to keep it here
|
||||
//Shown when inventory unhidden
|
||||
#define slot_glasses 8
|
||||
#define slot_wear_mask 9
|
||||
#define slot_gloves 10
|
||||
#define slot_head 11
|
||||
#define slot_shoes 12
|
||||
#define slot_wear_suit 13
|
||||
#define slot_w_uniform 14
|
||||
#define slot_s_store 15
|
||||
#define slot_glasses 9
|
||||
#define slot_wear_mask 10
|
||||
#define slot_gloves 11
|
||||
#define slot_head 12
|
||||
#define slot_shoes 13
|
||||
#define slot_wear_suit 14
|
||||
#define slot_w_uniform 15
|
||||
#define slot_l_ear 16
|
||||
#define slot_r_ear 17
|
||||
//Secret slots
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources
|
||||
#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone
|
||||
|
||||
//#define LIGHTING_LAYER 10 // drawing layer for lighting overlays
|
||||
#define LIGHTING_ICON 'icons/effects/lighting_overlay.dmi' // icon used for lighting shading effects
|
||||
#define LIGHTING_ICON_STATE_DARK "soft_dark" // Change between "soft_dark" and "dark" to swap soft darkvision
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#define CANPARALYSE 0x4
|
||||
#define CANPUSH 0x8
|
||||
#define LEAPING 0x10
|
||||
#define HIDING 0x20
|
||||
#define HIDING 0x20
|
||||
#define PASSEMOTES 0x40 // Mob has a cortical borer or holders inside of it that need to see emotes.
|
||||
#define GODMODE 0x1000
|
||||
#define FAKEDEATH 0x2000 // Replaces stuff like changeling.changeling_fakedeath.
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
using.icon = 'icons/mob/screen1_alien.dmi'
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.screen_loc = ui_acti
|
||||
using.layer = 20
|
||||
using.layer = HUD_LAYER
|
||||
src.adding += using
|
||||
move_intent = using
|
||||
|
||||
|
||||
@@ -51,7 +51,6 @@ var/list/global_huds = list(
|
||||
|
||||
/obj/screen/global_screen
|
||||
screen_loc = ui_entire_screen
|
||||
layer = 17
|
||||
plane = PLANE_FULLSCREEN
|
||||
mouse_opacity = 0
|
||||
|
||||
@@ -74,7 +73,12 @@ var/list/global_huds = list(
|
||||
darksight.icon = null
|
||||
darksight.screen_loc = "1,1"
|
||||
darksight.plane = PLANE_LIGHTING
|
||||
darksight.plane = LIGHTING_LAYER + 0.1
|
||||
|
||||
//Marks the center of the screen, for things like ventcrawl
|
||||
centermarker = new /obj/screen()
|
||||
centermarker.icon = 'icons/mob/screen1.dmi'
|
||||
centermarker.icon_state = "centermarker"
|
||||
centermarker.screen_loc = "CENTER,CENTER"
|
||||
|
||||
//Marks the center of the screen, for things like ventcrawl
|
||||
centermarker = new /obj/screen()
|
||||
@@ -141,20 +145,17 @@ var/list/global_huds = list(
|
||||
for(i = 1, i <= 4, i++)
|
||||
O = vimpaired[i]
|
||||
O.icon_state = "dither50"
|
||||
O.layer = 17
|
||||
O.plane = PLANE_FULLSCREEN
|
||||
O.mouse_opacity = 0
|
||||
|
||||
O = darkMask[i]
|
||||
O.icon_state = "dither50"
|
||||
O.layer = 17
|
||||
O.plane = PLANE_FULLSCREEN
|
||||
O.mouse_opacity = 0
|
||||
|
||||
for(i = 5, i <= 8, i++)
|
||||
O = darkMask[i]
|
||||
O.icon_state = "black"
|
||||
O.layer = 17
|
||||
O.plane = PLANE_FULLSCREEN
|
||||
O.mouse_opacity = 2
|
||||
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
blobpwrdisplay.name = "blob power"
|
||||
blobpwrdisplay.icon_state = "block"
|
||||
blobpwrdisplay.screen_loc = ui_health
|
||||
blobpwrdisplay.layer = 20
|
||||
blobpwrdisplay.layer = HUD_LAYER
|
||||
|
||||
blobhealthdisplay = new /obj/screen()
|
||||
blobhealthdisplay.name = "blob health"
|
||||
blobhealthdisplay.icon_state = "block"
|
||||
blobhealthdisplay.screen_loc = ui_internal
|
||||
blobhealthdisplay.layer = 20
|
||||
blobhealthdisplay.layer = HUD_LAYER
|
||||
|
||||
mymob.client.screen = list()
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
using.icon = ui_style
|
||||
using.icon_state = "intent_"+mymob.a_intent
|
||||
using.screen_loc = ui_zonesel
|
||||
using.layer = 20
|
||||
using.layer = HUD_LAYER
|
||||
src.adding += using
|
||||
action_intent = using
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
using.name = "help"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_zonesel
|
||||
using.layer = 21
|
||||
using.layer = HUD_LAYER+0.01
|
||||
src.adding += using
|
||||
help_intent = using
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
using.name = "disarm"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_zonesel
|
||||
using.layer = 21
|
||||
using.layer = HUD_LAYER+0.01
|
||||
src.adding += using
|
||||
disarm_intent = using
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
using.name = "grab"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_zonesel
|
||||
using.layer = 21
|
||||
using.layer = HUD_LAYER+0.01
|
||||
src.adding += using
|
||||
grab_intent = using
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
using.name = I_HURT
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_zonesel
|
||||
using.layer = 21
|
||||
using.layer = HUD_LAYER+0.01
|
||||
src.adding += using
|
||||
hurt_intent = using
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ var/obj/screen/robot_inventory
|
||||
using.alpha = ui_alpha
|
||||
using.icon_state = "radio"
|
||||
using.screen_loc = ui_movi
|
||||
using.layer = 20
|
||||
using.layer = HUD_LAYER
|
||||
src.adding += using
|
||||
|
||||
//Module select
|
||||
@@ -43,7 +43,7 @@ var/obj/screen/robot_inventory
|
||||
using.alpha = ui_alpha
|
||||
using.icon_state = "inv1"
|
||||
using.screen_loc = ui_inv1
|
||||
using.layer = 20
|
||||
using.layer = HUD_LAYER
|
||||
src.adding += using
|
||||
mymob:inv1 = using
|
||||
|
||||
@@ -55,7 +55,7 @@ var/obj/screen/robot_inventory
|
||||
using.alpha = ui_alpha
|
||||
using.icon_state = "inv2"
|
||||
using.screen_loc = ui_inv2
|
||||
using.layer = 20
|
||||
using.layer = HUD_LAYER
|
||||
src.adding += using
|
||||
mymob:inv2 = using
|
||||
|
||||
@@ -67,7 +67,7 @@ var/obj/screen/robot_inventory
|
||||
using.alpha = ui_alpha
|
||||
using.icon_state = "inv3"
|
||||
using.screen_loc = ui_inv3
|
||||
using.layer = 20
|
||||
using.layer = HUD_LAYER
|
||||
src.adding += using
|
||||
mymob:inv3 = using
|
||||
|
||||
@@ -81,7 +81,7 @@ var/obj/screen/robot_inventory
|
||||
using.alpha = ui_alpha
|
||||
using.icon_state = mymob.a_intent
|
||||
using.screen_loc = ui_acti
|
||||
using.layer = 20
|
||||
using.layer = HUD_LAYER
|
||||
src.adding += using
|
||||
action_intent = using
|
||||
|
||||
@@ -119,7 +119,7 @@ var/obj/screen/robot_inventory
|
||||
using.icon_state = "panel"
|
||||
using.alpha = ui_alpha
|
||||
using.screen_loc = ui_borg_panel
|
||||
using.layer = 19
|
||||
using.layer = HUD_LAYER-0.01
|
||||
src.adding += using
|
||||
|
||||
//Store
|
||||
@@ -276,6 +276,6 @@ var/obj/screen/robot_inventory
|
||||
r.client.screen -= r.robot_modules_background
|
||||
|
||||
/mob/living/silicon/robot/update_hud()
|
||||
..()
|
||||
if(modtype)
|
||||
hands.icon_state = lowertext(modtype)
|
||||
hands.icon_state = lowertext(modtype)
|
||||
..()
|
||||
@@ -68,7 +68,7 @@ var/const/tk_maxrange = 15
|
||||
flags = NOBLUDGEON
|
||||
//item_state = null
|
||||
w_class = ITEMSIZE_NO_CONTAINER
|
||||
layer = 20
|
||||
layer = HUD_LAYER
|
||||
|
||||
var/last_throw = 0
|
||||
var/atom/movable/focus = null
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
for(last_object in clients)
|
||||
var/client/C = last_object
|
||||
if(C.is_afk(config.kick_inactive MINUTES))
|
||||
if(!istype(C.mob, /mob/observer/dead) && !istype(C.mob, /mob/new_player))
|
||||
to_chat(C,"<span class='warning'>You have been inactive for more than [config.kick_inactive] minute\s and have been disconnected.</span>")
|
||||
var/information
|
||||
to_chat(C,"<span class='warning'>You have been inactive for more than [config.kick_inactive] minute\s and have been disconnected.</span>")
|
||||
var/information
|
||||
|
||||
if(C.mob)
|
||||
if(ishuman(C.mob))
|
||||
var/job
|
||||
var/mob/living/carbon/human/H = C.mob
|
||||
@@ -27,10 +27,10 @@
|
||||
else if(issilicon(C.mob))
|
||||
information = " while a silicon."
|
||||
|
||||
var/adminlinks
|
||||
adminlinks = " (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[C.mob.x];Y=[C.mob.y];Z=[C.mob.z]'>JMP</a>|<A HREF='?_src_=holder;cryoplayer=\ref[C.mob]'>CRYO</a>)"
|
||||
var/adminlinks
|
||||
adminlinks = " (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[C.mob.x];Y=[C.mob.y];Z=[C.mob.z]'>JMP</a>|<A HREF='?_src_=holder;cryoplayer=\ref[C.mob]'>CRYO</a>)"
|
||||
|
||||
log_and_message_admins("being kicked for AFK[information][adminlinks]", C.mob)
|
||||
log_and_message_admins("being kicked for AFK[information][adminlinks]", C.mob)
|
||||
|
||||
qdel(C)
|
||||
qdel(C)
|
||||
SCHECK
|
||||
|
||||
@@ -47,7 +47,8 @@ var/datum/controller/process/planet/planet_controller = null
|
||||
//Weather style needs redrawing
|
||||
if(P.needs_work & PLANET_PROCESS_WEATHER)
|
||||
P.needs_work &= ~PLANET_PROCESS_WEATHER
|
||||
var/image/new_overlay = image(icon = P.weather_holder.current_weather.icon, icon_state = P.weather_holder.current_weather.icon_state, layer = LIGHTING_LAYER - 1)
|
||||
var/image/new_overlay = image(icon = P.weather_holder.current_weather.icon, icon_state = P.weather_holder.current_weather.icon_state)
|
||||
new_overlay.plane = PLANE_PLANETLIGHTING
|
||||
//Redraw weather icons
|
||||
for(var/T in P.planet_floors)
|
||||
var/turf/simulated/turf = T
|
||||
|
||||
@@ -234,7 +234,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
||||
name = "star"
|
||||
var/speed = 10
|
||||
var/direction = SOUTH
|
||||
layer = 2 // TURF_LAYER
|
||||
layer = TURF_LAYER
|
||||
plane = TURF_PLANE
|
||||
|
||||
/obj/effect/bgstar/New()
|
||||
..()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
SUBSYSTEM_DEF(air)
|
||||
name = "Air"
|
||||
init_order = INIT_ORDER_AIR
|
||||
priority = 20
|
||||
priority = 35
|
||||
wait = 2 SECONDS // seconds (We probably can speed this up actually)
|
||||
flags = SS_BACKGROUND // TODO - Should this really be background? It might be important.
|
||||
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
|
||||
|
||||
@@ -14,7 +14,7 @@ SUBSYSTEM_DEF(airflow)
|
||||
wait = 2
|
||||
flags = SS_NO_INIT
|
||||
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
|
||||
priority = 15
|
||||
priority = 30
|
||||
|
||||
var/list/processing = list()
|
||||
var/list/currentrun = list()
|
||||
@@ -47,7 +47,7 @@ SUBSYSTEM_DEF(airflow)
|
||||
continue
|
||||
else if (target.airflow_process_delay)
|
||||
target.airflow_process_delay = 0
|
||||
|
||||
|
||||
target.airflow_speed = min(target.airflow_speed, 15)
|
||||
target.airflow_speed -= vsc.airflow_speed_decay
|
||||
if (!target.airflow_skip_speedcheck)
|
||||
@@ -89,7 +89,7 @@ SUBSYSTEM_DEF(airflow)
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
continue
|
||||
|
||||
|
||||
step_towards(target, target.airflow_dest)
|
||||
var/mob/M = target
|
||||
if (ismob(target) && M.client)
|
||||
@@ -98,7 +98,7 @@ SUBSYSTEM_DEF(airflow)
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
#undef CLEAR_OBJECT
|
||||
#undef CLEAR_OBJECT
|
||||
|
||||
/atom/movable
|
||||
var/tmp/airflow_xo
|
||||
@@ -129,9 +129,9 @@ SUBSYSTEM_DEF(airflow)
|
||||
if (airflow_falloff < 1)
|
||||
airflow_dest = null
|
||||
return FALSE
|
||||
|
||||
airflow_speed = min(max(n * (9 / airflow_falloff), 1), 9)
|
||||
|
||||
|
||||
airflow_speed = min(max(n * (9 / airflow_falloff), 1), 9)
|
||||
|
||||
airflow_od = 0
|
||||
|
||||
if (!density)
|
||||
@@ -154,7 +154,7 @@ SUBSYSTEM_DEF(airflow)
|
||||
/atom/movable/proc/RepelAirflowDest(n)
|
||||
if (!prepare_airflow(n))
|
||||
return
|
||||
|
||||
|
||||
airflow_xo = -(airflow_dest.x - src.x)
|
||||
airflow_yo = -(airflow_dest.y - src.y)
|
||||
|
||||
|
||||
@@ -132,3 +132,9 @@
|
||||
question = "A curious explorer has touched a mysterious rune. \
|
||||
Would you like to play as the creature it summons?"
|
||||
cutoff_number = 1
|
||||
|
||||
/datum/ghost_query/cursedblade
|
||||
role_name = "Cursed Sword"
|
||||
question = "A cursed blade has been discovered by a curious explorer. \
|
||||
Would you like to play as the soul imprisoned within?"
|
||||
cutoff_number = 1
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
name = OUTFIT_JOB_NAME("Medical Doctor")
|
||||
uniform = /obj/item/clothing/under/rank/medical
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
r_pocket = /obj/item/device/healthanalyzer
|
||||
l_hand = /obj/item/weapon/storage/firstaid/regular
|
||||
r_pocket = /obj/item/device/flashlight/pen
|
||||
id_type = /obj/item/weapon/card/id/medical/doctor
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/doctor/emergency_physician
|
||||
@@ -94,7 +94,7 @@
|
||||
uniform = /obj/item/clothing/under/rank/medical/scrubs/black
|
||||
suit = /obj/item/clothing/suit/storage/toggle/fr_jacket
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
l_hand = /obj/item/weapon/storage/firstaid/regular
|
||||
belt = /obj/item/weapon/storage/belt/medical/emt
|
||||
pda_slot = slot_l_store
|
||||
id_type = /obj/item/weapon/card/id/medical/paramedic
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
name = "Arts and Crafts supplies"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/fancy/crayons,
|
||||
/obj/item/weapon/storage/fancy/markers,
|
||||
/obj/item/device/camera,
|
||||
/obj/item/device/camera_film = 2,
|
||||
/obj/item/weapon/storage/photo_album,
|
||||
|
||||
@@ -33,7 +33,9 @@
|
||||
if(!antag_indicator || !other.current || !recipient.current)
|
||||
return
|
||||
var/indicator = (faction_indicator && (other in faction_members)) ? faction_indicator : antag_indicator
|
||||
return image('icons/mob/mob.dmi', loc = other.current, icon_state = indicator, layer = LIGHTING_LAYER+0.1)
|
||||
var/image/returnimage = image('icons/mob/mob.dmi', loc = other.current, icon_state = indicator)
|
||||
returnimage.plane = PLANE_LIGHTING_ABOVE
|
||||
return returnimage
|
||||
|
||||
/datum/antagonist/proc/update_all_icons()
|
||||
if(!antag_indicator)
|
||||
|
||||
@@ -13,82 +13,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/area
|
||||
var/fire = null
|
||||
var/atmos = 1
|
||||
var/atmosalm = 0
|
||||
var/poweralm = 1
|
||||
var/party = null
|
||||
level = null
|
||||
name = "Unknown"
|
||||
icon = 'icons/turf/areas.dmi'
|
||||
icon_state = "unknown"
|
||||
layer = 10
|
||||
luminosity = 0
|
||||
mouse_opacity = 0
|
||||
var/lightswitch = 1
|
||||
|
||||
var/eject = null
|
||||
|
||||
var/debug = 0
|
||||
var/requires_power = 1
|
||||
var/always_unpowered = 0 //this gets overriden to 1 for space in area/New()
|
||||
|
||||
var/power_equip = 1
|
||||
var/power_light = 1
|
||||
var/power_environ = 1
|
||||
var/music = null
|
||||
var/used_equip = 0
|
||||
var/used_light = 0
|
||||
var/used_environ = 0
|
||||
|
||||
var/has_gravity = 1
|
||||
var/obj/machinery/power/apc/apc = null
|
||||
var/no_air = null
|
||||
// var/list/lights // list of all lights on this area
|
||||
var/list/all_doors = null //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area
|
||||
var/firedoors_closed = 0
|
||||
var/list/ambience = 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/forced_ambience = null
|
||||
var/sound_env = STANDARD_STATION
|
||||
var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf
|
||||
|
||||
/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
|
||||
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
|
||||
var/list/teleportlocs = list()
|
||||
|
||||
/hook/startup/proc/setupTeleportLocs()
|
||||
for(var/area/AR in world)
|
||||
if(istype(AR, /area/shuttle) || istype(AR, /area/syndicate_station) || istype(AR, /area/wizard_station)) continue
|
||||
if(teleportlocs.Find(AR.name)) continue
|
||||
var/turf/picked = pick(get_area_turfs(AR.type))
|
||||
if (picked.z in using_map.station_levels)
|
||||
teleportlocs += AR.name
|
||||
teleportlocs[AR.name] = AR
|
||||
|
||||
teleportlocs = sortAssoc(teleportlocs)
|
||||
|
||||
return 1
|
||||
|
||||
var/list/ghostteleportlocs = list()
|
||||
|
||||
/hook/startup/proc/setupGhostTeleportLocs()
|
||||
for(var/area/AR in world)
|
||||
if(ghostteleportlocs.Find(AR.name)) continue
|
||||
if(istype(AR, /area/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome) || istype(AR, /area/shuttle/specops/centcom))
|
||||
ghostteleportlocs += AR.name
|
||||
ghostteleportlocs[AR.name] = AR
|
||||
var/turf/picked = pick(get_area_turfs(AR.type))
|
||||
if (picked.z in using_map.player_levels)
|
||||
ghostteleportlocs += AR.name
|
||||
ghostteleportlocs[AR.name] = AR
|
||||
|
||||
ghostteleportlocs = sortAssoc(ghostteleportlocs)
|
||||
|
||||
return 1
|
||||
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
|
||||
/////////
|
||||
|
||||
@@ -1,15 +1,49 @@
|
||||
// Areas.dm
|
||||
|
||||
|
||||
|
||||
// ===
|
||||
/area
|
||||
var/fire = null
|
||||
var/atmos = 1
|
||||
var/atmosalm = 0
|
||||
var/poweralm = 1
|
||||
var/party = null
|
||||
level = null
|
||||
name = "Unknown"
|
||||
icon = 'icons/turf/areas.dmi'
|
||||
icon_state = "unknown"
|
||||
plane = PLANE_LIGHTING_ABOVE //In case we color them
|
||||
luminosity = 0
|
||||
mouse_opacity = 0
|
||||
var/lightswitch = 1
|
||||
|
||||
var/eject = null
|
||||
|
||||
var/debug = 0
|
||||
var/requires_power = 1
|
||||
var/always_unpowered = 0 //this gets overriden to 1 for space in area/New()
|
||||
|
||||
var/power_equip = 1
|
||||
var/power_light = 1
|
||||
var/power_environ = 1
|
||||
var/music = null
|
||||
var/used_equip = 0
|
||||
var/used_light = 0
|
||||
var/used_environ = 0
|
||||
|
||||
var/has_gravity = 1
|
||||
var/obj/machinery/power/apc/apc = null
|
||||
var/no_air = null
|
||||
// var/list/lights // list of all lights on this area
|
||||
var/list/all_doors = null //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area
|
||||
var/firedoors_closed = 0
|
||||
var/list/ambience = 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/forced_ambience = null
|
||||
var/sound_env = STANDARD_STATION
|
||||
var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf
|
||||
var/global/global_uid = 0
|
||||
var/uid
|
||||
|
||||
/area/New()
|
||||
icon_state = ""
|
||||
layer = 10
|
||||
uid = ++global_uid
|
||||
all_areas += src
|
||||
|
||||
@@ -275,7 +309,7 @@ var/list/mob/living/forced_ambiance_list = new
|
||||
chosen_ambiance = sound(chosen_ambiance, repeat = 1, wait = 0, volume = 25, channel = CHANNEL_AMBIENCE_FORCED)
|
||||
L << chosen_ambiance
|
||||
else
|
||||
L << sound(null, channel = 1)
|
||||
L << sound(null, channel = CHANNEL_AMBIENCE_FORCED)
|
||||
else if(src.ambience.len && prob(35))
|
||||
if((world.time >= L.client.played + 600))
|
||||
var/sound = pick(ambience)
|
||||
@@ -345,3 +379,37 @@ var/list/mob/living/forced_ambiance_list = new
|
||||
|
||||
/area/drop_location()
|
||||
CRASH("Bad op: area/drop_location() called")
|
||||
|
||||
/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
|
||||
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
|
||||
var/list/teleportlocs = list()
|
||||
|
||||
/hook/startup/proc/setupTeleportLocs()
|
||||
for(var/area/AR in world)
|
||||
if(istype(AR, /area/shuttle) || istype(AR, /area/syndicate_station) || istype(AR, /area/wizard_station)) continue
|
||||
if(teleportlocs.Find(AR.name)) continue
|
||||
var/turf/picked = pick(get_area_turfs(AR.type))
|
||||
if (picked.z in using_map.station_levels)
|
||||
teleportlocs += AR.name
|
||||
teleportlocs[AR.name] = AR
|
||||
|
||||
teleportlocs = sortAssoc(teleportlocs)
|
||||
|
||||
return 1
|
||||
|
||||
var/list/ghostteleportlocs = list()
|
||||
|
||||
/hook/startup/proc/setupGhostTeleportLocs()
|
||||
for(var/area/AR in world)
|
||||
if(ghostteleportlocs.Find(AR.name)) continue
|
||||
if(istype(AR, /area/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome) || istype(AR, /area/shuttle/specops/centcom))
|
||||
ghostteleportlocs += AR.name
|
||||
ghostteleportlocs[AR.name] = AR
|
||||
var/turf/picked = pick(get_area_turfs(AR.type))
|
||||
if (picked.z in using_map.player_levels)
|
||||
ghostteleportlocs += AR.name
|
||||
ghostteleportlocs[AR.name] = AR
|
||||
|
||||
ghostteleportlocs = sortAssoc(ghostteleportlocs)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/atom
|
||||
layer = 2
|
||||
layer = TURF_LAYER //This was here when I got here. Why though?
|
||||
var/level = 2
|
||||
var/flags = 0
|
||||
var/list/fingerprints
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/atom/movable
|
||||
layer = 3
|
||||
layer = OBJ_LAYER
|
||||
appearance_flags = TILE_BOUND|PIXEL_SCALE
|
||||
var/last_move = null
|
||||
var/anchored = 0
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
announce=0
|
||||
cause_hell=0
|
||||
|
||||
layer=LIGHTING_LAYER+2 // ITS SO BRIGHT
|
||||
plane = PLANE_LIGHTING_ABOVE // ITS SO BRIGHT
|
||||
|
||||
consume_range = 6
|
||||
|
||||
@@ -79,7 +79,8 @@
|
||||
var/turf/T_mob = get_turf(src)
|
||||
if((R.z == T_mob.z) && (get_dist(R,T_mob) <= (R.consume_range+10)) && !(R in view(T_mob)))
|
||||
if(!riftimage)
|
||||
riftimage = image('icons/obj/rift.dmi',T_mob,"rift",LIGHTING_LAYER+2,1)
|
||||
riftimage = image('icons/obj/rift.dmi',T_mob,"rift",1,1)
|
||||
riftimage.plane = PLANE_LIGHTING_ABOVE
|
||||
riftimage.mouse_opacity = 0
|
||||
|
||||
var/new_x = 32 * (R.x - T_mob.x) + R.pixel_x
|
||||
|
||||
@@ -413,7 +413,8 @@ var/global/datum/controller/occupations/job_master
|
||||
job.equip_backpack(H)
|
||||
// job.equip_survival(H)
|
||||
job.apply_fingerprints(H)
|
||||
H.equip_post_job()
|
||||
if(job.title != "Cyborg" && job.title != "AI")
|
||||
H.equip_post_job()
|
||||
|
||||
//If some custom items could not be equipped before, try again now.
|
||||
for(var/thing in custom_equip_leftovers)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "Bluespace Gigabeacon"
|
||||
desc = "A device that draws power from bluespace and creates a permanent tracking beacon."
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
layer = UNDER_JUNK_LAYER
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 0
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "\improper AI Liquid Dispenser"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "motion0"
|
||||
layer = 3
|
||||
anchored = 1.0
|
||||
use_power = 1
|
||||
idle_power_usage = 10
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
use_power = 2
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 10
|
||||
layer = 5
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
|
||||
var/list/network = list(NETWORK_DEFAULT)
|
||||
var/c_tag = null
|
||||
|
||||
@@ -40,8 +40,7 @@
|
||||
<BR>\n<A href='?src=\ref[src];order=categories'>Request items</A><BR><BR>
|
||||
<A href='?src=\ref[src];vieworders=1'>View approved orders</A><BR><BR>
|
||||
<A href='?src=\ref[src];viewrequests=1'>View requests</A><BR><BR>
|
||||
"} // VOREStation Edit - Export reports
|
||||
dat += {"\n<A href='?src=\ref[src];viewexport=1'>View export report</A><BR><BR>
|
||||
\n<A href='?src=\ref[src];viewexport=1'>View export report</A><BR><BR>
|
||||
<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||
|
||||
user << browse(dat, "window=computer;size=575x450")
|
||||
@@ -200,8 +199,7 @@
|
||||
\n<A href='?src=\ref[src];order=categories'>Order items</A><BR>\n<BR>
|
||||
\n<A href='?src=\ref[src];viewrequests=1'>View requests</A><BR>\n<BR>
|
||||
\n<A href='?src=\ref[src];vieworders=1'>View orders</A><BR>\n<BR>
|
||||
"} // VOREStation Edit - Export reports
|
||||
dat += {"\n<A href='?src=\ref[src];viewexport=1'>View export report</A><BR>\n<BR>
|
||||
\n<A href='?src=\ref[src];viewexport=1'>View export report</A><BR>\n<BR>
|
||||
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||
|
||||
|
||||
@@ -371,7 +369,6 @@
|
||||
temp += "<BR><A href='?src=\ref[src];clearreq=1'>Clear list</A>"
|
||||
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
|
||||
//VOREStation Edit - Export reports
|
||||
else if (href_list["viewexport"])
|
||||
temp = "Previous shuttle export report: <BR><BR>"
|
||||
var/cratecount = 0
|
||||
@@ -383,7 +380,6 @@
|
||||
temp += "[EC.name] exported for [EC.value] supply points<BR>"
|
||||
temp += "<BR>Shipment of [cratecount] crates exported for [totalvalue] supply points.<BR>"
|
||||
temp += "<BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
//VOREStation Edit End
|
||||
|
||||
else if (href_list["rreq"])
|
||||
var/ordernum = text2num(href_list["rreq"])
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "A generic vending machine."
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "robotics"
|
||||
layer = 2.9
|
||||
anchored = 1
|
||||
density = 1
|
||||
var/obj/machinery/computer3/laptop/vended/newlap = null
|
||||
|
||||
@@ -6,13 +6,15 @@
|
||||
icon_state = "pod_preview"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
layer = 2.8
|
||||
layer = UNDER_JUNK_LAYER
|
||||
interact_offline = 1
|
||||
|
||||
var/on = 0
|
||||
use_power = 1
|
||||
idle_power_usage = 20
|
||||
active_power_usage = 200
|
||||
buckle_lying = FALSE
|
||||
buckle_dir = SOUTH
|
||||
|
||||
var/temperature_archived
|
||||
var/mob/living/carbon/occupant = null
|
||||
@@ -20,12 +22,29 @@
|
||||
|
||||
var/current_heat_capacity = 50
|
||||
|
||||
var/image/fluid
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/New()
|
||||
..()
|
||||
icon = 'icons/obj/cryogenics_split.dmi'
|
||||
update_icon()
|
||||
icon_state = "base"
|
||||
initialize_directions = dir
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/initialize()
|
||||
. = ..()
|
||||
var/image/tank = image(icon,"tank")
|
||||
tank.alpha = 200
|
||||
tank.pixel_y = 18
|
||||
tank.plane = MOB_PLANE
|
||||
tank.layer = MOB_LAYER+0.2 //Above fluid
|
||||
fluid = image(icon, "tube_filler")
|
||||
fluid.pixel_y = 18
|
||||
fluid.alpha = 200
|
||||
fluid.plane = MOB_PLANE
|
||||
fluid.layer = MOB_LAYER+0.1 //Below glass, above mob
|
||||
add_overlay(tank)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/Destroy()
|
||||
var/turf/T = src.loc
|
||||
T.contents += contents
|
||||
@@ -153,6 +172,7 @@
|
||||
if(beaker)
|
||||
beaker.loc = get_step(src.loc, SOUTH)
|
||||
beaker = null
|
||||
update_icon()
|
||||
|
||||
if(href_list["ejectOccupant"])
|
||||
if(!occupant || isslime(usr) || ispAI(usr))
|
||||
@@ -172,6 +192,7 @@
|
||||
user.drop_item()
|
||||
G.loc = src
|
||||
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
|
||||
update_icon()
|
||||
else if(istype(G, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/grab = G
|
||||
if(!ismob(grab.affecting))
|
||||
@@ -191,40 +212,23 @@
|
||||
put_mob(target)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/update_icon()
|
||||
overlays.Cut()
|
||||
icon_state = "pod[on]"
|
||||
var/image/I
|
||||
|
||||
I = image(icon, "pod[on]_top")
|
||||
I.layer = 5 // this needs to be fairly high so it displays over most things, but it needs to be under lighting (at 10)
|
||||
I.pixel_z = 32
|
||||
overlays += I
|
||||
|
||||
if(occupant)
|
||||
var/image/pickle = image(occupant.icon, occupant.icon_state)
|
||||
pickle.overlays = occupant.overlays
|
||||
pickle.pixel_z = 18
|
||||
pickle.layer = 5
|
||||
overlays += pickle
|
||||
|
||||
I = image(icon, "lid[on]")
|
||||
I.layer = 5
|
||||
overlays += I
|
||||
|
||||
I = image(icon, "lid[on]_top")
|
||||
I.layer = 5
|
||||
I.pixel_z = 32
|
||||
overlays += I
|
||||
cut_overlay(fluid)
|
||||
fluid.color = null
|
||||
if(on)
|
||||
if(beaker)
|
||||
fluid.color = beaker.reagents.get_color()
|
||||
add_overlay(fluid)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/proc/process_occupant()
|
||||
if(air_contents.total_moles < 10)
|
||||
return
|
||||
if(occupant)
|
||||
if(occupant.stat == 2)
|
||||
if(occupant.stat >= DEAD)
|
||||
return
|
||||
occupant.bodytemperature += 2*(air_contents.temperature - occupant.bodytemperature)*current_heat_capacity/(current_heat_capacity + air_contents.heat_capacity())
|
||||
occupant.bodytemperature = max(occupant.bodytemperature, air_contents.temperature) // this is so ugly i'm sorry for doing it i'll fix it later i promise
|
||||
occupant.stat = 1
|
||||
occupant.stat = UNCONSCIOUS
|
||||
occupant.dir = SOUTH
|
||||
if(occupant.bodytemperature < T0C)
|
||||
occupant.sleeping = max(5, (1/occupant.bodytemperature)*2000)
|
||||
occupant.Paralyse(max(5, (1/occupant.bodytemperature)*3000))
|
||||
@@ -273,14 +277,16 @@
|
||||
if(occupant.client)
|
||||
occupant.client.eye = occupant.client.mob
|
||||
occupant.client.perspective = MOB_PERSPECTIVE
|
||||
vis_contents -= occupant
|
||||
occupant.pixel_x = occupant.default_pixel_x
|
||||
occupant.pixel_y = occupant.default_pixel_y
|
||||
occupant.loc = get_step(src.loc, SOUTH) //this doesn't account for walls or anything, but i don't forsee that being a problem.
|
||||
if(occupant.bodytemperature < 261 && occupant.bodytemperature >= 70) //Patch by Aranclanos to stop people from taking burn damage after being ejected
|
||||
occupant.bodytemperature = 261 // Changed to 70 from 140 by Zuhayr due to reoccurance of bug.
|
||||
// occupant.metabslow = 0
|
||||
unbuckle_mob(occupant, force = TRUE)
|
||||
occupant = null
|
||||
current_heat_capacity = initial(current_heat_capacity)
|
||||
update_use_power(1)
|
||||
update_icon()
|
||||
return
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/proc/put_mob(mob/living/carbon/M as mob)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
@@ -307,6 +313,9 @@
|
||||
if(M.health > -100 && (M.health < 0 || M.sleeping))
|
||||
M << "<span class='notice'><b>You feel a cold liquid surround you. Your skin starts to freeze up.</b></span>"
|
||||
occupant = M
|
||||
buckle_mob(occupant, forced = TRUE, check_loc = FALSE)
|
||||
vis_contents |= occupant
|
||||
occupant.pixel_y += 19
|
||||
current_heat_capacity = HEAT_CAPACITY_HUMAN
|
||||
update_use_power(2)
|
||||
// M.metabslow = 1
|
||||
|
||||
@@ -446,8 +446,8 @@
|
||||
desc = "It's an extra resilient airlock intended for spacefaring vessels."
|
||||
icon = 'icons/obj/doors/shuttledoors.dmi'
|
||||
explosion_resistance = 20
|
||||
opacity = 0 //VOREStation Edit - They have windows.
|
||||
glass = 1 //VOREStation Edit - They have windows.
|
||||
opacity = 0
|
||||
glass = 1
|
||||
assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft
|
||||
|
||||
// Airlock opens from top-bottom instead of left-right.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc = "Small wall-mounted holographic projector"
|
||||
icon = 'icons/obj/holosign.dmi'
|
||||
icon_state = "sign_off"
|
||||
layer = 4
|
||||
plane = MOB_PLANE
|
||||
use_power = 1
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
|
||||
@@ -172,7 +172,6 @@
|
||||
name = "ice cream cone"
|
||||
desc = "Delicious waffle cone, but no ice cream."
|
||||
icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time
|
||||
layer = 3.1
|
||||
bitesize = 3
|
||||
|
||||
var/ice_creamed = 0
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "microwave"
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "mw"
|
||||
layer = 2.9
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
name = "\improper SmartFridge"
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "smartfridge"
|
||||
layer = 2.9
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
|
||||
@@ -97,6 +97,7 @@ Class Procs:
|
||||
name = "machinery"
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
w_class = ITEMSIZE_NO_CONTAINER
|
||||
layer = UNDER_JUNK_LAYER
|
||||
|
||||
var/stat = 0
|
||||
var/emagged = 0
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
icon_state = "floor_magnet-f"
|
||||
name = "Electromagnetic Generator"
|
||||
desc = "A device that uses station power to create points of magnetic energy."
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
plane = PLATING_PLANE
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 50
|
||||
|
||||
@@ -8,8 +8,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
|
||||
icon_state = "navbeacon0-f"
|
||||
name = "navigation beacon"
|
||||
desc = "A beacon used for bot navigation."
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
plane = PLATING_PLANE
|
||||
anchored = 1
|
||||
var/open = 0 // true if cover is open
|
||||
var/locked = 1 // true if controls are locked
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
qdel(I)
|
||||
qdel(J)
|
||||
H.icon = HI
|
||||
H.layer = 25
|
||||
H.hud_layerise()
|
||||
usr.mapobjs += H
|
||||
#else
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
|
||||
H.icon = I
|
||||
qdel(I)
|
||||
H.layer = 25
|
||||
H.hud_layerise()
|
||||
usr.mapobjs += H
|
||||
|
||||
#endif
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
desc = "A generic vending machine."
|
||||
icon = 'icons/obj/vending_vr.dmi' //VOREStation Edit - Eris vending machine sprites
|
||||
icon_state = "generic"
|
||||
layer = 2.9
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
update_type_list()
|
||||
var/datum/frame/frame_types/frame_type
|
||||
if(!build_machine_type)
|
||||
var/datum/frame/frame_types/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in frame_types_floor
|
||||
var/datum/frame/frame_types/response = input(user, "What kind of frame would you like to make?", "Frame type request", null) in frame_types_floor
|
||||
if(!response || response.name == "Cancel")
|
||||
return
|
||||
frame_type = response
|
||||
@@ -37,10 +37,10 @@
|
||||
build_machine_type = /obj/structure/frame
|
||||
|
||||
if(frame_type.frame_size != 5)
|
||||
new /obj/item/stack/material/steel(usr.loc, (5 - frame_type.frame_size))
|
||||
new /obj/item/stack/material/steel(user.loc, (5 - frame_type.frame_size))
|
||||
|
||||
var/ndir
|
||||
ndir = usr.dir
|
||||
ndir = user.dir
|
||||
if(!(ndir in cardinal))
|
||||
return
|
||||
|
||||
@@ -48,13 +48,15 @@
|
||||
M.fingerprints = fingerprints
|
||||
M.fingerprintshidden = fingerprintshidden
|
||||
M.fingerprintslast = fingerprintslast
|
||||
if(istype(src.loc, /obj/item/weapon/gripper)) //Typical gripper shenanigans
|
||||
user.drop_item()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/frame/proc/try_build(turf/on_wall, mob/user as mob)
|
||||
update_type_list()
|
||||
var/datum/frame/frame_types/frame_type
|
||||
if(!build_machine_type)
|
||||
var/datum/frame/frame_types/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in frame_types_wall
|
||||
var/datum/frame/frame_types/response = input(user, "What kind of frame would you like to make?", "Frame type request", null) in frame_types_wall
|
||||
if(!response || response.name == "Cancel")
|
||||
return
|
||||
frame_type = response
|
||||
@@ -62,38 +64,40 @@
|
||||
build_machine_type = /obj/structure/frame
|
||||
|
||||
if(frame_type.frame_size != 5)
|
||||
new /obj/item/stack/material/steel(usr.loc, (5 - frame_type.frame_size))
|
||||
new /obj/item/stack/material/steel(user.loc, (5 - frame_type.frame_size))
|
||||
|
||||
if(get_dist(on_wall, usr)>1)
|
||||
if(get_dist(on_wall, user)>1)
|
||||
return
|
||||
|
||||
var/ndir
|
||||
if(reverse)
|
||||
ndir = get_dir(usr, on_wall)
|
||||
ndir = get_dir(user, on_wall)
|
||||
else
|
||||
ndir = get_dir(on_wall, usr)
|
||||
ndir = get_dir(on_wall, user)
|
||||
|
||||
if(!(ndir in cardinal))
|
||||
return
|
||||
|
||||
var/turf/loc = get_turf(usr)
|
||||
var/turf/loc = get_turf(user)
|
||||
var/area/A = loc.loc
|
||||
if(!istype(loc, /turf/simulated/floor))
|
||||
usr << "<span class='danger'>\The frame cannot be placed on this spot.</span>"
|
||||
to_chat(user, "<span class='danger'>\The frame cannot be placed on this spot.</span>")
|
||||
return
|
||||
|
||||
if(A.requires_power == 0 || A.name == "Space")
|
||||
usr << "<span class='danger'>\The [src] Alarm cannot be placed in this area.</span>"
|
||||
to_chat(user, "<span class='danger'>\The [src] Alarm cannot be placed in this area.</span>")
|
||||
return
|
||||
|
||||
if(gotwallitem(loc, ndir))
|
||||
usr << "<span class='danger'>There's already an item on this wall!</span>"
|
||||
to_chat(user, "<span class='danger'>There's already an item on this wall!</span>")
|
||||
return
|
||||
|
||||
var/obj/machinery/M = new build_machine_type(loc, ndir, 1, frame_type)
|
||||
M.fingerprints = fingerprints
|
||||
M.fingerprintshidden = fingerprintshidden
|
||||
M.fingerprintslast = fingerprintslast
|
||||
if(istype(src.loc, /obj/item/weapon/gripper)) //Typical gripper shenanigans
|
||||
user.drop_item()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/frame/light
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
desc = "... Blitzkrieg?"
|
||||
icon = 'icons/mecha/mecha64x64.dmi'
|
||||
icon_state = "pzrwreck"
|
||||
layer = 4 // so it overlaps other people
|
||||
plane = MOB_PLANE
|
||||
pixel_x = -16
|
||||
anchored = 1 // It's fucking huge. You aren't moving it.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
density = 1
|
||||
throwpass = 1
|
||||
use_power = 1
|
||||
layer = 3.3
|
||||
layer = ON_WINDOW_LAYER
|
||||
power_channel = EQUIP
|
||||
var/on = 0
|
||||
var/id_tag = null
|
||||
|
||||
@@ -147,7 +147,8 @@
|
||||
|
||||
anchored = 1
|
||||
density = 0
|
||||
layer = 2
|
||||
plane = TURF_PLANE
|
||||
layer = ABOVE_TURF_LAYER
|
||||
var/health = 15
|
||||
var/obj/effect/alien/weeds/node/linked_node = null
|
||||
|
||||
@@ -155,7 +156,7 @@
|
||||
icon_state = "weednode"
|
||||
name = "purple sac"
|
||||
desc = "Weird purple octopus-like thing."
|
||||
layer = 3
|
||||
layer = ABOVE_TURF_LAYER+0.01
|
||||
light_range = NODERANGE
|
||||
var/node_range = NODERANGE
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
if(chemholder.reagents.reagent_list.len)
|
||||
chemholder.reagents.trans_to_obj(smoke, chemholder.reagents.total_volume / dist, copy = 1) //copy reagents to the smoke so mob/breathe() can handle inhaling the reagents
|
||||
smoke.icon = I
|
||||
smoke.layer = 6
|
||||
smoke.plane = ABOVE_PLANE
|
||||
smoke.set_dir(pick(cardinal))
|
||||
smoke.pixel_x = -32 + rand(-8, 8)
|
||||
smoke.pixel_y = -32 + rand(-8, 8)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
//Liquid fuel is used for things that used to rely on volatile fuels or phoron being contained to a couple tiles.
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "fuel"
|
||||
layer = TURF_LAYER+0.2
|
||||
plane = DIRTY_PLANE
|
||||
anchored = 1
|
||||
var/amount = 1
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ var/global/list/image/splatter_cache=list()
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
plane = BLOOD_PLANE
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "mfloor1"
|
||||
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
||||
@@ -179,7 +179,6 @@ var/global/list/image/splatter_cache=list()
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "gibbl5"
|
||||
random_icon_states = list("gib1", "gib2", "gib3", "gib5", "gib6")
|
||||
@@ -236,7 +235,6 @@ var/global/list/image/splatter_cache=list()
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "mucus"
|
||||
random_icon_states = list("mucus")
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "shards"
|
||||
|
||||
@@ -36,7 +35,6 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "dirt"
|
||||
mouse_opacity = 0
|
||||
@@ -47,7 +45,6 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "flour"
|
||||
|
||||
@@ -57,7 +54,6 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
light_range = 1
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "greenglow"
|
||||
@@ -67,7 +63,7 @@
|
||||
desc = "Somebody should remove that."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 3
|
||||
plane = OBJ_PLANE
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "cobweb1"
|
||||
|
||||
@@ -76,7 +72,7 @@
|
||||
desc = "It looks like a melted... something."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 3
|
||||
plane = OBJ_PLANE
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "molten"
|
||||
|
||||
@@ -85,7 +81,7 @@
|
||||
desc = "Somebody should remove that."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 3
|
||||
plane = OBJ_PLANE
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "cobweb2"
|
||||
|
||||
@@ -96,7 +92,6 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "vomit_1"
|
||||
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
|
||||
@@ -107,7 +102,6 @@
|
||||
desc = "It's red."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
|
||||
|
||||
@@ -116,7 +110,6 @@
|
||||
desc = "Seems like this one won't hatch."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
|
||||
|
||||
@@ -125,7 +118,6 @@
|
||||
desc = "It's pie cream from a cream pie."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_pie")
|
||||
|
||||
@@ -134,7 +126,6 @@
|
||||
desc = "Some kind of fruit smear."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "mfloor1"
|
||||
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/obj/effect/decal/cleanable
|
||||
plane = DIRTY_PLANE
|
||||
var/list/random_icon_states = list()
|
||||
|
||||
/obj/effect/decal/cleanable/clean_blood(var/ignore = 0)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "rune"
|
||||
desc = "A rune drawn in crayon."
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
layer = 2.1
|
||||
plane = DIRTY_PLANE
|
||||
anchored = 1
|
||||
|
||||
New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "It's an arrow hanging in mid-air. There may be a wizard about."
|
||||
icon = 'icons/mob/screen1.dmi'
|
||||
icon_state = "arrow"
|
||||
layer = 16.0
|
||||
plane = ABOVE_PLANE
|
||||
anchored = 1
|
||||
mouse_opacity = 0
|
||||
|
||||
@@ -11,4 +11,4 @@
|
||||
/obj/effect/decal/spraystill
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 50
|
||||
plane = ABOVE_PLANE
|
||||
@@ -1,6 +1,5 @@
|
||||
/obj/effect/decal/warning_stripes
|
||||
icon = 'icons/effects/warning_stripes.dmi'
|
||||
layer = 2
|
||||
|
||||
/obj/effect/decal/warning_stripes/New()
|
||||
. = ..()
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
desc = "Something swinging really wide."
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
icon_state = "cleave"
|
||||
layer = 6
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
time_to_die = 6
|
||||
alpha = 140
|
||||
mouse_opacity = 0
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
icon = 'icons/misc/beach2.dmi'
|
||||
icon_state = "palm1"
|
||||
density = 1
|
||||
layer = 5
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/overlay/palmtree_l
|
||||
@@ -25,7 +26,8 @@
|
||||
icon = 'icons/misc/beach2.dmi'
|
||||
icon_state = "palm2"
|
||||
density = 1
|
||||
layer = 5
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/overlay/coconut
|
||||
@@ -37,7 +39,7 @@
|
||||
name = "Bluespace"
|
||||
icon = 'icons/turf/space.dmi'
|
||||
icon_state = "bluespacify"
|
||||
layer = 10
|
||||
plane = ABOVE_PLANE
|
||||
|
||||
/obj/effect/overlay/wallrot
|
||||
name = "wallrot"
|
||||
@@ -45,7 +47,8 @@
|
||||
icon = 'icons/effects/wallrot.dmi'
|
||||
anchored = 1
|
||||
density = 1
|
||||
layer = 5
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/overlay/wallrot/New()
|
||||
@@ -70,7 +73,8 @@
|
||||
|
||||
/obj/effect/overlay/snow/floor
|
||||
icon_state = "snowfloor"
|
||||
layer = 2.01 //Just above floor
|
||||
plane = TURF_PLANE
|
||||
layer = ABOVE_TURF_LAYER
|
||||
mouse_opacity = 0 //Don't block underlying tile interactions
|
||||
|
||||
/obj/effect/overlay/snow/floor/edges
|
||||
@@ -81,11 +85,12 @@
|
||||
|
||||
/obj/effect/overlay/snow/airlock
|
||||
icon_state = "snowairlock"
|
||||
layer = 3.2 //Just above airlocks
|
||||
layer = DOOR_CLOSED_LAYER+0.01
|
||||
|
||||
/obj/effect/overlay/snow/floor/pointy
|
||||
icon_state = "snowfloorpointy"
|
||||
|
||||
/obj/effect/overlay/snow/wall
|
||||
icon_state = "snowwall"
|
||||
layer = 5 //Same as lights so humans can stand under it
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
desc = "It never stays still for long."
|
||||
icon_state = "spiderling"
|
||||
anchored = 0
|
||||
layer = 2.7
|
||||
layer = HIDING_LAYER
|
||||
health = 3
|
||||
var/last_itch = 0
|
||||
var/amount_grown = -1
|
||||
|
||||
@@ -46,11 +46,11 @@
|
||||
if(colour != "#FFFFFF" && shadeColour != "#000000")
|
||||
colour = "#FFFFFF"
|
||||
shadeColour = "#000000"
|
||||
user << "You will now draw in white and black with this crayon."
|
||||
to_chat(usr,"You will now draw in white and black with this crayon.")
|
||||
else
|
||||
colour = "#000000"
|
||||
shadeColour = "#FFFFFF"
|
||||
user << "You will now draw in black and white with this crayon."
|
||||
to_chat(usr,"You will now draw in black and white with this crayon.")
|
||||
return
|
||||
|
||||
/obj/item/weapon/pen/crayon/rainbow
|
||||
@@ -72,22 +72,22 @@
|
||||
switch(drawtype)
|
||||
if("letter")
|
||||
drawtype = input("Choose the letter.", "Crayon scribbles") in list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
|
||||
user << "You start drawing a letter on the [target.name]."
|
||||
to_chat(usr,"You start drawing a letter on the [target.name].")
|
||||
if("graffiti")
|
||||
user << "You start drawing graffiti on the [target.name]."
|
||||
to_chat(usr,"You start drawing graffiti on the [target.name].")
|
||||
if("rune")
|
||||
user << "You start drawing a rune on the [target.name]."
|
||||
to_chat(usr,"You start drawing a rune on the [target.name].")
|
||||
if("arrow")
|
||||
drawtype = input("Choose the arrow.", "Crayon scribbles") in list("left", "right", "up", "down")
|
||||
user << "You start drawing an arrow on the [target.name]."
|
||||
to_chat(usr,"You start drawing an arrow on the [target.name].")
|
||||
if(instant || do_after(user, 50))
|
||||
new /obj/effect/decal/cleanable/crayon(target,colour,shadeColour,drawtype)
|
||||
user << "You finish drawing."
|
||||
to_chat(usr,"You finish drawing.")
|
||||
target.add_fingerprint(user) // Adds their fingerprints to the floor the crayon is drawn on.
|
||||
if(uses)
|
||||
uses--
|
||||
if(!uses)
|
||||
user << "<span class='warning'>You used up your crayon!</span>"
|
||||
to_chat(usr,"<span class='warning'>You used up your crayon!</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -99,7 +99,93 @@
|
||||
if(uses)
|
||||
uses -= 5
|
||||
if(uses <= 0)
|
||||
user << "<span class='warning'>You ate your crayon!</span>"
|
||||
to_chat(user,"<span class='warning'>You ate your crayon!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/black
|
||||
icon_state = "markerblack"
|
||||
colour = "#2D2D2D"
|
||||
shadeColour = "#000000"
|
||||
colourName = "black"
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/red
|
||||
icon_state = "markerred"
|
||||
colour = "#DA0000"
|
||||
shadeColour = "#810C0C"
|
||||
colourName = "red"
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/orange
|
||||
icon_state = "markerorange"
|
||||
colour = "#FF9300"
|
||||
shadeColour = "#A55403"
|
||||
colourName = "orange"
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/yellow
|
||||
icon_state = "markeryellow"
|
||||
colour = "#FFF200"
|
||||
shadeColour = "#886422"
|
||||
colourName = "yellow"
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/green
|
||||
icon_state = "markergreen"
|
||||
colour = "#A8E61D"
|
||||
shadeColour = "#61840F"
|
||||
colourName = "green"
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/blue
|
||||
icon_state = "markerblue"
|
||||
colour = "#00B7EF"
|
||||
shadeColour = "#0082A8"
|
||||
colourName = "blue"
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/purple
|
||||
icon_state = "markerpurple"
|
||||
colour = "#DA00FF"
|
||||
shadeColour = "#810CFF"
|
||||
colourName = "purple"
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/mime
|
||||
icon_state = "markermime"
|
||||
desc = "A very sad-looking marker."
|
||||
colour = "#FFFFFF"
|
||||
shadeColour = "#000000"
|
||||
colourName = "mime"
|
||||
uses = 0
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/mime/attack_self(mob/living/user as mob) //inversion
|
||||
if(colour != "#FFFFFF" && shadeColour != "#000000")
|
||||
colour = "#FFFFFF"
|
||||
shadeColour = "#000000"
|
||||
to_chat(usr,"You will now draw in white and black with this marker.")
|
||||
else
|
||||
colour = "#000000"
|
||||
shadeColour = "#FFFFFF"
|
||||
to_chat(usr,"You will now draw in black and white with this marker.")
|
||||
return
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/rainbow
|
||||
icon_state = "markerrainbow"
|
||||
colour = "#FFF000"
|
||||
shadeColour = "#000FFF"
|
||||
colourName = "rainbow"
|
||||
uses = 0
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/rainbow/attack_self(mob/living/user as mob)
|
||||
colour = input(user, "Please select the main colour.", "Marker colour") as color
|
||||
shadeColour = input(user, "Please select the shade colour.", "Marker colour") as color
|
||||
return
|
||||
|
||||
/obj/item/weapon/pen/crayon/marker/attack(mob/M as mob, mob/user as mob)
|
||||
if(M == user)
|
||||
to_chat(usr,"You take a bite of the marker and swallow it.")
|
||||
user.nutrition += 1
|
||||
user.reagents.add_reagent("marker_ink",6)
|
||||
if(uses)
|
||||
uses -= 5
|
||||
if(uses <= 0)
|
||||
to_chat(user,"<span class='warning'>You ate the marker!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
@@ -185,7 +185,7 @@
|
||||
if(text)
|
||||
exonet.send_message(their_address, "text", text)
|
||||
im_list += list(list("address" = exonet.address, "to_address" = their_address, "im" = text))
|
||||
log_pda("(COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]",usr)
|
||||
log_pda("(COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]", usr)
|
||||
for(var/mob/M in player_list)
|
||||
if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
if(istype(M, /mob/new_player) || M.forbid_seeing_deadchat)
|
||||
|
||||
@@ -104,7 +104,6 @@
|
||||
bmark.pixel_x = p_x
|
||||
bmark.pixel_y = p_y
|
||||
bmark.icon = 'icons/effects/effects.dmi'
|
||||
bmark.layer = 3.5
|
||||
bmark.icon_state = "scorch"
|
||||
|
||||
if(decaltype == 1)
|
||||
|
||||
@@ -860,7 +860,7 @@
|
||||
/obj/structure/plushie/carp
|
||||
name = "plush carp"
|
||||
desc = "A plushie of an elated carp! Straight from the wilds of the Vir frontier, now right here in your hands."
|
||||
icon_state = "plushie/carp"
|
||||
icon_state = "carpplushie"
|
||||
phrase = "Glorf!"
|
||||
|
||||
/obj/structure/plushie/beepsky
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
name = "\proper the coordinates to clown planet"
|
||||
icon_state = "data"
|
||||
item_state = "card-id"
|
||||
layer = 3
|
||||
level = 2
|
||||
desc = "This card contains coordinates to the fabled Clown Planet. Handle with care."
|
||||
function = "teleporter"
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
/obj/item/weapon/implant/tracking
|
||||
name = "tracking implant"
|
||||
desc = "Track with this."
|
||||
desc = "An implant normally given to dangerous criminals. Allows security to track your location."
|
||||
var/id = 1
|
||||
var/degrade_time = 10 MINUTES //How long before the implant stops working outside of a living body.
|
||||
|
||||
|
||||
@@ -50,4 +50,41 @@
|
||||
// Randomizes color
|
||||
/obj/item/weapon/melee/umbrella/random/New()
|
||||
color = "#"+get_random_colour()
|
||||
..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/cursedblade
|
||||
name = "crystal blade"
|
||||
desc = "The red crystal blade's polished surface glints in the light, giving off a faint glow."
|
||||
icon_state = "soulblade"
|
||||
slot_flags = SLOT_BELT | SLOT_BACK
|
||||
force = 30
|
||||
throwforce = 10
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
sharp = 1
|
||||
edge = 1
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
can_speak = 1
|
||||
var/list/voice_mobs = list() //The curse of the sword is that it has someone trapped inside.
|
||||
|
||||
|
||||
/obj/item/weapon/melee/cursedblade/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(default_parry_check(user, attacker, damage_source) && prob(50))
|
||||
user.visible_message("<span class='danger'>\The [user] parries [attack_text] with \the [src]!</span>")
|
||||
playsound(user.loc, 'sound/weapons/punchmiss.ogg', 50, 1)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/melee/cursedblade/proc/ghost_inhabit(var/mob/candidate)
|
||||
if(!isobserver(candidate))
|
||||
return
|
||||
//Handle moving the ghost into the new shell.
|
||||
announce_ghost_joinleave(candidate, 0, "They are occupying a cursed sword now.")
|
||||
var/mob/living/voice/new_voice = new /mob/living/voice(src) //Make the voice mob the ghost is going to be.
|
||||
new_voice.transfer_identity(candidate) //Now make the voice mob load from the ghost's active character in preferences.
|
||||
new_voice.mind = candidate.mind //Transfer the mind, if any.
|
||||
new_voice.ckey = candidate.ckey //Finally, bring the client over.
|
||||
new_voice.name = "cursed sword" //Cursed swords shouldn't be known characters.
|
||||
new_voice.real_name = "cursed sword"
|
||||
voice_mobs.Add(new_voice)
|
||||
listening_objects |= src
|
||||
@@ -30,7 +30,7 @@ var/list/tape_roll_applications = list()
|
||||
name = "tape"
|
||||
icon = 'icons/policetape.dmi'
|
||||
anchored = 1
|
||||
layer = 3.2
|
||||
layer = WINDOW_LAYER
|
||||
var/lifted = 0
|
||||
var/crumpled = 0
|
||||
var/tape_dir = 0
|
||||
@@ -257,7 +257,7 @@ var/list/tape_roll_applications = list()
|
||||
else
|
||||
var/obj/item/tape/P = new tape_type(T)
|
||||
P.update_icon()
|
||||
P.layer = 3.2
|
||||
P.layer = WINDOW_LAYER
|
||||
user << "<span class='notice'>You finish placing \the [src].</span>"
|
||||
|
||||
if (istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor))
|
||||
@@ -307,10 +307,11 @@ var/list/tape_roll_applications = list()
|
||||
|
||||
/obj/item/tape/proc/lift(time)
|
||||
lifted = 1
|
||||
layer = 8
|
||||
plane = MOB_PLANE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
spawn(time)
|
||||
lifted = 0
|
||||
layer = initial(layer)
|
||||
reset_plane_and_layer()
|
||||
|
||||
// Returns a list of all tape objects connected to src, including itself.
|
||||
/obj/item/tape/proc/gettapeline()
|
||||
|
||||
@@ -135,7 +135,8 @@
|
||||
/obj/item/weapon/crowbar,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/cell/device,
|
||||
/obj/item/weapon/extinguisher/mini
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/weapon/storage/quickdraw/syringe_case
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/medical/emt
|
||||
@@ -373,7 +374,9 @@
|
||||
/obj/item/weapon/storage/excavation,
|
||||
/obj/item/weapon/anobattery,
|
||||
/obj/item/device/ano_scanner,
|
||||
/obj/item/weapon/pickaxe/hand
|
||||
/obj/item/weapon/pickaxe/hand,
|
||||
/obj/item/device/xenoarch_multi_tool,
|
||||
/obj/item/weapon/pickaxe/excavationdrill
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/fannypack
|
||||
|
||||
@@ -114,6 +114,48 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/markers
|
||||
name = "box of markers"
|
||||
desc = "A very professional looking box of permanent markers."
|
||||
icon = 'icons/obj/crayons.dmi'
|
||||
icon_state = "markerbox"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
icon_type = "marker"
|
||||
can_hold = list(
|
||||
/obj/item/weapon/pen/crayon/marker
|
||||
)
|
||||
starts_with = list(
|
||||
/obj/item/weapon/pen/crayon/marker/black,
|
||||
/obj/item/weapon/pen/crayon/marker/red,
|
||||
/obj/item/weapon/pen/crayon/marker/orange,
|
||||
/obj/item/weapon/pen/crayon/marker/yellow,
|
||||
/obj/item/weapon/pen/crayon/marker/green,
|
||||
/obj/item/weapon/pen/crayon/marker/blue,
|
||||
/obj/item/weapon/pen/crayon/marker/purple
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/fancy/markers/initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/fancy/markers/update_icon()
|
||||
var/mutable_appearance/ma = new(src)
|
||||
ma.overlays = list()
|
||||
for(var/obj/item/weapon/pen/crayon/marker/marker in contents)
|
||||
ma.overlays += image('icons/obj/crayons.dmi',"m"+marker.colourName)
|
||||
appearance = ma
|
||||
|
||||
/obj/item/weapon/storage/fancy/markers/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/pen/crayon/marker))
|
||||
switch(W:colourName)
|
||||
if("mime")
|
||||
to_chat(usr,"This marker is too depressing to be contained in this box.")
|
||||
return
|
||||
if("rainbow")
|
||||
to_chat(usr,"This marker is too childish to be contained in this box.")
|
||||
return
|
||||
..()
|
||||
|
||||
////////////
|
||||
//CIG PACK//
|
||||
////////////
|
||||
@@ -259,7 +301,8 @@
|
||||
icon_state = "paperbox"
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
w_class = ITEMSIZE_TINY
|
||||
throwforce = 1
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
storage_slots = 14
|
||||
can_hold = list(/obj/item/weapon/rollingpaper)
|
||||
starts_with = list(/obj/item/weapon/rollingpaper = 14)
|
||||
|
||||
@@ -1,78 +1,81 @@
|
||||
// -----------------------------
|
||||
// Quickdraw storage
|
||||
// -----------------------------
|
||||
//These items are pouches and cases made to be kept in belts or pockets to quickly draw objects from
|
||||
//Largely inspired by the vest pouches on Colonial Marines
|
||||
|
||||
/obj/item/weapon/storage/quickdraw
|
||||
name = "quickdraw"
|
||||
desc = "This object should not appear"
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
|
||||
//Quickmode
|
||||
//When set to 0, this storage will operate as a regular storage, and clicking on it while equipped will open it as a storage
|
||||
//When set to 1, a click while it is equipped will instead move the first item inside it to your hand
|
||||
var/quickmode = 0
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/attack_hand(mob/user as mob)
|
||||
if(src.loc == user) //If they aren't holding us, we do nothing special
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(quickmode)
|
||||
var/first_item = contents[1]
|
||||
if(first_item && !H.get_active_hand()) //Do we have anything to give you?
|
||||
H.put_in_hands(first_item)
|
||||
return
|
||||
|
||||
if(H.l_store == src && !H.get_active_hand()) //overrides
|
||||
src.open(user)
|
||||
return
|
||||
if(H.r_store == src && !H.get_active_hand())
|
||||
src.open(user)
|
||||
return
|
||||
..() //Nothing special happened, go call the other proc
|
||||
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/verb/toggle_quickdraw()
|
||||
set name = "Switch Quickdraw Mode"
|
||||
set category = "Object"
|
||||
|
||||
quickmode = !quickmode
|
||||
switch (quickmode)
|
||||
if(1)
|
||||
to_chat(usr, "[src] now draws the first object inside.")
|
||||
if(0)
|
||||
to_chat(usr, "[src] now opens as a container.")
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/AltClick(mob/user)
|
||||
..()
|
||||
if(src.loc == user) //Are they carrying us?
|
||||
toggle_quickdraw()
|
||||
|
||||
// -----------------------------
|
||||
// Syringe case
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/syringe_case
|
||||
name = "syringe case"
|
||||
desc = "A small case for safely carrying sharps around."
|
||||
icon_state = "syringe_case"
|
||||
|
||||
w_class = ITEMSIZE_SMALL
|
||||
max_w_class = ITEMSIZE_TINY
|
||||
max_storage_space = ITEMSIZE_TINY * 6 //Capable of holding six syringes
|
||||
|
||||
//Can hold syringes and autoinjectors, but also pills if you really wanted. Syringe-shaped objects like pens and cigarettes also fit, but why would you do that?
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||
/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/pen, /obj/item/device/flashlight/pen, /obj/item/clothing/mask/smokable/cigarette)
|
||||
|
||||
quickmode = 1 //Starts in quickdraw mode
|
||||
//Preloaded for your convenience!
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe
|
||||
// -----------------------------
|
||||
// Quickdraw storage
|
||||
// -----------------------------
|
||||
//These items are pouches and cases made to be kept in belts or pockets to quickly draw objects from
|
||||
//Largely inspired by the vest pouches on Colonial Marines
|
||||
|
||||
/obj/item/weapon/storage/quickdraw
|
||||
name = "quickdraw"
|
||||
desc = "This object should not appear"
|
||||
icon = 'icons/obj/storage_vr.dmi' // VOREStation Edit
|
||||
|
||||
//Quickmode
|
||||
//When set to 0, this storage will operate as a regular storage, and clicking on it while equipped will open it as a storage
|
||||
//When set to 1, a click while it is equipped will instead move the first item inside it to your hand
|
||||
var/quickmode = 0
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/attack_hand(mob/user as mob)
|
||||
if(src.loc == user) //If they aren't holding us, we do nothing special
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(quickmode)
|
||||
var/first_item = contents[1]
|
||||
if(first_item && !H.get_active_hand()) //Do we have anything to give you?
|
||||
H.put_in_hands(first_item)
|
||||
return
|
||||
|
||||
if(H.l_store == src && !H.get_active_hand()) //overrides
|
||||
src.open(user)
|
||||
return
|
||||
if(H.r_store == src && !H.get_active_hand())
|
||||
src.open(user)
|
||||
return
|
||||
..() //Nothing special happened, go call the other proc
|
||||
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/verb/toggle_quickdraw()
|
||||
set name = "Switch Quickdraw Mode"
|
||||
set category = "Object"
|
||||
|
||||
quickmode = !quickmode
|
||||
switch (quickmode)
|
||||
if(1)
|
||||
to_chat(usr, "[src] now draws the first object inside.")
|
||||
if(0)
|
||||
to_chat(usr, "[src] now opens as a container.")
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/AltClick(mob/user)
|
||||
..()
|
||||
if(src.loc == user) //Are they carrying us?
|
||||
toggle_quickdraw()
|
||||
|
||||
|
||||
// If we start adding more of these, we'll need to make them their own folder. 'til then, this one should be fine.
|
||||
|
||||
// -----------------------------
|
||||
// Syringe case
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/quickdraw/syringe_case
|
||||
name = "syringe case"
|
||||
desc = "A small case for safely carrying sharps around."
|
||||
icon_state = "syringe_case"
|
||||
|
||||
w_class = ITEMSIZE_SMALL
|
||||
max_w_class = ITEMSIZE_TINY
|
||||
max_storage_space = ITEMSIZE_TINY * 6 //Capable of holding six syringes
|
||||
|
||||
//Can hold syringes and autoinjectors, but also pills if you really wanted. Syringe-shaped objects like pens and cigarettes also fit, but why would you do that?
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||
/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/pen, /obj/item/device/flashlight/pen, /obj/item/clothing/mask/smokable/cigarette)
|
||||
|
||||
quickmode = 1 //Starts in quickdraw mode
|
||||
//Preloaded for your convenience!
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/reagent_containers/syringe
|
||||
)
|
||||
@@ -131,7 +131,7 @@
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "tape"
|
||||
w_class = ITEMSIZE_TINY
|
||||
layer = 4
|
||||
plane = MOB_PLANE
|
||||
anchored = 1 //it's sticky, no you cant move it
|
||||
|
||||
var/obj/item/weapon/stuck = null
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
carrying.Add(I)
|
||||
Img.icon = I.icon
|
||||
Img.icon_state = I.icon_state
|
||||
Img.layer = 30 + I.layer
|
||||
Img.layer = layer + I.layer*0.01
|
||||
if(istype(I, /obj/item/weapon/material))
|
||||
var/obj/item/weapon/material/O = I
|
||||
if(O.applies_material_colour)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
/obj
|
||||
layer = OBJ_LAYER
|
||||
plane = OBJ_PLANE
|
||||
//Used to store information about the contents of the object.
|
||||
var/list/matter
|
||||
var/w_class // Size of the object.
|
||||
@@ -13,6 +15,7 @@
|
||||
var/armor_penetration = 0
|
||||
var/show_messages
|
||||
var/preserve_item = 0 //whether this object is preserved when its owner goes into cryo-storage, gateway, etc
|
||||
var/can_speak = 0 //For MMIs and admin trickery. If an object has a brainmob in its contents, set this to 1 to allow it to speak.
|
||||
|
||||
var/show_examine = TRUE // Does this pop up on a mob when the mob is examined?
|
||||
|
||||
|
||||
@@ -100,11 +100,6 @@ something, make sure it's not in one of the other lists.*/
|
||||
prob(1);/obj/item/clothing/under/harness,
|
||||
prob(1);/obj/item/clothing/under/tactical,
|
||||
prob(3);/obj/item/clothing/accessory/storage/webbing,
|
||||
prob(4);/obj/item/weapon/spacecash/c1,
|
||||
prob(3);/obj/item/weapon/spacecash/c10,
|
||||
prob(3);/obj/item/weapon/spacecash/c20,
|
||||
prob(1);/obj/item/weapon/spacecash/c50,
|
||||
prob(1);/obj/item/weapon/spacecash/c100,
|
||||
prob(3);/obj/item/weapon/camera_assembly,
|
||||
prob(4);/obj/item/weapon/caution,
|
||||
prob(3);/obj/item/weapon/caution/cone,
|
||||
|
||||
@@ -19,6 +19,18 @@
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/multitool)
|
||||
|
||||
/obj/random/tool/powermaint
|
||||
name = "random powertool"
|
||||
desc = "This is a random rare powertool for maintenance"
|
||||
icon_state = "jaws_pry"
|
||||
|
||||
/obj/random/tool/powermaint/item_to_spawn()
|
||||
return pick(prob(320);/obj/random/tool,
|
||||
prob(1);/obj/item/weapon/screwdriver/power,
|
||||
prob(1);/obj/item/weapon/wirecutters/power,
|
||||
prob(15);/obj/item/weapon/weldingtool/electric,
|
||||
prob(5);/obj/item/weapon/weldingtool/experimental)
|
||||
|
||||
/obj/random/tool/power
|
||||
name = "random powertool"
|
||||
desc = "This is a random powertool"
|
||||
@@ -148,7 +160,7 @@
|
||||
name = "Random Medicine"
|
||||
desc = "This is a random medical item."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "traumakit"
|
||||
icon_state = "advfirstaid"
|
||||
|
||||
/obj/random/medical/item_to_spawn()
|
||||
return pick(prob(21);/obj/random/medical/lite,
|
||||
@@ -203,11 +215,11 @@
|
||||
icon_state = "firstaid"
|
||||
|
||||
/obj/random/firstaid/item_to_spawn()
|
||||
return pick(prob(4);/obj/item/weapon/storage/firstaid/regular,
|
||||
prob(3);/obj/item/weapon/storage/firstaid/toxin,
|
||||
prob(3);/obj/item/weapon/storage/firstaid/o2,
|
||||
prob(2);/obj/item/weapon/storage/firstaid/adv,
|
||||
prob(3);/obj/item/weapon/storage/firstaid/fire,
|
||||
return pick(prob(10);/obj/item/weapon/storage/firstaid/regular,
|
||||
prob(8);/obj/item/weapon/storage/firstaid/toxin,
|
||||
prob(8);/obj/item/weapon/storage/firstaid/o2,
|
||||
prob(6);/obj/item/weapon/storage/firstaid/adv,
|
||||
prob(8);/obj/item/weapon/storage/firstaid/fire,
|
||||
prob(1);/obj/item/weapon/storage/firstaid/combat)
|
||||
|
||||
/obj/random/contraband
|
||||
@@ -236,6 +248,20 @@
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/drugs,
|
||||
prob(1);/obj/item/weapon/reagent_containers/syringe/steroid)
|
||||
|
||||
/obj/random/cash
|
||||
name = "random currency"
|
||||
desc = "LOADSAMONEY!"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "spacecash1"
|
||||
|
||||
/obj/random/cash/item_to_spawn()
|
||||
return pick(prob(320);/obj/random/maintenance/clean,
|
||||
prob(12);/obj/item/weapon/spacecash/c1,
|
||||
prob(8);/obj/item/weapon/spacecash/c10,
|
||||
prob(4);/obj/item/weapon/spacecash/c20,
|
||||
prob(1);/obj/item/weapon/spacecash/c50,
|
||||
prob(1);/obj/item/weapon/spacecash/c100)
|
||||
|
||||
/obj/random/soap
|
||||
name = "Random Soap"
|
||||
desc = "This is a random bar of soap."
|
||||
@@ -246,7 +272,7 @@
|
||||
return pick(prob(3);/obj/item/weapon/soap,
|
||||
prob(2);/obj/item/weapon/soap/nanotrasen,
|
||||
prob(2);/obj/item/weapon/soap/deluxe,
|
||||
prob(1);/obj/item/weapon/soap/syndie,)
|
||||
prob(1);/obj/item/weapon/soap/syndie)
|
||||
|
||||
|
||||
/obj/random/drinkbottle
|
||||
@@ -387,14 +413,45 @@
|
||||
icon_state = "nymphplushie"
|
||||
|
||||
/obj/random/plushie/item_to_spawn()
|
||||
return pick(/obj/item/toy/plushie/nymph,
|
||||
/obj/item/toy/plushie/mouse,
|
||||
/obj/item/toy/plushie/kitten,
|
||||
/obj/item/toy/plushie/lizard,
|
||||
/obj/item/toy/plushie/black_cat,
|
||||
/obj/item/toy/plushie/black_fox,
|
||||
/obj/item/toy/plushie/blue_fox,
|
||||
/obj/random/carp_plushie,
|
||||
/obj/item/toy/plushie/coffee_fox,
|
||||
/obj/item/toy/plushie/corgi,
|
||||
/obj/item/toy/plushie/crimson_fox,
|
||||
/obj/item/toy/plushie/deer,
|
||||
/obj/item/toy/plushie/girly_corgi,
|
||||
/obj/item/toy/plushie/grey_cat,
|
||||
/obj/item/toy/plushie/marble_fox,
|
||||
/obj/item/toy/plushie/octopus,
|
||||
/obj/item/toy/plushie/orange_cat,
|
||||
/obj/item/toy/plushie/orange_fox,
|
||||
/obj/item/toy/plushie/pink_fox,
|
||||
/obj/item/toy/plushie/purple_fox,
|
||||
/obj/item/toy/plushie/red_fox,
|
||||
/obj/item/toy/plushie/robo_corgi,
|
||||
/obj/item/toy/plushie/siamese_cat,
|
||||
/obj/item/toy/plushie/spider,
|
||||
/obj/item/toy/plushie/tabby_cat,
|
||||
/obj/item/toy/plushie/tuxedo_cat,
|
||||
/obj/item/toy/plushie/white_cat)
|
||||
|
||||
/obj/random/plushielarge
|
||||
name = "random large plushie"
|
||||
desc = "This is a randomn large plushie."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "droneplushie"
|
||||
|
||||
/obj/random/plushielarge/item_to_spawn()
|
||||
return pick(/obj/structure/plushie/ian,
|
||||
/obj/structure/plushie/drone,
|
||||
/obj/structure/plushie/carp,
|
||||
/obj/structure/plushie/beepsky,
|
||||
/obj/item/toy/plushie/nymph,
|
||||
/obj/item/toy/plushie/mouse,
|
||||
/obj/item/toy/plushie/kitten,
|
||||
/obj/item/toy/plushie/lizard)
|
||||
/obj/structure/plushie/beepsky)
|
||||
|
||||
/obj/random/toy
|
||||
name = "random toy"
|
||||
@@ -418,6 +475,8 @@
|
||||
/obj/item/toy/crossbow,
|
||||
/obj/item/toy/blink,
|
||||
/obj/item/toy/waterflower,
|
||||
/obj/item/toy/eight_ball,
|
||||
/obj/item/toy/eight_ball/conch,
|
||||
/obj/item/toy/prize/ripley,
|
||||
/obj/item/toy/prize/fireripley,
|
||||
/obj/item/toy/prize/deathripley,
|
||||
|
||||
@@ -10,7 +10,8 @@ LINEN BINS
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "sheet"
|
||||
slot_flags = SLOT_BACK
|
||||
layer = 4.0
|
||||
plane = MOB_PLANE
|
||||
layer = BELOW_MOB_LAYER
|
||||
throwforce = 1
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
@@ -19,9 +20,9 @@ LINEN BINS
|
||||
/obj/item/weapon/bedsheet/attack_self(mob/user as mob)
|
||||
user.drop_item()
|
||||
if(layer == initial(layer))
|
||||
layer = MOB_LAYER + 0.1
|
||||
layer = ABOVE_MOB_LAYER
|
||||
else
|
||||
layer = initial(layer)
|
||||
reset_plane_and_layer()
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
@@ -10,12 +10,14 @@
|
||||
var/needscharger //For drone pods that want their pod to turn into a charger.
|
||||
|
||||
// Call this to get a ghost volunteer.
|
||||
/obj/structure/ghost_pod/proc/trigger()
|
||||
/obj/structure/ghost_pod/proc/trigger(var/alert, var/adminalert)
|
||||
if(!ghost_query_type)
|
||||
return FALSE
|
||||
if(busy)
|
||||
return FALSE
|
||||
|
||||
visible_message(alert)
|
||||
log_and_message_admins(adminalert)
|
||||
busy = TRUE
|
||||
var/datum/ghost_query/Q = new ghost_query_type()
|
||||
var/list/winner = Q.query()
|
||||
@@ -44,7 +46,7 @@
|
||||
/obj/structure/ghost_pod/manual/attack_hand(var/mob/living/user)
|
||||
if(!used)
|
||||
if(confirm_before_open)
|
||||
if(alert(user, "Are you sure you want to open \the [src]?", "Confirm", "No", "Yes") == "No")
|
||||
if(alert(user, "Are you sure you want to touch \the [src]?", "Confirm", "No", "Yes") == "No")
|
||||
return
|
||||
trigger()
|
||||
|
||||
|
||||
@@ -13,9 +13,7 @@
|
||||
needscharger = TRUE
|
||||
|
||||
/obj/structure/ghost_pod/manual/lost_drone/trigger()
|
||||
..()
|
||||
visible_message("<span class='notice'>\The [src] appears to be attempting to restart the robot contained inside.</span>")
|
||||
log_and_message_admins("is attempting to open \a [src].")
|
||||
..("<span class='notice'>\The [src] appears to be attempting to restart the robot contained inside.</span>", "is attempting to open \a [src].")
|
||||
|
||||
/obj/structure/ghost_pod/manual/lost_drone/create_occupant(var/mob/M)
|
||||
density = FALSE
|
||||
@@ -68,14 +66,13 @@
|
||||
description_info = "This will summon some manner of creature through quite dubious means. The creature will be controlled by a player."
|
||||
icon_state = "corgirune"
|
||||
icon_state_opened = "corgirune-inert"
|
||||
density = TRUE
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
ghost_query_type = /datum/ghost_query/corgi_rune
|
||||
confirm_before_open = TRUE
|
||||
|
||||
/obj/structure/ghost_pod/manual/corgi/trigger()
|
||||
..()
|
||||
visible_message("<span class='warning'>\The [usr] places their hand on the rune!</span>")
|
||||
log_and_message_admins("is attempting to summon a corgi.")
|
||||
..("<span class='warning'>\The [usr] places their hand on the rune!</span>", "is attempting to summon a corgi.")
|
||||
|
||||
/obj/structure/ghost_pod/manual/corgi/create_occupant(var/mob/M)
|
||||
density = FALSE
|
||||
@@ -86,4 +83,29 @@
|
||||
R.ckey = M.ckey
|
||||
visible_message("<span class='warning'>With a bright flash of light, \the [src] disappears, and in its place stands a small corgi.</span>")
|
||||
log_and_message_admins("successfully touched \a [src] and summoned a corgi.")
|
||||
..()
|
||||
|
||||
/obj/structure/ghost_pod/manual/cursedblade
|
||||
name = "abandoned blade"
|
||||
desc = "A red crystal blade that someone jammed deep into a stone. If you try hard enough, you might be able to remove it."
|
||||
icon_state = "soulblade-embedded"
|
||||
icon_state_opened = "soulblade-released"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
ghost_query_type = /datum/ghost_query/cursedblade
|
||||
confirm_before_open = TRUE
|
||||
|
||||
/obj/structure/ghost_pod/manual/cursedblade/trigger()
|
||||
..("<span class='warning'>\The [usr] attempts to pull out the sword!</span>", "is activating a cursed blade.")
|
||||
|
||||
/obj/structure/ghost_pod/manual/cursedblade/create_occupant(var/mob/M)
|
||||
density = FALSE
|
||||
var/obj/item/weapon/melee/cursedblade/R = new(get_turf(src))
|
||||
to_chat(M, "<span class='notice'>You are a <b>Cursed Sword</b>, discovered by a hapless explorer. \
|
||||
You were once an explorer yourself, when one day you discovered a strange sword made from a red crystal. As soon as you touched it,\
|
||||
your body was reduced to ashes and your soul was cursed to remain trapped in the blade forever. \
|
||||
Now it is up to you to decide whether you want to be a faithful companion, or a bitter prisoner of the blade.</span>")
|
||||
R.ghost_inhabit(M)
|
||||
visible_message("<span class='warning'>The blade shines brightly for a brief moment as [usr] pulls it out of the stone!</span>")
|
||||
log_and_message_admins("successfully acquired a cursed sword.")
|
||||
..()
|
||||
@@ -2,7 +2,7 @@
|
||||
icon_state = "girder"
|
||||
anchored = 1
|
||||
density = 1
|
||||
layer = 2
|
||||
plane = PLATING_PLANE
|
||||
w_class = ITEMSIZE_HUGE
|
||||
var/state = 0
|
||||
var/health = 200
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
throwpass = 1
|
||||
climbable = 1
|
||||
|
||||
layer = 3.1 //Above dirt piles
|
||||
layer = ABOVE_JUNK_LAYER
|
||||
|
||||
//Maybe make these calculate based on material?
|
||||
var/health = 100
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
anchored = 1
|
||||
flags = CONDUCT
|
||||
pressure_resistance = 5*ONE_ATMOSPHERE
|
||||
layer = 2.9
|
||||
layer = UNDER_JUNK_LAYER
|
||||
explosion_resistance = 1
|
||||
var/health = 10
|
||||
var/destroyed = 0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
density = 0
|
||||
anchored = 1.0
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
layer = 2.3 //under pipes
|
||||
plane = PLATING_PLANE
|
||||
// flags = CONDUCT
|
||||
|
||||
/obj/structure/lattice/initialize()
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "morguet"
|
||||
density = 1
|
||||
layer = 2.0
|
||||
plane = TURF_PLANE
|
||||
var/obj/structure/morgue/connected = null
|
||||
anchored = 1
|
||||
throwpass = 1
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
density = 1
|
||||
throwpass = 1
|
||||
climbable = 1
|
||||
layer = 3.2 //Just above doors
|
||||
layer = WINDOW_LAYER
|
||||
anchored = 1
|
||||
flags = ON_BORDER
|
||||
icon_state = "railing0"
|
||||
|
||||
@@ -172,7 +172,8 @@ obj/structure/safe/ex_act(severity)
|
||||
icon_state = "floorsafe"
|
||||
density = 0
|
||||
level = 1 //underfloor
|
||||
layer = 2.5
|
||||
plane = TURF_PLANE
|
||||
layer = ABOVE_UTILITY
|
||||
|
||||
/obj/structure/safe/floor/initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
anchored = 1
|
||||
opacity = 0
|
||||
density = 0
|
||||
layer = 3.5
|
||||
layer = ABOVE_JUNK_LAYER
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/structure/sign/ex_act(severity)
|
||||
|
||||
@@ -48,15 +48,17 @@
|
||||
if(isnull(stool_cache[cache_key]))
|
||||
var/image/I = image(icon, "[base_icon]_armrest")
|
||||
I.layer = MOB_LAYER + 0.1
|
||||
I.plane = MOB_PLANE
|
||||
I.color = padding_material.icon_colour
|
||||
stool_cache[cache_key] = I
|
||||
overlays |= stool_cache[cache_key]
|
||||
|
||||
/obj/structure/bed/chair/proc/update_layer()
|
||||
if(src.dir == NORTH)
|
||||
src.layer = FLY_LAYER
|
||||
plane = MOB_PLANE
|
||||
layer = MOB_LAYER + 0.1
|
||||
else
|
||||
src.layer = OBJ_LAYER
|
||||
reset_plane_and_layer()
|
||||
|
||||
/obj/structure/bed/chair/set_dir()
|
||||
..()
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
W.density = 1
|
||||
user.remove_from_mob(W)
|
||||
W.loc = loc
|
||||
W.layer = 3.1
|
||||
W.layer = ABOVE_JUNK_LAYER
|
||||
pinned_target = W
|
||||
user << "You slide the target into the stake."
|
||||
return
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon = 'icons/obj/pipes/transit_tube.dmi'
|
||||
icon_state = "E-W"
|
||||
density = 1
|
||||
layer = 3.1
|
||||
layer = ABOVE_JUNK_LAYER
|
||||
anchored = 1.0
|
||||
var/list/tube_dirs = null
|
||||
var/exit_delay = 2
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
density = 1
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
layer = 3.2//Just above doors
|
||||
layer = WINDOW_LAYER
|
||||
pressure_resistance = 4*ONE_ATMOSPHERE
|
||||
anchored = 1.0
|
||||
flags = ON_BORDER
|
||||
@@ -462,7 +462,7 @@
|
||||
|
||||
if(ratio > 75)
|
||||
return
|
||||
var/image/I = image(icon, "damage[ratio]", layer + 0.1)
|
||||
var/image/I = image(icon, "damage[ratio]", layer = layer + 0.1)
|
||||
overlays += I
|
||||
|
||||
return
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
//Config stuff
|
||||
#define SUPPLY_DOCKZ 2 //Z-level of the Dock.
|
||||
#define SUPPLY_STATIONZ 1 //Z-level of the Station.
|
||||
#define SUPPLY_STATION_AREATYPE "/area/supply/station" //Type of the supply shuttle area for station
|
||||
#define SUPPLY_DOCK_AREATYPE "/area/supply/dock" //Type of the supply shuttle area for dock
|
||||
#define SUPPLY_DOCKZ 2 //Z-level of the Dock.
|
||||
#define SUPPLY_STATIONZ 1 //Z-level of the Station.
|
||||
#define SUPPLY_STATION_AREATYPE "/area/supply/station" //Type of the supply shuttle area for station
|
||||
#define SUPPLY_DOCK_AREATYPE "/area/supply/dock" //Type of the supply shuttle area for dock
|
||||
|
||||
//Supply packs are in /code/defines/obj/supplypacks.dm
|
||||
//Computers are in /code/game/machinery/computer/supply.dm
|
||||
@@ -10,333 +10,324 @@
|
||||
var/datum/controller/supply/supply_controller = new()
|
||||
|
||||
var/list/mechtoys = list(
|
||||
/obj/item/toy/prize/ripley,
|
||||
/obj/item/toy/prize/fireripley,
|
||||
/obj/item/toy/prize/deathripley,
|
||||
/obj/item/toy/prize/gygax,
|
||||
/obj/item/toy/prize/durand,
|
||||
/obj/item/toy/prize/honk,
|
||||
/obj/item/toy/prize/marauder,
|
||||
/obj/item/toy/prize/seraph,
|
||||
/obj/item/toy/prize/mauler,
|
||||
/obj/item/toy/prize/odysseus,
|
||||
/obj/item/toy/prize/phazon
|
||||
/obj/item/toy/prize/ripley,
|
||||
/obj/item/toy/prize/fireripley,
|
||||
/obj/item/toy/prize/deathripley,
|
||||
/obj/item/toy/prize/gygax,
|
||||
/obj/item/toy/prize/durand,
|
||||
/obj/item/toy/prize/honk,
|
||||
/obj/item/toy/prize/marauder,
|
||||
/obj/item/toy/prize/seraph,
|
||||
/obj/item/toy/prize/mauler,
|
||||
/obj/item/toy/prize/odysseus,
|
||||
/obj/item/toy/prize/phazon
|
||||
)
|
||||
|
||||
/obj/item/weapon/paper/manifest
|
||||
name = "supply manifest"
|
||||
var/is_copy = 1
|
||||
name = "supply manifest"
|
||||
var/is_copy = 1
|
||||
|
||||
/area/supply/station
|
||||
name = "Supply Shuttle"
|
||||
icon_state = "shuttle3"
|
||||
requires_power = 0
|
||||
base_turf = /turf/space
|
||||
name = "Supply Shuttle"
|
||||
icon_state = "shuttle3"
|
||||
requires_power = 0
|
||||
base_turf = /turf/space
|
||||
|
||||
/area/supply/dock
|
||||
name = "Supply Shuttle"
|
||||
icon_state = "shuttle3"
|
||||
requires_power = 0
|
||||
base_turf = /turf/space
|
||||
name = "Supply Shuttle"
|
||||
icon_state = "shuttle3"
|
||||
requires_power = 0
|
||||
base_turf = /turf/space
|
||||
|
||||
/obj/structure/plasticflaps //HOW DO YOU CALL THOSE THINGS ANYWAY
|
||||
name = "\improper plastic flaps"
|
||||
desc = "Completely impassable - or are they?"
|
||||
icon = 'icons/obj/stationobjs.dmi' //Change this.
|
||||
icon_state = "plasticflaps"
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 4
|
||||
explosion_resistance = 5
|
||||
var/list/mobs_can_pass = list(
|
||||
/mob/living/bot,
|
||||
/mob/living/simple_animal/slime,
|
||||
/mob/living/simple_animal/mouse,
|
||||
/mob/living/silicon/robot/drone
|
||||
)
|
||||
name = "\improper plastic flaps"
|
||||
desc = "Completely impassable - or are they?"
|
||||
icon = 'icons/obj/stationobjs.dmi' //Change this.
|
||||
icon_state = "plasticflaps"
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = MOB_LAYER
|
||||
plane = MOB_PLANE
|
||||
explosion_resistance = 5
|
||||
var/list/mobs_can_pass = list(
|
||||
/mob/living/bot,
|
||||
/mob/living/simple_animal/slime,
|
||||
/mob/living/simple_animal/mouse,
|
||||
/mob/living/silicon/robot/drone
|
||||
)
|
||||
|
||||
/obj/structure/plasticflaps/attackby(obj/item/P, mob/user)
|
||||
if(istype(P, /obj/item/weapon/wirecutters))
|
||||
playsound(src, P.usesound, 50, 1)
|
||||
user << "<span class='notice'>You start to cut the plastic flaps.</span>"
|
||||
if(do_after(user, 10 * P.toolspeed))
|
||||
user << "<span class='notice'>You cut the plastic flaps.</span>"
|
||||
var/obj/item/stack/material/plastic/A = new /obj/item/stack/material/plastic( src.loc )
|
||||
A.amount = 4
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
if(istype(P, /obj/item/weapon/wirecutters))
|
||||
playsound(src, P.usesound, 50, 1)
|
||||
user << "<span class='notice'>You start to cut the plastic flaps.</span>"
|
||||
if(do_after(user, 10 * P.toolspeed))
|
||||
user << "<span class='notice'>You cut the plastic flaps.</span>"
|
||||
var/obj/item/stack/material/plastic/A = new /obj/item/stack/material/plastic( src.loc )
|
||||
A.amount = 4
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
/obj/structure/plasticflaps/CanPass(atom/A, turf/T)
|
||||
if(istype(A) && A.checkpass(PASSGLASS))
|
||||
return prob(60)
|
||||
if(istype(A) && A.checkpass(PASSGLASS))
|
||||
return prob(60)
|
||||
|
||||
var/obj/structure/bed/B = A
|
||||
if (istype(A, /obj/structure/bed) && B.has_buckled_mobs())//if it's a bed/chair and someone is buckled, it will not pass
|
||||
return 0
|
||||
var/obj/structure/bed/B = A
|
||||
if (istype(A, /obj/structure/bed) && B.has_buckled_mobs())//if it's a bed/chair and someone is buckled, it will not pass
|
||||
return 0
|
||||
|
||||
if(istype(A, /obj/vehicle)) //no vehicles
|
||||
return 0
|
||||
if(istype(A, /obj/vehicle)) //no vehicles
|
||||
return 0
|
||||
|
||||
var/mob/living/M = A
|
||||
if(istype(M))
|
||||
if(M.lying)
|
||||
return ..()
|
||||
for(var/mob_type in mobs_can_pass)
|
||||
if(istype(A, mob_type))
|
||||
return ..()
|
||||
return issmall(M)
|
||||
var/mob/living/M = A
|
||||
if(istype(M))
|
||||
if(M.lying)
|
||||
return ..()
|
||||
for(var/mob_type in mobs_can_pass)
|
||||
if(istype(A, mob_type))
|
||||
return ..()
|
||||
return issmall(M)
|
||||
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/plasticflaps/ex_act(severity)
|
||||
switch(severity)
|
||||
if (1)
|
||||
qdel(src)
|
||||
if (2)
|
||||
if (prob(50))
|
||||
qdel(src)
|
||||
if (3)
|
||||
if (prob(5))
|
||||
qdel(src)
|
||||
switch(severity)
|
||||
if (1)
|
||||
qdel(src)
|
||||
if (2)
|
||||
if (prob(50))
|
||||
qdel(src)
|
||||
if (3)
|
||||
if (prob(5))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates
|
||||
name = "airtight plastic flaps"
|
||||
desc = "Heavy duty, airtight, plastic flaps."
|
||||
name = "airtight plastic flaps"
|
||||
desc = "Heavy duty, airtight, plastic flaps."
|
||||
|
||||
New() //set the turf below the flaps to block air
|
||||
var/turf/T = get_turf(loc)
|
||||
if(T)
|
||||
T.blocks_air = 1
|
||||
..()
|
||||
/obj/structure/plasticflaps/mining/New() //set the turf below the flaps to block air
|
||||
var/turf/T = get_turf(loc)
|
||||
if(T)
|
||||
T.blocks_air = 1
|
||||
..()
|
||||
|
||||
Destroy() //lazy hack to set the turf to allow air to pass if it's a simulated floor
|
||||
var/turf/T = get_turf(loc)
|
||||
if(T)
|
||||
if(istype(T, /turf/simulated/floor))
|
||||
T.blocks_air = 0
|
||||
..()
|
||||
/obj/structure/plasticflaps/mining/Destroy() //lazy hack to set the turf to allow air to pass if it's a simulated floor
|
||||
var/turf/T = get_turf(loc)
|
||||
if(T && istype(T, /turf/simulated/floor))
|
||||
T.blocks_air = 0
|
||||
..()
|
||||
|
||||
/*
|
||||
/obj/effect/marker/supplymarker
|
||||
icon_state = "X"
|
||||
icon = 'icons/misc/mark.dmi'
|
||||
name = "X"
|
||||
invisibility = 101
|
||||
anchored = 1
|
||||
opacity = 0
|
||||
icon_state = "X"
|
||||
icon = 'icons/misc/mark.dmi'
|
||||
name = "X"
|
||||
invisibility = 101
|
||||
anchored = 1
|
||||
opacity = 0
|
||||
*/
|
||||
|
||||
/datum/supply_order
|
||||
var/ordernum
|
||||
var/datum/supply_packs/object = null
|
||||
var/orderedby = null
|
||||
var/comment = null
|
||||
var/ordernum
|
||||
var/datum/supply_packs/object = null
|
||||
var/orderedby = null
|
||||
var/comment = null
|
||||
|
||||
//VOREStation Edit - Export reports
|
||||
/datum/exported_crate
|
||||
var/name
|
||||
var/value
|
||||
//VOREStation Edit End
|
||||
var/name
|
||||
var/value
|
||||
|
||||
/datum/controller/supply
|
||||
//supply points
|
||||
var/points = 50
|
||||
var/points_per_process = 1.5
|
||||
var/points_per_slip = 2
|
||||
var/points_per_platinum = 5 // 5 points per sheet
|
||||
var/points_per_phoron = 5
|
||||
var/points_per_money = 0.02
|
||||
//control
|
||||
var/ordernum
|
||||
var/list/shoppinglist = list()
|
||||
var/list/requestlist = list()
|
||||
var/list/supply_packs = list()
|
||||
var/list/exported_crates = list() //VOREStation Edit - Export reports
|
||||
//shuttle movement
|
||||
var/movetime = 1200
|
||||
var/datum/shuttle/ferry/supply/shuttle
|
||||
//supply points
|
||||
var/points = 50
|
||||
var/points_per_process = 1.5
|
||||
var/points_per_slip = 2
|
||||
var/points_per_platinum = 5 // 5 points per sheet
|
||||
var/points_per_phoron = 5
|
||||
var/points_per_money = 0.02
|
||||
//control
|
||||
var/ordernum
|
||||
var/list/shoppinglist = list()
|
||||
var/list/requestlist = list()
|
||||
var/list/supply_packs = list()
|
||||
var/list/exported_crates = list()
|
||||
//shuttle movement
|
||||
var/movetime = 1200
|
||||
var/datum/shuttle/ferry/supply/shuttle
|
||||
|
||||
New()
|
||||
ordernum = rand(1,9000)
|
||||
/datum/controller/supply/New()
|
||||
ordernum = rand(1,9000)
|
||||
|
||||
for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs))
|
||||
var/datum/supply_packs/P = new typepath()
|
||||
supply_packs[P.name] = P
|
||||
for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs))
|
||||
var/datum/supply_packs/P = new typepath()
|
||||
supply_packs[P.name] = P
|
||||
|
||||
// Supply shuttle ticker - handles supply point regeneration
|
||||
// This is called by the process scheduler every thirty seconds
|
||||
proc/process()
|
||||
points += points_per_process
|
||||
// Supply shuttle ticker - handles supply point regeneration
|
||||
// This is called by the process scheduler every thirty seconds
|
||||
/datum/controller/supply/proc/process()
|
||||
points += points_per_process
|
||||
|
||||
//To stop things being sent to CentCom which should not be sent to centcomm. Recursively checks for these types.
|
||||
proc/forbidden_atoms_check(atom/A)
|
||||
if(istype(A,/mob/living))
|
||||
return 1
|
||||
if(istype(A,/obj/item/weapon/disk/nuclear))
|
||||
return 1
|
||||
if(istype(A,/obj/machinery/nuclearbomb))
|
||||
return 1
|
||||
if(istype(A,/obj/item/device/radio/beacon))
|
||||
return 1
|
||||
//To stop things being sent to CentCom which should not be sent to centcomm. Recursively checks for these types.
|
||||
/datum/controller/supply/proc/forbidden_atoms_check(atom/A)
|
||||
if(isliving(A))
|
||||
return 1
|
||||
if(istype(A,/obj/item/weapon/disk/nuclear))
|
||||
return 1
|
||||
if(istype(A,/obj/machinery/nuclearbomb))
|
||||
return 1
|
||||
if(istype(A,/obj/item/device/radio/beacon))
|
||||
return 1
|
||||
|
||||
for(var/i=1, i<=A.contents.len, i++)
|
||||
var/atom/B = A.contents[i]
|
||||
if(.(B))
|
||||
return 1
|
||||
for(var/i=1, i<=A.contents.len, i++)
|
||||
var/atom/B = A.contents[i]
|
||||
if(.(B))
|
||||
return 1
|
||||
|
||||
//Sellin
|
||||
proc/sell()
|
||||
var/area/area_shuttle = shuttle.get_location_area()
|
||||
if(!area_shuttle) return
|
||||
//Sellin
|
||||
/datum/controller/supply/proc/sell()
|
||||
var/area/area_shuttle = shuttle.get_location_area()
|
||||
if(!area_shuttle) return
|
||||
|
||||
callHook("sell_shuttle", list(area_shuttle));
|
||||
callHook("sell_shuttle", list(area_shuttle));
|
||||
|
||||
var/phoron_count = 0
|
||||
var/plat_count = 0
|
||||
var/money_count = 0
|
||||
var/phoron_count = 0
|
||||
var/plat_count = 0
|
||||
var/money_count = 0
|
||||
|
||||
exported_crates = list() //VOREStation Edit - Export reports
|
||||
exported_crates = list()
|
||||
|
||||
for(var/atom/movable/MA in area_shuttle)
|
||||
if(MA.anchored) continue
|
||||
for(var/atom/movable/MA in area_shuttle)
|
||||
if(MA.anchored) continue
|
||||
|
||||
// Must be in a crate!
|
||||
if(istype(MA,/obj/structure/closet/crate))
|
||||
//VOREStation Edit - Export reports
|
||||
var/oldpoints = points
|
||||
var/oldphoron = phoron_count
|
||||
var/oldplatinum = plat_count
|
||||
var/oldmoney = money_count
|
||||
//VOREStation Edit End
|
||||
// Must be in a crate!
|
||||
if(istype(MA,/obj/structure/closet/crate))
|
||||
var/oldpoints = points
|
||||
var/oldphoron = phoron_count
|
||||
var/oldplatinum = plat_count
|
||||
var/oldmoney = money_count
|
||||
|
||||
var/obj/structure/closet/crate/CR = MA
|
||||
callHook("sell_crate", list(CR, area_shuttle))
|
||||
var/obj/structure/closet/crate/CR = MA
|
||||
callHook("sell_crate", list(CR, area_shuttle))
|
||||
|
||||
points += CR.points_per_crate
|
||||
var/find_slip = 1
|
||||
points += CR.points_per_crate
|
||||
var/find_slip = 1
|
||||
|
||||
for(var/atom in CR)
|
||||
// Sell manifests
|
||||
var/atom/A = atom
|
||||
if(find_slip && istype(A,/obj/item/weapon/paper/manifest))
|
||||
var/obj/item/weapon/paper/manifest/slip = A
|
||||
if(!slip.is_copy && slip.stamped && slip.stamped.len) //yes, the clown stamp will work. clown is the highest authority on the station, it makes sense
|
||||
points += points_per_slip
|
||||
find_slip = 0
|
||||
continue
|
||||
for(var/atom in CR)
|
||||
// Sell manifests
|
||||
var/atom/A = atom
|
||||
if(find_slip && istype(A,/obj/item/weapon/paper/manifest))
|
||||
var/obj/item/weapon/paper/manifest/slip = A
|
||||
if(!slip.is_copy && slip.stamped && slip.stamped.len) //yes, the clown stamp will work. clown is the highest authority on the station, it makes sense
|
||||
points += points_per_slip
|
||||
find_slip = 0
|
||||
continue
|
||||
|
||||
// Sell phoron and platinum
|
||||
if(istype(A, /obj/item/stack))
|
||||
var/obj/item/stack/P = A
|
||||
switch(P.get_material_name())
|
||||
if("phoron") phoron_count += P.get_amount()
|
||||
if("platinum") plat_count += P.get_amount()
|
||||
// Sell phoron and platinum
|
||||
if(istype(A, /obj/item/stack))
|
||||
var/obj/item/stack/P = A
|
||||
switch(P.get_material_name())
|
||||
if("phoron") phoron_count += P.get_amount()
|
||||
if("platinum") plat_count += P.get_amount()
|
||||
|
||||
//Sell spacebucks
|
||||
if(istype(A, /obj/item/weapon/spacecash))
|
||||
var/obj/item/weapon/spacecash/cashmoney = A
|
||||
money_count += cashmoney.worth
|
||||
//Sell spacebucks
|
||||
if(istype(A, /obj/item/weapon/spacecash))
|
||||
var/obj/item/weapon/spacecash/cashmoney = A
|
||||
money_count += cashmoney.worth
|
||||
|
||||
//VOREStation Edit - Export reports
|
||||
var/datum/exported_crate/EC = new /datum/exported_crate()
|
||||
EC.name = CR.name
|
||||
EC.value = points - oldpoints
|
||||
EC.value += (phoron_count - oldphoron) * points_per_phoron
|
||||
EC.value += (plat_count - oldplatinum) * points_per_platinum
|
||||
EC.value += (money_count - oldmoney) * points_per_money
|
||||
exported_crates += EC
|
||||
//VOREStation Edit End
|
||||
var/datum/exported_crate/EC = new /datum/exported_crate()
|
||||
EC.name = CR.name
|
||||
EC.value = points - oldpoints
|
||||
EC.value += (phoron_count - oldphoron) * points_per_phoron
|
||||
EC.value += (plat_count - oldplatinum) * points_per_platinum
|
||||
EC.value += (money_count - oldmoney) * points_per_money
|
||||
exported_crates += EC
|
||||
|
||||
qdel(MA)
|
||||
qdel(MA)
|
||||
|
||||
if(phoron_count)
|
||||
points += phoron_count * points_per_phoron
|
||||
points += phoron_count * points_per_phoron
|
||||
points += plat_count * points_per_platinum
|
||||
points += money_count * points_per_money
|
||||
|
||||
if(plat_count)
|
||||
points += plat_count * points_per_platinum
|
||||
//Buyin
|
||||
/datum/controller/supply/proc/buy()
|
||||
if(!shoppinglist.len)
|
||||
return
|
||||
|
||||
if(money_count)
|
||||
points += money_count * points_per_money
|
||||
var/orderedamount = shoppinglist.len
|
||||
|
||||
//Buyin
|
||||
proc/buy()
|
||||
if(!shoppinglist.len) return
|
||||
var/area/area_shuttle = shuttle.get_location_area()
|
||||
if(!area_shuttle)
|
||||
return
|
||||
|
||||
var/orderedamount = shoppinglist.len
|
||||
var/list/clear_turfs = list()
|
||||
|
||||
var/area/area_shuttle = shuttle.get_location_area()
|
||||
if(!area_shuttle) return
|
||||
for(var/turf/T in area_shuttle)
|
||||
if(T.density)
|
||||
continue
|
||||
var/contcount
|
||||
for(var/atom/A in T.contents)
|
||||
if(!A.simulated)
|
||||
continue
|
||||
contcount++
|
||||
if(contcount)
|
||||
continue
|
||||
clear_turfs += T
|
||||
|
||||
var/list/clear_turfs = list()
|
||||
for(var/S in shoppinglist)
|
||||
if(!clear_turfs.len) break
|
||||
var/i = rand(1,clear_turfs.len)
|
||||
var/turf/pickedloc = clear_turfs[i]
|
||||
clear_turfs.Cut(i,i+1)
|
||||
shoppinglist -= S
|
||||
|
||||
for(var/turf/T in area_shuttle)
|
||||
if(T.density) continue
|
||||
var/contcount
|
||||
for(var/atom/A in T.contents)
|
||||
if(!A.simulated)
|
||||
continue
|
||||
contcount++
|
||||
if(contcount)
|
||||
continue
|
||||
clear_turfs += T
|
||||
var/datum/supply_order/SO = S
|
||||
var/datum/supply_packs/SP = SO.object
|
||||
|
||||
for(var/S in shoppinglist)
|
||||
if(!clear_turfs.len) break
|
||||
var/i = rand(1,clear_turfs.len)
|
||||
var/turf/pickedloc = clear_turfs[i]
|
||||
clear_turfs.Cut(i,i+1)
|
||||
shoppinglist -= S
|
||||
var/obj/A = new SP.containertype(pickedloc)
|
||||
A.name = "[SP.containername] [SO.comment ? "([SO.comment])":"" ]"
|
||||
|
||||
var/datum/supply_order/SO = S
|
||||
var/datum/supply_packs/SP = SO.object
|
||||
//supply manifest generation begin
|
||||
var/obj/item/weapon/paper/manifest/slip
|
||||
if(!SP.contraband)
|
||||
slip = new /obj/item/weapon/paper/manifest(A)
|
||||
slip.is_copy = 0
|
||||
slip.info = "<h3>[command_name()] Shipping Manifest</h3><hr><br>"
|
||||
slip.info +="Order #[SO.ordernum]<br>"
|
||||
slip.info +="Destination: [station_name()]<br>"
|
||||
slip.info +="[orderedamount] PACKAGES IN THIS SHIPMENT<br>"
|
||||
slip.info +="CONTENTS:<br><ul>"
|
||||
|
||||
var/obj/A = new SP.containertype(pickedloc)
|
||||
A.name = "[SP.containername] [SO.comment ? "([SO.comment])":"" ]"
|
||||
//spawn the stuff, finish generating the manifest while you're at it
|
||||
if(SP.access)
|
||||
if(isnum(SP.access))
|
||||
A.req_access = list(SP.access)
|
||||
else if(islist(SP.access))
|
||||
var/list/L = SP.access // access var is a plain var, we need a list
|
||||
A.req_access = L.Copy()
|
||||
else
|
||||
log_debug("<span class='danger'>Supply pack with invalid access restriction [SP.access] encountered!</span>")
|
||||
|
||||
//supply manifest generation begin
|
||||
var/list/contains
|
||||
if(istype(SP,/datum/supply_packs/randomised))
|
||||
var/datum/supply_packs/randomised/SPR = SP
|
||||
contains = list()
|
||||
if(SPR.contains.len)
|
||||
for(var/j=1,j<=SPR.num_contained,j++)
|
||||
contains += pick(SPR.contains)
|
||||
else
|
||||
contains = SP.contains
|
||||
|
||||
var/obj/item/weapon/paper/manifest/slip
|
||||
if(!SP.contraband)
|
||||
slip = new /obj/item/weapon/paper/manifest(A)
|
||||
slip.is_copy = 0
|
||||
slip.info = "<h3>[command_name()] Shipping Manifest</h3><hr><br>"
|
||||
slip.info +="Order #[SO.ordernum]<br>"
|
||||
slip.info +="Destination: [station_name()]<br>"
|
||||
slip.info +="[orderedamount] PACKAGES IN THIS SHIPMENT<br>"
|
||||
slip.info +="CONTENTS:<br><ul>"
|
||||
for(var/typepath in contains)
|
||||
if(!typepath) continue
|
||||
var/number_of_items = max(1, contains[typepath])
|
||||
for(var/j = 1 to number_of_items)
|
||||
var/atom/B2 = new typepath(A)
|
||||
if(slip) slip.info += "<li>[B2.name]</li>" //add the item to the manifest
|
||||
|
||||
//spawn the stuff, finish generating the manifest while you're at it
|
||||
if(SP.access)
|
||||
if(isnum(SP.access))
|
||||
A.req_access = list(SP.access)
|
||||
else if(islist(SP.access))
|
||||
var/list/L = SP.access // access var is a plain var, we need a list
|
||||
A.req_access = L.Copy()
|
||||
else
|
||||
world << "<span class='danger'>Supply pack with invalid access restriction [SP.access] encountered!</span>"
|
||||
//manifest finalisation
|
||||
if(slip)
|
||||
slip.info += "</ul><br>"
|
||||
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>"
|
||||
|
||||
var/list/contains
|
||||
if(istype(SP,/datum/supply_packs/randomised))
|
||||
var/datum/supply_packs/randomised/SPR = SP
|
||||
contains = list()
|
||||
if(SPR.contains.len)
|
||||
for(var/j=1,j<=SPR.num_contained,j++)
|
||||
contains += pick(SPR.contains)
|
||||
else
|
||||
contains = SP.contains
|
||||
|
||||
for(var/typepath in contains)
|
||||
if(!typepath) continue
|
||||
var/number_of_items = max(1, contains[typepath])
|
||||
for(var/j = 1 to number_of_items)
|
||||
var/atom/B2 = new typepath(A)
|
||||
if(slip) slip.info += "<li>[B2.name]</li>" //add the item to the manifest
|
||||
|
||||
//manifest finalisation
|
||||
if(slip)
|
||||
slip.info += "</ul><br>"
|
||||
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>"
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
@@ -67,6 +67,13 @@ var/list/flooring_types
|
||||
desc = "A layer of many tiny bits of frozen water. It's hard to tell how deep it is."
|
||||
icon = 'icons/turf/snow_new.dmi'
|
||||
icon_base = "snow"
|
||||
footstep_sounds = list("human" = list(
|
||||
'sound/effects/footstep/snow1.ogg',
|
||||
'sound/effects/footstep/snow2.ogg',
|
||||
'sound/effects/footstep/snow3.ogg',
|
||||
'sound/effects/footstep/snow4.ogg',
|
||||
'sound/effects/footstep/snow5.ogg'))
|
||||
|
||||
|
||||
/decl/flooring/snow/snow2
|
||||
name = "snow"
|
||||
|
||||
@@ -6,7 +6,7 @@ var/list/floor_decals = list()
|
||||
/obj/effect/floor_decal
|
||||
name = "floor decal"
|
||||
icon = 'icons/turf/flooring/decals_vr.dmi' // VOREStation Edit
|
||||
layer = DECALS_LAYER
|
||||
plane = DECAL_PLANE
|
||||
var/supplied_dir
|
||||
|
||||
/obj/effect/floor_decal/New(var/newloc, var/newdir, var/newcolour)
|
||||
|
||||
@@ -7,7 +7,7 @@ var/image/no_ceiling_image = null
|
||||
return TRUE
|
||||
|
||||
/proc/cache_no_ceiling_image()
|
||||
no_ceiling_image = image(icon = 'icons/turf/open_space.dmi', icon_state = "no_ceiling", layer = OVERTURF_LAYER)
|
||||
no_ceiling_image = image(icon = 'icons/turf/open_space.dmi', icon_state = "no_ceiling")
|
||||
no_ceiling_image.plane = PLANE_MESONS
|
||||
|
||||
/turf/simulated/floor/update_icon(var/update_neighbors)
|
||||
|
||||
@@ -3,12 +3,14 @@
|
||||
icon_state = "snow"
|
||||
edge_blending_priority = 6
|
||||
movement_cost = 2
|
||||
initial_flooring = /decl/flooring/snow
|
||||
turf_layers = list(
|
||||
/turf/simulated/floor/outdoors/rocks,
|
||||
/turf/simulated/floor/outdoors/dirt
|
||||
)
|
||||
var/list/crossed_dirs = list()
|
||||
|
||||
|
||||
/turf/simulated/floor/outdoors/snow/Entered(atom/A)
|
||||
if(isliving(A))
|
||||
var/mdir = "[A.dir]"
|
||||
@@ -51,5 +53,5 @@
|
||||
if(istype(M, /mob/living))
|
||||
if(M.stunned == 0)
|
||||
to_chat(M, "<span class='warning'>You slide across the ice!</span>")
|
||||
M.SetStunned(2)
|
||||
M.SetStunned(1)
|
||||
step(M,M.dir)
|
||||
|
||||
@@ -252,7 +252,7 @@
|
||||
O.icon_state = "2"
|
||||
O.anchored = 1
|
||||
O.density = 1
|
||||
O.layer = 5
|
||||
O.plane = ABOVE_PLANE
|
||||
|
||||
if(girder_material.integrity >= 150 && !girder_material.is_brittle()) //Strong girders will remain in place when a wall is melted.
|
||||
dismantle_wall(1,1)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/turf
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
layer = TURF_LAYER
|
||||
plane = TURF_PLANE
|
||||
level = 1
|
||||
var/holy = 0
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
icon = 'icons/turf/shuttle_white.dmi'
|
||||
thermal_conductivity = 0.05
|
||||
heat_capacity = 0
|
||||
layer = 2
|
||||
|
||||
/turf/unsimulated/shuttle/wall
|
||||
name = "wall"
|
||||
|
||||
@@ -7,6 +7,7 @@ var/global/floorIsLava = 0
|
||||
/proc/message_admins(var/msg)
|
||||
msg = "<span class=\"log_message\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[msg]</span></span>"
|
||||
//log_adminwarn(msg) //log_and_message_admins is for this
|
||||
|
||||
for(var/client/C in admins)
|
||||
if((R_ADMIN|R_MOD) & C.holder.rights)
|
||||
C << msg
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user