Merge branch 'master' of https://github.com/tgstation/-tg-station into kittens

Conflicts:
	code/modules/mob/living/simple_animal/simple_animal.dm
This commit is contained in:
Miauw
2014-01-03 19:27:51 +01:00
478 changed files with 8568 additions and 6501 deletions
+1 -1
View File
@@ -128,7 +128,7 @@ LINEN BINS
item_color = "cargo"
/obj/item/weapon/bedsheet/centcom
name = "centcom bedsheet"
name = "\improper Centcom bedsheet"
desc = "Woven with advanced nanothread for warmth as well as being very decorated, essential for all officials."
icon_state = "sheetcentcom"
item_color = "centcom"
@@ -4,7 +4,6 @@
icon = 'icons/obj/closet.dmi'
icon_state = "closed"
density = 1
flags = FPRINT
var/icon_closed = "closed"
var/icon_opened = "open"
var/opened = 0
@@ -322,4 +321,4 @@
broken = 1 //applies to secure lockers only
visible_message("<span class='danger'>[user] successfully broke out of [src]!</span>")
user << "<span class='notice'>You successfully break out of [src]!</span>"
open()
open()
@@ -1,5 +1,5 @@
/obj/structure/closet/secure_closet/personal
desc = "It's a secure locker for personell. The first card swiped gains control."
desc = "It's a secure locker for personnel. The first card swiped gains control."
name = "personal closet"
req_access = list(access_all_personal_lockers)
var/registered_name = null
@@ -82,8 +82,8 @@
new /obj/item/device/radio/headset/heads/hos(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/weapon/shield/riot(src)
new /obj/item/clothing/mask/gas/sechailer/red(src)
new /obj/item/clothing/mask/gas/sechailer/blue(src)
new /obj/item/clothing/mask/gas/sechailer(src)
new /obj/item/clothing/mask/gas/sechailer/hos(src)
new /obj/item/weapon/storage/lockbox/loyalty(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/device/flash(src)
@@ -119,7 +119,7 @@
new /obj/item/weapon/clipboard(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/clothing/mask/gas/sechailer/red(src)
new /obj/item/clothing/mask/gas/sechailer/warden(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/reagent_containers/spray/pepper(src)
new /obj/item/weapon/melee/baton/loaded(src)
@@ -5,7 +5,6 @@
icon_state = "human_male"
density = 1
anchored = 1
flags = FPRINT
health = 0 //destroying the statue kills the mob within
var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock
var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils.
@@ -120,8 +120,8 @@
/obj/structure/closet/wardrobe/yellow
name = "yellow wardrobe"
icon_state = "wardrobe-y"
icon_closed = "wardrobe-y"
icon_state = "yellow"
icon_closed = "yeloww"
/obj/structure/closet/wardrobe/yellow/New()
new /obj/item/clothing/under/color/yellow(src)
@@ -135,8 +135,8 @@
/obj/structure/closet/wardrobe/atmospherics_yellow
name = "atmospherics wardrobe"
icon_state = "yellow"
icon_closed = "yellow"
icon_state = "atmos"
icon_closed = "atmos"
/obj/structure/closet/wardrobe/atmospherics_yellow/New()
new /obj/item/clothing/under/rank/atmospheric_technician(src)
@@ -10,7 +10,6 @@
icon_closed = "crate"
req_access = null
opened = 0
flags = FPRINT
// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //???
var/rigged = 0
var/sound_effect_open = 'sound/machines/click.ogg'
@@ -378,23 +377,3 @@
src.req_access += pick(get_all_accesses())
..()
/obj/structure/closet/crate/ex_act(severity)
switch(severity)
if(1.0)
for(var/obj/O in src.contents)
del(O)
del(src)
return
if(2.0)
for(var/obj/O in src.contents)
if(prob(50))
del(O)
del(src)
return
if(3.0)
if (prob(50))
del(src)
return
else
return
@@ -4,7 +4,6 @@
icon = 'icons/obj/storage.dmi'
icon_state = "densecrate"
density = 1
flags = FPRINT
/obj/structure/largecrate/attack_hand(mob/user as mob)
user << "<span class='notice'>You need a crowbar to pry this open!</span>"
+1 -1
View File
@@ -1,5 +1,5 @@
/obj/structure/displaycase
name = "Display Case"
name = "display case"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "glassbox1"
desc = "A display case for prized possessions. It taunts you to kick it."
@@ -1,7 +1,7 @@
obj/structure/door_assembly
icon = 'icons/obj/doors/door_assembly.dmi'
name = "Airlock Assembly"
name = "airlock assembly"
icon_state = "door_as_0"
anchored = 0
density = 1
@@ -20,7 +20,7 @@ obj/structure/door_assembly
base_icon_state = copytext(icon_state,1,lentext(icon_state))
door_assembly_0
name = "Airlock Assembly"
name = "airlock assembly"
icon_state = "door_as_1"
airlock_type = /obj/machinery/door/airlock
anchored = 1
@@ -28,7 +28,7 @@ obj/structure/door_assembly
state = 1
door_assembly_com
name = "Command Airlock Assembly"
name = "command airlock assembly"
icon_state = "door_as_com1"
glass_base_icon_state = "door_as_gcom"
typetext = "command"
@@ -44,7 +44,7 @@ obj/structure/door_assembly
icon_state = "door_as_gcom1"
door_assembly_sec
name = "Security Airlock Assembly"
name = "security airlock assembly"
icon_state = "door_as_sec1"
glass_base_icon_state = "door_as_gsec"
typetext = "security"
+6
View File
@@ -28,6 +28,12 @@
icon = 'icons/obj/flora/deadtrees.dmi'
icon_state = "tree_1"
/obj/structure/flora/tree/festivus
name = "festivus pole"
icon = 'icons/obj/flora/pinetrees.dmi'
icon_state = "festivus_pole"
desc = "During last year's Feats of Strength the Research Director was able to suplex this passing immobile rod into a planter."
/obj/structure/flora/tree/dead/New()
icon_state = "tree_[rand(1, 6)]"
..()
+57 -45
View File
@@ -6,60 +6,64 @@
var/state = 0
attackby(obj/item/W as obj, mob/user as mob)
add_fingerprint(user)
if(istype(W, /obj/item/weapon/wrench) && state == 0)
if(anchored && !istype(src,/obj/structure/girder/displaced))
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now disassembling the girder"
user << "<span class='notice'>Now disassembling the girder...</span>"
if(do_after(user,40))
if(!src) return
user << "\blue You dissasembled the girder!"
user << "<span class='notice'>You dissasembled the girder!</span>"
new /obj/item/stack/sheet/metal(get_turf(src))
del(src)
else if(!anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now securing the girder"
user << "<span class='notice'>Now securing the girder...</span>"
if(get_turf(user, 40))
user << "\blue You secured the girder!"
new/obj/structure/girder( src.loc )
user << "<span class='notice'>You secured the girder!</span>"
var/obj/structure/girder/G = new (loc)
transfer_fingerprints_to(G)
del(src)
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "\blue Now slicing apart the girder"
user << "<span class='notice'>Now slicing apart the girder...</span>"
if(do_after(user,30))
if(!src) return
user << "\blue You slice apart the girder!"
user << "<span class='notice'>You slice apart the girder!</span>"
new /obj/item/stack/sheet/metal(get_turf(src))
del(src)
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "\blue You drill through the girder!"
user << "<span class='notice'>You drill through the girder!</span>"
new /obj/item/stack/sheet/metal(get_turf(src))
del(src)
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user << "\blue Now unsecuring support struts"
user << "<span class='notice'>Now unsecuring support struts...</span>"
if(do_after(user,40))
if(!src) return
user << "\blue You unsecured the support struts!"
user << "<span class='notice'>You unsecured the support struts!</span>"
state = 1
else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user << "\blue Now removing support struts"
user << "<span class='notice'>Now removing support struts...</span>"
if(do_after(user,40))
if(!src) return
user << "\blue You removed the support struts!"
new/obj/structure/girder( src.loc )
user << "<span class='notice'>You removed the support struts!</span>"
var/obj/structure/girder/G = new (loc)
transfer_fingerprints_to(G)
del(src)
else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored )
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user << "\blue Now dislodging the girder"
user << "<span class='notice'>Now dislodging the girder...</span>"
if(do_after(user, 40))
if(!src) return
user << "\blue You dislodged the girder!"
new/obj/structure/girder/displaced( src.loc )
user << "<span class='notice'>You dislodged the girder!</span>"
var/obj/structure/girder/displaced/D = new (loc)
transfer_fingerprints_to(D)
del(src)
else if(istype(W, /obj/item/stack/sheet))
@@ -71,20 +75,21 @@
if(!anchored)
if(S.amount < 2) return
S.use(2)
user << "\blue You create a false wall! Push on it to open or close the passage."
new /obj/structure/falsewall (src.loc)
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>"
var/obj/structure/falsewall/F = new (loc)
transfer_fingerprints_to(F)
del(src)
else
if(S.amount < 2) return ..()
user << "\blue Now adding plating..."
user << "<span class='notice'>Now adding plating...</span>"
if (do_after(user,40))
if(!src || !S || S.amount < 2) return
S.use(2)
user << "\blue You added the plating!"
user << "<span class='notice'>You added the plating!</span>"
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(/turf/simulated/wall)
for(var/turf/simulated/wall/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
if(X) transfer_fingerprints_to(X)
del(src)
return
@@ -92,31 +97,33 @@
if(!anchored)
if(S.amount < 2) return
S.use(2)
user << "\blue You create a false wall! Push on it to open or close the passage."
new /obj/structure/falserwall (src.loc)
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>"
var/obj/structure/falserwall/FW = new (loc)
transfer_fingerprints_to(FW)
del(src)
else
if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code...
if(S.amount < 1) return ..()
user << "\blue Now finalising reinforced wall."
user << "<span class='notice'>Now finalising reinforced wall...</span>"
if(do_after(user, 50))
if(!src || !S || S.amount < 1) return
S.use(1)
user << "\blue Wall fully reinforced!"
user << "<span class='notice'>Wall fully reinforced!</span>"
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(/turf/simulated/wall/r_wall)
for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
if(X) transfer_fingerprints_to(X)
del(src)
return
else
if(S.amount < 1) return ..()
user << "\blue Now reinforcing girders"
user << "<span class='notice'>Now reinforcing girders...</span>"
if (do_after(user,60))
if(!src || !S || S.amount < 1) return
S.use(1)
user << "\blue Girders reinforced!"
new/obj/structure/girder/reinforced( src.loc )
user << "<span class='notice'>Girders reinforced!</span>"
var/obj/structure/girder/reinforced/R = new (loc)
transfer_fingerprints_to(R)
del(src)
return
@@ -125,21 +132,22 @@
if(!anchored)
if(S.amount < 2) return
S.use(2)
user << "\blue You create a false wall! Push on it to open or close the passage."
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>"
var/F = text2path("/obj/structure/falsewall/[M]")
new F (src.loc)
var/obj/structure/FW = new F (loc)
transfer_fingerprints_to(FW)
del(src)
else
if(S.amount < 2) return ..()
user << "\blue Now adding plating..."
user << "<span class='notice'>Now adding plating...</span>"
if (do_after(user,40))
if(!src || !S || S.amount < 2) return
S.use(2)
user << "\blue You added the plating!"
user << "<span class='notice'>You added the plating!</span>"
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]"))
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
if(X) transfer_fingerprints_to(X)
del(src)
return
@@ -150,7 +158,7 @@
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
user.drop_item()
P.loc = src.loc
user << "\blue You fit the pipe into the [src]!"
user << "<span class='notice'>You fit the pipe into the [src]!</span>"
else
..()
@@ -198,23 +206,27 @@
attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now disassembling the girder"
user << "<span class='notice'>Now disassembling the girder...</span>"
if(do_after(user,40))
user << "\blue You dissasembled the girder!"
new /obj/effect/decal/remains/human(get_turf(src))
user << "<span class='notice'>You dissasembled the girder!</span>"
var/obj/effect/decal/remains/human/R = new (get_turf(src))
transfer_fingerprints_to(R)
del(src)
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "\blue Now slicing apart the girder"
user << "<span class='notice'>Now slicing apart the girder...</span>"
if(do_after(user,30))
user << "\blue You slice apart the girder!"
new /obj/effect/decal/remains/human(get_turf(src))
del(src)
user << "<span class='notice'>You slice apart the girder!</span>"
var/obj/effect/decal/remains/human/R = new (get_turf(src))
transfer_fingerprints_to(R)
del(src)
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "\blue You drill through the girder!"
new /obj/effect/decal/remains/human(get_turf(src))
del(src)
user << "<span class='notice'>You drill through the girder!</span>"
if(do_after(user, 5))
var/obj/effect/decal/remains/human/R = new (get_turf(src))
transfer_fingerprints_to(R)
del(src)
blob_act()
if(prob(40))
+1 -1
View File
@@ -5,7 +5,7 @@
icon_state = "grille"
density = 1
anchored = 1
flags = FPRINT | CONDUCT
flags = CONDUCT
pressure_resistance = 5*ONE_ATMOSPHERE
layer = 2.9
explosion_resistance = 5
+48 -47
View File
@@ -10,9 +10,10 @@
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
var/obj/item/weapon/storage/bag/trash/mybag = null
var/obj/item/weapon/mop/mymop = null
var/obj/item/weapon/reagent_containers/spray/myspray = null
var/obj/item/weapon/reagent_containers/spray/cleaner/myspray = null
var/obj/item/device/lightreplacer/myreplacer = null
var/signs = 0 //maximum capacity hardcoded below
var/signs = 0
var/const/max_signs = 4
/obj/structure/janitorialcart/New()
@@ -25,64 +26,64 @@
usr << "It contains [reagents.total_volume] unit\s of liquid!"
//everything else is visible, so doesn't need to be mentioned
/obj/structure/janitorialcart/proc/wet_mop(obj/item/weapon/mop, mob/user)
if(reagents.total_volume < 1)
user << "[src] is out of water!</span>"
else
reagents.trans_to(mop, 5) //
user << "<span class='notice'>You wet [mop] in [src].</span>"
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user)
user.drop_item()
I.loc = src
updateUsrDialog()
user << "<span class='notice'>You put [I] into [src].</span>"
return
/obj/structure/janitorialcart/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/storage/bag/trash) && !mybag)
user.drop_item()
mybag = I
I.loc = src
update_icon()
updateUsrDialog()
user << "<span class='notice'>You put [I] into [src].</span>"
var/fail_msg = "<span class='notice'>There is already one of those in [src].</span>"
else if(istype(I, /obj/item/weapon/mop))
if(I.reagents.total_volume < I.reagents.maximum_volume) //if it's not completely soaked we assume they want to wet it, otherwise store it
if(reagents.total_volume < 1)
user << "[src] is out of water!</span>"
else
reagents.trans_to(I, 5) //
user << "<span class='notice'>You wet [I] in [src].</span>"
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
return
if(istype(I, /obj/item/weapon/mop))
var/obj/item/weapon/mop/m=I
if(m.reagents.total_volume < m.reagents.maximum_volume)
wet_mop(m, user)
return
if(!mymop)
user.drop_item()
mymop = I
I.loc = src
m.janicart_insert(user, src)
else
user << fail_msg
else if(istype(I, /obj/item/weapon/storage/bag/trash))
if(!mybag)
var/obj/item/weapon/storage/bag/trash/t=I
t.janicart_insert(user, src)
else
user << fail_msg
else if(istype(I, /obj/item/weapon/reagent_containers/spray/cleaner))
if(!myspray)
put_in_cart(I, user)
myspray=I
update_icon()
updateUsrDialog()
user << "<span class='notice'>You put [I] into [src].</span>"
else if(istype(I, /obj/item/weapon/reagent_containers/spray) && !myspray)
user.drop_item()
myspray = I
I.loc = src
update_icon()
updateUsrDialog()
user << "<span class='notice'>You put [I] into [src].</span>"
else if(istype(I, /obj/item/device/lightreplacer) && !myreplacer)
user.drop_item()
myreplacer = I
I.loc = src
update_icon()
updateUsrDialog()
user << "<span class='notice'>You put [I] into [src].</span>"
else
user << fail_msg
else if(istype(I, /obj/item/device/lightreplacer))
if(!myreplacer)
var/obj/item/device/lightreplacer/l=I
l.janicart_insert(user,src)
else
user << fail_msg
else if(istype(I, /obj/item/weapon/caution))
if(signs < 4)
user.drop_item()
I.loc = src
if(signs < max_signs)
put_in_cart(I, user)
signs++
update_icon()
updateUsrDialog()
user << "<span class='notice'>You put [I] into [src].</span>"
else
user << "<span class='notice'>[src] can't hold any more signs.</span>"
else if(mybag)
mybag.attackby(I, user)
/obj/structure/janitorialcart/attack_hand(mob/user)
user.set_machine(src)
var/dat
@@ -30,9 +30,9 @@
return
Move()
air_update_turf(1)
var/turf/T = loc
..()
air_update_turf(1)
move_update_air(T)
Bumped(atom/user)
..()
+1 -1
View File
@@ -5,7 +5,7 @@
icon_state = "mopbucket"
density = 1
pressure_resistance = 5
flags = FPRINT | TABLEPASS | OPENCONTAINER
flags = OPENCONTAINER
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
+4
View File
@@ -155,6 +155,8 @@
return
if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag))
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
O.loc = src.loc
if (user != O)
for(var/mob/B in viewers(user, 3))
@@ -367,6 +369,8 @@
return
if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag))
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
O.loc = src.loc
if (user != O)
for(var/mob/B in viewers(user, 3))
@@ -3,7 +3,6 @@
desc = "A board for pinning important notices upon."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "nboard00"
flags = FPRINT
density = 0
anchored = 1
var/notices = 0
@@ -4,7 +4,6 @@
icon = 'icons/obj/objects.dmi'
icon_state = "stool"
anchored = 1.0
flags = FPRINT
pressure_resistance = 15
/obj/structure/stool/ex_act(severity)
@@ -468,7 +468,6 @@
icon = 'icons/obj/objects.dmi'
icon_state = "rack"
density = 1
flags = FPRINT
anchored = 1.0
throwpass = 1 //You can throw objects over this, despite it's density.
+29 -3
View File
@@ -30,6 +30,8 @@
enter_delay = 3
var/pod_moving = 0
var/automatic_launch_time = 100
var/cooldown_delay = 30
var/launch_cooldown = 0
var/const/OPEN_DURATION = 6
var/const/CLOSE_DURATION = 6
@@ -121,9 +123,33 @@ obj/structure/ex_act(severity)
open_animation()
else if(icon_state == "open")
close_animation()
if(pod.contents.len && user.loc != pod)
user.visible_message("<span class='warning'>[user] starts emptying [pod]'s contents onto the floor!</span>")
if(do_after(user, 40)) //So it doesn't default to close_animation() on fail
if(pod.loc == loc)
for(var/atom/movable/AM in pod)
AM.loc = get_turf(user)
if(ismob(AM))
var/mob/M = AM
M.Weaken(5)
else
close_animation()
break
/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/grab) && icon_state == "open")
var/obj/item/weapon/grab/G = W
if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE)
var/mob/GM = G.affecting
for(var/obj/structure/transit_tube_pod/pod in loc)
pod.visible_message("<span class='warning'>[user] starts putting [GM] into the [pod]!</span>")
if(do_after(user, 60) && GM && G && G.affecting == GM)
GM.Weaken(5)
src.Bumped(GM)
del(G)
break
/obj/structure/transit_tube/station/proc/open_animation()
if(icon_state == "closed")
@@ -150,7 +176,7 @@ obj/structure/ex_act(severity)
pod_moving = 1
close_animation()
sleep(CLOSE_DURATION + 2)
if(icon_state == "closed" && pod)
if(icon_state == "closed" && pod && launch_cooldown < world.time)
pod.follow_tube()
pod_moving = 0
@@ -179,6 +205,7 @@ obj/structure/ex_act(severity)
/obj/structure/transit_tube/station/pod_stopped(obj/structure/transit_tube_pod/pod, from_dir)
pod_moving = 1
spawn(5)
launch_cooldown = world.time + min(cooldown_delay, automatic_launch_time)
open_animation()
sleep(OPEN_DURATION + 2)
pod_moving = 0
@@ -422,7 +449,6 @@ obj/structure/ex_act(severity)
return
// Parse the icon_state into a list of directions.
// This means that mappers can use Dream Maker's built in
// "Generate Instances from Icon-states" option to get all
@@ -37,9 +37,9 @@ obj/structure/windoor_assembly/Del()
..()
/obj/structure/windoor_assembly/Move()
air_update_turf(1)
var/turf/T = loc
..()
air_update_turf(1)
move_update_air(T)
/obj/structure/windoor_assembly/update_icon()
icon_state = "[facing]_[secure]windoor_assembly[state]"
@@ -70,23 +70,26 @@ obj/structure/windoor_assembly/Del()
/obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob)
//I really should have spread this out across more states but thin little windoors are hard to sprite.
add_fingerprint(user)
switch(state)
if("01")
if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
var/obj/item/weapon/weldingtool/WT = W
if (WT.remove_fuel(0,user))
user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.")
user.visible_message("<span class='warning'>[user] dissassembles the windoor assembly.</span>", "<span class='notice'>You start to dissassemble the windoor assembly.</span>")
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
if(do_after(user, 40))
if(!src || !WT.isOn()) return
user << "\blue You dissasembled the windoor assembly!"
new /obj/item/stack/sheet/rglass(get_turf(src), 5)
user << "<span class='notice'>You dissasembled the windoor assembly!</span>"
var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5)
RG.add_fingerprint(user)
if(secure)
new /obj/item/stack/rods(get_turf(src), 4)
var/obj/item/stack/rods/R = new (get_turf(src), 4)
R.add_fingerprint(user)
del(src)
else
user << "\blue You need more welding fuel to dissassemble the windoor assembly."
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
+22 -11
View File
@@ -55,7 +55,6 @@
if(reinf) new /obj/item/stack/rods( loc)
del(src)
/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(istype(mover) && mover.checkpass(PASSGLASS))
return 1
@@ -98,6 +97,7 @@
/obj/structure/window/attack_tk(mob/user as mob)
user.visible_message("<span class='notice'>Something knocks on [src].</span>")
add_fingerprint(user)
playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1)
/obj/structure/window/attack_hand(mob/user as mob)
@@ -106,11 +106,15 @@
if(HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
new /obj/item/weapon/shard(loc)
if(reinf) new /obj/item/stack/rods(loc)
var/obj/item/weapon/shard/S = new (loc)
S.add_fingerprint(user)
if(reinf)
var/obj/item/stack/rods/R = new (loc)
R.add_fingerprint(user)
del(src)
else
user.visible_message("<span class='notice'>[user] knocks on [src].</span>")
add_fingerprint(user)
playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1)
@@ -151,6 +155,7 @@
/obj/structure/window/attackby(obj/item/I, mob/user)
if(!can_be_reached(user))
return 1 //returning 1 will skip the afterattack()
add_fingerprint(user)
if(istype(I, /obj/item/weapon/screwdriver))
if(reinf && state >= 1)
state = 3 - state
@@ -171,14 +176,18 @@
playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
user << (state ? "<span class='notice'>You have pried the window into the frame.</span>" : "<span class='notice'>You have pried the window out of the frame.</span>")
else if(istype(I, /obj/item/weapon/wrench) && !anchored)
var/glass_type
if(reinf)
glass_type = /obj/item/stack/sheet/rglass
var/obj/item/stack/sheet/rglass/RG = new (user.loc)
RG.add_fingerprint(user)
if(is_fulltile()) //fulltiles drop two panes
RG = new (user.loc)
RG.add_fingerprint(user)
else
glass_type = /obj/item/stack/sheet/glass
new glass_type(user.loc)
if(is_fulltile())//fulltiles drop two panes
new glass_type(user.loc)
var/obj/item/stack/sheet/glass/G = new (user.loc)
G.add_fingerprint(user)
if(is_fulltile())
G = new (user.loc)
G.add_fingerprint(user)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
src.Del(1)
else
@@ -234,6 +243,7 @@
// updateSilicate()
air_update_turf(1)
ini_dir = dir
add_fingerprint(usr)
return
@@ -250,6 +260,7 @@
// updateSilicate()
air_update_turf(1)
ini_dir = dir
add_fingerprint(usr)
return
@@ -301,10 +312,10 @@
/obj/structure/window/Move()
air_update_turf(1)
var/turf/T = loc
..()
dir = ini_dir
air_update_turf(1)
move_update_air(T)
/obj/structure/window/CanAtmosPass(turf/T)
if(get_dir(loc, T) == dir)