Merge to master - sole conflicting file was ninja.dm FUCK NINJAS

This commit is contained in:
MrPerson
2014-10-04 01:45:39 -07:00
594 changed files with 16198 additions and 8594 deletions
@@ -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)
+18 -1
View File
@@ -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
+1 -1
View File
@@ -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>")
+10 -9
View File
@@ -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
+2 -3
View File
@@ -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
+1 -1
View File
@@ -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
+276
View File
@@ -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)
+36 -22
View File
@@ -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
+17 -6
View File
@@ -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)