Secure Airlock update!

4 new wires, completely randomised! (2nd bolt wire, 2 only-drop-bolts wires, and an AI alert wire that alerts an AI 20% of the time, when messed with)
Emags have a limited number of uses, between 3 and 7, and cost 5 TC
Hacktools are more useful than they were, and have a lower chance of alerting the AI
(This is unmapped ATM)
This commit is contained in:
SkyMarshal
2012-02-08 12:07:12 -07:00
parent 3e1e8f43d6
commit ffb142abae
36 changed files with 1362 additions and 978 deletions

View File

@@ -144,10 +144,7 @@
#define FILE_DIR "code/unused/spacecraft"
#define FILE_DIR "code/WorkInProgress"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jumper"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Tajara"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/tajara_sprites"
#define FILE_DIR "code/WorkInProgress/mapload"
#define FILE_DIR "code/WorkInProgress/Mini"
#define FILE_DIR "code/WorkInProgress/organs"

View File

@@ -453,6 +453,12 @@
icon_state = "emag"
item_state = "card-id"
origin_tech = "magnets=2;syndicate=2"
var/uses = 5
New()
..()
uses = rand(3,7)
return
/obj/item/weapon/card/id
name = "identification card"

View File

@@ -17,7 +17,7 @@
APCs += APC
for(var/obj/machinery/door/airlock/Door in world)
if(Door.z == 1)
if(Door.z == 1 && !istype(Door,/obj/machinery/door/airlock/secure))
Doors += Door
for(var/obj/machinery/telecomms/processor/T in world)

View File

@@ -14,7 +14,7 @@
for (var/obj/machinery/door/airlock/security/temp_airlock in world)
if(istype(get_area(temp_airlock), /area/security/brig))
temp_airlock.prison_open()
for (var/obj/machinery/door/airlock/glass_security/temp_glassairlock in world)
for (var/obj/machinery/door/airlock/glass/glass_security/temp_glassairlock in world)
if(istype(get_area(temp_glassairlock), /area/security/brig))
temp_glassairlock.prison_open()
for (var/obj/machinery/door_timer/temp_timer in world)

View File

@@ -48,8 +48,8 @@ Stealth and Camouflage Items;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:3:Hacktool;
/obj/item/weapon/card/emag:5:Cryptographic Sequencer (Limited uses, almost full access);
/obj/item/device/hacktool:3:Hacktool (Slow, but stealthy. Unlimited uses);
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;

View File

@@ -69,6 +69,11 @@
else
user << "\blue [src] does not need a repair!"
else if (istype(W, /obj/item/weapon/card/emag) && !emagged)
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
Emag(user)
else
switch(W.damtype)

View File

@@ -123,6 +123,11 @@
// other: chance to knock rider off bot
/obj/machinery/bot/mulebot/attackby(var/obj/item/I, var/mob/user)
if(istype(I,/obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
locked = !locked
user << "\blue You [locked ? "lock" : "unlock"] the mulebot's controls!"
flick("mulebot-emagged", src)

View File

@@ -39,6 +39,11 @@
..()
if(istype(I,/obj/item/weapon/card/emag))
if(network)
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
authorised = 1
user << "\blue You authorised the circuit network!"
updateDialog()
@@ -103,6 +108,11 @@
authorised = 1
if(istype(I,/obj/item/weapon/card/emag))
if(network)
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
authorised = 1
usr << "\blue You authorised the circuit network!"
updateDialog()

View File

@@ -653,6 +653,11 @@
else if (istype(W, /obj/item/weapon/card/emag))
if (isnull(src.occupant))
return
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
user << "You force an emergency ejection."
src.locked = 0
src.go_out()

View File

@@ -202,6 +202,11 @@
/obj/machinery/computer/arcade/attackby(I as obj, user as mob)
if(istype(I, /obj/item/weapon/card/emag) && !emagged)
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
temp = "If you die in the game, you die for real!"
player_hp = 30
player_mp = 10

View File

@@ -187,6 +187,11 @@ for reference:
return
return
else if (istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
if (src.emagged == 0)
src.emagged = 1
src.req_access = null

File diff suppressed because it is too large Load Diff

View File

@@ -138,6 +138,12 @@
//don't care who they are or what they have, act as if they're NOTHING
user = null
if (src.density && (istype(I, /obj/item/weapon/card/emag) ||istype(I, /obj/item/weapon/melee/energy/blade)))
if(istype(I, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
src.operating = -1
if(istype(I, /obj/item/weapon/melee/energy/blade))
if(istype(src, /obj/machinery/door/airlock))
@@ -342,6 +348,7 @@
if(T)
L.loc = T
if(!src.forcecrush)
for(var/obj/item/I in src.loc) // Move items out of the way
if(!I.anchored)
var/list/lst = list(NORTH,SOUTH,EAST,WEST)

View File

@@ -121,6 +121,12 @@
//don't care who they are or what they have, act as if they're NOTHING
user = null
if (src.density && (istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade)))
if(istype(I, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
src.operating = -1
if(istype(I, /obj/item/weapon/melee/energy/blade))
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()

View File

@@ -50,6 +50,11 @@
/obj/machinery/gibber/attackby(obj/item/weapon/grab/G as obj, mob/user as mob)
if(istype(G,/obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = G
if(E.uses)
E.uses--
else
return
user.visible_message( \
"\red [user] swipes a strange card through \the [src]'s control panel!", \
"\red You swipe a strange card through \the [src]'s control panel!", \

View File

@@ -172,6 +172,11 @@ Neutralize All Unidentified Life Signs: []<BR>"},
if ((istype(W, /obj/item/weapon/card/emag)) && (!src.emagged))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
// Emagging the turret makes it go bonkers and stun everyone. It also makes
// the turret shoot much, much faster.
@@ -861,6 +866,11 @@ Neutralize All Unidentified Life Signs: []<BR>"},
/obj/machinery/porta_turret_cover/attackby(obj/item/W as obj, mob/user as mob)
if ((istype(W, /obj/item/weapon/card/emag)) && (!Parent_Turret.emagged))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
user << "\red You short out [Parent_Turret]'s threat assessment circuits."
spawn(0)
for(var/mob/O in hearers(Parent_Turret, null))

View File

@@ -224,6 +224,11 @@
A.anchored = 1
del(src)
else if(istype(D, /obj/item/weapon/card/emag) && !emagged)
var/obj/item/weapon/card/emag/E = D
if(E.uses)
E.uses--
else
return
playsound(src.loc, 'sparks4.ogg', 75, 1)
emagged = 1
user << "\blue You you disable the security protocols"

View File

@@ -154,6 +154,11 @@
A.anchored = 1
del(src)
else if(istype(D, /obj/item/weapon/card/emag) && !emagged)
var/obj/item/weapon/card/emag/E = D
if(E.uses)
E.uses--
else
return
playsound(src.loc, 'sparks4.ogg', 75, 1)
emagged = 1
user << "\blue You you disable the security protocols"

View File

@@ -319,6 +319,11 @@ To combat this, I changed the window name. -- Doohl
/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
src.emagged = 1
user << "You short out the ID lock on [src]"
return

View File

@@ -720,6 +720,11 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
/obj/machinery/librarycomp/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (src.density && istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
src.emagged = 1
if(istype(W, /obj/item/weapon/barcodescanner))
var/obj/item/weapon/barcodescanner/scanner = W

View File

@@ -41,6 +41,12 @@
else
user << "\red Access Denied"
else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
if(istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
broken = 1
locked = 0
desc = "It appears to be broken."

View File

@@ -38,6 +38,12 @@
user << "\red It appears to be broken."
return
else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
if(istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
broken = 1
locked = 0
desc = "It appears to be broken."

View File

@@ -48,6 +48,11 @@
user << "\red It appears to be broken."
return
else if(istype(W, /obj/item/weapon/card/emag) && !src.broken)
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
src.broken = 1
src.locked = 0
src.icon_state = src.icon_broken

View File

@@ -43,7 +43,7 @@ obj/structure/door_assembly
name = "Security Airlock Assembly"
icon_state = "door_as_sec1"
glass_base_icon_state = "door_as_gsec"
glass_type = /obj/machinery/door/airlock/glass_security
glass_type = /obj/machinery/door/airlock/glass/glass_security
airlock_type = /obj/machinery/door/airlock/security
anchored = 1
density = 1
@@ -58,7 +58,7 @@ obj/structure/door_assembly
name = "Engineering Airlock Assembly"
icon_state = "door_as_eng1"
glass_base_icon_state = "door_as_geng"
glass_type = /obj/machinery/door/airlock/glass_engineering
glass_type = /obj/machinery/door/airlock/glass/glass_engineering
airlock_type = /obj/machinery/door/airlock/engineering
anchored = 1
density = 1
@@ -73,7 +73,7 @@ obj/structure/door_assembly
name = "Medical Airlock Assembly"
icon_state = "door_as_med1"
glass_base_icon_state = "door_as_gmed"
glass_type = /obj/machinery/door/airlock/glass_medical
glass_type = /obj/machinery/door/airlock/glass/glass_medical
airlock_type = /obj/machinery/door/airlock/medical
anchored = 1
density = 1

View File

@@ -94,6 +94,12 @@
/obj/item/weapon/secstorage/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && (src.locked == 1) && (!src.emagged))
if(istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
emagged = 1
src.overlays += image('storage.dmi', icon_sparking)
sleep(6)

View File

@@ -258,6 +258,12 @@
overlays += redlight
return
else if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && locked &&!broken)
if(istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
overlays = null
overlays += emag
overlays += sparks

View File

@@ -34,6 +34,12 @@
else
user << "\red Access Denied"
else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
if(istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
broken = 1
locked = 0
desc = "It appears to be broken."

View File

@@ -35,6 +35,11 @@ var/prison_shuttle_timeleft = 0
attackby(I as obj, user as mob)
if(istype(I,/obj/item/weapon/card/emag) && (!hacked))
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
hacked = 1
user << "\blue You disable the lock."
else

View File

@@ -402,6 +402,11 @@ var/list/supply_groups = new()
/obj/machinery/computer/supplycomp/attackby(I as obj, user as mob)
if(istype(I,/obj/item/weapon/card/emag) && !hacked)
var/obj/item/weapon/card/emag/E = I
if(E.uses)
E.uses--
else
return
user << "\blue Special supplies unlocked."
src.hacked = 1
return

View File

@@ -86,6 +86,11 @@ proc/move_mining_shuttle()
/obj/machinery/computer/mining_shuttle/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
src.req_access = list()
hacked = 1
usr << "You fried the consoles ID checking system. It's now available to everyone!"

View File

@@ -421,6 +421,11 @@
user << "\red Access denied."
else if(istype(W, /obj/item/weapon/card/emag)) // trying to unlock with an emag card
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
if(!opened)//Cover is closed
if(locked)
if(prob(90))

View File

@@ -300,6 +300,12 @@
else
user << "\red Access denied."
else if (istype(W, /obj/item/weapon/card/emag) && !(emagged || malfhack)) // trying to unlock with an emag card
if(istype(W, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = W
if(E.uses)
E.uses--
else
return
if(opened)
user << "You must close the cover to swipe an ID card."
else if(wiresexposed)

View File

@@ -81,6 +81,11 @@
O.loc = src
user << "\blue You add the plasma tank to the generator."
else if (istype(O, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = O
if(E.uses)
E.uses--
else
return
emagged = 1
emp_act(1)
else if(!active)

View File

@@ -196,6 +196,11 @@ display round(lastgen) and plasmatank amount
del(O)
user << "\blue You add a coin to the generator."
else if (istype(O, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/E = O
if(E.uses)
E.uses--
else
return
emagged = 1
emp_act(1)
else if(!active)

View File

@@ -176,6 +176,11 @@ won't update every console in existence) but it's more of a hassle to do. Also,
D.loc = src
user << "\blue You add the disk to the machine!"
else if(istype(D, /obj/item/weapon/card/emag) && !emagged)
var/obj/item/weapon/card/emag/E = D
if(E.uses)
E.uses--
else
return
playsound(src.loc, 'sparks4.ogg', 75, 1)
emagged = 1
user << "\blue You you disable the security protocols"

View File

@@ -326,6 +326,11 @@
A.anchored = 1
del(src)
else if(istype(D, /obj/item/weapon/card/emag) && !emagged)
var/obj/item/weapon/card/emag/E = D
if(E.uses)
E.uses--
else
return
playsound(src.loc, 'sparks4.ogg', 75, 1)
emagged = 1
user << "\blue You you disable the security protocols"