mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-09-04 09:58:00 +01:00
Merge branch 'master' into lets_go_rebind_things
This commit is contained in:
@@ -4,8 +4,7 @@
|
||||
desc = "Burbling corrosive stuff."
|
||||
icon_state = "acid"
|
||||
density = FALSE
|
||||
opacity = 0
|
||||
anchored = TRUE
|
||||
opacity = FALSE
|
||||
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
layer = ABOVE_NORMAL_TURF_LAYER
|
||||
var/turf/target
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
desc = "A mysterious anomaly, seen commonly only in the region of space that the station orbits..."
|
||||
icon_state = "bhole3"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
light_range = 3
|
||||
var/movechance = ANOMALY_MOVECHANCE
|
||||
var/obj/item/assembly/signaler/anomaly/aSignal = /obj/item/assembly/signaler/anomaly
|
||||
|
||||
@@ -7,9 +7,8 @@ GLOBAL_LIST_EMPTY(bump_teleporters)
|
||||
var/id = null //id of this bump_teleporter.
|
||||
var/id_target = null //id of bump_teleporter which this moves you to.
|
||||
invisibility = 101 //nope, can't see this
|
||||
anchored = 1
|
||||
density = 1
|
||||
opacity = 0
|
||||
density = TRUE
|
||||
opacity = FALSE
|
||||
|
||||
/obj/effect/bump_teleporter/New()
|
||||
..()
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "fuel"
|
||||
layer = LATTICE_LAYER
|
||||
anchored = TRUE
|
||||
var/amount = 1 //Basically moles.
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/Initialize(mapload, amt = 1)
|
||||
|
||||
@@ -9,7 +9,6 @@ GLOBAL_LIST_EMPTY(splatter_cache)
|
||||
var/drydesc = "It's dry and crusty. Someone is not doing their job."
|
||||
gender = PLURAL
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
plane = GAME_PLANE
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
@@ -137,7 +136,6 @@ GLOBAL_LIST_EMPTY(splatter_cache)
|
||||
desc = "They look bloody and gruesome."
|
||||
gender = PLURAL
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "gibbl5"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "Someone should clean that up."
|
||||
gender = PLURAL
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "shards"
|
||||
@@ -14,7 +13,6 @@
|
||||
gender = PLURAL
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "ash"
|
||||
anchored = TRUE
|
||||
scoop_reagents = list("ash" = 10)
|
||||
mergeable_decal = FALSE
|
||||
|
||||
@@ -39,7 +37,6 @@
|
||||
desc = "Someone should clean that up."
|
||||
gender = PLURAL
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/effects/dirt.dmi'
|
||||
icon_state = "dirt"
|
||||
@@ -72,7 +69,6 @@
|
||||
desc = "It's still good. Four second rule!"
|
||||
gender = PLURAL
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "flour"
|
||||
@@ -91,7 +87,6 @@
|
||||
desc = "Jeez. I hope that's not for lunch."
|
||||
gender = PLURAL
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
light_range = 1
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
@@ -108,7 +103,6 @@
|
||||
name = "cobweb"
|
||||
desc = "Somebody should remove that."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = OBJ_LAYER
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "cobweb1"
|
||||
@@ -118,7 +112,6 @@
|
||||
name = "gooey grey mass"
|
||||
desc = "It looks like a melted... something."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = OBJ_LAYER
|
||||
gender = NEUTER
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
@@ -133,7 +126,6 @@
|
||||
name = "cobweb"
|
||||
desc = "Somebody should remove that."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = OBJ_LAYER
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "cobweb2"
|
||||
@@ -143,7 +135,6 @@
|
||||
desc = "Gosh, how unpleasant."
|
||||
gender = PLURAL
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "vomit_1"
|
||||
@@ -178,7 +169,6 @@
|
||||
name = "tomato smudge"
|
||||
desc = "It's red."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
|
||||
@@ -186,7 +176,6 @@
|
||||
/obj/effect/decal/cleanable/plant_smudge
|
||||
name = "plant smudge"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
gender = NEUTER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
@@ -196,7 +185,6 @@
|
||||
name = "smashed egg"
|
||||
desc = "Seems like this one won't hatch."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
|
||||
@@ -205,7 +193,6 @@
|
||||
name = "smashed pie"
|
||||
desc = "It's pie cream from a cream pie."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_pie")
|
||||
@@ -214,7 +201,6 @@
|
||||
name = "space fungus"
|
||||
desc = "A fungal growth. Looks pretty nasty."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_LAYER
|
||||
plane = GAME_PLANE
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
@@ -229,7 +215,6 @@
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "confetti1"
|
||||
random_icon_states = list("confetti1", "confetti2", "confetti3")
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/insectguts
|
||||
name = "bug guts"
|
||||
@@ -237,4 +222,3 @@
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "xfloor1"
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
anchored = TRUE
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/obj/effect/decal/cleanable
|
||||
anchored = TRUE
|
||||
var/list/random_icon_states = list()
|
||||
var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints
|
||||
var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one?
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
icon_state = "rune1"
|
||||
layer = MID_TURF_LAYER
|
||||
plane = GAME_PLANE //makes the graffiti visible over a wall.
|
||||
anchored = TRUE
|
||||
mergeable_decal = FALSE // Allows crayon drawings to overlap one another.
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// Used for spray that you spray at walls, tables, hydrovats etc
|
||||
/obj/effect/decal/spraystill
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = 50
|
||||
plane = HUD_PLANE
|
||||
|
||||
@@ -16,7 +15,6 @@
|
||||
/obj/effect/decal/snow
|
||||
name = "snow"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = TURF_DECAL_LAYER
|
||||
icon = 'icons/turf/snow.dmi'
|
||||
icon_state = "snow"
|
||||
@@ -36,7 +34,6 @@
|
||||
/obj/effect/decal/leaves
|
||||
name = "fall leaves"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = HIGH_TURF_LAYER
|
||||
icon = 'icons/obj/flora/plants.dmi'
|
||||
icon_state = "fallleaves"
|
||||
@@ -44,7 +41,6 @@
|
||||
/obj/effect/decal/straw
|
||||
name = "scattered straw"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = HIGH_TURF_LAYER
|
||||
icon = 'icons/obj/flora/plants.dmi'
|
||||
icon_state = "strawscattered"
|
||||
|
||||
@@ -12,21 +12,18 @@
|
||||
desc = "They look like human remains. They have a strange aura about them."
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "remains"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/decal/remains/xeno
|
||||
name = "remains"
|
||||
desc = "They look like the remains of something... alien. They have a strange aura about them."
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "remainsxeno"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/decal/remains/robot
|
||||
name = "remains"
|
||||
desc = "They look like the remains of something mechanical. They have a strange aura about them."
|
||||
icon = 'icons/mob/robots.dmi'
|
||||
icon_state = "remainsrobot"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/decal/remains/robot/decompile_act(obj/item/matter_decompiler/C, mob/user)
|
||||
C.stored_comms["glass"] += 2
|
||||
@@ -39,7 +36,6 @@
|
||||
desc = "Noooooooooooooooooooooo"
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "remains"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/decal/remains/slime/New()
|
||||
..()
|
||||
|
||||
@@ -9,7 +9,6 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
name = "particle effect"
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/particle_effect/New()
|
||||
..()
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
/obj/effect/particle_effect/expl_particles
|
||||
name = "explosive particles"
|
||||
icon_state = "explosion_particle"
|
||||
opacity = 1
|
||||
anchored = 1
|
||||
opacity = TRUE
|
||||
|
||||
/obj/effect/particle_effect/expl_particles/New()
|
||||
..()
|
||||
@@ -25,8 +24,7 @@
|
||||
name = "explosive particles"
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
icon_state = "explosion"
|
||||
opacity = 1
|
||||
anchored = 1
|
||||
opacity = TRUE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
@@ -5,9 +5,8 @@
|
||||
/obj/effect/particle_effect/foam
|
||||
name = "foam"
|
||||
icon_state = "foam"
|
||||
opacity = 0
|
||||
anchored = 1
|
||||
density = 0
|
||||
opacity = FALSE
|
||||
density = FALSE
|
||||
layer = OBJ_LAYER + 0.9
|
||||
animate_movement = 0
|
||||
var/amount = 3
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
/obj/effect/particle_effect/ion_trails
|
||||
name = "ion trails"
|
||||
icon_state = "ion_trails"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/particle_effect/ion_trails/Initialize(mapload, targetdir)
|
||||
. = ..()
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
opacity = 1
|
||||
anchored = 0
|
||||
opacity = TRUE
|
||||
anchored = FALSE
|
||||
var/steps = 0
|
||||
var/lifetime = 5
|
||||
var/direction
|
||||
@@ -142,11 +142,11 @@
|
||||
/obj/effect/particle_effect/smoke/freezing
|
||||
name = "nanofrost smoke"
|
||||
color = "#B2FFFF"
|
||||
opacity = 0
|
||||
opacity = FALSE
|
||||
|
||||
/datum/effect_system/smoke_spread/freezing
|
||||
effect_type = /obj/effect/particle_effect/smoke/freezing
|
||||
var/blast = 0
|
||||
var/blast = FALSE
|
||||
|
||||
/datum/effect_system/smoke_spread/freezing/proc/Chilled(atom/A)
|
||||
if(istype(A, /turf/simulated))
|
||||
@@ -163,12 +163,12 @@
|
||||
G.toxins = 0
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/V in T)
|
||||
if(!isnull(V.welded) && !V.welded) //must be an unwelded vent pump.
|
||||
V.welded = 1
|
||||
V.welded = TRUE
|
||||
V.update_icon()
|
||||
V.visible_message("<span class='danger'>[V] was frozen shut!</span>")
|
||||
for(var/obj/machinery/atmospherics/unary/vent_scrubber/U in T)
|
||||
if(!isnull(U.welded) && !U.welded) //must be an unwelded vent scrubber.
|
||||
U.welded = 1
|
||||
U.welded = TRUE
|
||||
U.update_icon()
|
||||
U.visible_message("<span class='danger'>[U] was frozen shut!</span>")
|
||||
for(var/mob/living/L in T)
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
name = "sparks"
|
||||
desc = "it's a spark what do you need to know?"
|
||||
icon_state = "sparks"
|
||||
anchored = TRUE
|
||||
var/hotspottemp = 1000
|
||||
|
||||
/obj/effect/particle_effect/sparks/New()
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
/obj/effect/particle_effect/steam
|
||||
name = "steam"
|
||||
icon_state = "extinguish"
|
||||
density = 0
|
||||
density = FALSE
|
||||
|
||||
/obj/effect/particle_effect/steam/New()
|
||||
..()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
|
||||
move_resist = INFINITY
|
||||
anchored = 1
|
||||
anchored = TRUE
|
||||
can_be_hit = FALSE
|
||||
|
||||
/obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
name = "FORCEWALL"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "m_shield"
|
||||
anchored = 1
|
||||
opacity = 0
|
||||
density = 1
|
||||
opacity = FALSE
|
||||
density = TRUE
|
||||
var/lifetime = 30 SECONDS
|
||||
|
||||
/obj/effect/forcefield/New()
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
/obj/structure/glowshroom
|
||||
name = "glowshroom"
|
||||
desc = "Mycena Bregprox, a species of mushroom that glows in the dark."
|
||||
anchored = TRUE
|
||||
opacity = 0
|
||||
opacity = FALSE
|
||||
density = FALSE
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "glowshroom" //replaced in New
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "landmark"
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "x2"
|
||||
anchored = 1.0
|
||||
layer = MOB_LAYER
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
|
||||
@@ -60,7 +59,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/spawner/ds
|
||||
name = "Commando"
|
||||
name = "Deathsquad"
|
||||
icon_state = "ERT"
|
||||
|
||||
/obj/effect/landmark/spawner/wiz
|
||||
@@ -206,7 +205,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
|
||||
name = "Atmospheric Test Start"
|
||||
|
||||
/obj/effect/landmark/spawner/commando_manual
|
||||
name = "Commando_Manual"
|
||||
name = "Deathsquad Commando Manual"
|
||||
|
||||
/obj/effect/landmark/spawner/holding_facility
|
||||
name = "Holding Facility"
|
||||
@@ -247,7 +246,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
|
||||
name = "start"
|
||||
icon = 'icons/effects/spawner_icons.dmi'
|
||||
icon_state = "Assistant"
|
||||
anchored = 1.0
|
||||
|
||||
/obj/effect/landmark/start/ai
|
||||
name = "AI"
|
||||
|
||||
@@ -88,7 +88,6 @@ GLOBAL_LIST_INIT(meteors_ops, list(/obj/effect/meteor/goreops)) //Meaty Ops
|
||||
icon = 'icons/obj/meteor.dmi'
|
||||
icon_state = "small"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/hits = 4
|
||||
var/hitpwr = EXPLODE_HEAVY //Level of ex_act to be called on hit.
|
||||
var/dest
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
/obj/effect/mine
|
||||
name = "dummy mine"
|
||||
desc = "I Better stay away from that thing."
|
||||
density = 0
|
||||
anchored = 1
|
||||
density = FALSE
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "uglyminearmed"
|
||||
var/triggered = 0
|
||||
var/triggered = FALSE
|
||||
var/faction = "syndicate"
|
||||
|
||||
/obj/effect/mine/proc/mineEffect(mob/living/victim)
|
||||
@@ -27,7 +26,7 @@
|
||||
visible_message("<span class='danger'>[victim] sets off [bicon(src)] [src]!</span>")
|
||||
do_sparks(3, 1, src)
|
||||
mineEffect(victim)
|
||||
triggered = 1
|
||||
triggered = TRUE
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/ex_act(severity)
|
||||
@@ -105,7 +104,7 @@
|
||||
desc = "pick me up"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "electricity2"
|
||||
density = 0
|
||||
density = FALSE
|
||||
var/duration = 0
|
||||
|
||||
/obj/effect/mine/pickup/New()
|
||||
@@ -115,7 +114,7 @@
|
||||
/obj/effect/mine/pickup/triggermine(mob/living/victim)
|
||||
if(triggered)
|
||||
return
|
||||
triggered = 1
|
||||
triggered = TRUE
|
||||
invisibility = 101
|
||||
mineEffect(victim)
|
||||
qdel(src)
|
||||
|
||||
@@ -22,14 +22,13 @@
|
||||
desc = "It's a ... present?"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "strangepresent"
|
||||
density = 1
|
||||
anchored = 0
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
|
||||
/obj/effect/mark
|
||||
var/mark = ""
|
||||
icon = 'icons/misc/mark.dmi'
|
||||
icon_state = "blank"
|
||||
anchored = 1
|
||||
layer = 99
|
||||
plane = HUD_PLANE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
@@ -50,12 +49,10 @@
|
||||
name = "begin"
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "begin"
|
||||
anchored = 1.0
|
||||
|
||||
/obj/effect/projection
|
||||
name = "Projection"
|
||||
desc = "This looks like a projection of something."
|
||||
anchored = 1.0
|
||||
|
||||
|
||||
/obj/effect/shut_controller
|
||||
@@ -68,8 +65,8 @@
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "showcase_1"
|
||||
desc = "A stand with the empty body of a cyborg bolted to it."
|
||||
density = 1
|
||||
anchored = 1
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/spawner
|
||||
name = "object spawner"
|
||||
|
||||
@@ -22,17 +22,15 @@
|
||||
name = "Palm tree"
|
||||
icon = 'icons/misc/beach2.dmi'
|
||||
icon_state = "palm1"
|
||||
density = 1
|
||||
density = TRUE
|
||||
layer = 5
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/overlay/palmtree_l
|
||||
name = "Palm tree"
|
||||
icon = 'icons/misc/beach2.dmi'
|
||||
icon_state = "palm2"
|
||||
density = 1
|
||||
density = TRUE
|
||||
layer = 5
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/overlay/coconut
|
||||
name = "Coconuts"
|
||||
@@ -54,8 +52,7 @@
|
||||
name = "Wallrot"
|
||||
desc = "Ick..."
|
||||
icon = 'icons/effects/wallrot.dmi'
|
||||
anchored = 1
|
||||
density = 1
|
||||
density = TRUE
|
||||
layer = 5
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "Looks unstable. Best to test it with the clown."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "portal"
|
||||
anchored = TRUE
|
||||
|
||||
var/obj/item/target = null
|
||||
/// The UID and `name` of the object that created this portal. For example, a wormhole jaunter.
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "Let it snow, let it snow, let it snow!"
|
||||
icon_state = "snowcloud"
|
||||
layer = FLY_LAYER
|
||||
anchored = TRUE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
var/obj/machinery/snow_machine/parent_machine
|
||||
|
||||
@@ -70,7 +69,6 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "snow"
|
||||
layer = ABOVE_ICYOVERLAY_LAYER
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/snow/New()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
/obj/item/stack/sheet/metal{amount = 20} = 10,
|
||||
/obj/item/stack/sheet/mineral/plasma = 10,
|
||||
/obj/item/stack/sheet/rglass = 10,
|
||||
/obj/item/book/manual/engineering_construction = 10,
|
||||
/obj/item/book/manual/engineering_hacking = 10,
|
||||
/obj/item/book/manual/wiki/engineering_construction = 10,
|
||||
/obj/item/book/manual/wiki/hacking = 10,
|
||||
/obj/item/clothing/head/cone = 10,
|
||||
/obj/item/geiger_counter = 30,
|
||||
/obj/item/coin/silver = 10,
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
var/useGrille = TRUE
|
||||
var/window_to_spawn_regular = /obj/structure/window/basic
|
||||
var/window_to_spawn_full = /obj/structure/window/full/basic
|
||||
anchored = TRUE // No sliding out while you prime
|
||||
|
||||
/obj/effect/spawner/window/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
desc = "They seem to pulse slightly with an inner life"
|
||||
icon_state = "eggs"
|
||||
var/amount_grown = 0
|
||||
var/player_spiders = 0
|
||||
var/player_spiders = FALSE
|
||||
///Was this egg laid by a xenobiology mob? Used for mob capping
|
||||
var/xenobiology_spawned = FALSE
|
||||
var/list/faction = list("spiders")
|
||||
@@ -88,14 +88,14 @@
|
||||
name = "spiderling"
|
||||
desc = "It never stays still for long."
|
||||
icon_state = "spiderling"
|
||||
anchored = 0
|
||||
anchored = FALSE
|
||||
layer = 2.75
|
||||
max_integrity = 3
|
||||
var/amount_grown = 0
|
||||
var/grow_as = null
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/entry_vent
|
||||
var/travelling_in_vent = 0
|
||||
var/player_spiders = 0
|
||||
var/travelling_in_vent = FALSE
|
||||
var/player_spiders = FALSE
|
||||
var/list/faction = list("spiders")
|
||||
var/selecting_player = 0
|
||||
///Is this spiderling created from a xenobiology mob?
|
||||
@@ -123,7 +123,7 @@
|
||||
/obj/structure/spider/spiderling/process()
|
||||
if(travelling_in_vent)
|
||||
if(istype(loc, /turf))
|
||||
travelling_in_vent = 0
|
||||
travelling_in_vent = FALSE
|
||||
entry_vent = null
|
||||
else if(entry_vent)
|
||||
if(get_dist(src, entry_vent) <= 1)
|
||||
@@ -227,7 +227,6 @@
|
||||
desc = "Green squishy mess."
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "greenshatter"
|
||||
anchored = 1
|
||||
|
||||
/obj/structure/spider/cocoon
|
||||
name = "cocoon"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
var/stopper = TRUE // stops throwers
|
||||
var/mobs_only = FALSE
|
||||
invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/step_trigger/proc/Trigger(atom/movable/A)
|
||||
return FALSE
|
||||
|
||||
@@ -356,6 +356,10 @@
|
||||
icon_state = "impact_laser_purple"
|
||||
duration = 4
|
||||
|
||||
/obj/effect/temp_visual/impact_effect/yellow_laser
|
||||
icon_state = "impact_laser_yellow"
|
||||
duration = 4
|
||||
|
||||
/obj/effect/temp_visual/impact_effect/ion
|
||||
icon_state = "shieldsparkles"
|
||||
duration = 6
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//temporary visual effects
|
||||
/obj/effect/temp_visual
|
||||
icon_state = "nothing"
|
||||
anchored = TRUE
|
||||
layer = ABOVE_MOB_LAYER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
var/duration = 10 //in deciseconds
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
var/list/possible_appearances = list("Assistant", "Clown", "Mime",
|
||||
"Traitor", "Nuke Op", "Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer",
|
||||
"Deathsquad Officer", "Ian", "Slaughter Demon",
|
||||
"Deathsquad Commando", "Ian", "Slaughter Demon",
|
||||
"Laughter Demon", "Xenomorph Maid", "Security Officer", "Terror Spider")
|
||||
var/pushed_over = FALSE //If the cutout is pushed over and has to be righted
|
||||
var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version
|
||||
@@ -146,9 +146,9 @@
|
||||
// name = random_name(pick(MALE,FEMALE),"Unathi")
|
||||
// desc = "A cardboard cutout of an ash walker."
|
||||
// icon_state = "cutout_free_antag"
|
||||
if("Deathsquad Officer")
|
||||
name = pick(GLOB.commando_names)
|
||||
desc = "A cardboard cutout of a death commando."
|
||||
if("Deathsquad Commando")
|
||||
name = pick(GLOB.deathsquad_names)
|
||||
desc = "A cardboard cutout of a Deathsquad Commando, from that show about loose-cannon ERT Officers."
|
||||
icon_state = "cutout_deathsquad"
|
||||
if("Ian")
|
||||
name = "Ian"
|
||||
|
||||
@@ -82,6 +82,17 @@
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
|
||||
/obj/item/radio/headset/alt/deathsquad
|
||||
name = "Deathsquad headset"
|
||||
desc = "Special Operations only. Protects ears from flashbangs."
|
||||
requires_tcomms = FALSE
|
||||
instant = TRUE
|
||||
freqlock = TRUE
|
||||
|
||||
/obj/item/radio/headset/alt/deathsquad/Initialize()
|
||||
. = ..()
|
||||
set_frequency(DTH_FREQ)
|
||||
|
||||
/obj/item/radio/headset/syndicate
|
||||
origin_tech = "syndicate=3"
|
||||
ks1type = /obj/item/encryptionkey/syndicate/nukeops
|
||||
|
||||
@@ -194,8 +194,6 @@ REAGENT SCANNER
|
||||
to_chat(user, "<span class='info'>Subject appears to be suffering from fatigue.</span>")
|
||||
if(H.getCloneLoss())
|
||||
to_chat(user, "<span class='warning'>Subject appears to have [H.getCloneLoss() > 30 ? "severe" : "minor"] cellular damage.</span>")
|
||||
if(H.has_brain_worms())
|
||||
to_chat(user, "<span class='warning'>Subject suffering from aberrant brain activity. Recommend further scanning.</span>")
|
||||
|
||||
if(H.get_int_organ(/obj/item/organ/internal/brain))
|
||||
if(H.getBrainLoss() >= 100)
|
||||
@@ -754,9 +752,6 @@ REAGENT SCANNER
|
||||
|
||||
dat += "<hr>"
|
||||
|
||||
if(target.has_brain_worms())
|
||||
dat += "Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.<br>"
|
||||
|
||||
var/blood_percent = round((target.blood_volume / BLOOD_VOLUME_NORMAL))
|
||||
blood_percent *= 100
|
||||
|
||||
|
||||
@@ -1475,8 +1475,8 @@
|
||||
icon_state = "fireripleytoy"
|
||||
|
||||
/obj/item/toy/figure/mech/deathripley
|
||||
name = "toy Death Squad Ripley"
|
||||
desc = "Mini-Mecha action figure! Collect them all! 3/11. This one is the black ripley used by the hero of DeathSquad, that TV drama about loose-cannon ERT officers!"
|
||||
name = "toy Deathsquad Ripley"
|
||||
desc = "Mini-Mecha action figure! Collect them all! 3/11. This one is the black ripley used by the hero of Deathsquad, that TV drama about loose-cannon ERT officers!"
|
||||
icon_state = "deathripleytoy"
|
||||
|
||||
/obj/item/toy/figure/mech/gygax
|
||||
|
||||
@@ -16,8 +16,12 @@
|
||||
// Settings
|
||||
/// Whether the baton can stun silicon mobs
|
||||
var/affect_silicon = FALSE
|
||||
/// The amount of stamina damage the baton does per swing
|
||||
var/stamina_damage = 30
|
||||
/// How much melee armour is ignored by the stamina damage
|
||||
var/stamina_armour_pen = 0
|
||||
/// The stun time (in seconds) for non-silicons
|
||||
var/stun_time = 6 SECONDS
|
||||
var/knockdown_duration = 6 SECONDS
|
||||
/// The stun time (in seconds) for silicons
|
||||
var/stun_time_silicon = 10 SECONDS
|
||||
/// Cooldown in seconds between two knockdowns
|
||||
@@ -38,7 +42,7 @@
|
||||
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
|
||||
user.visible_message("<span class='danger'>[user] accidentally clubs [user.p_them()]self with [src]!</span>", \
|
||||
"<span class='userdanger'>You accidentally club yourself with [src]!</span>")
|
||||
user.Weaken(stun_time)
|
||||
user.KnockDown(knockdown_duration)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.apply_damage(force * 2, BRUTE, "head")
|
||||
@@ -53,7 +57,7 @@
|
||||
if(issilicon(target) && !affect_silicon)
|
||||
return ..()
|
||||
else
|
||||
stun(target, user)
|
||||
baton_knockdown(target, user)
|
||||
|
||||
/**
|
||||
* Called when a target is about to be hit non-lethally.
|
||||
@@ -62,7 +66,7 @@
|
||||
* * target - The mob about to be hit
|
||||
* * user - The attacking user
|
||||
*/
|
||||
/obj/item/melee/classic_baton/proc/stun(mob/living/target, mob/living/user)
|
||||
/obj/item/melee/classic_baton/proc/baton_knockdown(mob/living/target, mob/living/user)
|
||||
if(issilicon(target))
|
||||
user.visible_message("<span class='danger'>[user] pulses [target]'s sensors with [src]!</span>",\
|
||||
"<span class='danger'>You pulse [target]'s sensors with [src]!</span>")
|
||||
@@ -81,12 +85,12 @@
|
||||
// Visuals and sound
|
||||
user.do_attack_animation(target)
|
||||
playsound(target, stun_sound, 75, TRUE, -1)
|
||||
add_attack_logs(user, target, "Stunned with [src]")
|
||||
add_attack_logs(user, target, "Knocked down with [src]")
|
||||
// Hit 'em
|
||||
target.LAssailant = iscarbon(user) ? user : null
|
||||
target.Weaken(stun_time)
|
||||
target.KnockDown(knockdown_duration)
|
||||
on_cooldown = TRUE
|
||||
addtimer(CALLBACK(src, .proc/cooldown_finished), cooldown)
|
||||
addtimer(VARSET_CALLBACK(src, on_cooldown, FALSE), cooldown)
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
@@ -108,13 +112,9 @@
|
||||
* * user - The attacking user
|
||||
*/
|
||||
/obj/item/melee/classic_baton/proc/on_non_silicon_stun(mob/living/target, mob/living/user)
|
||||
return
|
||||
|
||||
/**
|
||||
* Called some time after a non-lethal attack
|
||||
*/
|
||||
/obj/item/melee/classic_baton/proc/cooldown_finished()
|
||||
on_cooldown = FALSE
|
||||
var/armour = target.run_armor_check("chest", armour_penetration = stamina_armour_pen) // returns a % of their chest melee armour
|
||||
var/factor = (100 - armour) / 100 // converts the % into a decimal
|
||||
target.adjustStaminaLoss(stamina_damage * factor)
|
||||
|
||||
/**
|
||||
* # Fancy Cane
|
||||
@@ -145,7 +145,7 @@
|
||||
/// Force when extended
|
||||
var/force_on = 10
|
||||
/// Item state when extended
|
||||
var/item_state_on = "nullrod"
|
||||
var/item_state_on = "tele_baton"
|
||||
/// Icon state when concealed
|
||||
var/icon_state_off = "telebaton_0"
|
||||
/// Icon state when extended
|
||||
|
||||
@@ -243,6 +243,11 @@
|
||||
qdel(W)
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/barcodescanner))
|
||||
var/obj/item/barcodescanner/B = W
|
||||
B.scanID(src, user)
|
||||
return
|
||||
|
||||
else if(istype (W,/obj/item/stamp))
|
||||
if(!stamped)
|
||||
dat+="<img src=large_[W.icon_state].png>"
|
||||
@@ -807,13 +812,19 @@
|
||||
|
||||
/obj/item/card/id/ert/commander
|
||||
icon_state = "ERT_leader"
|
||||
|
||||
/obj/item/card/id/ert/security
|
||||
icon_state = "ERT_security"
|
||||
|
||||
/obj/item/card/id/ert/engineering
|
||||
icon_state = "ERT_engineering"
|
||||
|
||||
/obj/item/card/id/ert/medic
|
||||
icon_state = "ERT_medical"
|
||||
|
||||
/obj/item/card/id/ert/deathsquad
|
||||
icon_state = "deathsquad"
|
||||
|
||||
/obj/item/card/id/golem
|
||||
name = "Free Golem ID"
|
||||
desc = "A card used to claim mining points and buy gear. Use it to mark it as yours."
|
||||
@@ -921,6 +932,8 @@
|
||||
return "ERT Medical"
|
||||
if("ERT_janitorial")
|
||||
return "ERT Janitorial"
|
||||
if("deathsquad")
|
||||
return "Deathsquad"
|
||||
if("syndie")
|
||||
return "Syndicate"
|
||||
if("TDred")
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
message_say = "FOR THE FEDERATION!"
|
||||
else if(role == ROLE_REV || role == "head revolutionary")
|
||||
message_say = "FOR THE REVOLUTION!"
|
||||
else if(role == "death commando" || role == ROLE_ERT)
|
||||
else if(role == SPECIAL_ROLE_DEATHSQUAD || role == ROLE_ERT)
|
||||
message_say = "FOR NANOTRASEN!"
|
||||
user.say(message_say)
|
||||
target = user
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "syndicate"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
var/spawn_contents = LINDA_SPAWN_HEAT | LINDA_SPAWN_TOXINS
|
||||
var/spawn_amount = 100
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
name = "gluon grenade"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "gluon"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
var/freeze_range = 4
|
||||
var/rad_damage = 350
|
||||
var/stamina_damage = 30
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "banana"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
var/deliveryamt = 8
|
||||
var/spawner_type = /obj/item/grown/bananapeel
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "grenade casing"
|
||||
desc = "A do it yourself grenade casing!"
|
||||
icon_state = "chemg"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
var/bomb_state = "chembomb"
|
||||
var/payload_name = null // used for spawned grenades
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Banana Grenade"
|
||||
desc = "HONK! brand Bananas. In a special applicator for rapid slipping of wide areas."
|
||||
icon_state = "banana"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force = 2.0
|
||||
var/stage = 0
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
name = "clusterbang"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "clusterbang"
|
||||
item_state = "flashbang"
|
||||
var/payload = /obj/item/grenade/flashbang/cluster
|
||||
|
||||
/obj/item/grenade/clusterbuster/prime()
|
||||
|
||||
@@ -47,20 +47,20 @@
|
||||
M.show_message("<span class='warning'>BANG</span>", 2)
|
||||
|
||||
var/distance = max(1, get_dist(source_turf, get_turf(M)))
|
||||
var/stun_amount = max(20 SECONDS / distance, 6 SECONDS)
|
||||
var/status_duration = max(10 SECONDS / distance, 4 SECONDS)
|
||||
|
||||
// Flash
|
||||
if(flash)
|
||||
if(M.flash_eyes(affect_silicon = TRUE))
|
||||
M.Weaken(stun_amount)
|
||||
M.Confused(status_duration * 2)
|
||||
|
||||
// Bang
|
||||
var/ear_safety = M.check_ear_prot()
|
||||
if(bang)
|
||||
if(!distance || A.loc == M || A.loc == M.loc) // Holding on person or being exactly where lies is significantly more dangerous and voids protection
|
||||
M.Weaken(20 SECONDS)
|
||||
M.KnockDown(10 SECONDS)
|
||||
if(!ear_safety)
|
||||
M.Weaken(stun_amount)
|
||||
M.KnockDown(status_duration)
|
||||
M.AdjustEarDamage(5, 15)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "frag grenade"
|
||||
desc = "Fire in the hole."
|
||||
icon_state = "frag"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
origin_tech = "materials=3;magnets=4"
|
||||
var/range = 5
|
||||
var/max_shrapnel = 4
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "improvised_grenade"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
flags = CONDUCT
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "grenade"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
flags = CONDUCT
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
desc = "It is set to detonate in 2 seconds."
|
||||
name = "smoke bomb"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "flashbang"
|
||||
icon_state = "smoke"
|
||||
det_time = 20
|
||||
item_state = "flashbang"
|
||||
item_state = "smoke"
|
||||
slot_flags = SLOT_BELT
|
||||
var/datum/effect_system/smoke_spread/bad/smoke
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "delivery grenade"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "delivery"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
origin_tech = "materials=3;magnets=4"
|
||||
var/spawner_type = null // must be an object path
|
||||
var/deliveryamt = 1 // amount of type to deliver
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "syndicate minibomb"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "syndicate"
|
||||
item_state = "flashbang"
|
||||
item_state = "grenade"
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
|
||||
/obj/item/grenade/syndieminibomb/prime()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "null rod"
|
||||
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of dark magic."
|
||||
icon_state = "nullrod"
|
||||
item_state = "nullrod"
|
||||
item_state = "tele_baton"
|
||||
force = 15
|
||||
throw_speed = 3
|
||||
throw_range = 4
|
||||
@@ -157,7 +157,7 @@
|
||||
/obj/item/nullrod/claymore/darkblade
|
||||
name = "dark blade"
|
||||
icon_state = "cultblade"
|
||||
item_state = "cultblade"
|
||||
item_state = "darkbalde"
|
||||
desc = "Spread the glory of the dark gods!"
|
||||
slot_flags = SLOT_BELT
|
||||
hitsound = 'sound/hallucinations/growl1.ogg'
|
||||
@@ -237,7 +237,7 @@
|
||||
|
||||
/obj/item/nullrod/scythe/vibro
|
||||
name = "high frequency blade"
|
||||
icon_state = "hfrequency0"
|
||||
icon_state = "hfrequency1"
|
||||
item_state = "hfrequency1"
|
||||
desc = "Bad references are the DNA of the soul."
|
||||
attack_verb = list("chopped", "sliced", "cut", "zandatsu'd")
|
||||
|
||||
@@ -158,8 +158,8 @@
|
||||
gender = NEUTER
|
||||
origin_tech = "engineering=3;combat=1"
|
||||
hitsound = 'sound/effects/snap.ogg'
|
||||
///the duration of the stun in seconds
|
||||
var/weaken = 0
|
||||
///the duration of the knockdown in seconds
|
||||
var/knockdown_duration = 0
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
|
||||
playsound(loc,'sound/weapons/bolathrow.ogg', 50, TRUE)
|
||||
@@ -177,7 +177,7 @@
|
||||
C.update_inv_legcuffed()
|
||||
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
||||
to_chat(C, "<span class='userdanger'>[src] ensnares you!</span>")
|
||||
C.Weaken(weaken)
|
||||
C.KnockDown(knockdown_duration)
|
||||
playsound(loc, hitsound, 50, TRUE)
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/tactical //traitor variant
|
||||
@@ -187,7 +187,7 @@
|
||||
item_state = "bola_r"
|
||||
breakouttime = 70
|
||||
origin_tech = "engineering=4;combat=3"
|
||||
weaken = 2 SECONDS
|
||||
knockdown_duration = 2 SECONDS
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/energy //For Security
|
||||
name = "energy bola"
|
||||
@@ -200,6 +200,9 @@
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom)
|
||||
if(iscarbon(hit_atom))
|
||||
var/mob/living/carbon/C = hit_atom
|
||||
if(C.legcuffed)
|
||||
return
|
||||
var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy(get_turf(hit_atom))
|
||||
B.Crossed(hit_atom, null)
|
||||
qdel(src)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -89,7 +89,7 @@
|
||||
name = "Santa's Gift Bag"
|
||||
desc = "Space Santa uses this to deliver toys to all the nice children in space on Christmas! Wow, it's pretty big!"
|
||||
icon_state = "giftbag0"
|
||||
item_state = "giftbag"
|
||||
item_state = "giftbag0"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
max_combined_w_class = 400 // can store a ton of shit!
|
||||
@@ -98,6 +98,7 @@
|
||||
name = "trophy rack"
|
||||
desc = "It's useful for both carrying extra gear and proudly declaring your insanity."
|
||||
icon_state = "cultpack"
|
||||
item_state = "cultpack"
|
||||
|
||||
/obj/item/storage/backpack/clown
|
||||
name = "Giggles Von Honkerton"
|
||||
@@ -207,6 +208,7 @@
|
||||
name = "leather satchel"
|
||||
desc = "It's a very fancy satchel made with fine leather."
|
||||
icon_state = "satchel"
|
||||
item_state = "satchel"
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/strap_side_straight = FALSE
|
||||
|
||||
@@ -218,7 +220,7 @@
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
strap_side_straight = !strap_side_straight
|
||||
icon_state = strap_side_straight ? "satchel-flipped" : "satchel"
|
||||
item_state = strap_side_straight ? "satchel-flipped" : "satchel"
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.update_inv_back()
|
||||
@@ -229,11 +231,13 @@
|
||||
name = "leather satchel"
|
||||
desc = "An NT Deluxe satchel, with the finest quality leather and the company logo in a thin gold stitch"
|
||||
icon_state = "nt_deluxe"
|
||||
item_state = "satchel"
|
||||
|
||||
/obj/item/storage/backpack/satchel/lizard
|
||||
name = "lizard skin handbag"
|
||||
desc = "A handbag made out of what appears to be supple green Unathi skin. A face can be vaguely seen on the front."
|
||||
icon_state = "satchel-lizard"
|
||||
item_state = null
|
||||
|
||||
/obj/item/storage/backpack/satchel/withwallet/populate_contents()
|
||||
new /obj/item/storage/wallet/random(src)
|
||||
@@ -242,70 +246,82 @@
|
||||
name = "satchel"
|
||||
desc = "A deluxe NT Satchel, made of the highest quality leather."
|
||||
icon_state = "satchel-norm"
|
||||
item_state = "satchel-norm"
|
||||
|
||||
/obj/item/storage/backpack/satchel_eng
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
icon_state = "satchel-eng"
|
||||
item_state = "satchel-eng"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/storage/backpack/satchel/explorer
|
||||
name = "explorer satchel"
|
||||
desc = "A robust satchel for stashing your loot."
|
||||
icon_state = "satchel-explorer"
|
||||
item_state = "securitypack"
|
||||
item_state = "satchel-explorer"
|
||||
|
||||
/obj/item/storage/backpack/satchel_med
|
||||
name = "medical satchel"
|
||||
desc = "A sterile satchel used in medical departments."
|
||||
icon_state = "satchel-med"
|
||||
item_state = "satchel-med"
|
||||
|
||||
/obj/item/storage/backpack/satchel_vir
|
||||
name = "virologist satchel"
|
||||
desc = "A sterile satchel with virologist colours."
|
||||
icon_state = "satchel-vir"
|
||||
item_state = "satchel-vir"
|
||||
|
||||
/obj/item/storage/backpack/satchel_chem
|
||||
name = "chemist satchel"
|
||||
desc = "A sterile satchel with chemist colours."
|
||||
icon_state = "satchel-chem"
|
||||
item_state = "satchel-chem"
|
||||
|
||||
/obj/item/storage/backpack/satchel_gen
|
||||
name = "geneticist satchel"
|
||||
desc = "A sterile satchel with geneticist colours."
|
||||
icon_state = "satchel-gen"
|
||||
item_state = "satchel-gen"
|
||||
|
||||
/obj/item/storage/backpack/satchel_tox
|
||||
name = "scientist satchel"
|
||||
desc = "Useful for holding research materials."
|
||||
icon_state = "satchel-tox"
|
||||
item_state = "satchel-tox"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/storage/backpack/satchel_sec
|
||||
name = "security satchel"
|
||||
desc = "A robust satchel for security related needs."
|
||||
icon_state = "satchel-sec"
|
||||
item_state = "satchel-sec"
|
||||
|
||||
/obj/item/storage/backpack/satchel_hyd
|
||||
name = "hydroponics satchel"
|
||||
desc = "A green satchel for plant related work."
|
||||
icon_state = "satchel-hyd"
|
||||
item_state = "satchel-hyd"
|
||||
|
||||
/obj/item/storage/backpack/satchel_cap
|
||||
name = "captain's satchel"
|
||||
desc = "An exclusive satchel for Nanotrasen officers."
|
||||
icon_state = "satchel-cap"
|
||||
item_state = "satchel-cap"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/storage/backpack/satchel_blueshield
|
||||
name = "blueshield satchel"
|
||||
desc = "A robust satchel issued to Nanotrasen's finest."
|
||||
icon_state = "satchel-blueshield"
|
||||
item_state = "satchel-blueshield"
|
||||
|
||||
/obj/item/storage/backpack/satchel_flat
|
||||
name = "smuggler's satchel"
|
||||
desc = "A very slim satchel that can easily fit into tight spaces."
|
||||
icon_state = "satchel-flat"
|
||||
item_state = "satchel-flat"
|
||||
w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself.
|
||||
max_combined_w_class = 15
|
||||
level = 1
|
||||
@@ -544,7 +560,7 @@
|
||||
name = "emergency response team backpack"
|
||||
desc = "A spacious backpack with lots of pockets, used by members of the Nanotrasen Emergency Response Team."
|
||||
icon_state = "ert_commander"
|
||||
item_state = "backpack"
|
||||
item_state = null
|
||||
max_combined_w_class = 30
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -582,3 +598,9 @@
|
||||
name = "\improper TSF marine backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by marines of the Trans-Solar Federation."
|
||||
icon_state = "ert_solgov"
|
||||
|
||||
/obj/item/storage/backpack/ert/deathsquad
|
||||
name = "Deathsquad backpack"
|
||||
desc = "A spacious backpack with lots of pockets, worn by those working in Special Operations."
|
||||
icon_state = "ert_security"
|
||||
|
||||
|
||||
@@ -798,6 +798,7 @@
|
||||
/obj/item/storage/box/responseteam
|
||||
name = "boxed survival kit"
|
||||
icon_state = "box_ert"
|
||||
storage_slots = 8
|
||||
|
||||
/obj/item/storage/box/responseteam/populate_contents()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
@@ -809,6 +810,19 @@
|
||||
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
|
||||
/obj/item/storage/box/deathsquad
|
||||
name = "boxed death kit"
|
||||
icon_state = "box_of_doom"
|
||||
|
||||
/obj/item/storage/box/deathsquad/populate_contents()
|
||||
new /obj/item/flashlight/flare(src)
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/kitchen/knife/combat(src)
|
||||
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/survival(src)
|
||||
new /obj/item/ammo_box/a357(src)
|
||||
new /obj/item/ammo_box/a357(src)
|
||||
|
||||
/obj/item/storage/box/clown
|
||||
name = "clown box"
|
||||
desc = "A colorful cardboard box for the clown"
|
||||
@@ -879,6 +893,25 @@
|
||||
name = "magical box"
|
||||
desc = "It's just an ordinary magical box."
|
||||
icon_state = "box_wizard"
|
||||
w_class = WEIGHT_CLASS_GIGANTIC
|
||||
|
||||
/obj/item/storage/box/breaching
|
||||
name = "breaching charges"
|
||||
desc = "Contains three T4 thermal breaching charges."
|
||||
icon_state = "flashbang"
|
||||
|
||||
/obj/item/storage/box/breaching/populate_contents()
|
||||
for(var/I in 1 to 3)
|
||||
new /obj/item/grenade/plastic/c4/thermite(src)
|
||||
|
||||
/obj/item/storage/box/mindshield
|
||||
name = "boxed mindshield kit"
|
||||
desc = "Contains everything needed to secure the minds of those around you."
|
||||
|
||||
/obj/item/storage/box/mindshield/populate_contents()
|
||||
for(var/I in 1 to 3)
|
||||
new /obj/item/implantcase/mindshield(src)
|
||||
new /obj/item/implanter/mindshield(src)
|
||||
|
||||
#undef NODESIGN
|
||||
#undef NANOTRASEN
|
||||
|
||||
@@ -284,7 +284,7 @@ To apply, hold the injector a short distance away from the outer thigh before ap
|
||||
new /obj/item/clothing/gloves/color/latex/nitrile(src)
|
||||
new /obj/item/clothing/mask/balaclava(src)
|
||||
new /obj/item/clothing/accessory/stethoscope(src)
|
||||
new /obj/item/book/manual/engineering_hacking(src)
|
||||
new /obj/item/book/manual/wiki/hacking(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/chameleon
|
||||
name = "chameleon kit"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A stun baton for incapacitating people with."
|
||||
icon_state = "stunbaton"
|
||||
var/base_icon = "stunbaton"
|
||||
item_state = "baton"
|
||||
item_state = null
|
||||
belt_icon = "stunbaton"
|
||||
slot_flags = SLOT_BELT
|
||||
force = 10
|
||||
@@ -11,15 +11,19 @@
|
||||
origin_tech = "combat=2"
|
||||
attack_verb = list("beaten")
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, RAD = 0, FIRE = 80, ACID = 80)
|
||||
/// How many life ticks does the stun last for
|
||||
var/stunforce = 14 SECONDS
|
||||
/// How many seconds does the knockdown last for?
|
||||
var/knockdown_duration = 10 SECONDS
|
||||
/// how much stamina damage does this baton do?
|
||||
var/stam_damage = 60 // 2 hits or 1 hit + 2 disabler shots
|
||||
/// Is the baton currently turned on
|
||||
var/turned_on = FALSE
|
||||
/// How much power does it cost to stun someone
|
||||
var/hitcost = 1000
|
||||
/// Chance for the baton to stun when thrown at someone
|
||||
var/throw_hit_chance = 35
|
||||
var/obj/item/stock_parts/cell/high/cell = null
|
||||
/// the initial cooldown tracks the time between swings. tracks the world.time when the baton is usable again.
|
||||
var/cooldown = 3.5 SECONDS
|
||||
/// the time it takes before the target falls over
|
||||
var/knockdown_delay = 2.5 SECONDS
|
||||
|
||||
/obj/item/melee/baton/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -62,7 +66,6 @@
|
||||
icon_state = "[base_icon]_nocell"
|
||||
else
|
||||
icon_state = "[base_icon]"
|
||||
|
||||
/obj/item/melee/baton/examine(mob/user)
|
||||
. = ..()
|
||||
if(isrobot(user))
|
||||
@@ -80,11 +83,6 @@
|
||||
/obj/item/melee/baton/get_cell()
|
||||
return cell
|
||||
|
||||
/obj/item/melee/baton/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
if(prob(throw_hit_chance) && turned_on && isliving(hit_atom) && !issilicon(hit_atom))
|
||||
baton_stun(hit_atom)
|
||||
|
||||
/**
|
||||
* Removes the specified amount of charge from the batons power cell.
|
||||
*
|
||||
@@ -153,10 +151,9 @@
|
||||
|
||||
/obj/item/melee/baton/attack(mob/M, mob/living/user)
|
||||
if(turned_on && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
|
||||
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>",
|
||||
if(baton_stun(user, user, skip_cooldown = TRUE)) // for those super edge cases where you clumsy baton yourself in quick succession
|
||||
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>",
|
||||
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
||||
user.Weaken(stunforce * 3)
|
||||
deductcharge(hitcost)
|
||||
return
|
||||
|
||||
if(issilicon(M)) // Can't stunbaton borgs and AIs
|
||||
@@ -181,23 +178,34 @@
|
||||
"<span class='danger'>[L == user ? "You prod yourself" : "[user] has prodded you"] with [src]. Luckily it was off.</span>")
|
||||
return
|
||||
|
||||
baton_stun(L, user)
|
||||
user.do_attack_animation(L)
|
||||
if(baton_stun(L, user))
|
||||
user.do_attack_animation(L)
|
||||
|
||||
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user)
|
||||
/// returning false results in no baton attack animation, returning true results in an animation.
|
||||
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE)
|
||||
if(cooldown > world.time && !skip_cooldown)
|
||||
return FALSE
|
||||
|
||||
var/user_UID = user.UID()
|
||||
if(HAS_TRAIT_FROM(L, TRAIT_WAS_BATONNED, user_UID)) // prevents double baton cheese.
|
||||
return FALSE
|
||||
|
||||
cooldown = world.time + initial(cooldown) // tracks the world.time when hitting will be next available.
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that
|
||||
playsound(L, 'sound/weapons/genhit.ogg', 50, TRUE)
|
||||
return
|
||||
return FALSE
|
||||
H.forcesay(GLOB.hit_appends)
|
||||
H.Confused(10 SECONDS)
|
||||
H.Jitter(10 SECONDS)
|
||||
H.adjustStaminaLoss(stam_damage)
|
||||
|
||||
ADD_TRAIT(L, TRAIT_WAS_BATONNED, user.UID()) // so one person cannot hit the same person with two separate batons
|
||||
addtimer(CALLBACK(src, .proc/baton_knockdown, L, user_UID, knockdown_duration), knockdown_delay)
|
||||
|
||||
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK, 33)
|
||||
|
||||
L.Weaken(stunforce)
|
||||
L.Stuttering(stunforce)
|
||||
|
||||
|
||||
if(user)
|
||||
L.lastattacker = user.real_name
|
||||
L.lastattackerckey = user.ckey
|
||||
@@ -206,7 +214,11 @@
|
||||
add_attack_logs(user, L, "stunned")
|
||||
playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1)
|
||||
deductcharge(hitcost)
|
||||
return TRUE
|
||||
|
||||
/obj/item/melee/baton/proc/baton_knockdown(mob/living/target, user_UID, knockdown_duration)
|
||||
target.KnockDown(knockdown_duration)
|
||||
REMOVE_TRAIT(target, TRAIT_WAS_BATONNED, user_UID)
|
||||
|
||||
/obj/item/melee/baton/emp_act(severity)
|
||||
. = ..()
|
||||
@@ -216,13 +228,9 @@
|
||||
/obj/item/melee/baton/wash(mob/living/user, atom/source)
|
||||
if(turned_on && cell?.charge)
|
||||
flick("baton_active", source)
|
||||
user.Stun(stunforce)
|
||||
user.Weaken(stunforce)
|
||||
user.SetStuttering(stunforce)
|
||||
deductcharge(hitcost)
|
||||
baton_stun(user, user, skip_cooldown = TRUE)
|
||||
user.visible_message("<span class='warning'>[user] shocks [user.p_them()]self while attempting to wash the active [src]!</span>",
|
||||
"<span class='userdanger'>You unwisely attempt to wash [src] while it's still on.</span>")
|
||||
playsound(src, "sparks", 50, TRUE)
|
||||
return TRUE
|
||||
..()
|
||||
|
||||
@@ -232,12 +240,11 @@
|
||||
desc = "An improvised stun baton."
|
||||
icon_state = "stunprod_nocell"
|
||||
base_icon = "stunprod"
|
||||
item_state = "prod"
|
||||
force = 3
|
||||
throwforce = 5
|
||||
stunforce = 10 SECONDS
|
||||
knockdown_duration = 6 SECONDS
|
||||
stam_damage = 40 // three hits to crit
|
||||
hitcost = 2000
|
||||
throw_hit_chance = 10
|
||||
slot_flags = SLOT_BACK
|
||||
var/obj/item/assembly/igniter/sparkler = null
|
||||
|
||||
@@ -249,6 +256,6 @@
|
||||
QDEL_NULL(sparkler)
|
||||
return ..()
|
||||
|
||||
/obj/item/melee/baton/cattleprod/baton_stun()
|
||||
/obj/item/melee/baton/cattleprod/baton_stun(mob/living/L, mob/user, skip_cooldown = FALSE)
|
||||
if(sparkler.activate())
|
||||
return ..()
|
||||
|
||||
@@ -102,10 +102,12 @@
|
||||
/obj/item/tank/jetpack/void/grey
|
||||
name = "Void Jetpack (Oxygen)"
|
||||
icon_state = "jetpack-void-grey"
|
||||
item_state = "jetpack-void-grey"
|
||||
|
||||
/obj/item/tank/jetpack/void/gold
|
||||
name = "Retro Jetpack (Oxygen)"
|
||||
icon_state = "jetpack-void-gold"
|
||||
item_state = "jetpack-void-gold"
|
||||
|
||||
/obj/item/tank/jetpack/oxygen
|
||||
name = "Jetpack (Oxygen)"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "A prod with a bluespace crystal on the end. The crystal doesn't look too fun to touch."
|
||||
icon_state = "teleprod_nocell"
|
||||
base_icon = "teleprod"
|
||||
item_state = "teleprod"
|
||||
origin_tech = "combat=2;bluespace=4;materials=3"
|
||||
|
||||
/obj/item/melee/baton/cattleprod/teleprod/attack(mob/living/carbon/M, mob/living/carbon/user)//handles making things teleport when hit
|
||||
@@ -13,7 +12,6 @@
|
||||
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
|
||||
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>",
|
||||
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
||||
user.Weaken(stunforce * 3)
|
||||
deductcharge(hitcost)
|
||||
do_teleport(user, get_turf(user), 50)//honk honk
|
||||
else if(iscarbon(M) && !M.anchored)
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
new /obj/item/clothing/suit/storage/labcoat(src)
|
||||
new /obj/item/radio/headset/headset_sci(src)
|
||||
new /obj/item/radio/headset/headset_sci(src)
|
||||
new /obj/item/radio/headset/headset_sci(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/RD
|
||||
name = "research director's locker"
|
||||
@@ -61,6 +62,7 @@
|
||||
new /obj/item/reagent_containers/food/drinks/mug/rd(src)
|
||||
new /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic(src)
|
||||
new /obj/item/clothing/accessory/medal/science(src)
|
||||
new /obj/item/clothing/glasses/welding/superior(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/research_reagents
|
||||
name = "research chemical storage closet"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
new /obj/item/storage/backpack/captain(src)
|
||||
else
|
||||
new /obj/item/storage/backpack/satchel_cap(src)
|
||||
new /obj/item/book/manual/faxes(src)
|
||||
new /obj/item/book/manual/wiki/faxes(src)
|
||||
new /obj/item/storage/backpack/duffel/captain(src)
|
||||
new /obj/item/clothing/suit/captunic(src)
|
||||
new /obj/item/clothing/suit/captunic/capjacket(src)
|
||||
@@ -203,7 +203,7 @@
|
||||
icon_opened = "hop_open"
|
||||
|
||||
/obj/structure/closet/secure_closet/ntrep/populate_contents()
|
||||
new /obj/item/book/manual/faxes(src)
|
||||
new /obj/item/book/manual/wiki/faxes(src)
|
||||
new /obj/item/storage/briefcase(src)
|
||||
new /obj/item/paicard(src)
|
||||
new /obj/item/flash(src)
|
||||
@@ -326,7 +326,7 @@
|
||||
open_door_sprite = "chaplain_door"
|
||||
|
||||
/obj/structure/closet/secure_closet/magistrate/populate_contents()
|
||||
new /obj/item/book/manual/faxes(src)
|
||||
new /obj/item/book/manual/wiki/faxes(src)
|
||||
new /obj/item/storage/secure/briefcase(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/clothing/glasses/sunglasses(src)
|
||||
@@ -351,7 +351,7 @@
|
||||
open_door_sprite = "chaplain_door"
|
||||
|
||||
/obj/structure/closet/secure_closet/iaa/populate_contents()
|
||||
new /obj/item/book/manual/faxes(src)
|
||||
new /obj/item/book/manual/wiki/faxes(src)
|
||||
new /obj/item/storage/box/tapes(src)
|
||||
new /obj/item/storage/secure/briefcase(src)
|
||||
new /obj/item/storage/briefcase(src)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/structure/closet/statue
|
||||
/obj/structure/closet/statue //this type path is a crime, ponies what the fuck
|
||||
name = "statue"
|
||||
desc = "An incredibly lifelike marble carving"
|
||||
icon = 'icons/obj/statue.dmi'
|
||||
@@ -16,11 +16,10 @@
|
||||
. = ..()
|
||||
if(ishuman(L) || iscorgi(L))
|
||||
if(L.buckled)
|
||||
L.buckled = 0
|
||||
L.anchored = 0
|
||||
L.unbuckle_mob()
|
||||
L.forceMove(src)
|
||||
ADD_TRAIT(L, TRAIT_MUTE, STATUE_MUTE)
|
||||
max_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues
|
||||
max_integrity = max(L.health + 100, 100) //stoning damaged mobs will result in easier to shatter statues
|
||||
intialTox = L.getToxLoss()
|
||||
intialFire = L.getFireLoss()
|
||||
intialBrute = L.getBruteLoss()
|
||||
|
||||
@@ -435,3 +435,5 @@
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/under/rank/medical/mortician(src)
|
||||
new /obj/item/clothing/head/surgery/black(src)
|
||||
new /obj/item/reagent_containers/glass/bottle/reagent/formaldehyde(src)
|
||||
new /obj/item/reagent_containers/dropper(src)
|
||||
|
||||
@@ -81,6 +81,9 @@
|
||||
resistance_flags = NONE
|
||||
anchored = FALSE
|
||||
comfort = 1
|
||||
var/icon_up = "up"
|
||||
var/icon_down = "down"
|
||||
var/folded = /obj/item/roller
|
||||
|
||||
/obj/structure/bed/roller/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/roller_holder))
|
||||
@@ -92,30 +95,38 @@
|
||||
user_unbuckle_mob(buckled_mobs[1], user)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] collapses \the [name].</span>", "<span class='notice'>You collapse \the [name].</span>")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
new folded(get_turf(src))
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/bed/roller/post_buckle_mob(mob/living/M)
|
||||
density = TRUE
|
||||
icon_state = "up"
|
||||
icon_state = icon_up
|
||||
..()
|
||||
|
||||
/obj/structure/bed/roller/post_unbuckle_mob(mob/living/M)
|
||||
density = FALSE
|
||||
icon_state = "down"
|
||||
icon_state = icon_down
|
||||
..()
|
||||
|
||||
/obj/structure/bed/roller/holo
|
||||
name = "holo stretcher"
|
||||
icon_state = "holo_extended"
|
||||
icon_up = "holo_extended"
|
||||
icon_down = "holo_extended"
|
||||
folded = /obj/item/roller/holo
|
||||
|
||||
/obj/item/roller
|
||||
name = "roller bed"
|
||||
desc = "A collapsed roller bed that can be carried around."
|
||||
icon = 'icons/obj/rollerbed.dmi'
|
||||
icon_state = "folded"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
var/extended = /obj/structure/bed/roller
|
||||
|
||||
/obj/item/roller/attack_self(mob/user)
|
||||
var/obj/structure/bed/roller/R = new /obj/structure/bed/roller(user.loc)
|
||||
var/obj/structure/bed/roller/R = new extended(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
@@ -137,6 +148,17 @@
|
||||
forceMove(RH)
|
||||
RH.held = src
|
||||
|
||||
/obj/item/roller/holo
|
||||
name = "holo stretcher"
|
||||
desc = "A retracted hardlight stretcher that can be carried around."
|
||||
icon_state = "holo_retracted"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
origin_tech = "magnets=3;biotech=4;powerstorage=3"
|
||||
extended = /obj/structure/bed/roller/holo
|
||||
|
||||
/obj/item/roller/holo/attackby(obj/item/W, mob/user, params)
|
||||
return
|
||||
|
||||
/obj/structure/bed/roller/MouseDrop(over_object, src_location, over_location)
|
||||
..()
|
||||
if(over_object == usr && Adjacent(usr) && (in_range(src, usr) || usr.contents.Find(src)))
|
||||
@@ -145,7 +167,7 @@
|
||||
if(has_buckled_mobs())
|
||||
return 0
|
||||
usr.visible_message("<span class='notice'>[usr] collapses \the [name].</span>", "<span class='notice'>You collapse \the [name].</span>")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
new folded(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/roller_holder
|
||||
|
||||
@@ -134,11 +134,11 @@
|
||||
handle_rotation()
|
||||
|
||||
/obj/structure/chair/AltClick(mob/user)
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
rotate()
|
||||
|
||||
// Chair types
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/obj/structure/toilet/Initialize(mapload)
|
||||
. = ..()
|
||||
open = round(rand(0, 1))
|
||||
open = prob(50)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/toilet/Destroy()
|
||||
|
||||
Reference in New Issue
Block a user