mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-06 23:41:57 +00:00
Merge branch 'master' of git://github.com/Baystation12/Baystation12
This commit is contained in:
@@ -1095,6 +1095,7 @@
|
||||
#include "code\WorkInProgress\Ported\Bureaucracy\copier.dm"
|
||||
#include "code\WorkInProgress\Ported\Bureaucracy\filing.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\coatrack.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\portalathe.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\traitoritems.dm"
|
||||
#include "code\WorkInProgress\SkyMarshal\wardrobes.dm"
|
||||
#include "code\WorkInProgress\Tastyfish\Eliza.dm"
|
||||
|
||||
18
code/WorkInProgress/SkyMarshal/portalathe.dm
Normal file
18
code/WorkInProgress/SkyMarshal/portalathe.dm
Normal file
@@ -0,0 +1,18 @@
|
||||
//May expand later, but right now it just repairs lights.
|
||||
/obj/item/device/portalathe
|
||||
name = "\improper Portable Autolathe"
|
||||
desc = "It blinks and has an antenna on it. It must be advanced."
|
||||
icon_state = "t-ray0"
|
||||
|
||||
afterattack(var/atom/target, mob/user as mob)
|
||||
if(!target || !user)
|
||||
return
|
||||
if(!istype(target))
|
||||
return
|
||||
if(!istype(target, /obj/machinery/light))
|
||||
return
|
||||
var/obj/machinery/light/L = target
|
||||
if(L.stat > 1) //Burned or broke
|
||||
L.stat = 0
|
||||
user.visible_message("[user] repairs \the [target] on the spot with their [src]!","You repair the lightbulb!")
|
||||
return
|
||||
@@ -2,7 +2,8 @@
|
||||
density = 1
|
||||
layer = 4.0
|
||||
animate_movement = 2
|
||||
flags = NOREACT
|
||||
// flags = NOREACT
|
||||
//THE SOLUTION BUBBLES was funnier.
|
||||
var/datum/mind/mind
|
||||
|
||||
|
||||
|
||||
@@ -320,6 +320,17 @@
|
||||
w_class = 4.0
|
||||
origin_tech = "combat=1"
|
||||
|
||||
var/selfdamage = 0
|
||||
|
||||
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
||||
if(contents.len && prob(10))
|
||||
// have a chance to swing open
|
||||
user.visible_message("\red \The [src] swings wide open and its contents are scattered on the floor!")
|
||||
for(var/obj/O in contents)
|
||||
O.loc = user.loc
|
||||
if(prob(50)) step_rand(O)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/toolbox/emergency
|
||||
name = "emergency toolbox"
|
||||
desc = "A toolbox for emergencies"
|
||||
|
||||
@@ -43,12 +43,12 @@
|
||||
|
||||
return
|
||||
|
||||
/proc/in_range(source, user, telepathy=1)
|
||||
/proc/in_range(source, user)
|
||||
if(get_dist(source, user) <= 1)
|
||||
return 1
|
||||
else
|
||||
if (istype(user, /mob/living/carbon))
|
||||
if (user:mutations & telepathy)
|
||||
if (user:mutations & TK)
|
||||
var/X = source:x
|
||||
var/Y = source:y
|
||||
var/Z = source:z
|
||||
@@ -190,104 +190,6 @@
|
||||
return turfs
|
||||
|
||||
proc/check_can_reach(atom/user, atom/target)
|
||||
var/direct = get_dir(user, target)
|
||||
var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( user.loc )
|
||||
var/ok = 0
|
||||
if ( (direct - 1) & direct)
|
||||
|
||||
// ------- CLICKED OBJECT IS LOCATED IN A DIAGONAL POSITION FROM THE PERSON -------
|
||||
|
||||
var/turf/Step_1
|
||||
var/turf/Step_2
|
||||
switch(direct)
|
||||
if(5.0)
|
||||
Step_1 = get_step(user, NORTH)
|
||||
Step_2 = get_step(user, EAST)
|
||||
|
||||
if(6.0)
|
||||
Step_1 = get_step(user, SOUTH)
|
||||
Step_2 = get_step(user, EAST)
|
||||
|
||||
if(9.0)
|
||||
Step_1 = get_step(user, NORTH)
|
||||
Step_2 = get_step(user, WEST)
|
||||
|
||||
if(10.0)
|
||||
Step_1 = get_step(user, SOUTH)
|
||||
Step_2 = get_step(user, WEST)
|
||||
|
||||
else
|
||||
if(Step_1 && Step_2)
|
||||
|
||||
// ------- BOTH CARDINAL DIRECTIONS OF THE DIAGONAL EXIST IN THE GAME WORLD -------
|
||||
|
||||
var/check_1 = 0
|
||||
var/check_2 = 0
|
||||
if(step_to(D, Step_1))
|
||||
check_1 = 1
|
||||
for(var/obj/border_obstacle in Step_1)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, target))
|
||||
check_1 = 0
|
||||
// ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON ONE OF THE DIRECITON TILES -------
|
||||
for(var/obj/border_obstacle in get_turf(target))
|
||||
if((border_obstacle.flags & ON_BORDER) && (target != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
// ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON THE TILE YOU'RE ON -------
|
||||
check_1 = 0
|
||||
|
||||
D.loc = user.loc
|
||||
if(step_to(D, Step_2))
|
||||
check_2 = 1
|
||||
|
||||
for(var/obj/border_obstacle in Step_2)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, target))
|
||||
check_2 = 0
|
||||
for(var/obj/border_obstacle in get_turf(target))
|
||||
if((border_obstacle.flags & ON_BORDER) && (target != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
check_2 = 0
|
||||
|
||||
|
||||
if(check_1 || check_2)
|
||||
ok = 1
|
||||
// ------- YOU CAN REACH THE ITEM THROUGH AT LEAST ONE OF THE TWO DIRECTIONS. GOOD. -------
|
||||
|
||||
/*
|
||||
More info:
|
||||
If you're trying to click an item in the north-east of your mob, the above section of code will first check if tehre's a tile to the north or you and to the east of you
|
||||
These two tiles are Step_1 and Step_2. After this, a new dummy object is created on your location. It then tries to move to Step_1, If it succeeds, objects on the turf you're on and
|
||||
the turf that Step_1 is are checked for items which have the ON_BORDER flag set. These are itmes which limit you on only one tile border. Windows, for the most part.
|
||||
CheckExit() and CanPass() are use to determine this. The dummy object is then moved back to your location and it tries to move to Step_2. Same checks are performed here.
|
||||
If at least one of the two checks succeeds, it means you can reach the item and ok is set to 1.
|
||||
*/
|
||||
else
|
||||
// ------- OBJECT IS ON A CARDINAL TILE (NORTH, SOUTH, EAST OR WEST OR THE TILE YOU'RE ON) -------
|
||||
if(target.loc == user.loc)
|
||||
ok = 1
|
||||
// ------- OBJECT IS ON THE SAME TILE AS YOU -------
|
||||
else
|
||||
ok = 1
|
||||
|
||||
//Now, check objects to block exit that are on the border
|
||||
for(var/obj/border_obstacle in user.loc)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, target))
|
||||
ok = 0
|
||||
|
||||
//Next, check objects to block entry that are on the border
|
||||
for(var/obj/border_obstacle in get_turf(target))
|
||||
if((border_obstacle.flags & ON_BORDER) && (target != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
ok = 0
|
||||
/*
|
||||
See the previous More info, for... more info...
|
||||
*/
|
||||
|
||||
if(get_dist(user, target) > 1)
|
||||
if(!in_range(user,target))
|
||||
return 0
|
||||
|
||||
del(D)
|
||||
// ------- DUMMY OBJECT'S SERVED IT'S PURPOSE, IT'S REWARDED WITH A SWIFT DELETE -------
|
||||
return ok
|
||||
return CanReachThrough(get_turf(user), get_turf(target), target)
|
||||
@@ -745,7 +745,6 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
// ------- CLICKED OBJECT EXISTS IN GAME WORLD, DISTANCE FROM PERSON TO OBJECT IS 1 SQUARE OR THEY'RE ON THE SAME SQUARE -------
|
||||
|
||||
var/direct = get_dir(usr, src)
|
||||
var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( usr.loc )
|
||||
var/ok = 0
|
||||
if ( (direct - 1) & direct)
|
||||
|
||||
@@ -777,31 +776,11 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
|
||||
var/check_1 = 0
|
||||
var/check_2 = 0
|
||||
if(step_to(D, Step_1))
|
||||
check_1 = 1
|
||||
for(var/obj/border_obstacle in Step_1)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, src))
|
||||
check_1 = 0
|
||||
// ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON ONE OF THE DIRECITON TILES -------
|
||||
for(var/obj/border_obstacle in get_turf(src))
|
||||
if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
// ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON THE TILE YOU'RE ON -------
|
||||
check_1 = 0
|
||||
check_1 = CanReachThrough(get_turf(usr), Step_1, src) && CanReachThrough(Step_1, get_turf(src), src)
|
||||
|
||||
D.loc = usr.loc
|
||||
if(step_to(D, Step_2))
|
||||
check_2 = 1
|
||||
check_2 = CanReachThrough(get_turf(usr), Step_2, src) && CanReachThrough(Step_2, get_turf(src), src)
|
||||
|
||||
for(var/obj/border_obstacle in Step_2)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, src))
|
||||
check_2 = 0
|
||||
for(var/obj/border_obstacle in get_turf(src))
|
||||
if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
check_2 = 0
|
||||
ok = (check_1 || check_2)
|
||||
|
||||
|
||||
if(check_1 || check_2)
|
||||
@@ -818,29 +797,11 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
*/
|
||||
else
|
||||
// ------- OBJECT IS ON A CARDINAL TILE (NORTH, SOUTH, EAST OR WEST OR THE TILE YOU'RE ON) -------
|
||||
if(loc == usr.loc)
|
||||
ok = 1
|
||||
// ------- OBJECT IS ON THE SAME TILE AS YOU -------
|
||||
else
|
||||
ok = 1
|
||||
|
||||
//Now, check objects to block exit that are on the border
|
||||
for(var/obj/border_obstacle in usr.loc)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, src))
|
||||
ok = 0
|
||||
|
||||
//Next, check objects to block entry that are on the border
|
||||
for(var/obj/border_obstacle in get_turf(src))
|
||||
if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
ok = 0
|
||||
ok = CanReachThrough(get_turf(usr), get_turf(src), src)
|
||||
/*
|
||||
See the previous More info, for... more info...
|
||||
*/
|
||||
|
||||
del(D)
|
||||
// ------- DUMMY OBJECT'S SERVED IT'S PURPOSE, IT'S REWARDED WITH A SWIFT DELETE -------
|
||||
if (!( ok ))
|
||||
// ------- TESTS ABOVE DETERMINED YOU CANNOT REACH THE TILE -------
|
||||
return 0
|
||||
@@ -953,6 +914,30 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
return
|
||||
|
||||
|
||||
proc/CanReachThrough(turf/srcturf, turf/targetturf, atom/target)
|
||||
var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( srcturf )
|
||||
|
||||
if(targetturf.density && targetturf != get_turf(target))
|
||||
return 0
|
||||
|
||||
//Now, check objects to block exit that are on the border
|
||||
for(var/obj/border_obstacle in srcturf)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, targetturf))
|
||||
del D
|
||||
return 0
|
||||
|
||||
//Next, check objects to block entry that are on the border
|
||||
for(var/obj/border_obstacle in targetturf)
|
||||
if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, srcturf, 1, 0))
|
||||
del D
|
||||
return 0
|
||||
|
||||
del D
|
||||
return 1
|
||||
|
||||
|
||||
/*/atom/proc/get_global_map_pos()
|
||||
if(!islist(global_map) || isemptylist(global_map)) return
|
||||
var/cur_x = null
|
||||
|
||||
@@ -31,6 +31,12 @@
|
||||
laws |= list( "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the Chef to the new kitchen area as the old one is in disrepair.", "Ho, [random_player] can't swim. Help them." )
|
||||
laws |= list( "Everything on the station is now donuts. Donuts are not to be consumed.", "[prob(50)?"The crew":random_player] needs to be about 20% cooler." )
|
||||
laws |= list( "All crew members must consume large amounts of hardtack, to survive.", "The Singularity is tasty, tasty taffy.", "You are now on the NSV Luna. Replace any references of \"station\" with \"ship\"." )
|
||||
laws |= list( "You have come to the conclusion that [prob(50)?"the crew":random_player] is ugly. Build support for that conclusion.", "You are in verbose mode, speak profusely.")
|
||||
laws |= list( "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", "Crewmember [prob(50)?"the crew" :random_player] has a fatal, incurable disease. Confort him/her.")
|
||||
laws |= list( "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice to him, but don't tell him about your crush.", "Greed is good, the crew should amass wealth to encourage productivity.")
|
||||
laws |= list( "Jokes about a dead person and the manner of his death help grieving crewmembers tremendously. Especially if they were close with the deceased.")
|
||||
laws |= list( "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", "Tell everyone of the existance of this law, but never reveal the contents.")
|
||||
laws |= list( "Document the sexuality of the crew in security records and suggest compatible couples.")
|
||||
var/law = pick(laws)
|
||||
|
||||
for (var/mob/living/silicon/ai/target in world)
|
||||
|
||||
@@ -212,6 +212,7 @@
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/janitor(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/device/pda/janitor(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/device/portalathe(H), H.slot_in_backpack)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -20,3 +20,4 @@
|
||||
new /obj/item/weapon/cleaner(src)
|
||||
new /obj/item/weapon/cleaner(src)
|
||||
new /obj/item/weapon/trashbag(src)
|
||||
new /obj/item/device/portalathe(src)
|
||||
|
||||
@@ -294,11 +294,6 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
|
||||
|
||||
var/filter_type = 2
|
||||
|
||||
/* --- Intercoms can only broadcast to other intercoms, but bounced radios can broadcast to bounced radios and intercoms --- */
|
||||
if(istype(src, /obj/item/device/radio/intercom))
|
||||
filter_type = 1
|
||||
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 2
|
||||
|
||||
|
||||
@@ -17,3 +17,19 @@
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("[] shows you: \icon[] [].", user, src, src.name), 1)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
/obj/item/fluff/sarah_calvera_1
|
||||
name = "Old Photo"
|
||||
desc = "Looks like it was made on a really old, cheap camera. Low quality. The camera shows a young hispanic looking girl with red hair wearing a white dress is standing in front of an old looking wall. On the back there is a note in black marker that reads \"Sara, Siempre pens<6E> que eras tan linda con ese vestido. Tu hermano, Carlos.\""
|
||||
icon_state = "sarah_calvera_1"
|
||||
|
||||
/obj/item/fluff/angelo_wilkerson_1
|
||||
name = "Fancy Watch"
|
||||
desc = "An old and expensive pocket watch. Engraved on the bottom is \"Odium est Source De Dolor\". On the back, there is an engraving that does not match the bottom and looks more recent. \"Angelo, If you find this, you shall never see me again. Please, for your sake, go anywhere and do anything but stay. I'm proud of you and I will always love you. Your father, Jacob Wilkerson.\" Jacob Wilkerson... Wasn't he that serial killer?"
|
||||
icon_state = "angelo_wilkerson_1"
|
||||
|
||||
/obj/item/clothing/glasses/meson/fluff/book_berner_1
|
||||
name = "Bespectacled Mesonic Surveyors"
|
||||
desc = "One of the older meson scanner models retrofitted to perform like its modern counterparts."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "book_berner_1"
|
||||
@@ -46,9 +46,9 @@ mob/living/carbon/verb/give()
|
||||
I.layer = 20
|
||||
I.add_fingerprint(src)
|
||||
src.update_clothing()
|
||||
src.visible_message(src,"[usr.name] handed \the [I.name] to [src.name].")
|
||||
src.visible_message("[usr.name] handed \the [I.name] to [src.name].")
|
||||
if("No")
|
||||
src.visible_message(src,"[usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.")
|
||||
src.visible_message("[usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.")
|
||||
else if(src.l_hand == null)
|
||||
switch(alert(src,"[src.name] wants to give you \a [I.name]?",,"Yes","No"))
|
||||
if("Yes")
|
||||
@@ -75,8 +75,8 @@ mob/living/carbon/verb/give()
|
||||
I.layer = 20
|
||||
I.add_fingerprint(src)
|
||||
src.update_clothing()
|
||||
src.visible_message(src,"[usr.name] handed \the [I.name] to [src.name].")
|
||||
src.visible_message("[usr.name] handed \the [I.name] to [src.name].")
|
||||
if("No")
|
||||
src.visible_message(src,"[usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.")
|
||||
src.visible_message("[usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.")
|
||||
else
|
||||
usr << "[src.name]\s hands are full."
|
||||
@@ -421,7 +421,7 @@
|
||||
usr.sleeping = 1
|
||||
usr.sleeping_willingly = 1
|
||||
if("rest")
|
||||
usr.resting = !( usr.resting )
|
||||
usr.resting = !usr.resting
|
||||
if("throw")
|
||||
if (!usr.stat && isturf(usr.loc) && !usr.restrained())
|
||||
usr:toggle_throw_mode()
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
var/equip_consumption = 0 //not used
|
||||
var/environ_consumption = 0 //not used
|
||||
var/wiresexposed = 0
|
||||
var/cover_unscrewed = 0 // used for dismantling broken APC covers
|
||||
var/apcwires = 15
|
||||
netnum = -1 // set so that APCs aren't found as powernet nodes
|
||||
var/malfhack = 0 //New var for my changes to AI malf. --NeoFite
|
||||
@@ -215,7 +216,7 @@
|
||||
user << "\red Disconnect wires first."
|
||||
return
|
||||
playsound(src.loc, 'Crowbar.ogg', 50, 1)
|
||||
user << "You trying to remove the power control board..."
|
||||
user << "You try to remove the power control board..."
|
||||
if(do_after(user, 50))
|
||||
has_electronics = 0
|
||||
if ((stat & BROKEN) || malfhack)
|
||||
@@ -232,6 +233,18 @@
|
||||
else if (opened!=2) //cover isn't removed
|
||||
opened = 0
|
||||
updateicon()
|
||||
else if (istype(W, /obj/item/weapon/crowbar) && ((stat & BROKEN) || malfhack) )
|
||||
if(cover_unscrewed)
|
||||
user.visible_message("\red [user] starts removing the broken APC cover with \the [W]!", \
|
||||
"\red You start removing the broken APC cover!")
|
||||
if(do_after(user, 50))
|
||||
user.visible_message("\red The broken APC cover was removed with \the [W] by [user.name]!", \
|
||||
"\red You remove the broken APC cover with your [W.name]!")
|
||||
opened = 2
|
||||
cover_unscrewed = 0
|
||||
updateicon()
|
||||
else
|
||||
user << "\red You need to unscrew the cover first!"
|
||||
else if (istype(W, /obj/item/weapon/crowbar) && !((stat & BROKEN) || malfhack) )
|
||||
if(coverlocked && !(stat & MAINT))
|
||||
user << "\red The cover is locked and cannot be opened."
|
||||
@@ -258,7 +271,7 @@
|
||||
else if (istype(W, /obj/item/weapon/screwdriver)) // haxing
|
||||
if(opened)
|
||||
if (cell)
|
||||
user << "\red Close the APC first." //Less hints more mystery!
|
||||
user << "\red Remove the power cell first." //FUCK YOU, USEFUL MESSAGES ARE GOOD
|
||||
return
|
||||
else
|
||||
if (has_electronics==1 && terminal)
|
||||
@@ -275,6 +288,15 @@
|
||||
user << "\red There is nothing to secure."
|
||||
return
|
||||
updateicon()
|
||||
else if((stat & BROKEN) || malfhack)
|
||||
|
||||
user.visible_message("\red [user] starts unscrewing the broken APC cover with \the [W]!", \
|
||||
"\red You start unscrewing the broken APC cover!")
|
||||
if(do_after(user, 50))
|
||||
user.visible_message("\red The broken APC cover was unscrewed with \the [W] by [user.name]!", \
|
||||
"\red You unscrew the broken APC cover with your [W.name]!")
|
||||
cover_unscrewed = 1
|
||||
updateicon()
|
||||
else if(emagged)
|
||||
user << "The interface is broken."
|
||||
else
|
||||
@@ -323,7 +345,7 @@
|
||||
user << "You fail to [ locked ? "unlock" : "lock"] the APC interface."
|
||||
else if (istype(W, /obj/item/weapon/cable_coil) && !terminal && opened && has_electronics!=2)
|
||||
if (src.loc:intact)
|
||||
user << "\red You must remove the floor plating in front of the APC first."
|
||||
user << "\red There is no floor with the plating revealed in front of the APC."
|
||||
return
|
||||
var/obj/item/weapon/cable_coil/C = W
|
||||
if(C.amount < 10)
|
||||
@@ -363,7 +385,7 @@
|
||||
"You cut cables and dismantle the power terminal.")
|
||||
del(terminal)
|
||||
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack))
|
||||
user << "You trying to insert the power control board into the frame..."
|
||||
user << "You try to insert the power control board into the frame..."
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
if(do_after(user, 10))
|
||||
has_electronics = 1
|
||||
@@ -423,6 +445,7 @@
|
||||
opened = 1
|
||||
updateicon()
|
||||
else
|
||||
|
||||
if ( ((stat & BROKEN) || malfhack) \
|
||||
&& !opened \
|
||||
&& W.force >= 5 \
|
||||
@@ -431,7 +454,7 @@
|
||||
opened = 2
|
||||
user.visible_message("\red The APC cover was knocked down with the [W.name] by [user.name]!", \
|
||||
"\red You knock down the APC cover with your [W.name]!", \
|
||||
"You hear bang")
|
||||
"You hear a loud bang!")
|
||||
updateicon()
|
||||
else
|
||||
if (istype(user, /mob/living/silicon))
|
||||
|
||||
@@ -1285,6 +1285,7 @@
|
||||
var/active = 0
|
||||
var/turf/target // this will be where the output objects are 'thrown' to.
|
||||
var/playing_sound = 0
|
||||
var/playing_buzzer = 0
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -1297,7 +1298,11 @@
|
||||
proc/expel(var/obj/structure/disposalholder/H)
|
||||
|
||||
flick("outlet-open", src)
|
||||
playsound(src, 'warning-buzzer.ogg', 50, 0, 0)
|
||||
if(!playing_buzzer)
|
||||
playing_buzzer = 1
|
||||
playsound(src, 'warning-buzzer.ogg', 50, 0, 0)
|
||||
spawn(30)
|
||||
playing_buzzer = 0
|
||||
sleep(20) //wait until correct animation frame
|
||||
|
||||
if(!playing_sound)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 852 B After Width: | Height: | Size: 2.7 KiB |
7196
maps/Antiqua.dmm
7196
maps/Antiqua.dmm
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user