mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
Merge remote-tracking branch 'refs/remotes/tgstation/master' into Research
This commit is contained in:
@@ -1,53 +0,0 @@
|
||||
"a" = (/turf/closed/mineral/volcanic/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"b" = (/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"c" = (/turf/closed/wall/r_wall,/area/ruin/powered)
|
||||
"d" = (/obj/structure/closet,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"e" = (/obj/structure/closet,/mob/living/simple_animal/hostile/zombie,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"f" = (/obj/structure/punching_bag,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"g" = (/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"h" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/item/weapon/shard{icon_state = "medium"},/mob/living/simple_animal/hostile/zombie/gymboss,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"i" = (/obj/structure/window{icon_state = "window";dir = 1},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"j" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/structure/window{icon_state = "window";dir = 4},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"k" = (/obj/effect/decal/cleanable/blood,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"l" = (/obj/structure/weightlifter,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"m" = (/obj/structure/window{icon_state = "window";dir = 8},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"n" = (/obj/structure/window{icon_state = "window";dir = 4},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"o" = (/obj/structure/stacklifter,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"p" = (/obj/structure/window,/obj/structure/window{icon_state = "window";dir = 8},/obj/effect/decal/cleanable/blood,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"q" = (/obj/structure/window,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"r" = (/obj/structure/window,/obj/item/weapon/shard,/mob/living/simple_animal/hostile/zombie/darkholme,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"s" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter4 (NORTH)";icon_state = "splatter4";dir = 1},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"t" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter6 (EAST)";icon_state = "splatter6";dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTH)";icon_state = "tracks";dir = 1},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-gib3";icon_state = "gib3"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"u" = (/obj/machinery/door/airlock/external,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"v" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)";icon_state = "tracks";dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTHEAST)";icon_state = "tracks";dir = 5},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"w" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)";icon_state = "tracks";dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHEAST)";icon_state = "tracks";dir = 6},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"x" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter5";icon_state = "splatter5"},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)";icon_state = "tracks";dir = 4},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"y" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter4 (NORTH)";icon_state = "splatter4";dir = 1},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter6 (NORTH)";icon_state = "splatter6";dir = 1},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"z" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter5";icon_state = "splatter5"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"A" = (/mob/living/simple_animal/hostile/zombie,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"B" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/machinery/shower,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"C" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/machinery/shower,/mob/living/simple_animal/hostile/zombie,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
|
||||
"D" = (/turf/template_noop,/area/template_noop)
|
||||
|
||||
(1,1,1) = {"
|
||||
DDDDDDDDDDDDDDDDDDDD
|
||||
DDDDDDDDDDDDDDDDDDDD
|
||||
DDDDDDDDDDDDDDDDDDDD
|
||||
DDDDDDDDDDDDDDDDDDDD
|
||||
DDDccccccccccccDDDDD
|
||||
DDDcdeddddddedcbDDDD
|
||||
DDDcfgghiijkglcbaDDD
|
||||
DDDcfggmgkngglcbbbDD
|
||||
DDDcfggmggnggocbbbDD
|
||||
DDDcfggpqqrggocstbbD
|
||||
DDDcgkgggggggkuvwxbD
|
||||
DDDcuucccccccccyzbbD
|
||||
DDDcgAgggggggAcbbbbD
|
||||
DDDcggggggAgggcbbbDD
|
||||
DDDcBCBBggBBBBcbbDDD
|
||||
DDDcgggggggAggcbDDDD
|
||||
DDDccccccccccccbDDDD
|
||||
DDDDDDDDDDDDDDDDDDDD
|
||||
DDDDDDDDDDDDDDDDDDDD
|
||||
DDDDDDDDDDDDDDDDDDDD
|
||||
"}
|
||||
@@ -99122,7 +99122,7 @@
|
||||
/obj/docking_port/stationary{
|
||||
dheight = 0;
|
||||
dir = 2;
|
||||
dwidth = 10;
|
||||
dwidth = 9;
|
||||
height = 25;
|
||||
id = "emergency_home";
|
||||
name = "MetaStation emergency evac bay";
|
||||
|
||||
@@ -39,11 +39,10 @@
|
||||
|
||||
|
||||
//Grab levels
|
||||
#define GRAB_PASSIVE 1
|
||||
#define GRAB_AGGRESSIVE 2
|
||||
#define GRAB_NECK 3
|
||||
#define GRAB_UPGRADING 4
|
||||
#define GRAB_KILL 5
|
||||
#define GRAB_PASSIVE 0
|
||||
#define GRAB_AGGRESSIVE 1
|
||||
#define GRAB_NECK 2
|
||||
#define GRAB_KILL 3
|
||||
|
||||
|
||||
//Hostile Mob AI Status
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
//Defines for atom layers
|
||||
//KEEP THESE IN A NICE ACSCENDING ORDER, PLEASE
|
||||
|
||||
//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define
|
||||
#define ABOVE_OPEN_TURF_LAYER 2.01
|
||||
#define CLOSED_TURF_LAYER 2.05
|
||||
#define ABOVE_NORMAL_TURF_LAYER 2.08
|
||||
#define LATTICE_LAYER 2.2
|
||||
#define DISPOSAL_PIPE_LAYER 2.3
|
||||
#define GAS_PIPE_LAYER 2.35
|
||||
#define WIRE_LAYER 2.4
|
||||
#define WIRE_TERMINAL_LAYER 2.45
|
||||
#define LOW_OBJ_LAYER 2.5
|
||||
|
||||
#define OPEN_DOOR_LAYER 2.7
|
||||
#define PROJECTILE_HIT_THRESHHOLD_LAYER 2.75 //projectiles won't hit objects at or below this layer if possible
|
||||
#define TABLE_LAYER 2.8
|
||||
#define BELOW_OBJ_LAYER 2.9
|
||||
#define LOW_ITEM_LAYER 2.95
|
||||
//#define OBJ_LAYER 3 //For easy recordkeeping; this is a byond define
|
||||
#define CLOSED_DOOR_LAYER 3.1
|
||||
#define CLOSED_FIREDOOR_LAYER 3.11
|
||||
#define ABOVE_OBJ_LAYER 3.2
|
||||
#define SIGN_LAYER 3.4
|
||||
#define HIGH_OBJ_LAYER 3.5
|
||||
|
||||
#define BELOW_MOB_LAYER 3.7
|
||||
#define LYING_MOB_LAYER 3.8
|
||||
//#define MOB_LAYER 4 //For easy recordkeeping; this is a byond define
|
||||
#define ABOVE_MOB_LAYER 4.1
|
||||
#define WALL_OBJ_LAYER 4.25
|
||||
#define EDGED_TURF_LAYER 4.3
|
||||
#define ON_EDGED_TURF_LAYER 4.35
|
||||
#define LARGE_MOB_LAYER 4.4
|
||||
#define ABOVE_ALL_MOB_LAYER 4.5
|
||||
|
||||
#define SPACEVINE_LAYER 4.8
|
||||
#define SPACEVINE_MOB_LAYER 4.9
|
||||
//#define FLY_LAYER 5 //For easy recordkeeping; this is a byond define
|
||||
|
||||
#define GHOST_LAYER 6
|
||||
#define AREA_LAYER 10
|
||||
#define MASSIVE_OBJ_LAYER 11
|
||||
#define POINT_LAYER 12
|
||||
#define LIGHTING_LAYER 15
|
||||
|
||||
//HUD layer defines
|
||||
#define FLASH_LAYER 17.9
|
||||
#define FULLSCREEN_LAYER 18
|
||||
#define DAMAGE_LAYER 18.1
|
||||
#define BLIND_LAYER 18.2
|
||||
#define CRIT_LAYER 18.3
|
||||
#define HUD_LAYER 19
|
||||
#define ABOVE_HUD_LAYER 19.1
|
||||
@@ -150,8 +150,9 @@
|
||||
#define CLICK_CD_RANGE 4
|
||||
#define CLICK_CD_BREAKOUT 100
|
||||
#define CLICK_CD_HANDCUFFED 10
|
||||
#define CLICK_CD_TKSTRANGLE 10
|
||||
#define CLICK_CD_RESIST 20
|
||||
#define CLICK_CD_GRABBING 10
|
||||
|
||||
//click cooldowns, in tenths of a second
|
||||
|
||||
|
||||
@@ -426,3 +427,7 @@ var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
// Defib stats
|
||||
#define DEFIB_TIME_LIMIT 120
|
||||
#define DEFIB_TIME_LOSS 60
|
||||
|
||||
// Diagonal movement
|
||||
#define FIRST_DIAG_STEP 1
|
||||
#define SECOND_DIAG_STEP 2
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
CtrlClickOn(A)
|
||||
return
|
||||
|
||||
if(stat || paralysis || stunned || weakened || sleeping)
|
||||
if(incapacitated(ignore_restraints = 1))
|
||||
return
|
||||
|
||||
face_atom(A)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
blobpwrdisplay.icon_state = "block"
|
||||
blobpwrdisplay.screen_loc = ui_health
|
||||
blobpwrdisplay.mouse_opacity = 0
|
||||
blobpwrdisplay.layer = 20
|
||||
blobpwrdisplay.layer = ABOVE_HUD_LAYER
|
||||
infodisplay += blobpwrdisplay
|
||||
|
||||
healths = new /obj/screen/healths/blob()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
using.icon = ui_style
|
||||
using.icon_state = "swap_1_m"
|
||||
using.screen_loc = ui_swaphand1
|
||||
using.layer = 19
|
||||
using.layer = HUD_LAYER
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/inventory()
|
||||
@@ -43,7 +43,7 @@
|
||||
using.icon = ui_style
|
||||
using.icon_state = "swap_2"
|
||||
using.screen_loc = ui_swaphand2
|
||||
using.layer = 19
|
||||
using.layer = HUD_LAYER
|
||||
static_inventory += using
|
||||
|
||||
zone_select = new /obj/screen/zone_sel()
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#define FULLSCREEN_LAYER 18
|
||||
#define DAMAGE_LAYER FULLSCREEN_LAYER + 0.1
|
||||
#define BLIND_LAYER DAMAGE_LAYER + 0.1
|
||||
#define CRIT_LAYER BLIND_LAYER + 0.1
|
||||
|
||||
/mob
|
||||
var/list/screens = list()
|
||||
@@ -110,8 +106,3 @@
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
screen_loc = "WEST,SOUTH to EAST,NORTH"
|
||||
icon_state = "druggy"
|
||||
|
||||
#undef FULLSCREEN_LAYER
|
||||
#undef BLIND_LAYER
|
||||
#undef DAMAGE_LAYER
|
||||
#undef CRIT_LAYER
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
name = "Faith"
|
||||
icon_state = "deity_power"
|
||||
screen_loc = ui_deitypower
|
||||
layer = 20
|
||||
layer = HUD_LAYER
|
||||
|
||||
/obj/screen/deity_follower_display
|
||||
name = "Followers"
|
||||
icon_state = "deity_followers"
|
||||
screen_loc = ui_deityfollowers
|
||||
layer = 20
|
||||
layer = HUD_LAYER
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
A.screen_loc = "CENTER[x]:16,SOUTH+[y]:7"
|
||||
else
|
||||
A.screen_loc = "CENTER+[x]:16,SOUTH+[y]:7"
|
||||
A.layer = 20
|
||||
A.layer = ABOVE_HUD_LAYER
|
||||
|
||||
x++
|
||||
if(x == 4)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/obj/screen
|
||||
name = ""
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
layer = 20
|
||||
layer = ABOVE_HUD_LAYER
|
||||
unacidable = 1
|
||||
appearance_flags = APPEARANCE_UI
|
||||
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
|
||||
@@ -29,7 +29,7 @@
|
||||
maptext_width = 480
|
||||
|
||||
/obj/screen/swap_hand
|
||||
layer = 19
|
||||
layer = HUD_LAYER
|
||||
name = "swap hand"
|
||||
|
||||
/obj/screen/swap_hand/Click()
|
||||
@@ -60,7 +60,7 @@
|
||||
var/slot_id // The indentifier for the slot. It has nothing to do with ID cards.
|
||||
var/icon_empty // Icon when empty. For now used only by humans.
|
||||
var/icon_full // Icon when contains an item. For now used only by humans.
|
||||
layer = 19
|
||||
layer = HUD_LAYER
|
||||
|
||||
/obj/screen/inventory/Click()
|
||||
// At this point in client Click() code we have passed the 1/10 sec check and little else
|
||||
@@ -154,25 +154,11 @@
|
||||
name = "drop"
|
||||
icon = 'icons/mob/screen_midnight.dmi'
|
||||
icon_state = "act_drop"
|
||||
layer = 19
|
||||
layer = HUD_LAYER
|
||||
|
||||
/obj/screen/drop/Click()
|
||||
usr.drop_item_v()
|
||||
|
||||
/obj/screen/grab
|
||||
name = "grab"
|
||||
|
||||
/obj/screen/grab/Click()
|
||||
var/obj/item/weapon/grab/G = master
|
||||
G.s_click(src)
|
||||
return 1
|
||||
|
||||
/obj/screen/grab/attack_hand()
|
||||
return
|
||||
|
||||
/obj/screen/grab/attackby()
|
||||
return
|
||||
|
||||
/obj/screen/act_intent
|
||||
name = "intent"
|
||||
icon_state = "help"
|
||||
@@ -303,7 +289,7 @@
|
||||
name = "resist"
|
||||
icon = 'icons/mob/screen_midnight.dmi'
|
||||
icon_state = "act_resist"
|
||||
layer = 19
|
||||
layer = HUD_LAYER
|
||||
|
||||
/obj/screen/resist/Click()
|
||||
if(isliving(usr))
|
||||
@@ -417,7 +403,7 @@
|
||||
icon_state = "blank"
|
||||
blend_mode = BLEND_ADD
|
||||
screen_loc = "WEST,SOUTH to EAST,NORTH"
|
||||
layer = 17
|
||||
layer = FLASH_LAYER
|
||||
|
||||
/obj/screen/damageoverlay
|
||||
icon = 'icons/mob/screen_full.dmi'
|
||||
@@ -426,7 +412,7 @@
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
screen_loc = "CENTER-7,CENTER-7"
|
||||
mouse_opacity = 0
|
||||
layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top.
|
||||
layer = DAMAGE_LAYER
|
||||
|
||||
/obj/screen/healths
|
||||
name = "health"
|
||||
|
||||
@@ -71,7 +71,7 @@ var/const/tk_maxrange = 15
|
||||
flags = NOBLUDGEON | ABSTRACT
|
||||
//item_state = null
|
||||
w_class = 10
|
||||
layer = 20
|
||||
layer = ABOVE_HUD_LAYER
|
||||
|
||||
var/last_throw = 0
|
||||
var/atom/movable/focus = null
|
||||
|
||||
@@ -43,11 +43,11 @@ Bonus
|
||||
return
|
||||
|
||||
/datum/symptom/choking/proc/Choke_stage_3_4(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = (sqrt(20+A.totalStageSpeed())/2)+(sqrt(16+A.totalStealth())*1)
|
||||
var/get_damage = sqrt(21+A.totalStageSpeed()*0.5)+sqrt(16+A.totalStealth())
|
||||
M.adjustOxyLoss(get_damage)
|
||||
return 1
|
||||
|
||||
/datum/symptom/choking/proc/Choke(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = (sqrt(20+A.totalStageSpeed())/2)+(sqrt(16+A.totalStealth()*5))
|
||||
var/get_damage = sqrt(21+A.totalStageSpeed()*0.5)+sqrt(16+A.totalStealth()*5)
|
||||
M.adjustOxyLoss(get_damage)
|
||||
return 1
|
||||
@@ -45,10 +45,6 @@
|
||||
if(affected_mob.notransform)
|
||||
return
|
||||
affected_mob.notransform = 1
|
||||
affected_mob.canmove = 0
|
||||
affected_mob.icon = null
|
||||
affected_mob.overlays.Cut()
|
||||
affected_mob.invisibility = INVISIBILITY_ABSTRACT
|
||||
for(var/obj/item/W in affected_mob)
|
||||
if(istype(W, /obj/item/weapon/implant))
|
||||
qdel(W)
|
||||
|
||||
+10
-4
@@ -323,10 +323,16 @@
|
||||
add_to_streak("G",D)
|
||||
if(check_streak(A,D))
|
||||
return 1
|
||||
D.grabbedby(A,1)
|
||||
var/obj/item/weapon/grab/G = A.get_active_hand()
|
||||
if(G)
|
||||
G.state = GRAB_AGGRESSIVE //Instant aggressive grab
|
||||
if(A.grab_state > GRAB_AGGRESSIVE)
|
||||
D.grabbedby(A, 1)
|
||||
else
|
||||
A.start_pulling(D, 1)
|
||||
if(A.pulling)
|
||||
D.drop_r_hand()
|
||||
D.drop_l_hand()
|
||||
D.stop_pulling()
|
||||
A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab
|
||||
return 1
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
add_to_streak("H",D)
|
||||
|
||||
@@ -167,14 +167,6 @@
|
||||
suffix = "lavaland_fountain_hall.dmm"
|
||||
cost = 5
|
||||
|
||||
/datum/map_template/ruin/lavaland/zombie_gym
|
||||
name = "Zombie Gym"
|
||||
id = "zombie-gym"
|
||||
description = "The patrons at this gym are serious about health, and \
|
||||
making sure people work on their cardio."
|
||||
suffix = "lavaland_gym.dmm"
|
||||
cost = 10
|
||||
|
||||
/datum/map_template/ruin/lavaland/survivalcapsule
|
||||
name = "Survival Capsule Ruins"
|
||||
id = "survivalcapsule"
|
||||
|
||||
@@ -19,7 +19,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Space"
|
||||
icon = 'icons/turf/areas.dmi'
|
||||
icon_state = "unknown"
|
||||
layer = 10
|
||||
layer = AREA_LAYER
|
||||
mouse_opacity = 0
|
||||
invisibility = INVISIBILITY_LIGHTING
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
/area/New()
|
||||
icon_state = ""
|
||||
layer = 10
|
||||
layer = AREA_LAYER
|
||||
master = src
|
||||
uid = ++global_uid
|
||||
related = list(src)
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/atom
|
||||
layer = 2
|
||||
layer = TURF_LAYER
|
||||
var/level = 2
|
||||
var/flags = 0
|
||||
var/list/fingerprints
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/atom/movable
|
||||
layer = 3
|
||||
layer = OBJ_LAYER
|
||||
var/last_move = null
|
||||
var/anchored = 0
|
||||
var/throwing = 0
|
||||
@@ -13,10 +13,12 @@
|
||||
var/verb_yell = "yells"
|
||||
var/inertia_dir = 0
|
||||
var/pass_flags = 0
|
||||
var/moving_diagonally = 0 //0: not doing a diagonal move. 1 and 2: doing the first/second step of the diagonal move
|
||||
glide_size = 8
|
||||
appearance_flags = TILE_BOUND
|
||||
|
||||
|
||||
|
||||
/atom/movable/Move(atom/newloc, direct = 0)
|
||||
if(!loc || !newloc) return 0
|
||||
var/atom/oldloc = loc
|
||||
@@ -25,28 +27,38 @@
|
||||
if (!(direct & (direct - 1))) //Cardinal move
|
||||
. = ..()
|
||||
else //Diagonal move, split it into cardinal moves
|
||||
moving_diagonally = FIRST_DIAG_STEP
|
||||
if (direct & 1)
|
||||
if (direct & 4)
|
||||
if (step(src, NORTH))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (step(src, EAST))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & 8)
|
||||
if (step(src, NORTH))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (step(src, WEST))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, NORTH)
|
||||
else if (direct & 2)
|
||||
if (direct & 4)
|
||||
if (step(src, SOUTH))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, EAST)
|
||||
else if (step(src, EAST))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
else if (direct & 8)
|
||||
if (step(src, SOUTH))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, WEST)
|
||||
else if (step(src, WEST))
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
moving_diagonally = 0
|
||||
|
||||
if(!loc || (loc == oldloc && oldloc != newloc))
|
||||
last_move = 0
|
||||
@@ -80,10 +92,8 @@
|
||||
qdel(AM)
|
||||
loc = null
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
if (pulledby)
|
||||
if (pulledby.pulling == src)
|
||||
pulledby.pulling = null
|
||||
pulledby = null
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
|
||||
|
||||
// Previously known as HasEntered()
|
||||
@@ -104,6 +114,8 @@
|
||||
|
||||
/atom/movable/proc/forceMove(atom/destination)
|
||||
if(destination)
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
var/atom/oldloc = loc
|
||||
if(oldloc)
|
||||
oldloc.Exited(src, destination)
|
||||
@@ -123,8 +135,6 @@
|
||||
|
||||
/mob/living/forceMove(atom/destination)
|
||||
stop_pulling()
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob(src,force=1)
|
||||
if(buckled_mobs.len)
|
||||
@@ -199,6 +209,9 @@
|
||||
return 0
|
||||
//use a modified version of Bresenham's algorithm to get from the atom's current position to that of the target
|
||||
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
|
||||
throwing = 1
|
||||
if(spin) //if we don't want the /atom/movable to spin.
|
||||
SpinAnimation(5, 1)
|
||||
|
||||
@@ -15,23 +15,21 @@
|
||||
user << "<span class='warning'>We are already absorbing!</span>"
|
||||
return
|
||||
|
||||
var/obj/item/weapon/grab/G = user.get_active_hand()
|
||||
if(!istype(G))
|
||||
user << "<span class='warning'>We must be grabbing a creature in our active hand to absorb them!</span>"
|
||||
if(!user.pulling || !iscarbon(user.pulling))
|
||||
user << "<span class='warning'>We must be grabbing a creature to absorb them!</span>"
|
||||
return
|
||||
if(G.state <= GRAB_NECK)
|
||||
if(user.grab_state <= GRAB_NECK)
|
||||
user << "<span class='warning'>We must have a tighter grip to absorb this creature!</span>"
|
||||
return
|
||||
|
||||
var/mob/living/carbon/target = G.affecting
|
||||
var/mob/living/carbon/target = user.pulling
|
||||
return changeling.can_absorb_dna(user,target)
|
||||
|
||||
|
||||
|
||||
/obj/effect/proc_holder/changeling/absorbDNA/sting_action(mob/user)
|
||||
var/datum/changeling/changeling = user.mind.changeling
|
||||
var/obj/item/weapon/grab/G = user.get_active_hand()
|
||||
var/mob/living/carbon/human/target = G.affecting
|
||||
var/mob/living/carbon/human/target = user.pulling
|
||||
changeling.isabsorbing = 1
|
||||
for(var/stage = 1, stage<=3, stage++)
|
||||
switch(stage)
|
||||
@@ -122,11 +120,10 @@
|
||||
/obj/effect/proc_holder/changeling/swap_form/can_sting(mob/living/carbon/user)
|
||||
if(!..())
|
||||
return
|
||||
var/obj/item/weapon/grab/G = user.get_active_hand()
|
||||
if(!istype(G) || (G.state < GRAB_AGGRESSIVE))
|
||||
user << "<span class='warning'>We must have an aggressive grab on creature in our active hand to do this!</span>"
|
||||
if(!user.pulling || !iscarbon(user.pulling) || user.grab_state < GRAB_AGGRESSIVE)
|
||||
user << "<span class='warning'>We must have an aggressive grab on creature to do this!</span>"
|
||||
return
|
||||
var/mob/living/carbon/target = G.affecting
|
||||
var/mob/living/carbon/target = user.pulling
|
||||
if((target.disabilities & NOCLONE) || (target.disabilities & HUSK))
|
||||
user << "<span class='warning'>DNA of [target] is ruined beyond usability!</span>"
|
||||
return
|
||||
@@ -137,8 +134,7 @@
|
||||
|
||||
|
||||
/obj/effect/proc_holder/changeling/swap_form/sting_action(mob/living/carbon/user)
|
||||
var/obj/item/weapon/grab/G = user.get_active_hand()
|
||||
var/mob/living/carbon/target = G.affecting
|
||||
var/mob/living/carbon/target = user.pulling
|
||||
var/datum/changeling/changeling = user.mind.changeling
|
||||
|
||||
user << "<span class='notice'>We tighen our grip. We must hold still....</span>"
|
||||
|
||||
@@ -10,11 +10,16 @@
|
||||
if(!..())
|
||||
return
|
||||
var/datum/changeling/changeling = user.mind.changeling
|
||||
var/obj/item/weapon/grab/G = user.get_active_hand()
|
||||
var/mob/living/carbon/target = G.affecting
|
||||
if(changeling.islinking)
|
||||
user << "<span class='warning'>We have already formed a link with the victim!</span>"
|
||||
return
|
||||
if(!user.pulling)
|
||||
user << "<span class='warning'>We must be tightly grabbing a creature to link with them!</span>"
|
||||
return
|
||||
if(!iscarbon(user.pulling))
|
||||
user << "<span class='warning'>We cannot link with this creature!</span>"
|
||||
return
|
||||
var/mob/living/carbon/target = user.pulling
|
||||
if(!target.mind)
|
||||
user << "<span class='warning'>The victim has no mind to link to!</span>"
|
||||
return
|
||||
@@ -23,19 +28,15 @@
|
||||
return
|
||||
if(target.mind.changeling)
|
||||
user << "<span class='warning'>The victim is already a part of the hivemind!</span>"
|
||||
return
|
||||
if(!istype(G))
|
||||
user << "<span class='warning'>We must be tightly grabbing a creature in our active hand to link with them!</span>"
|
||||
return
|
||||
if(G.state <= GRAB_NECK)
|
||||
if(user.grab_state <= GRAB_NECK)
|
||||
user << "<span class='warning'>We must have a tighter grip to link with this creature!</span>"
|
||||
return
|
||||
return changeling.can_absorb_dna(user,target)
|
||||
|
||||
/obj/effect/proc_holder/changeling/linglink/sting_action(mob/user)
|
||||
var/datum/changeling/changeling = user.mind.changeling
|
||||
var/obj/item/weapon/grab/G = user.get_active_hand()
|
||||
var/mob/living/carbon/human/target = G.affecting
|
||||
var/mob/living/carbon/human/target = user.pulling
|
||||
changeling.islinking = 1
|
||||
for(var/i in 1 to 3)
|
||||
switch(i)
|
||||
|
||||
@@ -1317,7 +1317,7 @@
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
pixel_x = -30
|
||||
pixel_y = -30
|
||||
layer = 2.01
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
|
||||
/obj/effect/clockwork/judicial_marker/New()
|
||||
..()
|
||||
@@ -1374,6 +1374,14 @@
|
||||
user << "This gateway can only [sender ? "send" : "receive"] objects."
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/attack_hand(mob/living/user)
|
||||
if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
|
||||
var/mob/living/L = user.pulling
|
||||
if(L.buckled || L.anchored || L.buckled_mobs.len)
|
||||
return 0
|
||||
user.visible_message("<span class='warning'>[user] shoves [L] into [src]!</span>", "<span class='danger'>You shove [L] into [src]!</span>")
|
||||
user.stop_pulling()
|
||||
pass_through_gateway(L)
|
||||
return 1
|
||||
if(!user.canUseTopic(src))
|
||||
return 0
|
||||
user.visible_message("<span class='warning'>[user] climbs through [src]!</span>", "<span class='danger'>You brace yourself and step through [src]...</span>")
|
||||
@@ -1386,14 +1394,6 @@
|
||||
qdel(linked_gateway)
|
||||
qdel(src)
|
||||
return 1
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(!G.affecting)
|
||||
return 0
|
||||
user.visible_message("<span class='warning'>[user] shoves [G.affecting] into [src]!</span>", "<span class='danger'>You shove [G.affecting] into [src]!</span>")
|
||||
pass_through_gateway(G.affecting)
|
||||
qdel(G)
|
||||
return 1
|
||||
if(user.drop_item())
|
||||
pass_through_gateway(I)
|
||||
..()
|
||||
@@ -1438,7 +1438,7 @@
|
||||
desc = "Some big guy."
|
||||
clockwork_desc = "One of Ratvar's generals."
|
||||
alpha = 200
|
||||
layer = 10
|
||||
layer = MASSIVE_OBJ_LAYER
|
||||
|
||||
/obj/effect/clockwork/general_marker/New()
|
||||
..()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/structure/clockwork/massive //For objects that are typically very large
|
||||
name = "massive construct"
|
||||
desc = "A very large construction."
|
||||
layer = 10
|
||||
layer = MASSIVE_OBJ_LAYER
|
||||
|
||||
/obj/structure/clockwork/massive/celestial_gateway //The gateway to Reebe, from which Ratvar emerges
|
||||
name = "Gateway to the Celestial Derelict"
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands)
|
||||
. = list()
|
||||
if(!isinhands && current_charges)
|
||||
. += image(layer = MOB_LAYER+0.05, icon = 'icons/effects/effects.dmi', icon_state = "shield-cult")
|
||||
. += image(layer = MOB_LAYER+0.01, icon = 'icons/effects/effects.dmi', icon_state = "shield-cult")
|
||||
|
||||
/obj/item/clothing/suit/hooded/cultrobes/berserker
|
||||
name = "flagellant's robes"
|
||||
|
||||
@@ -22,7 +22,7 @@ To draw a rune, use an arcane tome.
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
icon_state = "1"
|
||||
unacidable = 1
|
||||
layer = TURF_LAYER + 0.08
|
||||
layer = ABOVE_NORMAL_TURF_LAYER
|
||||
color = rgb(255,0,0)
|
||||
|
||||
var/invocation = "Aiy ele-mayo!" //This is said by cultists when the rune is invoked.
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
hands_overlays += r_hand_image
|
||||
|
||||
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
|
||||
r_hand.layer = 20
|
||||
r_hand.layer = ABOVE_HUD_LAYER
|
||||
r_hand.screen_loc = ui_rhand
|
||||
client.screen |= r_hand
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
hands_overlays += l_hand_image
|
||||
|
||||
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
|
||||
l_hand.layer = 20
|
||||
l_hand.layer = ABOVE_HUD_LAYER
|
||||
l_hand.screen_loc = ui_lhand
|
||||
client.screen |= l_hand
|
||||
if(hands_overlays.len)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "dominator"
|
||||
density = 1
|
||||
anchored = 1
|
||||
layer = 3.6
|
||||
layer = HIGH_OBJ_LAYER
|
||||
var/maxhealth = 200
|
||||
var/health = 200
|
||||
var/datum/gang/gang
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
|
||||
/obj/effect/overlay/temp/swarmer //temporary swarmer visual feedback objects
|
||||
icon = 'icons/mob/swarmer.dmi'
|
||||
layer = MOB_LAYER
|
||||
layer = BELOW_MOB_LAYER
|
||||
|
||||
/obj/effect/overlay/temp/swarmer/disintegration
|
||||
icon_state = "disintegrate"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
health = INFINITY //Revenants don't use health, they use essence instead
|
||||
maxHealth = INFINITY
|
||||
layer = 5
|
||||
layer = GHOST_LAYER
|
||||
healable = 0
|
||||
sight = SEE_SELF
|
||||
see_invisible = SEE_INVISIBLE_NOLIGHTING
|
||||
|
||||
@@ -48,7 +48,7 @@ var/bomb_set
|
||||
icon = 'icons/obj/machines/nuke_terminal.dmi'
|
||||
icon_state = "nuclearbomb_base"
|
||||
anchored = 1 //stops it being moved
|
||||
layer = 4
|
||||
layer = MOB_LAYER
|
||||
|
||||
/obj/machinery/nuclearbomb/syndicate
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ var/hsboxspawn = 1
|
||||
var/hsbinfo = null
|
||||
//items that shouldn't spawn on the floor because they would bug or act weird
|
||||
var/global/list/spawn_forbidden = list(
|
||||
/obj/item/weapon/grab, /obj/item/tk_grab, /obj/item/weapon/implant, // not implanter, the actual thing that is inside you
|
||||
/obj/item/tk_grab, /obj/item/weapon/implant, // not implanter, the actual thing that is inside you
|
||||
/obj/item/assembly,/obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai,
|
||||
/obj/item/device/uplink, /obj/item/smallDelivery, /obj/item/missile,/obj/item/projectile,
|
||||
/obj/item/borg/sight,/obj/item/borg/stun,/obj/item/weapon/robot_module)
|
||||
@@ -145,28 +145,28 @@ var/hsboxspawn = 1
|
||||
P.wear_suit.layer = initial(P.wear_suit.layer)
|
||||
P.wear_suit = null
|
||||
P.wear_suit = new/obj/item/clothing/suit/space(P)
|
||||
P.wear_suit.layer = 20
|
||||
P.wear_suit.layer = ABOVE_HUD_LAYER
|
||||
P.update_inv_wear_suit()
|
||||
if(P.head)
|
||||
P.head.loc = P.loc
|
||||
P.head.layer = initial(P.head.layer)
|
||||
P.head = null
|
||||
P.head = new/obj/item/clothing/head/helmet/space(P)
|
||||
P.head.layer = 20
|
||||
P.head.layer = ABOVE_HUD_LAYER
|
||||
P.update_inv_head()
|
||||
if(P.wear_mask)
|
||||
P.wear_mask.loc = P.loc
|
||||
P.wear_mask.layer = initial(P.wear_mask.layer)
|
||||
P.wear_mask = null
|
||||
P.wear_mask = new/obj/item/clothing/mask/gas(P)
|
||||
P.wear_mask.layer = 20
|
||||
P.wear_mask.layer = ABOVE_HUD_LAYER
|
||||
P.update_inv_wear_mask()
|
||||
if(P.back)
|
||||
P.back.loc = P.loc
|
||||
P.back.layer = initial(P.back.layer)
|
||||
P.back = null
|
||||
P.back = new/obj/item/weapon/tank/jetpack/oxygen(P)
|
||||
P.back.layer = 20
|
||||
P.back.layer = ABOVE_HUD_LAYER
|
||||
P.update_inv_back()
|
||||
P.internal = P.back
|
||||
P.update_internals_hud_icon(1)
|
||||
|
||||
@@ -5,7 +5,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 = LOW_OBJ_LAYER
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 0
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "\improper AI liquid dispenser"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "motion3"
|
||||
layer = 3
|
||||
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
|
||||
anchored = 1
|
||||
var/uses = 20
|
||||
var/disabled = 1
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
use_power = 2
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 10
|
||||
layer = MOB_LAYER + 0.25
|
||||
layer = WALL_OBJ_LAYER
|
||||
|
||||
var/health = 50
|
||||
var/list/network = list("SS13")
|
||||
|
||||
@@ -152,19 +152,6 @@
|
||||
if(default_deconstruction_crowbar(I))
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(!ismob(G.affecting))
|
||||
return
|
||||
|
||||
if(!state_open)
|
||||
user << "<span class='notice'>Open the scanner first.</span>"
|
||||
return
|
||||
|
||||
var/mob/M = G.affecting
|
||||
M.forceMove(loc)
|
||||
qdel(G)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/dna_scannernew/attack_hand(mob/user)
|
||||
|
||||
@@ -986,7 +986,7 @@ var/list/airlock_overlays = list()
|
||||
sleep(5)
|
||||
src.density = 0
|
||||
sleep(9)
|
||||
src.layer = 2.7
|
||||
src.layer = OPEN_DOOR_LAYER
|
||||
update_icon(AIRLOCK_OPEN, 1)
|
||||
SetOpacity(0)
|
||||
operating = 0
|
||||
@@ -1023,7 +1023,7 @@ var/list/airlock_overlays = list()
|
||||
return 1
|
||||
operating = 1
|
||||
update_icon(AIRLOCK_CLOSING, 1)
|
||||
src.layer = 3.1
|
||||
src.layer = CLOSED_DOOR_LAYER
|
||||
sleep(5)
|
||||
src.density = 1
|
||||
if(!safe)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
anchored = 1
|
||||
opacity = 1
|
||||
density = 1
|
||||
layer = 2.7
|
||||
layer = OPEN_DOOR_LAYER
|
||||
power_channel = ENVIRON
|
||||
|
||||
var/secondsElectrified = 0
|
||||
@@ -19,7 +19,7 @@
|
||||
var/heat_proof = 0 // For rglass-windowed airlocks and firedoors
|
||||
var/emergency = 0 // Emergency access override
|
||||
var/sub_door = 0 // 1 if it's meant to go under another door.
|
||||
var/closingLayer = 3.1
|
||||
var/closingLayer = CLOSED_DOOR_LAYER
|
||||
var/autoclose = 0 //does it automatically close after some time
|
||||
var/safe = 1 //whether the door detects things and mobs in its way and reopen or crushes them.
|
||||
var/locked = 0 //whether the door is bolted or not.
|
||||
@@ -29,9 +29,9 @@
|
||||
/obj/machinery/door/New()
|
||||
..()
|
||||
if(density)
|
||||
layer = 3.1 //Above most items if closed
|
||||
layer = CLOSED_DOOR_LAYER //Above most items if closed
|
||||
else
|
||||
layer = 2.7 //Under all objects if opened. 2.7 due to tables being at 2.6
|
||||
layer = OPEN_DOOR_LAYER //Under all objects if opened. 2.7 due to tables being at 2.6
|
||||
update_freelook_sight()
|
||||
air_update_turf(1)
|
||||
airlocks += src
|
||||
@@ -245,7 +245,7 @@ obj/machinery/door/proc/try_to_crowbar(obj/item/I, mob/user)
|
||||
sleep(5)
|
||||
density = 0
|
||||
sleep(5)
|
||||
layer = 2.7
|
||||
layer = OPEN_DOOR_LAYER
|
||||
update_icon()
|
||||
SetOpacity(0)
|
||||
operating = 0
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
glass = 1
|
||||
var/nextstate = null
|
||||
sub_door = 1
|
||||
closingLayer = 3.11
|
||||
closingLayer = CLOSED_FIREDOOR_LAYER
|
||||
|
||||
/obj/machinery/door/firedoor/Bumped(atom/AM)
|
||||
if(panel_open || operating)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "shutters"
|
||||
desc = "Heavy duty metal shutters that opens mechanically."
|
||||
icon = 'icons/obj/doors/shutters.dmi'
|
||||
layer = 3.1
|
||||
layer = CLOSED_DOOR_LAYER
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/preopen
|
||||
icon_state = "open"
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/New()
|
||||
..()
|
||||
layer = 3.1 //to handle /obj/machinery/door/New() resetting the layer.
|
||||
layer = CLOSED_DOOR_LAYER //to handle /obj/machinery/door/New() resetting the layer.
|
||||
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/open(ignorepower = 0)
|
||||
..()
|
||||
layer = 3.1
|
||||
layer = CLOSED_DOOR_LAYER
|
||||
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/close(ignorepower = 0)
|
||||
..()
|
||||
layer = 3.1
|
||||
layer = CLOSED_DOOR_LAYER
|
||||
@@ -35,7 +35,7 @@ var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
name = "\improper AI holopad"
|
||||
desc = "It's a floor-mounted device for projecting holographic images. It is activated remotely."
|
||||
icon_state = "holopad0"
|
||||
layer = 2.1
|
||||
layer = LOW_OBJ_LAYER
|
||||
flags = HEAR
|
||||
languages = ROBOT | HUMAN
|
||||
var/list/masters = list()//List of AIs that use the holopad
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
name = "electromagnetic generator"
|
||||
desc = "A device that uses station power to create points of magnetic energy."
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
layer = LOW_OBJ_LAYER
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 50
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
name = "navigation beacon"
|
||||
desc = "A radio beacon used for bot navigation."
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
layer = LOW_OBJ_LAYER
|
||||
anchored = 1
|
||||
|
||||
var/open = 0 // true if cover is open
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
qdel(I)
|
||||
qdel(J)
|
||||
H.icon = HI
|
||||
H.layer = 25
|
||||
H.layer = ABOVE_HUD_LAYER
|
||||
usr.mapobjs += H
|
||||
#else
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
|
||||
H.icon = I
|
||||
qdel(I)
|
||||
H.layer = 25
|
||||
H.layer = ABOVE_HUD_LAYER
|
||||
usr.mapobjs += H
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
icon = 'icons/obj/turrets.dmi'
|
||||
icon_state = "grey_target_prism"
|
||||
anchored = 1
|
||||
layer = 3
|
||||
layer = OBJ_LAYER
|
||||
invisibility = INVISIBILITY_OBSERVER //the turret is invisible if it's inside its cover
|
||||
density = 1
|
||||
use_power = 1 //this turret uses and requires power
|
||||
@@ -502,7 +502,7 @@
|
||||
if(cover)
|
||||
cover.icon_state = "openTurretCover"
|
||||
raised = 1
|
||||
layer = 4
|
||||
layer = MOB_LAYER
|
||||
|
||||
/obj/machinery/porta_turret/proc/popDown() //pops the turret down
|
||||
if(disabled)
|
||||
@@ -511,7 +511,7 @@
|
||||
return
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
layer = 3
|
||||
layer = OBJ_LAYER
|
||||
raising = 1
|
||||
if(cover)
|
||||
flick("popdown", cover)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon = 'icons/obj/turrets.dmi'
|
||||
icon_state = "turretCover"
|
||||
anchored = 1
|
||||
layer = 3.5
|
||||
layer = HIGH_OBJ_LAYER
|
||||
density = 0
|
||||
var/obj/machinery/porta_turret/parent_turret = null
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ var/const/SAFETY_COOLDOWN = 100
|
||||
desc = "A large crushing machine which is used to recycle small items ineffeciently; there are lights on the side of it."
|
||||
icon = 'icons/obj/recycling.dmi'
|
||||
icon_state = "grinder-o0"
|
||||
layer = MOB_LAYER+1 // Overhead
|
||||
layer = ABOVE_ALL_MOB_LAYER // Overhead
|
||||
anchored = 1
|
||||
density = 1
|
||||
var/safety_mode = FALSE // Temporarily stops machine if it detects a mob
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
anchored = 0
|
||||
density = 1
|
||||
layer = MOB_LAYER - 0.2 //so people can't hide it and it's REALLY OBVIOUS
|
||||
layer = BELOW_MOB_LAYER //so people can't hide it and it's REALLY OBVIOUS
|
||||
stat = 0
|
||||
|
||||
var/active = 0
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
anchored = 0
|
||||
density = 0
|
||||
layer = MOB_LAYER - 0.2 //so people can't hide it and it's REALLY OBVIOUS
|
||||
layer = BELOW_MOB_LAYER //so people can't hide it and it's REALLY OBVIOUS
|
||||
unacidable = 1
|
||||
|
||||
var/timer = 60
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A large metallic machine with an entrance and an exit. A sign on the side reads, 'human go in, robot come out', human must be lying down and alive. Has to cooldown between each use."
|
||||
icon = 'icons/obj/recycling.dmi'
|
||||
icon_state = "separator-AO1"
|
||||
layer = MOB_LAYER+1 // Overhead
|
||||
layer = ABOVE_ALL_MOB_LAYER // Overhead
|
||||
anchored = 1
|
||||
density = 0
|
||||
var/transform_dead = 0
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
desc = "A generic vending machine."
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "generic"
|
||||
layer = 2.9
|
||||
layer = BELOW_OBJ_LAYER
|
||||
anchored = 1
|
||||
density = 1
|
||||
verb_say = "beeps"
|
||||
|
||||
@@ -192,14 +192,6 @@
|
||||
if(default_deconstruction_screwdriver(user, null, null, W))
|
||||
update_icon()
|
||||
return
|
||||
else if(istype(W,/obj/item/weapon/grab))
|
||||
if(state_open)
|
||||
var/obj/item/weapon/grab/G = W
|
||||
if(iscorgi(G.affecting))
|
||||
has_corgi = 1
|
||||
G.affecting.loc = src
|
||||
qdel(G)
|
||||
update_icon()
|
||||
|
||||
else if(user.a_intent != "harm")
|
||||
|
||||
@@ -232,6 +224,17 @@
|
||||
user << "<span class='warning'>[src] is busy.</span>"
|
||||
return
|
||||
|
||||
if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
|
||||
var/mob/living/L = user.pulling
|
||||
if(L.buckled || L.buckled_mobs.len)
|
||||
return
|
||||
if(state_open)
|
||||
if(iscorgi(L))
|
||||
has_corgi = 1
|
||||
L.forceMove(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(!state_open)
|
||||
open_machine()
|
||||
else
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
opacity = 1 ///opaque. Menacing.
|
||||
anchored = 1 //no pulling around.
|
||||
unacidable = 1 //and no deleting hoomans inside
|
||||
layer = MOB_LAYER - 0.2//icon draw layer
|
||||
layer = BELOW_MOB_LAYER//icon draw layer
|
||||
infra_luminosity = 15 //byond implementation is bugged.
|
||||
force = 5
|
||||
flags = HEAR
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
desc = "It's green and acidic. It looks like... <i>blood?</i>"
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "xfloor1"
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "It's red and gooey. Perhaps it's the chef's cooking?"
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "floor1"
|
||||
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
|
||||
@@ -38,7 +38,7 @@
|
||||
desc = "Your instincts say you shouldn't be following these."
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
random_icon_states = null
|
||||
var/list/existing_dirs = list()
|
||||
blood_DNA = list()
|
||||
@@ -53,7 +53,7 @@
|
||||
desc = "They look bloody and gruesome."
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "gibbl5"
|
||||
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Someone should clean that up."
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "shards"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
icon_state = "dirt"
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/decal/cleanable/flour
|
||||
@@ -34,7 +34,7 @@
|
||||
desc = "It's still good. Four second rule!"
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon_state = "flour"
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow
|
||||
@@ -42,7 +42,7 @@
|
||||
desc = "Jeez. I hope that's not for lunch."
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
luminosity = 1
|
||||
icon_state = "greenglow"
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
name = "cobweb"
|
||||
desc = "Somebody should remove that."
|
||||
density = 0
|
||||
layer = 3
|
||||
layer = OBJ_LAYER
|
||||
icon_state = "cobweb1"
|
||||
burntime = 1
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
name = "gooey grey mass"
|
||||
desc = "It looks like a melted... something."
|
||||
density = 0
|
||||
layer = 3
|
||||
layer = OBJ_LAYER
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "molten"
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
name = "cobweb"
|
||||
desc = "Somebody should remove that."
|
||||
density = 0
|
||||
layer = 3
|
||||
layer = OBJ_LAYER
|
||||
icon_state = "cobweb2"
|
||||
|
||||
//Vomit (sorry)
|
||||
@@ -81,7 +81,7 @@
|
||||
desc = "Gosh, how unpleasant."
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "vomit_1"
|
||||
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
|
||||
@@ -113,14 +113,14 @@
|
||||
name = "tomato smudge"
|
||||
desc = "It's red."
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
|
||||
|
||||
/obj/effect/decal/cleanable/plant_smudge
|
||||
name = "plant smudge"
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_plant")
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
name = "smashed egg"
|
||||
desc = "Seems like this one won't hatch."
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
name = "smashed pie"
|
||||
desc = "It's pie cream from a cream pie."
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_pie")
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
icon_state = "shreds"
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
|
||||
/obj/effect/decal/cleanable/shreds/New()
|
||||
pixel_x = rand(-5, 5)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
desc = "It's a useless heap of junk... <i>or is it?</i>"
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/mob/robots.dmi'
|
||||
icon_state = "gib1"
|
||||
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
|
||||
@@ -44,7 +44,7 @@
|
||||
desc = "It's black and greasy. Looks like Beepsky made another mess."
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
icon = 'icons/mob/robots.dmi'
|
||||
icon_state = "floor1"
|
||||
var/viruses = list()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Graffiti. Damn kids."
|
||||
icon = 'icons/effects/crayondecal.dmi'
|
||||
icon_state = "rune1"
|
||||
layer = 2.1
|
||||
layer = ABOVE_NORMAL_TURF_LAYER
|
||||
var/do_icon_rotate = TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/examine()
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/gang
|
||||
layer = 3.6 //Harder to hide
|
||||
layer = HIGH_OBJ_LAYER //Harder to hide
|
||||
do_icon_rotate = FALSE //These are designed to always face south, so no rotation please.
|
||||
var/datum/gang/gang
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "pointer"
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "arrow"
|
||||
layer = 16
|
||||
layer = POINT_LAYER
|
||||
duration = 25
|
||||
|
||||
/obj/effect/overlay/temp/point/New(atom/target, set_invis = 0)
|
||||
@@ -12,23 +12,18 @@
|
||||
pixel_y = target.pixel_y
|
||||
invisibility = set_invis
|
||||
|
||||
// Used for spray that you spray at walls, tables, hydrovats etc
|
||||
/obj/effect/decal/spraystill
|
||||
density = 0
|
||||
layer = 50
|
||||
|
||||
//Used by spraybottles.
|
||||
/obj/effect/decal/chempuff
|
||||
name = "chemicals"
|
||||
icon = 'icons/obj/chempuff.dmi'
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
layer = 5
|
||||
layer = FLY_LAYER
|
||||
|
||||
/obj/effect/decal/sandeffect
|
||||
name = "sandy tile"
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "sandeffect"
|
||||
layer = 2
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
|
||||
/obj/effect/decal/fakelattice
|
||||
name = "lattice"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
opacity = 0
|
||||
anchored = 1
|
||||
density = 0
|
||||
layer = MOB_LAYER + 0.5
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
mouse_opacity = 0
|
||||
var/amount = 3
|
||||
animate_movement = 0
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
density = 0
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "glowshroom" //replaced in New
|
||||
layer = 2.1
|
||||
layer = ABOVE_NORMAL_TURF_LAYER
|
||||
var/endurance = 30
|
||||
var/potency = 30
|
||||
var/delay = 1200
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "Better stay away from that thing."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 3
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "uglymine"
|
||||
var/triggered = 0
|
||||
|
||||
@@ -7,15 +7,6 @@
|
||||
density = 1
|
||||
anchored = 0
|
||||
|
||||
/obj/effect/mark
|
||||
var/mark = ""
|
||||
icon = 'icons/misc/mark.dmi'
|
||||
icon_state = "blank"
|
||||
anchored = 1
|
||||
layer = 99
|
||||
mouse_opacity = 0
|
||||
unacidable = 1//Just to be sure.
|
||||
|
||||
/obj/effect/beam
|
||||
name = "beam"
|
||||
unacidable = 1//Just to be sure.
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
/obj/effect/overlay/temp
|
||||
icon_state = "nothing"
|
||||
anchored = 1
|
||||
layer = 4.1
|
||||
layer = ABOVE_MOB_LAYER
|
||||
mouse_opacity = 0
|
||||
var/duration = 10
|
||||
var/randomdir = 1
|
||||
@@ -117,7 +117,7 @@
|
||||
/obj/effect/overlay/temp/cult/door
|
||||
name = "unholy glow"
|
||||
icon_state = "doorglow"
|
||||
layer = 3.17 //above closed doors
|
||||
layer = CLOSED_FIREDOOR_LAYER //above closed doors
|
||||
|
||||
/obj/effect/overlay/temp/cult/door/unruned
|
||||
icon_state = "unruneddoorglow"
|
||||
@@ -125,7 +125,7 @@
|
||||
/obj/effect/overlay/temp/cult/turf
|
||||
name = "unholy glow"
|
||||
icon_state = "wallglow"
|
||||
layer = TURF_LAYER + 0.07
|
||||
layer = ABOVE_NORMAL_TURF_LAYER
|
||||
|
||||
/obj/effect/overlay/temp/cult/turf/open/floor
|
||||
icon_state = "floorglow"
|
||||
@@ -179,7 +179,7 @@
|
||||
icon = 'icons/misc/beach2.dmi'
|
||||
icon_state = "palm1"
|
||||
density = 1
|
||||
layer = 5
|
||||
layer = WALL_OBJ_LAYER
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/overlay/palmtree_l
|
||||
@@ -187,7 +187,7 @@
|
||||
icon = 'icons/misc/beach2.dmi'
|
||||
icon_state = "palm2"
|
||||
density = 1
|
||||
layer = 5
|
||||
layer = WALL_OBJ_LAYER
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/overlay/coconut
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
/obj/item/stack/rods{amount = 50} = 1,
|
||||
/obj/item/stack/sheet/cardboard = 2,
|
||||
/obj/item/stack/sheet/metal{amount = 20} = 1,
|
||||
/obj/item/stack/sheet/mineral/plasma{layer = 2.9} = 1,
|
||||
/obj/item/stack/sheet/mineral/plasma = 1,
|
||||
/obj/item/stack/sheet/rglass = 1,
|
||||
/obj/item/weapon/book/manual/wiki/engineering_construction = 1,
|
||||
/obj/item/weapon/book/manual/wiki/engineering_hacking = 1,
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
desc = "It never stays still for long."
|
||||
icon_state = "spiderling"
|
||||
anchored = 0
|
||||
layer = 2.75
|
||||
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
|
||||
health = 3
|
||||
var/amount_grown = 0
|
||||
var/grow_as = null
|
||||
|
||||
@@ -405,7 +405,7 @@ obj/item/proc/item_action_slot_check(slot, mob/user)
|
||||
set category = "Object"
|
||||
set name = "Pick up"
|
||||
|
||||
if(usr.stat || usr.restrained() || !Adjacent(usr) || usr.stunned || usr.weakened || usr.lying)
|
||||
if(usr.incapacitated() || !Adjacent(usr) || usr.lying)
|
||||
return
|
||||
|
||||
if(usr.get_active_hand() == null) // Let me know if this has any problems -Yota
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
w_class = 1
|
||||
throw_range = 1
|
||||
throw_speed = 1
|
||||
layer = 4
|
||||
layer = MOB_LAYER
|
||||
pressure_resistance = 1
|
||||
|
||||
/obj/item/documents/nanotrasen
|
||||
|
||||
@@ -153,7 +153,7 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \
|
||||
singular_name = "hide plate"
|
||||
flags = NOBLUDGEON
|
||||
w_class = 3
|
||||
layer = 4
|
||||
layer = MOB_LAYER
|
||||
|
||||
/obj/item/stack/sheet/animalhide/ashdrake
|
||||
name = "ash drake hide"
|
||||
@@ -163,7 +163,7 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \
|
||||
singular_name = "drake plate"
|
||||
flags = NOBLUDGEON
|
||||
w_class = 3
|
||||
layer = 4
|
||||
layer = MOB_LAYER
|
||||
|
||||
|
||||
//Step one - dehairing.
|
||||
|
||||
@@ -62,7 +62,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "sandbags"
|
||||
singular_name = "sandbag"
|
||||
layer = 2.95
|
||||
layer = LOW_ITEM_LAYER
|
||||
origin_tech = "materials=2"
|
||||
|
||||
var/global/list/datum/stack_recipe/sandbag_recipes = list ( \
|
||||
|
||||
@@ -69,24 +69,7 @@
|
||||
add_implants()
|
||||
ready = 1
|
||||
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = W
|
||||
if(!ismob(G.affecting))
|
||||
return
|
||||
var/mob/M = G.affecting
|
||||
if(M.buckled_mobs.len)
|
||||
user << "[M] will not fit into [src] because they have a creature on them!"
|
||||
return
|
||||
if(put_mob(M))
|
||||
qdel(G)
|
||||
updateUsrDialog()
|
||||
else
|
||||
return ..()
|
||||
updateUsrDialog()
|
||||
|
||||
|
||||
/obj/machinery/implantchair/go_out(mob/M)
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
qdel(src)
|
||||
singulo.process()
|
||||
return
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/singularity_act(current_size)
|
||||
var/dist = max((current_size - 2),1)
|
||||
|
||||
@@ -201,6 +201,8 @@
|
||||
if(!S.amount)
|
||||
qdel(S)
|
||||
else
|
||||
if(S.pulledby)
|
||||
S.pulledby.stop_pulling()
|
||||
S.loc = src
|
||||
|
||||
orient2hud(usr)
|
||||
@@ -345,7 +347,7 @@
|
||||
|
||||
/obj/item/weapon/storage/bag/tray/handle_item_insertion(obj/item/I, prevent_warning = 0)
|
||||
overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = -1)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
boxes.screen_loc = "[tx]:,[ty] to [mx],[my]"
|
||||
for(var/obj/O in contents)
|
||||
O.screen_loc = "[cx],[cy]"
|
||||
O.layer = 20
|
||||
O.layer = ABOVE_HUD_LAYER
|
||||
cx++
|
||||
if(cx > mx)
|
||||
cx = tx
|
||||
@@ -176,7 +176,7 @@
|
||||
ND.sample_object.mouse_opacity = 2
|
||||
ND.sample_object.screen_loc = "[cx]:16,[cy]:16"
|
||||
ND.sample_object.maptext = "<font color='white'>[(ND.number > 1)? "[ND.number]" : ""]</font>"
|
||||
ND.sample_object.layer = 20
|
||||
ND.sample_object.layer = ABOVE_HUD_LAYER
|
||||
cx++
|
||||
if(cx > (4+cols))
|
||||
cx = 4
|
||||
@@ -186,7 +186,7 @@
|
||||
O.mouse_opacity = 2 //This is here so storage items that spawn with contents correctly have the "click around item to equip"
|
||||
O.screen_loc = "[cx]:16,[cy]:16"
|
||||
O.maptext = ""
|
||||
O.layer = 20
|
||||
O.layer = ABOVE_HUD_LAYER
|
||||
cx++
|
||||
if(cx > (4+cols))
|
||||
cx = 4
|
||||
@@ -301,6 +301,8 @@
|
||||
return 0
|
||||
if(silent)
|
||||
prevent_warning = 1
|
||||
if(W.pulledby)
|
||||
W.pulledby.stop_pulling()
|
||||
W.loc = src
|
||||
W.on_enter_storage(src)
|
||||
if(usr)
|
||||
@@ -462,11 +464,11 @@
|
||||
boxes.master = src
|
||||
boxes.icon_state = "block"
|
||||
boxes.screen_loc = "7,7 to 10,8"
|
||||
boxes.layer = 19
|
||||
boxes.layer = HUD_LAYER
|
||||
closer = new /obj/screen/close()
|
||||
closer.master = src
|
||||
closer.icon_state = "backpack_close"
|
||||
closer.layer = 20
|
||||
closer.layer = ABOVE_HUD_LAYER
|
||||
orient2hud()
|
||||
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
combined_access |= I.access
|
||||
|
||||
/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W, prevent_warning = 0)
|
||||
. = ..(W, prevent_warning)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(istype(W, /obj/item/weapon/card/id))
|
||||
refreshID()
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
desc = "A thick resin surface covers the floor."
|
||||
anchored = 1
|
||||
density = 0
|
||||
layer = TURF_LAYER + 0.09
|
||||
layer = TURF_LAYER
|
||||
icon_state = "weeds"
|
||||
health = 15
|
||||
var/obj/structure/alien/weeds/node/linked_node = null
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
var/image/nest_overlay
|
||||
|
||||
/obj/structure/bed/nest/New()
|
||||
nest_overlay = image('icons/mob/alien.dmi', "nestoverlay", layer=MOB_LAYER - 0.2)
|
||||
nest_overlay = image('icons/mob/alien.dmi', "nestoverlay", layer=LYING_MOB_LAYER)
|
||||
return ..()
|
||||
|
||||
/obj/structure/bed/nest/user_unbuckle_mob(mob/living/buckled_mob, mob/living/user)
|
||||
@@ -73,7 +73,7 @@
|
||||
if(M in buckled_mobs)
|
||||
M.pixel_y = 0
|
||||
M.pixel_x = initial(M.pixel_x) + 2
|
||||
M.layer = MOB_LAYER - 0.3
|
||||
M.layer = BELOW_MOB_LAYER
|
||||
overlays += nest_overlay
|
||||
else
|
||||
M.pixel_x = M.get_standard_pixel_x_offset(M.lying)
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
|
||||
/obj/structure/chair/comfy/New()
|
||||
armrest = image("icons/obj/chairs.dmi", "comfychair_armrest")
|
||||
armrest.layer = MOB_LAYER + 0.1
|
||||
armrest.layer = ABOVE_MOB_LAYER
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ LINEN BINS
|
||||
icon_state = "sheetwhite"
|
||||
item_state = "bedsheet"
|
||||
slot_flags = SLOT_BACK
|
||||
layer = 4
|
||||
layer = MOB_LAYER
|
||||
throwforce = 0
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
@@ -28,9 +28,11 @@ LINEN BINS
|
||||
/obj/item/weapon/bedsheet/attack_self(mob/user)
|
||||
user.drop_item()
|
||||
if(layer == initial(layer))
|
||||
layer = 5
|
||||
layer = ABOVE_MOB_LAYER
|
||||
user << "<span class='notice'>You cover yourself with [src].</span>"
|
||||
else
|
||||
layer = initial(layer)
|
||||
user << "<span class='notice'>You smooth [src] out beneath you.</span>"
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
anchored = 1
|
||||
density = 1
|
||||
pixel_x = -16
|
||||
layer = 9
|
||||
layer = FLY_LAYER
|
||||
var/cut = FALSE
|
||||
var/log_amount = 10
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
icon_state = "girder"
|
||||
anchored = 1
|
||||
density = 1
|
||||
layer = 2.9
|
||||
layer = BELOW_OBJ_LAYER
|
||||
var/state = GIRDER_NORMAL
|
||||
var/girderpasschance = 20 // percentage chance that a projectile passes through the girder.
|
||||
var/can_displace = TRUE //If the girder can be moved around by wrenching it
|
||||
@@ -291,7 +291,6 @@
|
||||
anchored = 0
|
||||
state = GIRDER_DISPLACED
|
||||
girderpasschance = 25
|
||||
layer = 2.45
|
||||
|
||||
/obj/structure/girder/reinforced
|
||||
name = "reinforced girder"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
anchored = 1
|
||||
flags = CONDUCT
|
||||
pressure_resistance = 5*ONE_ATMOSPHERE
|
||||
layer = 2.9
|
||||
layer = BELOW_OBJ_LAYER
|
||||
var/health = 10
|
||||
var/destroyed = 0
|
||||
var/obj/item/stack/rods/stored
|
||||
|
||||
@@ -50,38 +50,37 @@
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You can't do that while something's on the spike!</span>"
|
||||
|
||||
else if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(istype(G.affecting, /mob/living/))
|
||||
if(!buckled_mobs.len)
|
||||
if(do_mob(user, src, 120))
|
||||
if(buckled_mobs.len) //to prevent spam/queing up attacks
|
||||
return
|
||||
if(G.affecting.buckled)
|
||||
return
|
||||
var/mob/living/H = G.affecting
|
||||
playsound(src.loc, "sound/effects/splat.ogg", 25, 1)
|
||||
H.visible_message("<span class='danger'>[user] slams [G.affecting] onto the meat spike!</span>", "<span class='userdanger'>[user] slams you onto the meat spike!</span>", "<span class='italics'>You hear a squishy wet noise.</span>")
|
||||
H.loc = src.loc
|
||||
H.emote("scream")
|
||||
if(istype(H, /mob/living/carbon/human)) //So you don't get human blood when you spike a giant spidere
|
||||
var/turf/pos = get_turf(H)
|
||||
pos.add_blood_floor(H)
|
||||
H.adjustBruteLoss(30)
|
||||
H.buckled = src
|
||||
H.dir = 2
|
||||
buckle_mob(H, force=1)
|
||||
var/matrix/m180 = matrix(H.transform)
|
||||
m180.Turn(180)
|
||||
animate(H, transform = m180, time = 3)
|
||||
H.pixel_y = H.get_standard_pixel_y_offset(180)
|
||||
qdel(G)
|
||||
return
|
||||
user << "<span class='danger'>You can't use that on the spike!</span>"
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/kitchenspike/attack_hand(mob/user)
|
||||
if(user.pulling && isliving(user.pulling) && user.a_intent == "grab" && !buckled_mobs.len)
|
||||
var/mob/living/L = user.pulling
|
||||
if(do_mob(user, src, 120))
|
||||
if(buckled_mobs.len) //to prevent spam/queing up attacks
|
||||
return
|
||||
if(L.buckled)
|
||||
return
|
||||
playsound(src.loc, "sound/effects/splat.ogg", 25, 1)
|
||||
L.visible_message("<span class='danger'>[user] slams [L] onto the meat spike!</span>", "<span class='userdanger'>[user] slams you onto the meat spike!</span>", "<span class='italics'>You hear a squishy wet noise.</span>")
|
||||
L.loc = src.loc
|
||||
L.emote("scream")
|
||||
if(ishuman(L)) //So you don't get human blood when you spike a giant spider
|
||||
var/turf/pos = get_turf(L)
|
||||
pos.add_blood_floor(L)
|
||||
L.adjustBruteLoss(30)
|
||||
L.buckled = src
|
||||
L.dir = 2
|
||||
buckle_mob(L, force=1)
|
||||
var/matrix/m180 = matrix(L.transform)
|
||||
m180.Turn(180)
|
||||
animate(L, transform = m180, time = 3)
|
||||
L.pixel_y = L.get_standard_pixel_y_offset(180)
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/obj/structure/kitchenspike/user_buckle_mob(mob/living/M, mob/living/user) //Don't want them getting put on the rack other than by spiking
|
||||
return
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "lattice"
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2.3 //under pipes
|
||||
layer = LATTICE_LAYER //under pipes
|
||||
var/obj/item/stack/rods/stored
|
||||
canSmoothWith = list(/obj/structure/lattice,
|
||||
/turf/open/floor,
|
||||
|
||||
@@ -211,7 +211,7 @@ var/global/list/crematoriums = new/list()
|
||||
/obj/structure/tray
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
density = 1
|
||||
layer = 2.9
|
||||
layer = BELOW_OBJ_LAYER
|
||||
var/obj/structure/bodycontainer/connected = null
|
||||
anchored = 1
|
||||
pass_flags = LETPASSTHROW
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "plasticflaps"
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 4
|
||||
layer = ABOVE_MOB_LAYER
|
||||
|
||||
/obj/structure/plasticflaps/CanAStarPass(ID, to_dir, caller)
|
||||
if(istype(caller, /mob/living))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
desc = "An angled mirror for reflecting lasers. This one does so at a 90 degree angle."
|
||||
anchored = 0
|
||||
density = 1
|
||||
layer = 2.9
|
||||
layer = BELOW_OBJ_LAYER
|
||||
var/finished = 0
|
||||
var/admin = 0 //Can't be rotated or deconstructed
|
||||
var/framebuildstacktype = /obj/item/stack/sheet/metal
|
||||
|
||||
@@ -177,7 +177,7 @@ obj/structure/safe/ex_act(severity, target)
|
||||
icon_state = "floorsafe"
|
||||
density = 0
|
||||
level = 1 //underfloor
|
||||
layer = 2.5
|
||||
layer = LOW_OBJ_LAYER
|
||||
|
||||
|
||||
/obj/structure/safe/floor/initialize()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
anchored = 1
|
||||
opacity = 0
|
||||
density = 0
|
||||
layer = 3.5
|
||||
layer = SIGN_LAYER
|
||||
|
||||
/obj/structure/sign/basic
|
||||
name = "blank sign"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
icon_state = "table_frame"
|
||||
density = 0
|
||||
anchored = 0
|
||||
layer = 2.8
|
||||
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
|
||||
var/framestack = /obj/item/stack/rods
|
||||
var/framestackamount = 2
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
icon_state = "table"
|
||||
density = 1
|
||||
anchored = 1
|
||||
layer = 2.8
|
||||
layer = TABLE_LAYER
|
||||
climbable = TRUE
|
||||
pass_flags = LETPASSTHROW //You can throw objects over this, despite it's density.")
|
||||
var/frame = /obj/structure/table_frame
|
||||
@@ -97,6 +97,19 @@
|
||||
take_damage(rand(180,280), BRUTE, 0)
|
||||
return 1
|
||||
|
||||
/obj/structure/table/attack_hand(mob/living/user)
|
||||
if(user.a_intent == "grab" && user.pulling && isliving(user.pulling))
|
||||
var/mob/living/pushed_mob = user.pulling
|
||||
if(pushed_mob.buckled)
|
||||
user << "<span class='warning'>[pushed_mob] is buckled to [pushed_mob.buckled]!</span>"
|
||||
return
|
||||
if(user.grab_state < GRAB_AGGRESSIVE)
|
||||
user << "<span class='warning'>You need a better grip to do that!</span>"
|
||||
return
|
||||
tablepush(user, pushed_mob)
|
||||
user.stop_pulling()
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/table/attack_tk() // no telehulk sorry
|
||||
return
|
||||
@@ -123,39 +136,15 @@
|
||||
var/atom/movable/mover = caller
|
||||
. = . || mover.checkpass(PASSTABLE)
|
||||
|
||||
/obj/structure/table/proc/tablepush(obj/item/I, mob/user)
|
||||
if(get_dist(src, user) < 2)
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(G.affecting.buckled)
|
||||
user << "<span class='warning'>[G.affecting] is buckled to [G.affecting.buckled]!</span>"
|
||||
return 0
|
||||
if(G.state < GRAB_AGGRESSIVE)
|
||||
user << "<span class='warning'>You need a better grip to do that!</span>"
|
||||
return 0
|
||||
if(!G.confirm())
|
||||
return 0
|
||||
G.affecting.forceMove(src.loc)
|
||||
if(istype(src, /obj/structure/table/optable))
|
||||
var/obj/structure/table/optable/OT = src
|
||||
G.affecting.resting = 1
|
||||
G.affecting.update_canmove()
|
||||
visible_message("<span class='notice'>[G.assailant] has laid [G.affecting] on [src].</span>")
|
||||
OT.patient = G.affecting
|
||||
OT.check_patient()
|
||||
qdel(I)
|
||||
return 1
|
||||
G.affecting.Weaken(2)
|
||||
G.affecting.visible_message("<span class='danger'>[G.assailant] pushes [G.affecting] onto [src].</span>", \
|
||||
"<span class='userdanger'>[G.assailant] pushes [G.affecting] onto [src].</span>")
|
||||
add_logs(G.assailant, G.affecting, "pushed")
|
||||
qdel(I)
|
||||
return 1
|
||||
qdel(I)
|
||||
/obj/structure/table/proc/tablepush(mob/living/user, mob/living/pushed_mob)
|
||||
pushed_mob.forceMove(src.loc)
|
||||
pushed_mob.Weaken(2)
|
||||
pushed_mob.visible_message("<span class='danger'>[user] pushes [pushed_mob] onto [src].</span>", \
|
||||
"<span class='userdanger'>[user] pushes [pushed_mob] onto [src].</span>")
|
||||
add_logs(user, pushed_mob, "pushed")
|
||||
|
||||
|
||||
/obj/structure/table/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
tablepush(I, user)
|
||||
return
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
if(istype(I, /obj/item/weapon/screwdriver) && deconstruction_ready)
|
||||
table_deconstruct(user, 1)
|
||||
@@ -297,10 +286,12 @@
|
||||
/obj/structure/table/glass/proc/table_shatter(mob/M)
|
||||
visible_message("<span class='warning'>[src] breaks!</span>",
|
||||
"<span class='danger'>You hear breaking glass.</span>")
|
||||
playsound(src.loc, "shatter", 50, 1)
|
||||
for(var/i in debris)
|
||||
var/atom/movable/AM = i
|
||||
AM.loc = get_turf(src)
|
||||
var/turf/T = get_turf(src)
|
||||
playsound(T, "shatter", 50, 1)
|
||||
for(var/I in debris)
|
||||
var/atom/movable/AM = I
|
||||
AM.forceMove(T)
|
||||
debris -= AM
|
||||
if(istype(AM, /obj/item/weapon/shard))
|
||||
AM.throw_impact(M)
|
||||
M.Weaken(5)
|
||||
@@ -401,6 +392,13 @@
|
||||
computer.table = src
|
||||
break
|
||||
|
||||
/obj/structure/table/optable/tablepush(mob/living/user, mob/living/pushed_mob)
|
||||
pushed_mob.forceMove(src.loc)
|
||||
pushed_mob.resting = 1
|
||||
pushed_mob.update_canmove()
|
||||
visible_message("<span class='notice'>[user] has laid [pushed_mob] on [src].</span>")
|
||||
check_patient()
|
||||
|
||||
/obj/structure/table/optable/proc/check_patient()
|
||||
var/mob/M = locate(/mob/living/carbon/human, loc)
|
||||
if(M)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
pinned_target = T
|
||||
T.pinnedLoc = src
|
||||
T.density = 1
|
||||
T.layer = OBJ_LAYER + 0.1
|
||||
T.layer = OBJ_LAYER + 0.01
|
||||
T.loc = loc
|
||||
user << "<span class='notice'>You slide the target into the stake.</span>"
|
||||
|
||||
|
||||
@@ -60,41 +60,44 @@
|
||||
|
||||
/obj/structure/transit_tube/station/attack_hand(mob/user)
|
||||
if(!pod_moving)
|
||||
for(var/obj/structure/transit_tube_pod/pod in loc)
|
||||
if(!pod.moving && pod.dir in directions())
|
||||
if(icon_state == "closed")
|
||||
open_animation()
|
||||
if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
|
||||
if(icon_state == "open")
|
||||
var/mob/living/GM = user.pulling
|
||||
if(user.grab_state >= GRAB_AGGRESSIVE)
|
||||
if(GM.buckled || GM.buckled_mobs.len)
|
||||
user << "<span class='warning'>[GM] is attached to something!</span>"
|
||||
return
|
||||
for(var/obj/structure/transit_tube_pod/pod in loc)
|
||||
pod.visible_message("<span class='warning'>[user] starts putting [GM] into the [pod]!</span>")
|
||||
if(do_after(user, 15, target = src))
|
||||
if(GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.buckled_mobs.len)
|
||||
GM.Weaken(5)
|
||||
src.Bumped(GM)
|
||||
break
|
||||
else
|
||||
for(var/obj/structure/transit_tube_pod/pod in loc)
|
||||
if(!pod.moving && pod.dir in directions())
|
||||
if(icon_state == "closed")
|
||||
open_animation()
|
||||
|
||||
else if(icon_state == "open")
|
||||
if(pod.contents.len && user.loc != pod)
|
||||
user.visible_message("[user] starts emptying [pod]'s contents onto the floor.", "<span class='notice'>You start emptying [pod]'s contents onto the floor...</span>")
|
||||
if(do_after(user, 10, target = src)) //So it doesn't default to close_animation() on fail
|
||||
if(pod.loc == loc)
|
||||
for(var/atom/movable/AM in pod)
|
||||
AM.loc = get_turf(user)
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
M.Weaken(5)
|
||||
else if(icon_state == "open")
|
||||
if(pod.contents.len && user.loc != pod)
|
||||
user.visible_message("[user] starts emptying [pod]'s contents onto the floor.", "<span class='notice'>You start emptying [pod]'s contents onto the floor...</span>")
|
||||
if(do_after(user, 10, target = src)) //So it doesn't default to close_animation() on fail
|
||||
if(pod.loc == loc)
|
||||
for(var/atom/movable/AM in pod)
|
||||
AM.loc = get_turf(user)
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
M.Weaken(5)
|
||||
|
||||
else
|
||||
close_animation()
|
||||
break
|
||||
else
|
||||
close_animation()
|
||||
break
|
||||
|
||||
|
||||
/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
if(icon_state == "open")
|
||||
var/obj/item/weapon/grab/G = W
|
||||
if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE)
|
||||
var/mob/GM = G.affecting
|
||||
for(var/obj/structure/transit_tube_pod/pod in loc)
|
||||
pod.visible_message("<span class='warning'>[user] starts putting [GM] into the [pod]!</span>")
|
||||
if(do_after(user, 15, target = src) && GM && G && G.affecting == GM)
|
||||
GM.Weaken(5)
|
||||
src.Bumped(GM)
|
||||
qdel(G)
|
||||
break
|
||||
else if(istype(W, /obj/item/weapon/crowbar))
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
for(var/obj/structure/transit_tube_pod/pod in loc)
|
||||
if(pod.contents)
|
||||
user << "<span class='warning'>Empty the pod first!</span>"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi'
|
||||
icon_state = "E-W"
|
||||
density = 1
|
||||
layer = 3.1
|
||||
layer = ABOVE_OBJ_LAYER
|
||||
anchored = 1
|
||||
var/tube_construction = /obj/structure/c_transit_tube
|
||||
var/list/tube_dirs = null
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi'
|
||||
icon_state = "E-W" //icon_state decides which tube will be built
|
||||
density = 0
|
||||
layer = 3.1 //same as the built tube
|
||||
layer = ABOVE_OBJ_LAYER //same as the built tube
|
||||
anchored = 0
|
||||
|
||||
/obj/structure/c_transit_tube/examine(mob/user)
|
||||
|
||||
@@ -22,12 +22,37 @@
|
||||
playsound(src.loc, "swing_hit", 25, 1)
|
||||
swirlie.visible_message("<span class='danger'>[user] slams the toilet seat onto [swirlie]'s head!</span>", "<span class='userdanger'>[user] slams the toilet seat onto your head!</span>", "<span class='italics'>You hear reverberating porcelain.</span>")
|
||||
swirlie.adjustBruteLoss(5)
|
||||
return
|
||||
|
||||
if(cistern && !open)
|
||||
else if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
var/mob/living/GM = user.pulling
|
||||
if(user.grab_state >= GRAB_AGGRESSIVE)
|
||||
if(GM.loc != get_turf(src))
|
||||
user << "<span class='warning'>[GM] needs to be on [src]!</span>"
|
||||
return
|
||||
if(!swirlie)
|
||||
if(open)
|
||||
GM.visible_message("<span class='danger'>[user] starts to give [GM] a swirlie!</span>", "<span class='userdanger'>[user] starts to give you a swirlie...</span>")
|
||||
swirlie = GM
|
||||
if(do_after(user, 30, 0, target = src))
|
||||
GM.visible_message("<span class='danger'>[user] gives [GM] a swirlie!</span>", "<span class='userdanger'>[user] gives you a swirlie!</span>", "<span class='italics'>You hear a toilet flushing.</span>")
|
||||
if(iscarbon(GM))
|
||||
var/mob/living/carbon/C = GM
|
||||
if(!C.internal)
|
||||
C.adjustOxyLoss(5)
|
||||
else
|
||||
GM.adjustOxyLoss(5)
|
||||
swirlie = null
|
||||
else
|
||||
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
|
||||
GM.visible_message("<span class='danger'>[user] slams [GM.name] into [src]!</span>", "<span class='userdanger'>[user] slams you into [src]!</span>")
|
||||
GM.adjustBruteLoss(5)
|
||||
else
|
||||
user << "<span class='warning'>You need a tighter grip!</span>"
|
||||
|
||||
else if(cistern && !open)
|
||||
if(!contents.len)
|
||||
user << "<span class='notice'>The cistern is empty.</span>"
|
||||
return
|
||||
else
|
||||
var/obj/item/I = pick(contents)
|
||||
if(ishuman(user))
|
||||
@@ -36,10 +61,9 @@
|
||||
I.loc = get_turf(src)
|
||||
user << "<span class='notice'>You find [I] in the cistern.</span>"
|
||||
w_items -= I.w_class
|
||||
return
|
||||
|
||||
open = !open
|
||||
update_icon()
|
||||
else
|
||||
open = !open
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/structure/toilet/update_icon()
|
||||
@@ -54,7 +78,6 @@
|
||||
user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", "<span class='notice'>You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!</span>", "<span class='italics'>You hear grinding porcelain.</span>")
|
||||
cistern = !cistern
|
||||
update_icon()
|
||||
return
|
||||
|
||||
else if(cistern)
|
||||
if(user.a_intent != "harm")
|
||||
@@ -70,7 +93,6 @@
|
||||
I.loc = src
|
||||
w_items += I.w_class
|
||||
user << "<span class='notice'>You carefully place [I] into the cistern.</span>"
|
||||
return
|
||||
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers))
|
||||
if (!open)
|
||||
@@ -78,39 +100,6 @@
|
||||
var/obj/item/weapon/reagent_containers/RG = I
|
||||
RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this))
|
||||
user << "<span class='notice'>You fill [RG] from [src]. Gross.</span>"
|
||||
return
|
||||
|
||||
else if(istype(I, /obj/item/weapon/grab))
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(!G.confirm())
|
||||
return
|
||||
if(isliving(G.affecting))
|
||||
var/mob/living/GM = G.affecting
|
||||
if(G.state >= GRAB_AGGRESSIVE)
|
||||
if(GM.loc != get_turf(src))
|
||||
user << "<span class='warning'>[GM] needs to be on [src]!</span>"
|
||||
return
|
||||
if(!swirlie)
|
||||
if(open)
|
||||
GM.visible_message("<span class='danger'>[user] starts to give [GM] a swirlie!</span>", "<span class='userdanger'>[user] starts to give you a swirlie...</span>")
|
||||
swirlie = GM
|
||||
if(do_after(user, 30, 0, target = src))
|
||||
GM.visible_message("<span class='danger'>[user] gives [GM] a swirlie!</span>", "<span class='userdanger'>[user] gives you a swirlie!</span>", "<span class='italics'>You hear a toilet flushing.</span>")
|
||||
if(iscarbon(GM))
|
||||
var/mob/living/carbon/C = GM
|
||||
if(!C.internal)
|
||||
C.adjustOxyLoss(5)
|
||||
else
|
||||
GM.adjustOxyLoss(5)
|
||||
swirlie = null
|
||||
else
|
||||
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
|
||||
GM.visible_message("<span class='danger'>[user] slams [GM.name] into [src]!</span>", "<span class='userdanger'>[user] slams you into [src]!</span>")
|
||||
GM.adjustBruteLoss(5)
|
||||
else
|
||||
user << "<span class='warning'>You need a tighter grip!</span>"
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -125,24 +114,20 @@
|
||||
anchored = 1
|
||||
|
||||
|
||||
/obj/structure/urinal/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(!G.confirm())
|
||||
return
|
||||
if(isliving(G.affecting))
|
||||
var/mob/living/GM = G.affecting
|
||||
if(G.state >= GRAB_AGGRESSIVE)
|
||||
if(GM.loc != get_turf(src))
|
||||
user << "<span class='notice'>[GM.name] needs to be on [src].</span>"
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.visible_message("<span class='danger'>[user] slams [GM] into [src]!</span>", "<span class='danger'>You slam [GM] into [src]!</span>")
|
||||
GM.adjustBruteLoss(8)
|
||||
else
|
||||
user << "<span class='warning'>You need a tighter grip!</span>"
|
||||
/obj/structure/urinal/attack_hand(mob/user)
|
||||
if(user.pulling && user.a_intent == "grab" && isliving(user.pulling))
|
||||
var/mob/living/GM = user.pulling
|
||||
if(user.grab_state >= GRAB_AGGRESSIVE)
|
||||
if(GM.loc != get_turf(src))
|
||||
user << "<span class='notice'>[GM.name] needs to be on [src].</span>"
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.visible_message("<span class='danger'>[user] slams [GM] into [src]!</span>", "<span class='danger'>You slam [GM] into [src]!</span>")
|
||||
GM.adjustBruteLoss(8)
|
||||
else
|
||||
user << "<span class='warning'>You need a tighter grip!</span>"
|
||||
else
|
||||
return ..()
|
||||
..()
|
||||
|
||||
/obj/machinery/shower
|
||||
name = "shower"
|
||||
@@ -162,7 +147,7 @@
|
||||
name = "mist"
|
||||
icon = 'icons/obj/watercloset.dmi'
|
||||
icon_state = "mist"
|
||||
layer = MOB_LAYER + 1
|
||||
layer = FLY_LAYER
|
||||
anchored = 1
|
||||
mouse_opacity = 0
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A window."
|
||||
icon_state = "window"
|
||||
density = 1
|
||||
layer = 3.2//Just above doors
|
||||
layer = ABOVE_OBJ_LAYER //Just above doors
|
||||
pressure_resistance = 4*ONE_ATMOSPHERE
|
||||
anchored = 1 //initially is 0 for tile smoothing
|
||||
flags = ON_BORDER
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/turf/closed
|
||||
var/thermite = 0
|
||||
|
||||
layer = CLOSED_TURF_LAYER
|
||||
opacity = 1
|
||||
density = 1
|
||||
blocks_air = 1
|
||||
@@ -9,7 +9,6 @@
|
||||
name = "wall"
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
explosion_block = 50
|
||||
layer = TURF_LAYER + 0.05
|
||||
|
||||
/turf/closed/indestructible/splashscreen
|
||||
name = "Space Station 13"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
icon_state = "wall"
|
||||
var/mineral = "metal"
|
||||
explosion_block = 1
|
||||
layer = TURF_LAYER + 0.05
|
||||
|
||||
thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
|
||||
heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall
|
||||
@@ -223,7 +222,7 @@
|
||||
O.anchored = 1
|
||||
O.opacity = 1
|
||||
O.density = 1
|
||||
O.layer = 5
|
||||
O.layer = FLY_LAYER
|
||||
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user