mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
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:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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!", \
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user