mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-24 20:46:29 +01:00
Polaris sync
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
// These contain structures to make certain 'alien' (as in the ayyy ones, not xenomorphs) submaps more filled, and don't really do anything.
|
||||
|
||||
/obj/structure/prop/alien
|
||||
name = "some alien thing"
|
||||
desc = "My description is broken, bug a developer."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/interaction_message = null
|
||||
|
||||
/obj/structure/prop/alien/attack_hand(mob/living/user) // Used to tell the player that this isn't useful for anything.
|
||||
if(!istype(user))
|
||||
return FALSE
|
||||
if(!interaction_message)
|
||||
return ..()
|
||||
else
|
||||
to_chat(user, interaction_message)
|
||||
|
||||
/obj/structure/prop/alien/computer
|
||||
name = "alien console"
|
||||
desc = "The console flashes what appear to be symbols you've never seen before."
|
||||
icon_state = "console-c"
|
||||
interaction_message = "<span class='warning'>The console flashes a series of unknown symbols as you press a button on what is presumably a keyboard. It probably some sort of \
|
||||
authentication error. Since you're not an alien, you should probably leave it alone.</span>"
|
||||
|
||||
/obj/structure/prop/alien/computer/camera
|
||||
desc = "This console is briefly flashing video feeds of various locations close by."
|
||||
icon_state = "camera"
|
||||
|
||||
/obj/structure/prop/alien/computer/camera/flipped
|
||||
icon_state = "camera_flipped"
|
||||
|
||||
/obj/structure/prop/alien/dispenser
|
||||
name = "alien dispenser"
|
||||
desc = "This looks like it dispenses... something?"
|
||||
icon_state = "dispenser"
|
||||
interaction_message = "<span class='warning'>You don't see any mechanism to operate this. Probably for the best.</span>"
|
||||
|
||||
/obj/structure/prop/alien/pod
|
||||
name = "alien pod"
|
||||
desc = "This seems to be a container for something."
|
||||
icon_state = "experiment"
|
||||
interaction_message = "<span class='warning'>You don't see any mechanism to open this thing. Probably for the best.</span>"
|
||||
|
||||
/obj/structure/prop/alien/pod/open
|
||||
name = "opened alien pod"
|
||||
desc = "At one point, this probably contained something interesting..."
|
||||
icon_state = "experiment-open"
|
||||
interaction_message = "<span class='warning'>You don't see any mechanism to close this thing.</span>"
|
||||
|
||||
/obj/structure/prop/alien/power
|
||||
name = "void core"
|
||||
icon_state = "core"
|
||||
desc = "An alien machine that seems to be producing energy seemingly out of nowhere."
|
||||
interaction_message = "<span class='warning'>Messing with something that makes energy out of nowhere seems very unwise.</span>"
|
||||
|
||||
/obj/item/prop/alien
|
||||
name = "some alien item"
|
||||
desc = "My description is broken, bug a developer."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
|
||||
// Mostly useless. Research might like it, however.
|
||||
/obj/item/prop/alien/junk
|
||||
name = "alien object"
|
||||
desc = "You have no idea what this thing does."
|
||||
icon_state = "health"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
var/static/list/possible_states = list("health", "spider", "slime", "emp", "species", "egg", "vent", "mindshock", "viral", "gland")
|
||||
var/static/list/possible_tech = list(TECH_MATERIAL, TECH_ENGINEERING, TECH_PHORON, TECH_POWER, TECH_BIO, TECH_COMBAT, TECH_MAGNET, TECH_DATA)
|
||||
|
||||
/obj/item/prop/alien/junk/initialize()
|
||||
..()
|
||||
icon_state = pick(possible_states)
|
||||
var/list/techs = possible_tech.Copy()
|
||||
origin_tech = list()
|
||||
for(var/i = 1 to rand(1, 4))
|
||||
var/new_tech = pick(techs)
|
||||
techs -= new_tech
|
||||
origin_tech[new_tech] = rand(5, 9)
|
||||
@@ -81,7 +81,7 @@
|
||||
health = maxhealth
|
||||
else
|
||||
take_damage(C.force)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed(C))
|
||||
return ..()
|
||||
|
||||
/obj/structure/catwalk/Crossed()
|
||||
|
||||
@@ -186,6 +186,9 @@
|
||||
A.forceMove(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/blob_act()
|
||||
damage(100)
|
||||
|
||||
/obj/structure/closet/proc/damage(var/damage)
|
||||
health -= damage
|
||||
if(health <= 0)
|
||||
@@ -313,6 +316,12 @@
|
||||
if(!src.toggle())
|
||||
usr << "<span class='notice'>It won't budge!</span>"
|
||||
|
||||
/obj/structure/closet/attack_ghost(mob/ghost)
|
||||
if(ghost.client && ghost.client.inquisitive_ghost)
|
||||
ghost.examinate(src)
|
||||
if (!src.opened)
|
||||
to_chat(ghost, "It contains: [english_list(contents)].")
|
||||
|
||||
/obj/structure/closet/verb/verb_toggleopen()
|
||||
set src in oview(1)
|
||||
set category = "Object"
|
||||
|
||||
@@ -134,3 +134,12 @@
|
||||
new /obj/item/clothing/head/helmet/thunderdome(src)
|
||||
new /obj/item/clothing/head/helmet/thunderdome(src)
|
||||
new /obj/item/clothing/head/helmet/thunderdome(src)
|
||||
|
||||
/obj/structure/closet/alien
|
||||
name = "alien container"
|
||||
desc = "Contains secrets of the universe."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "alien_locker"
|
||||
icon_closed = "alien_locker"
|
||||
icon_opened = "alien_locker_open"
|
||||
anchored = TRUE
|
||||
@@ -20,10 +20,12 @@
|
||||
new /obj/item/clothing/head/that(src)
|
||||
new /obj/item/device/radio/headset/headset_service(src)
|
||||
new /obj/item/device/radio/headset/headset_service(src)
|
||||
new /obj/item/clothing/head/hairflower(src)
|
||||
new /obj/item/clothing/head/hairflower/pink(src)
|
||||
new /obj/item/clothing/head/hairflower/yellow(src)
|
||||
new /obj/item/clothing/head/hairflower/blue(src)
|
||||
new /obj/item/clothing/head/pin/flower(src)
|
||||
new /obj/item/clothing/head/pin/flower/pink(src)
|
||||
new /obj/item/clothing/head/pin/flower/yellow(src)
|
||||
new /obj/item/clothing/head/pin/flower/blue(src)
|
||||
new /obj/item/clothing/head/pin/pink(src)
|
||||
new /obj/item/clothing/head/pin/magnetic(src)
|
||||
new /obj/item/clothing/under/sl_suit(src)
|
||||
new /obj/item/clothing/under/sl_suit(src)
|
||||
new /obj/item/clothing/under/rank/bartender(src)
|
||||
@@ -34,6 +36,7 @@
|
||||
new /obj/item/clothing/accessory/wcoat(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/laceup(src)
|
||||
|
||||
/*
|
||||
* Chef
|
||||
@@ -55,6 +58,8 @@
|
||||
new /obj/item/weapon/storage/box/mousetraps(src)
|
||||
new /obj/item/clothing/under/rank/chef(src)
|
||||
new /obj/item/clothing/head/chefhat(src)
|
||||
new /obj/item/weapon/storage/bag/food(src)
|
||||
new /obj/item/weapon/storage/bag/food(src)
|
||||
|
||||
/*
|
||||
* Janitor
|
||||
@@ -68,6 +73,7 @@
|
||||
/obj/structure/closet/jcloset/New()
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/janitor(src)
|
||||
new /obj/item/clothing/under/dress/maid/janitor(src)
|
||||
new /obj/item/device/radio/headset/headset_service(src)
|
||||
new /obj/item/weapon/cartridge/janitor(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
/obj/structure/displaycase/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
user.do_attack_animation(src)
|
||||
playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1)
|
||||
src.health -= W.force
|
||||
|
||||
@@ -117,6 +117,12 @@
|
||||
base_icon_state = "voidcraft_vertical"
|
||||
airlock_type = "/voidcraft/vertical"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_alien
|
||||
base_icon_state = "alien"
|
||||
base_name = "alien airlock"
|
||||
airlock_type = "/alien"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/multi_tile
|
||||
icon = 'icons/obj/doors/door_assembly2x1.dmi'
|
||||
dir = EAST
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
to_chat(user, "<span class='warning'>You need more energy to use the punching bag. Go eat something.</span>")
|
||||
else
|
||||
if(user.a_intent == I_HURT)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed())
|
||||
flick("[icon_state]_hit", src)
|
||||
playsound(src.loc, 'sound/effects/woodhit.ogg', 25, 1, -1)
|
||||
user.do_attack_animation(src)
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
/obj/structure/flora/skeleton
|
||||
name = "hanging skeleton model"
|
||||
icon = 'icons/obj/plants.dmi'
|
||||
icon = 'icons/obj/plants.dmi' //what an interesting plant
|
||||
icon_state = "hangskele"
|
||||
desc = "It's an anatomical model of a human skeletal system made of plaster."
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
|
||||
/obj/structure/flora/pottedplant/orientaltree
|
||||
name = "potted oriental tree"
|
||||
desc = "This is a rather oriental style tree. It's flowers are bright pink."
|
||||
desc = "This is a rather oriental style tree. Its flowers are bright pink."
|
||||
icon_state = "plant-10"
|
||||
|
||||
/obj/structure/flora/pottedplant/smallcactus
|
||||
@@ -214,7 +214,7 @@
|
||||
icon_state = "plant-12"
|
||||
|
||||
/obj/structure/flora/pottedplant/sticky
|
||||
name = "styicky potted plant"
|
||||
name = "sticky potted plant"
|
||||
desc = "This is an odd plant. Its sticky leaves trap insects."
|
||||
icon_state = "plant-13"
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
to_chat(user, "<span class='warning'>\The [W] is ineffective at harming \the [src].</span>")
|
||||
|
||||
hit_animation()
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
user.do_attack_animation(src)
|
||||
|
||||
// Shakes the tree slightly, more or less stolen from lockers.
|
||||
|
||||
@@ -43,6 +43,9 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/structure/girder/blob_act()
|
||||
dismantle()
|
||||
|
||||
/obj/structure/girder/proc/reset_girder()
|
||||
anchored = 1
|
||||
cover = initial(cover)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/obj/structure/grille/attack_hand(mob/user as mob)
|
||||
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed())
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
|
||||
user.do_attack_animation(src)
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
//window placing end
|
||||
|
||||
else if(!(W.flags & CONDUCT) || !shock(user, 70))
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
user.do_attack_animation(src)
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
|
||||
switch(W.damtype)
|
||||
|
||||
@@ -66,6 +66,9 @@
|
||||
deflate(1)
|
||||
return
|
||||
|
||||
/obj/structure/inflatable/blob_act()
|
||||
deflate(1)
|
||||
|
||||
/obj/structure/inflatable/attack_hand(mob/user as mob)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//////Kitchen Spike
|
||||
|
||||
/obj/structure/kitchenspike
|
||||
name = "a meat spike"
|
||||
name = "meat spike"
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "spike"
|
||||
desc = "A spike for collecting meat from animals."
|
||||
@@ -16,16 +16,16 @@
|
||||
if(!istype(G, /obj/item/weapon/grab) || !ismob(G.affecting))
|
||||
return
|
||||
if(occupied)
|
||||
user << "<span class = 'danger'>The spike already has something on it, finish collecting its meat first!</span>"
|
||||
to_chat(user, "<span class = 'danger'>The spike already has something on it, finish collecting its meat first!</span>")
|
||||
else
|
||||
if(spike(G.affecting))
|
||||
visible_message("<span class = 'danger'>[user] has forced [G.affecting] onto the spike, killing them instantly!</span>")
|
||||
visible_message("<span class = 'danger'>[user] has forced [G.affecting] onto the spike, killing \him instantly!</span>")
|
||||
var/mob/M = G.affecting
|
||||
M.forceMove(src)
|
||||
qdel(G)
|
||||
qdel(M)
|
||||
else
|
||||
user << "<span class='danger'>They are too big for the spike, try something smaller!</span>"
|
||||
to_chat(user, "<span class='danger'>They are too big for the spike, try something smaller!</span>")
|
||||
|
||||
/obj/structure/kitchenspike/proc/spike(var/mob/living/victim)
|
||||
if(!istype(victim))
|
||||
@@ -33,10 +33,11 @@
|
||||
|
||||
if(istype(victim, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = victim
|
||||
if(!issmall(H))
|
||||
if(istype(H.species, /datum/species/monkey))
|
||||
meat_type = H.species.meat_type
|
||||
icon_state = "spikebloody"
|
||||
else
|
||||
return 0
|
||||
meat_type = H.species.meat_type
|
||||
icon_state = "spikebloody"
|
||||
else if(istype(victim, /mob/living/carbon/alien))
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
||||
icon_state = "spikebloodygreen"
|
||||
@@ -54,8 +55,8 @@
|
||||
meat--
|
||||
new meat_type(get_turf(src))
|
||||
if(meat > 1)
|
||||
user << "You remove some meat from \the [victim_name]."
|
||||
to_chat(user, "You cut some meat from \the [victim_name]'s body.")
|
||||
else if(meat == 1)
|
||||
user << "You remove the last piece of meat from \the [victim_name]!"
|
||||
to_chat(user, "You remove the last piece of meat from \the [victim_name]!")
|
||||
icon_state = "spike"
|
||||
occupied = 0
|
||||
|
||||
@@ -400,6 +400,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/device/universal_translator,
|
||||
/obj/item/device/aicard,
|
||||
/obj/item/borg/upgrade/jetpack,
|
||||
/obj/item/borg/upgrade/advhealth,
|
||||
/obj/item/borg/upgrade/vtec,
|
||||
/obj/item/borg/upgrade/tasercooler,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser,
|
||||
@@ -435,3 +436,89 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
loot_depletion = TRUE
|
||||
loot_left = 5 // This is to prevent people from asking the whole station to go down to some alien ruin to get massive amounts of phat lewt.
|
||||
|
||||
// Base type for alien piles.
|
||||
/obj/structure/loot_pile/surface/alien
|
||||
name = "alien pod"
|
||||
desc = "A pod which looks bigger on the inside. Something quiet shiny might be inside?"
|
||||
icon_state = "alien_pile1"
|
||||
|
||||
/obj/structure/loot_pile/surface/alien
|
||||
common_loot = list(
|
||||
/obj/item/prop/alien/junk
|
||||
)
|
||||
|
||||
// May contain alien tools.
|
||||
/obj/structure/loot_pile/surface/alien/engineering
|
||||
uncommon_loot = list(
|
||||
/obj/item/device/multitool/alien,
|
||||
/obj/item/stack/cable_coil/alien,
|
||||
/obj/item/weapon/crowbar/alien,
|
||||
/obj/item/weapon/screwdriver/alien,
|
||||
/obj/item/weapon/weldingtool/alien,
|
||||
/obj/item/weapon/wirecutters/alien,
|
||||
/obj/item/weapon/wrench/alien
|
||||
)
|
||||
rare_loot = list(
|
||||
/obj/item/weapon/storage/belt/utility/alien/full
|
||||
)
|
||||
|
||||
// May contain alien surgery equipment or powerful medication.
|
||||
/obj/structure/loot_pile/surface/alien/medical
|
||||
uncommon_loot = list(
|
||||
/obj/item/weapon/surgical/FixOVein/alien,
|
||||
/obj/item/weapon/surgical/bone_clamp/alien,
|
||||
/obj/item/weapon/surgical/cautery/alien,
|
||||
/obj/item/weapon/surgical/circular_saw/alien,
|
||||
/obj/item/weapon/surgical/hemostat/alien,
|
||||
/obj/item/weapon/surgical/retractor/alien,
|
||||
/obj/item/weapon/surgical/scalpel/alien,
|
||||
/obj/item/weapon/surgical/surgicaldrill/alien
|
||||
)
|
||||
rare_loot = list(
|
||||
/obj/item/weapon/storage/belt/medical/alien
|
||||
)
|
||||
|
||||
// May contain powercells or alien weaponry.
|
||||
/obj/structure/loot_pile/surface/alien/security
|
||||
uncommon_loot = list(
|
||||
/obj/item/weapon/cell/device/weapon/recharge/alien,
|
||||
/obj/item/clothing/suit/armor/alien,
|
||||
/obj/item/clothing/head/helmet/alien
|
||||
)
|
||||
rare_loot = list(
|
||||
/obj/item/clothing/suit/armor/alien/tank,
|
||||
/obj/item/weapon/gun/energy/alien
|
||||
)
|
||||
|
||||
// The pile found at the very end, and as such has the best loot.
|
||||
/obj/structure/loot_pile/surface/alien/end
|
||||
chance_uncommon = 30
|
||||
chance_rare = 10
|
||||
|
||||
common_loot = list(
|
||||
/obj/item/device/multitool/alien,
|
||||
/obj/item/stack/cable_coil/alien,
|
||||
/obj/item/weapon/crowbar/alien,
|
||||
/obj/item/weapon/screwdriver/alien,
|
||||
/obj/item/weapon/weldingtool/alien,
|
||||
/obj/item/weapon/wirecutters/alien,
|
||||
/obj/item/weapon/wrench/alien,
|
||||
/obj/item/weapon/surgical/FixOVein/alien,
|
||||
/obj/item/weapon/surgical/bone_clamp/alien,
|
||||
/obj/item/weapon/surgical/cautery/alien,
|
||||
/obj/item/weapon/surgical/circular_saw/alien,
|
||||
/obj/item/weapon/surgical/hemostat/alien,
|
||||
/obj/item/weapon/surgical/retractor/alien,
|
||||
/obj/item/weapon/surgical/scalpel/alien,
|
||||
/obj/item/weapon/surgical/surgicaldrill/alien,
|
||||
/obj/item/weapon/cell/device/weapon/recharge/alien,
|
||||
/obj/item/clothing/suit/armor/alien,
|
||||
/obj/item/clothing/head/helmet/alien,
|
||||
/obj/item/weapon/gun/energy/alien
|
||||
)
|
||||
uncommon_loot = list(
|
||||
/obj/item/weapon/storage/belt/medical/alien,
|
||||
/obj/item/weapon/storage/belt/utility/alien/full,
|
||||
/obj/item/clothing/suit/armor/alien/tank,
|
||||
/obj/item/clothing/head/helmet/alien/tank,
|
||||
)
|
||||
|
||||
@@ -77,6 +77,9 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/morgue/attack_robot(mob/user)
|
||||
if(Adjacent(user))
|
||||
attack_hand(user)
|
||||
|
||||
/obj/structure/morgue/attack_hand(mob/user as mob)
|
||||
if (src.connected)
|
||||
@@ -156,6 +159,10 @@
|
||||
connected = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/m_tray/attack_robot(mob/user)
|
||||
if(Adjacent(user))
|
||||
attack_hand(user)
|
||||
|
||||
/obj/structure/m_tray/attack_hand(mob/user as mob)
|
||||
if (src.connected)
|
||||
for(var/atom/movable/A as mob|obj in src.loc)
|
||||
@@ -181,7 +188,7 @@
|
||||
if (user != O)
|
||||
for(var/mob/B in viewers(user, 3))
|
||||
if ((B.client && !( B.blinded )))
|
||||
B << "<span class='warning'>\The [user] stuffs [O] into [src]!</span>"
|
||||
to_chat(B, "<span class='warning'>\The [user] stuffs [O] into [src]!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -189,25 +196,16 @@
|
||||
* Crematorium
|
||||
*/
|
||||
|
||||
/obj/structure/crematorium
|
||||
/obj/structure/morgue/crematorium
|
||||
name = "crematorium"
|
||||
desc = "A human incinerator. Works well on barbeque nights."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "crema1"
|
||||
density = 1
|
||||
var/obj/structure/c_tray/connected = null
|
||||
anchored = 1.0
|
||||
var/cremating = 0
|
||||
var/id = 1
|
||||
var/locked = 0
|
||||
|
||||
/obj/structure/crematorium/Destroy()
|
||||
if(connected)
|
||||
qdel(connected)
|
||||
connected = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/crematorium/proc/update()
|
||||
/obj/structure/morgue/crematorium/update()
|
||||
if (src.connected)
|
||||
src.icon_state = "crema0"
|
||||
else
|
||||
@@ -217,37 +215,7 @@
|
||||
src.icon_state = "crema1"
|
||||
return
|
||||
|
||||
/obj/structure/crematorium/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.forceMove(src.loc)
|
||||
ex_act(severity)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.forceMove(src.loc)
|
||||
ex_act(severity)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.forceMove(src.loc)
|
||||
ex_act(severity)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/crematorium/attack_hand(mob/user as mob)
|
||||
// if (cremating) AWW MAN! THIS WOULD BE SO MUCH MORE FUN ... TO WATCH
|
||||
// user.show_message("<span class='warning'>Uh-oh, that was a bad idea.</span>", 1)
|
||||
// //usr << "Uh-oh, that was a bad idea."
|
||||
// src:loc:poison += 20000000
|
||||
// src:loc:firelevel = src:loc:poison
|
||||
// return
|
||||
/obj/structure/morgue/crematorium/attack_hand(mob/user as mob)
|
||||
if (cremating)
|
||||
usr << "<span class='warning'>It's locked.</span>"
|
||||
return
|
||||
@@ -260,7 +228,7 @@
|
||||
qdel(src.connected)
|
||||
else if (src.locked == 0)
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
src.connected = new /obj/structure/c_tray( src.loc )
|
||||
src.connected = new /obj/structure/m_tray/c_tray( src.loc )
|
||||
step(src.connected, dir) //Vorestation Edit
|
||||
src.connected.layer = OBJ_LAYER
|
||||
var/turf/T = get_step(src, dir) //Vorestation Edit
|
||||
@@ -276,7 +244,7 @@
|
||||
src.add_fingerprint(user)
|
||||
update()
|
||||
|
||||
/obj/structure/crematorium/attackby(P as obj, mob/user as mob)
|
||||
/obj/structure/morgue/crematorium/attackby(P as obj, mob/user as mob)
|
||||
if (istype(P, /obj/item/weapon/pen))
|
||||
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
|
||||
if (user.get_active_hand() != P)
|
||||
@@ -291,13 +259,13 @@
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/structure/crematorium/relaymove(mob/user as mob)
|
||||
/obj/structure/morgue/crematorium/relaymove(mob/user as mob)
|
||||
if (user.stat || locked)
|
||||
return
|
||||
src.connected = new /obj/structure/c_tray( src.loc )
|
||||
step(src.connected, SOUTH)
|
||||
src.connected = new /obj/structure/m_tray/c_tray( src.loc )
|
||||
step(src.connected, EAST)
|
||||
src.connected.layer = OBJ_LAYER
|
||||
var/turf/T = get_step(src, SOUTH)
|
||||
var/turf/T = get_step(src, EAST)
|
||||
if (T.contents.Find(src.connected))
|
||||
src.connected.connected = src
|
||||
src.icon_state = "crema0"
|
||||
@@ -309,25 +277,22 @@
|
||||
src.connected = null
|
||||
return
|
||||
|
||||
/obj/structure/crematorium/proc/cremate(atom/A, mob/user as mob)
|
||||
// for(var/obj/machinery/crema_switch/O in src) //trying to figure a way to call the switch, too drunk to sort it out atm
|
||||
// if(var/on == 1)
|
||||
// return
|
||||
/obj/structure/morgue/crematorium/proc/cremate(atom/A, mob/user as mob)
|
||||
if(cremating)
|
||||
return //don't let you cremate something twice or w/e
|
||||
|
||||
if(contents.len <= 0)
|
||||
for (var/mob/M in viewers(src))
|
||||
M.show_message("<span class='warning'>You hear a hollow crackle.</span>", 1)
|
||||
to_chat(M,"<span class='warning'>You hear a hollow crackle.</span>")
|
||||
return
|
||||
|
||||
else
|
||||
if(!isemptylist(src.search_contents_for(/obj/item/weapon/disk/nuclear)))
|
||||
usr << "You get the feeling that you shouldn't cremate one of the items in the cremator."
|
||||
to_chat(user,"You get the feeling that you shouldn't cremate one of the items in the cremator.")
|
||||
return
|
||||
|
||||
for (var/mob/M in viewers(src))
|
||||
M.show_message("<span class='warning'>You hear a roar as the crematorium activates.</span>", 1)
|
||||
to_chat(M,"<span class='warning'>You hear a roar as the crematorium activates.</span>")
|
||||
|
||||
cremating = 1
|
||||
locked = 1
|
||||
@@ -363,51 +328,11 @@
|
||||
/*
|
||||
* Crematorium tray
|
||||
*/
|
||||
/obj/structure/c_tray
|
||||
/obj/structure/m_tray/c_tray
|
||||
name = "crematorium tray"
|
||||
desc = "Apply body before burning."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "cremat"
|
||||
density = 1
|
||||
layer = 2.0
|
||||
var/obj/structure/crematorium/connected = null
|
||||
anchored = 1
|
||||
throwpass = 1
|
||||
|
||||
/obj/structure/c_tray/Destroy()
|
||||
if(connected && connected.connected == src)
|
||||
connected.connected = null
|
||||
connected = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/c_tray/attack_hand(mob/user as mob)
|
||||
if (src.connected)
|
||||
for(var/atom/movable/A as mob|obj in src.loc)
|
||||
if (!( A.anchored ))
|
||||
A.forceMove(src.connected)
|
||||
//Foreach goto(26)
|
||||
src.connected.connected = null
|
||||
src.connected.update()
|
||||
add_fingerprint(user)
|
||||
//SN src = null
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/c_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
||||
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O)))
|
||||
return
|
||||
if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag))
|
||||
return
|
||||
if (!ismob(user) || user.stat || user.lying || user.stunned)
|
||||
return
|
||||
O.forceMove(src.loc)
|
||||
if (user != O)
|
||||
for(var/mob/B in viewers(user, 3))
|
||||
if ((B.client && !( B.blinded )))
|
||||
B << text("<span class='warning'>[] stuffs [] into []!</span>", user, O, src)
|
||||
//Foreach goto(99)
|
||||
return
|
||||
|
||||
/obj/machinery/button/crematorium
|
||||
name = "crematorium igniter"
|
||||
@@ -421,9 +346,9 @@
|
||||
if(..())
|
||||
return
|
||||
if(src.allowed(user))
|
||||
for (var/obj/structure/crematorium/C in world)
|
||||
for (var/obj/structure/morgue/crematorium/C in world)
|
||||
if (C.id == id)
|
||||
if (!C.cremating)
|
||||
C.cremate(user)
|
||||
else
|
||||
usr << "<span class='warning'>Access denied.</span>"
|
||||
to_chat(user,"<span class='warning'>Access denied.</span>")
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/obj/structure/crematorium/vr
|
||||
/obj/structure/morgue/crematorium/vr
|
||||
var/list/allowed_items = list(/obj/item/organ,
|
||||
/obj/item/weapon/implant,
|
||||
/obj/item/weapon/material/shard/shrapnel,
|
||||
/mob/living)
|
||||
|
||||
|
||||
/obj/structure/crematorium/vr/cremate(atom/A, mob/user as mob)
|
||||
/obj/structure/morgue/crematorium/vr/cremate(atom/A, mob/user as mob)
|
||||
if(cremating)
|
||||
return //don't let you cremate something twice or w/e
|
||||
|
||||
|
||||
@@ -27,6 +27,23 @@
|
||||
desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't."
|
||||
icon_state = "piano"
|
||||
|
||||
/obj/structure/device/piano/verb/rotate()
|
||||
set name = "Rotate Piano"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(istype(usr,/mob/living/simple_animal/mouse))
|
||||
return
|
||||
else if(!usr || !isturf(usr.loc))
|
||||
return
|
||||
else if(usr.stat || usr.restrained())
|
||||
return
|
||||
else if (istype(usr,/mob/observer/ghost) && !config.ghost_interaction)
|
||||
return
|
||||
else
|
||||
src.set_dir(turn(src.dir, 90))
|
||||
return
|
||||
|
||||
/obj/structure/device/piano/proc/playnote(var/note as text)
|
||||
//world << "Note: [note]"
|
||||
var/soundfile
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
/obj/structure/railing/attackby(obj/item/W as obj, mob/user as mob)
|
||||
// Dismantle
|
||||
if(istype(W, /obj/item/weapon/wrench) && !anchored)
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
playsound(src.loc, W.usesound, 50, 1)
|
||||
if(do_after(user, 20, src))
|
||||
user.visible_message("<span class='notice'>\The [user] dismantles \the [src].</span>", "<span class='notice'>You dismantle \the [src].</span>")
|
||||
new /obj/item/stack/material/steel(get_turf(usr), 2)
|
||||
@@ -210,7 +210,7 @@
|
||||
if(health < maxhealth && istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/F = W
|
||||
if(F.welding)
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
|
||||
playsound(src.loc, F.usesound, 50, 1)
|
||||
if(do_after(user, 20, src))
|
||||
user.visible_message("<span class='notice'>\The [user] repairs some damage to \the [src].</span>", "<span class='notice'>You repair some damage to \the [src].</span>")
|
||||
health = min(health+(maxhealth/5), maxhealth) // 20% repair per application
|
||||
@@ -219,7 +219,7 @@
|
||||
// Install
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
user.visible_message(anchored ? "<span class='notice'>\The [user] begins unscrewing \the [src].</span>" : "<span class='notice'>\The [user] begins fasten \the [src].</span>" )
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
|
||||
playsound(loc, W.usesound, 75, 1)
|
||||
if(do_after(user, 10, src))
|
||||
to_chat(user, (anchored ? "<span class='notice'>You have unfastened \the [src] from the floor.</span>" : "<span class='notice'>You have fastened \the [src] to the floor.</span>"))
|
||||
anchored = !anchored
|
||||
@@ -258,7 +258,7 @@
|
||||
else
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 50, 1)
|
||||
take_damage(W.force)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -42,9 +42,9 @@ FLOOR SAFES
|
||||
/obj/structure/safe/proc/check_unlocked(mob/user as mob, canhear)
|
||||
if(user && canhear)
|
||||
if(tumbler_1_pos == tumbler_1_open)
|
||||
user << "<span class='notice'>You hear a [pick("tonk", "krunk", "plunk")] from [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You hear a [pick("tonk", "krunk", "plunk")] from \the [src].</span>")
|
||||
if(tumbler_2_pos == tumbler_2_open)
|
||||
user << "<span class='notice'>You hear a [pick("tink", "krink", "plink")] from [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You hear a [pick("tink", "krink", "plink")] from \the [src].</span>")
|
||||
if(tumbler_1_pos == tumbler_1_open && tumbler_2_pos == tumbler_2_open)
|
||||
if(user) visible_message("<b>[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!</b>")
|
||||
return 1
|
||||
@@ -95,13 +95,13 @@ FLOOR SAFES
|
||||
|
||||
if(href_list["open"])
|
||||
if(check_unlocked())
|
||||
user << "<span class='notice'>You [open ? "close" : "open"] [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You [open ? "close" : "open"] [src].</span>")
|
||||
open = !open
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You can't [open ? "close" : "open"] [src], the lock is engaged!</span>"
|
||||
to_chat(user, "<span class='notice'>You can't [open ? "close" : "open"] [src], the lock is engaged!</span>")
|
||||
return
|
||||
|
||||
if(href_list["decrement"])
|
||||
@@ -109,12 +109,14 @@ FLOOR SAFES
|
||||
if(dial == tumbler_1_pos + 1 || dial == tumbler_1_pos - 71)
|
||||
tumbler_1_pos = decrement(tumbler_1_pos)
|
||||
if(canhear)
|
||||
user << "<span class='notice'>You hear a [pick("clack", "scrape", "clank")] from [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You hear a [pick("clack", "scrape", "clank")] from \the [src].</span>")
|
||||
if(tumbler_1_pos == tumbler_2_pos + 37 || tumbler_1_pos == tumbler_2_pos - 35)
|
||||
tumbler_2_pos = decrement(tumbler_2_pos)
|
||||
if(canhear)
|
||||
user << "<span class='notice'>You hear a [pick("click", "chink", "clink")] from [src].</span>"
|
||||
check_unlocked(user, canhear)
|
||||
to_chat(user, "<span class='notice'>You hear a [pick("click", "chink", "clink")] from \the [src].</span>")
|
||||
playsound(user, 'sound/machines/click.ogg', 20, 1)
|
||||
check_unlocked(user, canhear)
|
||||
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
@@ -123,11 +125,12 @@ FLOOR SAFES
|
||||
if(dial == tumbler_1_pos - 1 || dial == tumbler_1_pos + 71)
|
||||
tumbler_1_pos = increment(tumbler_1_pos)
|
||||
if(canhear)
|
||||
user << "<span class='notice'>You hear a [pick("clack", "scrape", "clank")] from [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You hear a [pick("clack", "scrape", "clank")] from \the [src].</span>")
|
||||
if(tumbler_1_pos == tumbler_2_pos - 37 || tumbler_1_pos == tumbler_2_pos + 35)
|
||||
tumbler_2_pos = increment(tumbler_2_pos)
|
||||
if(canhear)
|
||||
user << "<span class='notice'>You hear a [pick("click", "chink", "clink")] from [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You hear a [pick("click", "chink", "clink")] from \the [src].</span>")
|
||||
playsound(user, 'sound/machines/click.ogg', 20, 1)
|
||||
check_unlocked(user, canhear)
|
||||
updateUsrDialog()
|
||||
return
|
||||
@@ -148,15 +151,15 @@ FLOOR SAFES
|
||||
space += I.w_class
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
user << "<span class='notice'>You put [I] in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You put [I] in \the [src].</span>")
|
||||
updateUsrDialog()
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>[I] won't fit in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>[I] won't fit in \the [src].</span>")
|
||||
return
|
||||
else
|
||||
if(istype(I, /obj/item/clothing/accessory/stethoscope))
|
||||
user << "Hold [I] in one of your hands while you manipulate the dial."
|
||||
to_chat(user, "Hold [I] in one of your hands while you manipulate the dial.")
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -156,9 +156,11 @@
|
||||
|
||||
/obj/structure/sign/warning/docking_area
|
||||
name = "\improper KEEP CLEAR: DOCKING AREA"
|
||||
icon_state = "evac"
|
||||
|
||||
/obj/structure/sign/warning/engineering_access
|
||||
name = "\improper ENGINEERING ACCESS"
|
||||
icon_state = "engine"
|
||||
|
||||
/obj/structure/sign/warning/fire
|
||||
name = "\improper DANGER: FIRE"
|
||||
@@ -185,9 +187,11 @@
|
||||
|
||||
/obj/structure/sign/warning/mail_delivery
|
||||
name = "\improper MAIL DELIVERY"
|
||||
icon_state = "mail"
|
||||
|
||||
/obj/structure/sign/warning/moving_parts
|
||||
name = "\improper MOVING PARTS"
|
||||
icon_state = "movingparts"
|
||||
|
||||
/obj/structure/sign/warning/nosmoking_1
|
||||
name = "\improper NO SMOKING"
|
||||
@@ -207,12 +211,15 @@
|
||||
|
||||
/obj/structure/sign/warning/secure_area
|
||||
name = "\improper SECURE AREA"
|
||||
icon_state = "securearea2"
|
||||
|
||||
/obj/structure/sign/warning/secure_area/armory
|
||||
name = "\improper ARMORY"
|
||||
icon_state = "armory"
|
||||
|
||||
/obj/structure/sign/warning/server_room
|
||||
name = "\improper SERVER ROOM"
|
||||
icon_state = "server"
|
||||
|
||||
/obj/structure/sign/warning/siphon_valve
|
||||
name = "\improper SIPHON VALVE"
|
||||
@@ -224,16 +231,19 @@
|
||||
/obj/structure/sign/warning/vent_port
|
||||
name = "\improper EJECTION/VENTING PORT"
|
||||
|
||||
/obj/structure/sign/warning/emergence
|
||||
name = "\improper EMERGENT INTELLIGENCE DETAILS"
|
||||
icon_state = "rogueai"
|
||||
|
||||
/obj/structure/sign/redcross
|
||||
name = "medbay"
|
||||
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here."
|
||||
icon_state = "redcross"
|
||||
icon_state = "bluecross"
|
||||
|
||||
/obj/structure/sign/greencross
|
||||
name = "medbay"
|
||||
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here."
|
||||
icon_state = "greencross"
|
||||
icon_state = "bluecross2"
|
||||
|
||||
/obj/structure/sign/goldenplaque
|
||||
name = "The Most Robust Men Award for Robustness"
|
||||
@@ -250,6 +260,11 @@
|
||||
desc = "This plaque commemorates the fall of the Atmos FEA division. For all the charred, dizzy, and brittle men who have died in its hands."
|
||||
icon_state = "atmosplaque"
|
||||
|
||||
/obj/structure/sign/periodic
|
||||
name = "periodic table"
|
||||
desc = "A sign reminding those visiting of the elements of the periodic table- though, they should have memorized them by now."
|
||||
icon_state = "periodic"
|
||||
|
||||
/obj/structure/sign/double/maltesefalcon //The sign is 64x32, so it needs two tiles. ;3
|
||||
name = "The Maltese Falcon"
|
||||
desc = "The Maltese Falcon, Space Bar and Grill."
|
||||
@@ -262,7 +277,7 @@
|
||||
|
||||
/obj/structure/sign/science //These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map
|
||||
name = "\improper SCIENCE!"
|
||||
desc = "A warning sign which reads 'SCIENCE!'."
|
||||
desc = "A warning sign which reads 'SCIENCE'."
|
||||
icon_state = "science1"
|
||||
|
||||
/obj/structure/sign/chemistry
|
||||
@@ -278,13 +293,18 @@
|
||||
/obj/structure/sign/hydro
|
||||
name = "\improper HYDROPONICS"
|
||||
desc = "A sign labelling an area as a place where plants are grown."
|
||||
icon_state = "hydro1"
|
||||
icon_state = "hydro2"
|
||||
|
||||
/obj/structure/sign/hydrostorage
|
||||
name = "\improper HYDROPONICS STORAGE"
|
||||
desc = "A sign labelling an area as a place where plant growing supplies are kept."
|
||||
icon_state = "hydro3"
|
||||
|
||||
/obj/structure/sign/xenobio
|
||||
name = "\improper XENOBIOLOGY"
|
||||
desc = "A warning sign which reads XENOBIOLOGY."
|
||||
icon_state = "xenobio3"
|
||||
|
||||
/obj/structure/sign/directions
|
||||
name = "direction sign"
|
||||
desc = "A direction sign, claiming to know the way."
|
||||
@@ -342,6 +362,11 @@
|
||||
icon_state = "direction_elv"
|
||||
// VOREStation Edit End
|
||||
|
||||
/obj/structure/sign/directions/roomnum
|
||||
name = "room number"
|
||||
desc = "A sign detailing the number of the room beside it."
|
||||
icon_state = "roomnum"
|
||||
|
||||
/obj/structure/sign/christmas/lights
|
||||
name = "Christmas lights"
|
||||
desc = "Flashy and pretty."
|
||||
@@ -719,3 +744,31 @@
|
||||
/obj/structure/sign/hangar/three
|
||||
name = "\improper Hangar Three"
|
||||
icon_state = "hangar-3"
|
||||
|
||||
/obj/structure/sign/atmos
|
||||
name = "\improper WASTE"
|
||||
icon_state = "atmos_waste"
|
||||
|
||||
/obj/structure/sign/atmos/o2
|
||||
name = "\improper OXYGEN"
|
||||
icon_state = "atmos_o2"
|
||||
|
||||
/obj/structure/sign/atmos/co2
|
||||
name = "\improper CARBON DIOXIDE"
|
||||
icon_state = "atmos_co2"
|
||||
|
||||
/obj/structure/sign/atmos/phoron
|
||||
name = "\improper PHORON"
|
||||
icon_state = "atmos_phoron"
|
||||
|
||||
/obj/structure/sign/atmos/n2o
|
||||
name = "\improper NITROUS OXIDE"
|
||||
icon_state = "atmos_n2o"
|
||||
|
||||
/obj/structure/sign/atmos/n2
|
||||
name = "\improper NITROGEN"
|
||||
icon_state = "atmos_n2"
|
||||
|
||||
/obj/structure/sign/atmos/air
|
||||
name = "\improper AIR"
|
||||
icon_state = "atmos_air"
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
qdel(src)
|
||||
else if(istype(W,/obj/item/stack))
|
||||
if(padding_material)
|
||||
user << "\The [src] is already padded."
|
||||
to_chat(user, "\The [src] is already padded.")
|
||||
return
|
||||
var/obj/item/stack/C = W
|
||||
if(C.get_amount() < 1) // How??
|
||||
@@ -111,21 +111,21 @@
|
||||
if(M.material && (M.material.flags & MATERIAL_PADDING))
|
||||
padding_type = "[M.material.name]"
|
||||
if(!padding_type)
|
||||
user << "You cannot pad \the [src] with that."
|
||||
to_chat(user, "You cannot pad \the [src] with that.")
|
||||
return
|
||||
C.use(1)
|
||||
if(!istype(src.loc, /turf))
|
||||
user.drop_from_inventory(src)
|
||||
src.loc = get_turf(src)
|
||||
user << "You add padding to \the [src]."
|
||||
to_chat(user, "You add padding to \the [src].")
|
||||
add_padding(padding_type)
|
||||
return
|
||||
|
||||
else if (istype(W, /obj/item/weapon/wirecutters))
|
||||
if(!padding_material)
|
||||
user << "\The [src] has no padding to remove."
|
||||
to_chat(user, "\The [src] has no padding to remove.")
|
||||
return
|
||||
user << "You remove the padding from \the [src]."
|
||||
to_chat(user, "You remove the padding from \the [src].")
|
||||
playsound(src.loc, W.usesound, 100, 1)
|
||||
remove_padding()
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
var/obj/item/weapon/grab/G = W
|
||||
var/mob/living/affecting = G.affecting
|
||||
if(buckled_mob) //Handles trying to buckle someone else to a chair when someone else is on it
|
||||
user << "<span class='notice'>\The [src] already has someone buckled to it.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] already has someone buckled to it.</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] attempts to buckle [affecting] into \the [src]!</span>")
|
||||
if(do_after(user, 20, G.affecting))
|
||||
@@ -175,13 +175,6 @@
|
||||
/obj/structure/bed/padded/New(var/newloc)
|
||||
..(newloc,"plastic","cotton")
|
||||
|
||||
/obj/structure/bed/alien
|
||||
name = "resting contraption"
|
||||
desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?"
|
||||
|
||||
/obj/structure/bed/alien/New(var/newloc)
|
||||
..(newloc,"resin")
|
||||
|
||||
/obj/structure/bed/double
|
||||
name = "double bed"
|
||||
icon_state = "doublebed"
|
||||
@@ -203,13 +196,22 @@
|
||||
*/
|
||||
/obj/structure/bed/roller
|
||||
name = "roller bed"
|
||||
desc = "A portable bed-on-wheels made for transporting medical patients."
|
||||
icon = 'icons/obj/rollerbed.dmi'
|
||||
icon_state = "down"
|
||||
icon_state = "rollerbed"
|
||||
anchored = 0
|
||||
surgery_odds = 75
|
||||
var/bedtype = /obj/structure/bed/roller
|
||||
var/rollertype = /obj/item/roller
|
||||
|
||||
/obj/structure/bed/roller/adv
|
||||
name = "advanced roller bed"
|
||||
icon_state = "rollerbedadv"
|
||||
bedtype = /obj/structure/bed/roller/adv
|
||||
rollertype = /obj/item/roller/adv
|
||||
|
||||
/obj/structure/bed/roller/update_icon()
|
||||
return // Doesn't care about material or anything else.
|
||||
return
|
||||
|
||||
/obj/structure/bed/roller/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/wrench) || istype(W,/obj/item/stack) || istype(W, /obj/item/weapon/wirecutters))
|
||||
@@ -219,7 +221,7 @@
|
||||
user_unbuckle_mob(user)
|
||||
else
|
||||
visible_message("[user] collapses \the [src.name].")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
new rollertype(get_turf(src))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -229,32 +231,42 @@
|
||||
name = "roller bed"
|
||||
desc = "A collapsed roller bed that can be carried around."
|
||||
icon = 'icons/obj/rollerbed.dmi'
|
||||
icon_state = "folded"
|
||||
icon_state = "folded_rollerbed"
|
||||
slot_flags = SLOT_BACK
|
||||
w_class = ITEMSIZE_LARGE // Can't be put in backpacks. Oh well.
|
||||
w_class = ITEMSIZE_LARGE
|
||||
var/rollertype = /obj/item/roller
|
||||
var/bedtype = /obj/structure/bed/roller
|
||||
|
||||
/obj/item/roller/attack_self(mob/user)
|
||||
var/obj/structure/bed/roller/R = new /obj/structure/bed/roller(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
var/obj/structure/bed/roller/R = new bedtype(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/roller/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
if(istype(W,/obj/item/roller_holder))
|
||||
var/obj/item/roller_holder/RH = W
|
||||
if(!RH.held)
|
||||
user << "<span class='notice'>You collect the roller bed.</span>"
|
||||
to_chat(user, "<span class='notice'>You collect the roller bed.</span>")
|
||||
src.loc = RH
|
||||
RH.held = src
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/roller/adv
|
||||
name = "advanced roller bed"
|
||||
desc = "A high-tech, compact version of the regular roller bed."
|
||||
icon_state = "folded_rollerbedadv"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
rollertype = /obj/item/roller/adv
|
||||
bedtype = /obj/structure/bed/roller/adv
|
||||
|
||||
/obj/item/roller_holder
|
||||
name = "roller bed rack"
|
||||
desc = "A rack for carrying a collapsed roller bed."
|
||||
icon = 'icons/obj/rollerbed.dmi'
|
||||
icon_state = "folded"
|
||||
icon_state = "rollerbed"
|
||||
var/obj/item/roller/held
|
||||
|
||||
/obj/item/roller_holder/New()
|
||||
@@ -264,11 +276,11 @@
|
||||
/obj/item/roller_holder/attack_self(mob/user as mob)
|
||||
|
||||
if(!held)
|
||||
user << "<span class='notice'>The rack is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>The rack is empty.</span>")
|
||||
return
|
||||
|
||||
user << "<span class='notice'>You deploy the roller bed.</span>"
|
||||
var/obj/structure/bed/roller/R = new /obj/structure/bed/roller(user.loc)
|
||||
to_chat(user, "<span class='notice'>You deploy the roller bed.</span>")
|
||||
var/obj/structure/bed/roller/R = new held.bedtype(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
qdel(held)
|
||||
held = null
|
||||
@@ -287,13 +299,13 @@
|
||||
M.pixel_y = 6
|
||||
M.old_y = 6
|
||||
density = 1
|
||||
icon_state = "up"
|
||||
icon_state = "[initial(icon_state)]_up"
|
||||
else
|
||||
M.pixel_y = 0
|
||||
M.old_y = 0
|
||||
density = 0
|
||||
icon_state = "down"
|
||||
|
||||
icon_state = "[initial(icon_state)]"
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/obj/structure/bed/roller/MouseDrop(over_object, src_location, over_location)
|
||||
@@ -302,7 +314,19 @@
|
||||
if(!ishuman(usr)) return
|
||||
if(buckled_mob) return 0
|
||||
visible_message("[usr] collapses \the [src.name].")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
new rollertype(get_turf(src))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/bed/alien
|
||||
name = "resting contraption"
|
||||
desc = "Whatever species designed this must've enjoyed relaxation as well. Looks vaguely comfy."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "bed"
|
||||
|
||||
/obj/structure/bed/alien/update_icon()
|
||||
return // Doesn't care about material or anything else.
|
||||
|
||||
/obj/structure/bed/alien/attackby(obj/item/weapon/W, mob/user)
|
||||
return // No deconning.
|
||||
@@ -72,7 +72,7 @@ var/global/list/stool_cache = list() //haha stool
|
||||
/obj/item/weapon/stool/attack(mob/M as mob, mob/user as mob)
|
||||
if (prob(5) && istype(M,/mob/living))
|
||||
user.visible_message("<span class='danger'>[user] breaks [src] over [M]'s back!</span>")
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed())
|
||||
user.do_attack_animation(M)
|
||||
|
||||
user.drop_from_inventory(src)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/obj/structure/toilet/attack_hand(mob/living/user as mob)
|
||||
if(swirlie)
|
||||
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
usr.setClickCooldown(user.get_attack_speed())
|
||||
usr.visible_message("<span class='danger'>[user] slams the toilet seat onto [swirlie.name]'s head!</span>", "<span class='notice'>You slam the toilet seat onto [swirlie.name]'s head!</span>", "You hear reverberating porcelain.")
|
||||
swirlie.adjustBruteLoss(5)
|
||||
return
|
||||
@@ -54,7 +54,7 @@
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed(I))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
|
||||
if(isliving(G.affecting))
|
||||
|
||||
@@ -125,6 +125,9 @@
|
||||
shatter(0)
|
||||
return
|
||||
|
||||
/obj/structure/window/blob_act()
|
||||
take_damage(50)
|
||||
|
||||
//TODO: Make full windows a separate type of window.
|
||||
//Once a full window, it will always be a full window, so there's no point
|
||||
//having the same type for both.
|
||||
@@ -172,7 +175,7 @@
|
||||
playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1)
|
||||
|
||||
/obj/structure/window/attack_hand(mob/user as mob)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed())
|
||||
if(HULK in user.mutations)
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
|
||||
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
|
||||
@@ -200,7 +203,7 @@
|
||||
return
|
||||
|
||||
/obj/structure/window/attack_generic(var/mob/user, var/damage)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed())
|
||||
if(!damage)
|
||||
return
|
||||
if(damage >= 10)
|
||||
@@ -295,7 +298,7 @@
|
||||
var/obj/item/frame/F = W
|
||||
F.try_build(src)
|
||||
else
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
if(W.damtype == BRUTE || W.damtype == BURN)
|
||||
user.do_attack_animation(src)
|
||||
hit(W.force)
|
||||
@@ -428,7 +431,7 @@
|
||||
var/list/dirs = list()
|
||||
if(anchored)
|
||||
for(var/obj/structure/window/W in orange(src,1))
|
||||
if(W.anchored && W.density && W.type == src.type && W.is_fulltile()) //Only counts anchored, not-destroyed fill-tile windows.
|
||||
if(W.anchored && W.density && W.glasstype == src.glasstype && W.is_fulltile()) //Only counts anchored, not-destroyed fill-tile windows.
|
||||
dirs += get_dir(src, W)
|
||||
|
||||
var/list/connections = dirs_to_corner_states(dirs)
|
||||
|
||||
Reference in New Issue
Block a user