mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
Merge to master - sole conflicting file was ninja.dm FUCK NINJAS
This commit is contained in:
@@ -180,11 +180,11 @@
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
user << "<span class='notice'>You begin cutting the [src] apart...</span>"
|
||||
playsound(loc, 'sound/items/Welder2.ogg', 40, 1)
|
||||
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
|
||||
if(do_after(user,40,5,1))
|
||||
if(src.opened)
|
||||
if(WT.remove_fuel(0,user))
|
||||
playsound(loc, 'sound/items/welder.ogg', 50, 1)
|
||||
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WT].</span>", 3, "You hear welding.", 2)
|
||||
@@ -249,8 +249,8 @@
|
||||
user << "<span class='notice'>It won't budge!</span>"
|
||||
if(!lastbang)
|
||||
lastbang = 1
|
||||
for (var/mob/M in hearers(src, null))
|
||||
M << text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
|
||||
for (var/mob/M in get_hearers_in_view(src, null))
|
||||
M.show_message("<FONT size=[max(0, 5 - get_dist(src, M))]>BANG, bang!</FONT>", 2)
|
||||
spawn(30)
|
||||
lastbang = 0
|
||||
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
user << "<span class='notice'>The locker is locked!</span>"
|
||||
if(world.time > lastbang+5)
|
||||
lastbang = world.time
|
||||
for(var/mob/M in hearers(src, null))
|
||||
M << "<FONT size=[max(0, 5 - get_dist(src, M))]>BANG, bang!</FONT>"
|
||||
for(var/mob/M in get_hearers_in_view(src, null))
|
||||
M.show_message("<FONT size=[max(0, 5 - get_dist(src, M))]>BANG, bang!</FONT>", 2)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/attack_hand(mob/user as mob)
|
||||
|
||||
@@ -293,18 +293,3 @@
|
||||
else
|
||||
icon_state = icon_opened
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/ammunitionlocker
|
||||
name = "ammunition locker"
|
||||
req_access = list(access_armory)
|
||||
|
||||
/obj/structure/closet/secure_closet/ammunitionlocker/New()
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
|
||||
/obj/structure/closet/syndicate/personal
|
||||
desc = "It's a storage unit for operative gear."
|
||||
desc = "It's a personal storage unit for operative gear."
|
||||
|
||||
/obj/structure/closet/syndicate/personal/New()
|
||||
..()
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
|
||||
/obj/structure/closet/syndicate/nuclear
|
||||
desc = "It's a storage unit for nuclear-operative gear."
|
||||
desc = "It's a storage unit for a Syndicate boarding party."
|
||||
|
||||
/obj/structure/closet/syndicate/nuclear/New()
|
||||
..()
|
||||
@@ -37,11 +37,11 @@
|
||||
new /obj/item/weapon/storage/box/handcuffs(src)
|
||||
new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/storage/box/teargas(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
new /obj/item/weapon/pinpointer/nukeop(src)
|
||||
new /obj/item/weapon/pinpointer/nukeop(src)
|
||||
new /obj/item/weapon/pinpointer/nukeop(src)
|
||||
@@ -121,7 +121,7 @@
|
||||
/obj/item/stack/sheet/mineral/plasma,
|
||||
/obj/item/stack/sheet/mineral/uranium,
|
||||
/obj/item/stack/sheet/mineral/diamond,
|
||||
/obj/item/stack/sheet/mineral/clown,
|
||||
/obj/item/stack/sheet/mineral/bananium,
|
||||
/obj/item/stack/sheet/plasteel,
|
||||
/obj/item/stack/rods
|
||||
)
|
||||
|
||||
@@ -217,4 +217,22 @@
|
||||
if(!opened)
|
||||
icon_state = icon_closed
|
||||
else
|
||||
icon_state = icon_opened
|
||||
icon_state = icon_opened
|
||||
|
||||
/*
|
||||
* Ammunition
|
||||
*/
|
||||
/obj/structure/closet/ammunitionlocker
|
||||
name = "ammunition locker"
|
||||
|
||||
/obj/structure/closet/ammunitionlocker/New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
|
||||
|
||||
@@ -142,8 +142,10 @@ obj/structure/door_assembly/New()
|
||||
/obj/structure/door_assembly/door_assembly_med
|
||||
name = "medical airlock assembly"
|
||||
icon_state = "door_as_med1"
|
||||
glass_base_icon_state = "door_as_gmed"
|
||||
typetext = "medical"
|
||||
icontext = "med"
|
||||
glass_type = /obj/machinery/door/airlock/glass_medical
|
||||
airlock_type = /obj/machinery/door/airlock/medical
|
||||
anchored = 1
|
||||
density = 1
|
||||
@@ -315,6 +317,22 @@ obj/structure/door_assembly/New()
|
||||
state = 1
|
||||
mineral = "wood"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_viro
|
||||
name = "virology airlock assembly"
|
||||
icon_state = "door_as_viro1"
|
||||
glass_base_icon_state = "door_as_gviro"
|
||||
typetext = "virology"
|
||||
icontext = "viro"
|
||||
glass_type = /obj/machinery/door/airlock/glass_virology
|
||||
airlock_type = /obj/machinery/door/airlock/virology
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_viro/glass
|
||||
mineral = "glass"
|
||||
icon_state = "door_as_gviro1"
|
||||
|
||||
/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
var/t = copytext(stripped_input(user, "Enter the name for the door.", src.name, src.created_name),1,MAX_NAME_LEN)
|
||||
@@ -439,7 +457,6 @@ obj/structure/door_assembly/New()
|
||||
new M(get_turf(src))
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='warning'> You need more welding fuel to dissassemble the airlock assembly.</span>"
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/weapon/wrench) && !anchored )
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "electric chair"
|
||||
desc = "Looks absolutely SHOCKING!"
|
||||
icon_state = "echair0"
|
||||
var/on = 0
|
||||
var/obj/item/assembly/shock_kit/part = null
|
||||
var/last_time = 1.0
|
||||
|
||||
@@ -23,20 +22,6 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/stool/bed/chair/e_chair/verb/toggle()
|
||||
set name = "Toggle Electric Chair"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(on)
|
||||
on = 0
|
||||
icon_state = "echair0"
|
||||
else
|
||||
on = 1
|
||||
icon_state = "echair1"
|
||||
usr << "<span class='notice'>You switch [on ? "on" : "off"] [src].</span>"
|
||||
return
|
||||
|
||||
/obj/structure/stool/bed/chair/e_chair/rotate()
|
||||
..()
|
||||
overlays.Cut()
|
||||
@@ -44,8 +29,6 @@
|
||||
return
|
||||
|
||||
/obj/structure/stool/bed/chair/e_chair/proc/shock()
|
||||
if(!on)
|
||||
return
|
||||
if(last_time + 50 > world.time)
|
||||
return
|
||||
last_time = world.time
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
user << "<span class='warning'>You can't reach, close it first!</span>"
|
||||
|
||||
if(istype(W, /obj/item/weapon/pickaxe/plasmacutter) || istype(W, /obj/item/weapon/pickaxe/diamonddrill) || istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
dismantle()
|
||||
dismantle(user)
|
||||
|
||||
/obj/structure/falsewall/proc/dismantle(mob/user)
|
||||
user.visible_message("<span class='notice'>[user] dismantles the false wall.</span>", "<span class='warning'>You dismantle the false wall.</span>")
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(HULK in user.mutations)
|
||||
health -= 5
|
||||
else
|
||||
health -= 3
|
||||
health -= rand(1,2)
|
||||
healthcheck()
|
||||
|
||||
/obj/structure/grille/attack_alien(mob/user as mob)
|
||||
@@ -62,7 +62,7 @@
|
||||
"<span class='warning'>You smash against [src].</span>", \
|
||||
"You hear twisting metal.")
|
||||
|
||||
health -= rand(2,3)
|
||||
health -= rand(1,2)
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
@@ -94,8 +94,8 @@
|
||||
if(!Proj)
|
||||
return
|
||||
..()
|
||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
||||
src.health -= Proj.damage*0.2
|
||||
if((Proj.damage_type != STAMINA)) //Grilles can't be exhausted to death
|
||||
src.health -= Proj.damage*0.3
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
@@ -172,12 +172,13 @@
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
|
||||
health -= W.force * 0.1
|
||||
else if(!shock(user, 70))
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
|
||||
switch(W.damtype)
|
||||
if("fire")
|
||||
health -= W.force
|
||||
if("brute")
|
||||
health -= W.force * 0.1
|
||||
if(BURN)
|
||||
playsound(loc, 'sound/items/welder.ogg', 80, 1)
|
||||
else
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
|
||||
health -= W.force * 0.3
|
||||
|
||||
healthcheck()
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -59,9 +59,8 @@
|
||||
var/obj/item/weapon/weldingtool/WT = C
|
||||
if(WT.remove_fuel(0, user))
|
||||
user << "<span class='notice'>Slicing lattice joints ...</span>"
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
qdel(src)
|
||||
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/lattice/proc/updateOverlays()
|
||||
|
||||
@@ -249,25 +249,3 @@
|
||||
for(var/i = 1, i <= oreAmount, i++)
|
||||
new/obj/item/stack/sheet/mineral/wood(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/mineral_door/resin
|
||||
mineralType = "resin"
|
||||
hardness = 1
|
||||
close_delay = 100
|
||||
openSound = 'sound/effects/attackblob.ogg'
|
||||
closeSound = 'sound/effects/attackblob.ogg'
|
||||
|
||||
/obj/structure/mineral_door/resin/TryToSwitchState(atom/user)
|
||||
if(isalien(user))
|
||||
return ..()
|
||||
|
||||
/obj/structure/mineral_door/resin/Dismantle(devastated = 0)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/mineral_door/resin/CheckHardness()
|
||||
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
..()
|
||||
|
||||
/obj/structure/mineral_door/resin/BlockSuperconductivity()
|
||||
if(opacity)
|
||||
return 1
|
||||
@@ -57,7 +57,7 @@
|
||||
return
|
||||
// and play
|
||||
var/turf/source = get_turf(instrumentObj)
|
||||
for(var/mob/M in hearers(15, source))
|
||||
for(var/mob/M in get_hearers_in_view(15, source))
|
||||
M.playsound_local(source, soundfile, 100, falloff = 5)
|
||||
|
||||
/datum/song/proc/updateDialog(mob/user as mob)
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
/obj/structure/spirit_board
|
||||
name = "spirit board"
|
||||
desc = "A wooden board with letters etched into it, used in seances."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "spirit_board"
|
||||
density = 1
|
||||
anchored = 0
|
||||
var/virgin = 1
|
||||
var/cooldown = 0
|
||||
var/planchette = "A"
|
||||
var/lastuser = null
|
||||
|
||||
/obj/structure/spirit_board/examine()
|
||||
desc = "[initial(desc)] The planchette is sitting at \"[planchette]\"."
|
||||
..()
|
||||
|
||||
/obj/structure/spirit_board/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
spirit_board_pick_letter(user)
|
||||
|
||||
|
||||
/obj/structure/spirit_board/attack_ghost(mob/dead/observer/user as mob)
|
||||
spirit_board_pick_letter(user)
|
||||
|
||||
|
||||
/obj/structure/spirit_board/proc/spirit_board_pick_letter(var/mob/M)
|
||||
if(!spirit_board_checks(M))
|
||||
return 0
|
||||
|
||||
if(virgin)
|
||||
virgin = 0
|
||||
notify_ghosts("Someone has begun playing with a [src.name] in [get_area(src)]!")
|
||||
|
||||
planchette = input("Choose the letter.", "Seance!") in list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
|
||||
add_logs(M, src, "picked a letter on", addition="which was \"[planchette]\".")
|
||||
cooldown = world.time
|
||||
lastuser = M.ckey
|
||||
|
||||
var/turf/T = loc
|
||||
sleep(rand(20,30))
|
||||
if(T == loc)
|
||||
visible_message("<span class='notice'>The planchette slowly moves... and stops at the letter \"[planchette]\".</span>")
|
||||
|
||||
|
||||
/obj/structure/spirit_board/proc/spirit_board_checks(var/mob/M)
|
||||
//cooldown
|
||||
var/bonus = 0
|
||||
if(M.ckey == lastuser)
|
||||
bonus = 10 //Give some other people a chance, hog.
|
||||
|
||||
if(cooldown > world.time - (30 + bonus))
|
||||
return 0 //No feedback here, hiding the cooldown a little makes it harder to tell who's really picking letters.
|
||||
|
||||
//lighting check
|
||||
var/light_amount = 0
|
||||
var/turf/T = get_turf(src)
|
||||
var/area/A = T.loc
|
||||
|
||||
if(A)
|
||||
if(A.lighting_use_dynamic)
|
||||
light_amount = T.lighting_lumcount
|
||||
else
|
||||
light_amount = 10
|
||||
|
||||
if(light_amount > 2)
|
||||
M << "<span class='warning'>It's too bright here to use [src.name]!</span>"
|
||||
return 0
|
||||
|
||||
//mobs in range check
|
||||
var/users_in_range = 0
|
||||
for(var/mob/living/L in orange(1,src))
|
||||
if(L.ckey && L.client)
|
||||
if((world.time - L.client.inactivity) < (world.time - 300) || L.stat != CONSCIOUS || L.restrained())//no playing with braindeads or corpses or handcuffed dudes.
|
||||
M << "<span class='warning'>[L] doesn't seem to be paying attention...</span>"
|
||||
else
|
||||
users_in_range++
|
||||
|
||||
if(users_in_range < 2)
|
||||
M << "<span class='warning'>There aren't enough people to use the [src.name]!</span>"
|
||||
return 0
|
||||
|
||||
return 1
|
||||
@@ -0,0 +1,276 @@
|
||||
|
||||
|
||||
|
||||
/obj/structure/statue
|
||||
name = "Statue"
|
||||
desc = "Placeholder. Yell at Firecage if you SOMEHOW see this."
|
||||
icon = 'icons/obj/statue.dmi'
|
||||
icon_state = ""
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/hardness = 1
|
||||
var/oreAmount = 7
|
||||
var/mineralType = "metal"
|
||||
var/last_event = 0
|
||||
var/active = null
|
||||
var/spam_flag = 0
|
||||
|
||||
/obj/structure/statue/Destroy()
|
||||
density = 0
|
||||
..()
|
||||
|
||||
/obj/structure/statue/attackby(obj/item/weapon/W, mob/user)
|
||||
hardness -= W.force/100
|
||||
user << "You hit the [name] with your [W.name]!"
|
||||
CheckHardness()
|
||||
|
||||
/obj/structure/statue/attack_hand(mob/user)
|
||||
visible_message("<span class='danger'>[user] rubs some dust off from the [name]'s surface.</span>")
|
||||
|
||||
/obj/structure/statue/CanAtmosPass()
|
||||
return !density
|
||||
|
||||
/obj/structure/statue/bullet_act(obj/item/projectile/Proj)
|
||||
hardness -= Proj.damage
|
||||
..()
|
||||
CheckHardness()
|
||||
return
|
||||
|
||||
/obj/structure/statue/proc/CheckHardness()
|
||||
if(hardness <= 0)
|
||||
Dismantle(1)
|
||||
|
||||
/obj/structure/statue/proc/Dismantle(devastated = 0)
|
||||
if(!devastated)
|
||||
if (mineralType == "metal")
|
||||
var/ore = /obj/item/stack/sheet/metal
|
||||
for(var/i = 1, i <= oreAmount, i++)
|
||||
new ore(get_turf(src))
|
||||
else
|
||||
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
|
||||
for(var/i = 1, i <= oreAmount, i++)
|
||||
new ore(get_turf(src))
|
||||
else
|
||||
if (mineralType == "metal")
|
||||
var/ore = /obj/item/stack/sheet/metal
|
||||
for(var/i = 3, i <= oreAmount, i++)
|
||||
new ore(get_turf(src))
|
||||
else
|
||||
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
|
||||
for(var/i = 3, i <= oreAmount, i++)
|
||||
new ore(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/statue/ex_act(severity = 1)
|
||||
switch(severity)
|
||||
if(1)
|
||||
Dismantle(1)
|
||||
if(2)
|
||||
if(prob(20))
|
||||
Dismantle(1)
|
||||
else
|
||||
hardness--
|
||||
CheckHardness()
|
||||
if(3)
|
||||
hardness -= 0.1
|
||||
CheckHardness()
|
||||
return
|
||||
|
||||
//////////////////////////////////////STATUES/////////////////////////////////////////////////////////////
|
||||
////////////////////////uranium///////////////////////////////////
|
||||
|
||||
/obj/structure/statue/uranium
|
||||
hardness = 3
|
||||
luminosity = 2
|
||||
mineralType = "uranium"
|
||||
|
||||
/obj/structure/statue/uranium/nuke
|
||||
name = "Statue of a Nuclear Fission Explosive"
|
||||
desc = "This is a grand statue of a Nuclear Explosive. It has a sickening green colour."
|
||||
icon_state = "nuke"
|
||||
|
||||
/obj/structure/statue/uranium/eng
|
||||
name = "Statue of an engineer"
|
||||
desc = "This statue has a sickening green colour."
|
||||
icon_state = "eng"
|
||||
|
||||
/obj/structure/statue/uranium/attackby(obj/item/weapon/W, mob/user)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/uranium/Bumped(atom/user)
|
||||
radiate()
|
||||
|
||||
/obj/structure/statue/uranium/attack_hand(mob/user)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/uranium/attack_paw(mob/user)
|
||||
radiate()
|
||||
|
||||
/obj/structure/statue/uranium/proc/radiate()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
for(var/mob/living/L in range(3,src))
|
||||
L.apply_effect(12,IRRADIATE,0)
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
////////////////////////////plasma///////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/plasma
|
||||
hardness = 2
|
||||
mineralType = "plasma"
|
||||
desc = "This statue is suitably made from plasma."
|
||||
|
||||
/obj/structure/statue/plasma/scientist
|
||||
name = "Statue of a Scientist"
|
||||
icon_state = "sci"
|
||||
|
||||
/obj/structure/statue/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
|
||||
/obj/structure/statue/plasma/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj,/obj/item/projectile/beam))
|
||||
PlasmaBurn(2500)
|
||||
else if(istype(Proj,/obj/item/projectile/ion))
|
||||
PlasmaBurn(500)
|
||||
..()
|
||||
|
||||
/obj/structure/statue/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
|
||||
message_admins("Plasma statue ignited by [key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Plasma statue ignited by [user.ckey]([user]) in ([x],[y],[z])")
|
||||
ignite(is_hot(W))
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/statue/plasma/proc/PlasmaBurn()
|
||||
atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 400)
|
||||
hardness = 0
|
||||
CheckHardness()
|
||||
|
||||
/obj/structure/statue/plasma/proc/ignite(exposed_temperature)
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
//////////////////////gold///////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/gold
|
||||
hardness = 3
|
||||
mineralType = "gold"
|
||||
desc = "This is a highly valuable statue made from gold."
|
||||
|
||||
/obj/structure/statue/gold/hos
|
||||
name = "Statue of the Head of Security"
|
||||
icon_state = "hos"
|
||||
|
||||
/obj/structure/statue/gold/hop
|
||||
name = "Statue of the Head of Personnel"
|
||||
icon_state = "hop"
|
||||
|
||||
/obj/structure/statue/gold/cmo
|
||||
name = "Statue of the Chief Medical Officer"
|
||||
icon_state = "cmo"
|
||||
|
||||
/obj/structure/statue/gold/ce
|
||||
name = "Statue of the Chief Engineer"
|
||||
icon_state = "ce"
|
||||
|
||||
/obj/structure/statue/gold/rd
|
||||
name = "Statue of the Research Director"
|
||||
icon_state = "rd"
|
||||
|
||||
//////////////////////////silver///////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/silver
|
||||
hardness = 3
|
||||
mineralType = "silver"
|
||||
desc = "This is a valuable statue made from silver."
|
||||
|
||||
/obj/structure/statue/silver/md
|
||||
name = "Statue of a Medical Officer"
|
||||
icon_state = "md"
|
||||
|
||||
/obj/structure/statue/silver/janitor
|
||||
name = "Statue of a Janitor"
|
||||
icon_state = "jani"
|
||||
|
||||
/obj/structure/statue/silver/sec
|
||||
name = "Statue of a Security Officer"
|
||||
icon_state = "sec"
|
||||
|
||||
/obj/structure/statue/silver/secborg
|
||||
name = "Statue of a Security Cyborg"
|
||||
icon_state = "secborg"
|
||||
|
||||
/obj/structure/statue/silver/medborg
|
||||
name = "Statue of a Medical Cyborg"
|
||||
icon_state = "medborg"
|
||||
|
||||
/////////////////////////diamond/////////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/diamond
|
||||
hardness = 10
|
||||
mineralType = "diamond"
|
||||
desc = "This is a very expensive diamond statue"
|
||||
|
||||
/obj/structure/statue/diamond/captain
|
||||
name = "Statue of THE Captain."
|
||||
icon_state = "cap"
|
||||
|
||||
/obj/structure/statue/diamond/ai1
|
||||
name = "Statue of the AI hologram."
|
||||
icon_state = "ai1"
|
||||
|
||||
/obj/structure/statue/diamond/ai2
|
||||
name = "Statue of the AI core."
|
||||
icon_state = "ai2"
|
||||
|
||||
////////////////////////bananium///////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/bananium
|
||||
hardness = 3
|
||||
mineralType = "clown"
|
||||
desc = "A bananium statue with a small engraving:'HOOOOOOONK'."
|
||||
|
||||
/obj/structure/statue/bananium/clown
|
||||
name = "Statue of a clown"
|
||||
icon_state = "clown"
|
||||
|
||||
/obj/structure/statue/bananium/Bumped(atom/user)
|
||||
honk()
|
||||
|
||||
/obj/structure/statue/bananium/attackby(obj/item/weapon/W, mob/user)
|
||||
honk()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/bananium/attack_hand(mob/user)
|
||||
honk()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/bananium/attack_paw(mob/user)
|
||||
honk()
|
||||
|
||||
/obj/structure/statue/bananium/proc/honk()
|
||||
if(spam_flag == 0)
|
||||
spam_flag = 1
|
||||
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1)
|
||||
spawn(20)
|
||||
spam_flag = 0
|
||||
|
||||
/////////////////////sandstone/////////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/sandstone
|
||||
hardness = 0.5
|
||||
mineralType = "sandstone"
|
||||
|
||||
/obj/structure/statue/sandstone/assistant
|
||||
name = "Statue of an assistant"
|
||||
desc = "A cheap statue of sandstone for a greyshirt."
|
||||
icon_state = "assist"
|
||||
@@ -13,6 +13,7 @@
|
||||
"[user.name] pulls you free from the gelatinous resin.",\
|
||||
"You hear squelching...")
|
||||
buckled_mob.pixel_y = 0
|
||||
buckled_mob.pixel_x = 0
|
||||
unbuckle()
|
||||
|
||||
/obj/structure/stool/bed/nest/unbuckle_myself(mob/user as mob)
|
||||
@@ -23,6 +24,7 @@
|
||||
spawn(600)
|
||||
if(user && buckled_mob && user.buckled == src)
|
||||
buckled_mob.pixel_y = 0
|
||||
buckled_mob.pixel_x = 0
|
||||
unbuckle()
|
||||
|
||||
/obj/structure/stool/bed/nest/buckle_mob(mob/M as mob, mob/user as mob)
|
||||
@@ -47,11 +49,17 @@
|
||||
M.loc = src.loc
|
||||
M.dir = src.dir
|
||||
M.update_canmove()
|
||||
M.pixel_y = 6
|
||||
M.pixel_y = 1
|
||||
M.pixel_x = 2
|
||||
src.buckled_mob = M
|
||||
src.add_fingerprint(user)
|
||||
src.overlays += image('icons/mob/alien.dmi', "nestoverlay", layer=6)
|
||||
return
|
||||
|
||||
/obj/structure/stool/bed/nest/unbuckle()
|
||||
overlays.Cut()
|
||||
..()
|
||||
|
||||
/obj/structure/stool/bed/nest/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
var/aforce = W.force
|
||||
health = max(0, health - aforce)
|
||||
|
||||
@@ -262,6 +262,7 @@
|
||||
while(amt > 0)
|
||||
I = locate(B) in loc
|
||||
Deletion.Add(I)
|
||||
I.loc = null //remove it from the table loc so that we don't locate the same item every time (will be relocated inside the crafted item in construct_item())
|
||||
amt--
|
||||
break item_loop
|
||||
else
|
||||
@@ -286,6 +287,7 @@
|
||||
if(!istype(B, A))
|
||||
Deletion.Remove(B)
|
||||
qdel(B)
|
||||
|
||||
return Deletion
|
||||
|
||||
/obj/structure/table/interact(mob/user)
|
||||
@@ -295,7 +297,7 @@
|
||||
var/dat = "<h3>Construction menu</h3>"
|
||||
dat += "<div class='statusDisplay'>"
|
||||
if(busy)
|
||||
dat += "Construction inprogress...</div>"
|
||||
dat += "Construction in progress...</div>"
|
||||
else
|
||||
for(var/datum/table_recipe/R in table_recipes)
|
||||
if(check_contents(R))
|
||||
@@ -585,8 +587,14 @@
|
||||
return
|
||||
|
||||
if (istype(I, /obj/item/weapon/wrench))
|
||||
table_destroy(2, user)
|
||||
return
|
||||
if(istype(src, /obj/structure/table/reinforced))
|
||||
var/obj/structure/table/reinforced/RT = src
|
||||
if(RT.status == 1)
|
||||
table_destroy(2, user)
|
||||
return
|
||||
else
|
||||
table_destroy(2, user)
|
||||
return
|
||||
|
||||
if (istype(I, /obj/item/weapon/storage/bag/tray))
|
||||
var/obj/item/weapon/storage/bag/tray/T = I
|
||||
@@ -632,24 +640,13 @@ Destroy type values:
|
||||
return
|
||||
|
||||
if(destroy_type == 2)
|
||||
if(istype(src, /obj/structure/table/reinforced))
|
||||
var/obj/structure/table/reinforced/RT = src
|
||||
if(RT.status == 1)
|
||||
user << "<span class='notice'>Now disassembling the reinforced table</span>"
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if (do_after(user, 50))
|
||||
new parts( src.loc )
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>Now disassembling table</span>"
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if (do_after(user, 50))
|
||||
new parts( src.loc )
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
qdel(src)
|
||||
return
|
||||
user << "<span class='notice'>Now disassembling the [src.name]</span>"
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if (do_after(user, 50))
|
||||
new parts( src.loc )
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -701,6 +698,24 @@ Destroy type values:
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/table/MouseDrop_T(mob/target, mob/living/carbon/human/user)
|
||||
if(istype(target) && user == target && istype(user))
|
||||
if(user.canmove)
|
||||
climb_table(user)
|
||||
|
||||
/obj/structure/table/proc/climb_table(mob/user)
|
||||
src.add_fingerprint(user)
|
||||
user.visible_message("<span class='warning'>[user] starts climbing onto [src].</span>", \
|
||||
"<span class='notice'>[user] starts climbing onto [src].</span>")
|
||||
if(do_mob(user, user, 20))
|
||||
user.pass_flags += PASSTABLE
|
||||
step(user,get_dir(user,src.loc))
|
||||
user.pass_flags -= PASSTABLE
|
||||
user.visible_message("<span class='warning'>[user] climbs onto [src].</span>", \
|
||||
"<span class='notice'>[user] climbs onto [src].</span>")
|
||||
add_logs(user, src, "climbed onto")
|
||||
user.Stun(2)
|
||||
|
||||
/*
|
||||
* Racks
|
||||
*/
|
||||
@@ -805,4 +820,3 @@ Destroy type values:
|
||||
qdel(src)
|
||||
/obj/structure/rack/attack_tk() // no telehulk sorry
|
||||
return
|
||||
|
||||
|
||||
@@ -153,9 +153,14 @@
|
||||
/obj/machinery/shower/attack_hand(mob/M)
|
||||
on = !on
|
||||
update_icon()
|
||||
add_fingerprint(M)
|
||||
if(on)
|
||||
for (var/atom/movable/G in loc)
|
||||
Crossed(G)
|
||||
wash(G)
|
||||
else
|
||||
if(istype(loc, /turf/simulated))
|
||||
var/turf/simulated/tile = loc
|
||||
tile.MakeSlippery()
|
||||
|
||||
|
||||
/obj/machinery/shower/attackby(obj/item/I, mob/user)
|
||||
@@ -171,7 +176,9 @@
|
||||
watertemp = "boiling"
|
||||
if("boiling")
|
||||
watertemp = "normal"
|
||||
user.visible_message("<span class='notice'>[user] adjusts the shower with the [I].</span>", "<span class='notice'>You adjust the shower with the [I].</span>")
|
||||
user.visible_message("<span class='notice'>[user] adjusts the shower with the [I].</span>", "<span class='notice'>You adjust the shower with the [I] to [watertemp] temperature.</span>")
|
||||
log_game("[key_name(user)] has wrenched a shower to [watertemp] at ([x],[y],[z])")
|
||||
add_hiddenprint(user)
|
||||
|
||||
|
||||
/obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up
|
||||
@@ -203,9 +210,10 @@
|
||||
/obj/machinery/shower/Crossed(atom/movable/O)
|
||||
..()
|
||||
wash(O)
|
||||
if(ismob(O))
|
||||
mobpresent += 1
|
||||
check_heat(O)
|
||||
if(iscarbon(O) && on)
|
||||
var/mob/living/carbon/M=O
|
||||
M.slip(4,2,null,NO_SLIP_WHEN_WALKING)
|
||||
|
||||
|
||||
|
||||
/obj/machinery/shower/Uncrossed(atom/movable/O)
|
||||
@@ -217,7 +225,9 @@
|
||||
//Yes, showers are super powerful as far as washing goes.
|
||||
/obj/machinery/shower/proc/wash(atom/movable/O)
|
||||
if(!on) return
|
||||
|
||||
if(ismob(O))
|
||||
mobpresent += 1
|
||||
check_heat(O)
|
||||
if(isliving(O))
|
||||
var/mob/living/L = O
|
||||
L.ExtinguishMob()
|
||||
@@ -303,6 +313,7 @@
|
||||
check_heat(C)
|
||||
|
||||
|
||||
|
||||
/obj/machinery/shower/proc/check_heat(mob/M)
|
||||
if(!on || watertemp == "normal") return
|
||||
if(iscarbon(M))
|
||||
|
||||
@@ -89,7 +89,6 @@ obj/structure/windoor_assembly/Destroy()
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You need more welding fuel to dissassemble the windoor assembly.</span>"
|
||||
return
|
||||
|
||||
//Wrenching an unsecure assembly anchors it in place. Step 4 complete
|
||||
@@ -166,7 +165,7 @@ obj/structure/windoor_assembly/Destroy()
|
||||
if(do_after(user, 40))
|
||||
if(!src) return
|
||||
|
||||
user << "<span class='notice'>You cut the windoor wires.!</span>"
|
||||
user << "<span class='notice'>You cut the windoor wires!</span>"
|
||||
new/obj/item/stack/cable_coil(get_turf(user), 1)
|
||||
src.state = "01"
|
||||
if(src.secure)
|
||||
|
||||
Reference in New Issue
Block a user