Fake nuclear disks are even more convincing

This commit is contained in:
coiax
2018-01-23 07:40:48 +00:00
committed by CitadelStationBot
parent 5e1ff26276
commit f425c5496f
5 changed files with 49 additions and 22 deletions
+41 -17
View File
@@ -79,17 +79,8 @@
anchored = TRUE //stops it being moved
/obj/machinery/nuclearbomb/syndicate
datum_flags = DF_USE_TAG
//ui_style = "syndicate" // actually the nuke op bomb is a stole nt bomb
/obj/machinery/nuclearbomb/syndicate/GenerateTag()
var/obj/machinery/nuclearbomb/existing = locate("syndienuke") in GLOB.nuke_list
if(existing)
stack_trace("Attempted to spawn a syndicate nuke while one already exists at [COORD(existing.loc)]")
datum_flags &= ~DF_USE_TAG
return
tag = "syndienuke"
/obj/machinery/nuclearbomb/syndicate/get_cinematic_type(off_station)
var/datum/game_mode/nuclear/NM = SSticker.mode
switch(off_station)
@@ -104,8 +95,17 @@
return CINEMATIC_NUKE_FAR
return CINEMATIC_NUKE_FAR
/obj/machinery/nuclearbomb/proc/disk_check(obj/item/disk/nuclear/D)
if(D.fake)
say("Authentication failure; disk not recognised.")
return FALSE
else
return TRUE
/obj/machinery/nuclearbomb/attackby(obj/item/I, mob/user, params)
if (istype(I, /obj/item/disk/nuclear))
if(!disk_check(I))
return
if(!user.transferItemToLoc(I, src))
return
auth = I
@@ -313,7 +313,7 @@
if("insert_disk")
if(!auth)
var/obj/item/I = usr.is_holding_item_of_type(/obj/item/disk/nuclear)
if(I && usr.transferItemToLoc(I, src))
if(I && disk_check(I) && usr.transferItemToLoc(I, src))
auth = I
. = TRUE
if("keypad")
@@ -519,18 +519,37 @@ This is here to make the tiles around the station mininuke change when it's arme
name = "nuclear authentication disk"
desc = "Better keep this safe."
icon_state = "nucleardisk"
persistence_replacement = /obj/item/disk/fakenucleardisk
persistence_replacement = /obj/item/disk/nuclear/fake
max_integrity = 250
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 100, acid = 100)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/fake = FALSE
/obj/item/disk/nuclear/New()
..()
GLOB.poi_list |= src
set_stationloving(TRUE, inform_admins=TRUE)
/obj/item/disk/nuclear/Initialize()
. = ..()
var/tell_the_admins
// Only tell the admins if a REAL nuke disk is relocated
if(fake)
tell_the_admins = FALSE
else
GLOB.poi_list |= src
tell_the_admins = TRUE
set_stationloving(TRUE, inform_admins=tell_the_admins)
/obj/item/disk/nuclear/examine(mob/user)
. = ..()
if(!fake)
return
var/ghost = isobserver(user)
var/captain = user.mind && user.mind.assigned_role == "Captain"
var/nukie = user.mind && user.mind.has_antag_datum(/datum/antagonist/nukeop)
if(ghost || captain || nukie)
to_chat(user, "<span class='warning'>The serial numbers on [src] are incorrect.</span>")
/obj/item/disk/nuclear/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/claymore/highlander))
if(istype(I, /obj/item/claymore/highlander) && !fake)
var/obj/item/claymore/highlander/H = I
if(H.nuke_disk)
to_chat(user, "<span class='notice'>Wait... what?</span>")
@@ -557,12 +576,13 @@ This is here to make the tiles around the station mininuke change when it's arme
addtimer(CALLBACK(src, .proc/manual_suicide, user), 101)
return MANUAL_SUICIDE
/obj/item/disk/proc/manual_suicide(mob/living/user)
/obj/item/disk/nuclear/proc/manual_suicide(mob/living/user)
user.remove_atom_colour(ADMIN_COLOUR_PRIORITY)
user.visible_message("<span class='suicide'>[user] was destroyed by the nuclear blast!</span>")
user.adjustOxyLoss(200)
user.death(0)
<<<<<<< HEAD
/obj/item/disk/fakenucleardisk
name = "nuclear authentication disk"
desc = "Better keep this safe."
@@ -578,3 +598,7 @@ This is here to make the tiles around the station mininuke change when it's arme
..()
if(Adjacent(user))
to_chat(user, "<span class='warning'>Wait, this is a fake!</span>")
=======
/obj/item/disk/nuclear/fake
fake = TRUE
>>>>>>> cbd5aec... Fake nuclear disks are even more convincing (#34466)
+3
View File
@@ -73,6 +73,9 @@
difficulty = 5
excludefromjob = list("Captain")
/datum/objective_item/steal/nukedisc/check_special_completion(obj/item/disk/nuclear/N)
return !N.fake
/datum/objective_item/steal/reflector
name = "a reflector vest."
targetitem = /obj/item/clothing/suit/armor/laserproof