Merge pull request #5038 from Citadel-Station-13/upstream-merge-34466

[MIRROR] Fake nuclear disks are even more convincing
This commit is contained in:
LetterJay
2018-01-25 13:41:02 -06:00
committed by GitHub
6 changed files with 48 additions and 39 deletions
@@ -7662,7 +7662,7 @@
/obj/item/bikehorn/golden,
/obj/item/ammo_box/a357,
/obj/item/tank/internals/plasma/full,
/obj/item/disk/fakenucleardisk,
/obj/item/disk/nuclear/fake,
/obj/item/ore/diamond,
/obj/item/gun/energy/disabler,
/turf/open/floor/plasteel/vault{
@@ -50545,7 +50545,7 @@
/area/library)
"czp" = (
/obj/structure/table/wood,
/obj/item/disk/fakenucleardisk,
/obj/item/disk/nuclear/fake,
/obj/item/barcodescanner,
/turf/open/floor/plasteel/dark,
/area/library)
@@ -7657,7 +7657,7 @@
/obj/item/bikehorn/golden,
/obj/item/ammo_box/a357,
/obj/item/tank/internals/plasma/full,
/obj/item/disk/fakenucleardisk,
/obj/item/disk/nuclear/fake,
/obj/item/ore/diamond,
/obj/item/gun/energy/disabler,
/turf/open/floor/plasteel/vault{
@@ -50503,7 +50503,7 @@
/area/library)
"czp" = (
/obj/structure/table/wood,
/obj/item/disk/fakenucleardisk,
/obj/item/disk/nuclear/fake,
/obj/item/barcodescanner,
/turf/open/floor/plasteel/dark,
/area/library)
+1 -1
View File
@@ -67,7 +67,7 @@
/datum/antagonist/nukeop/proc/assign_nuke()
if(nuke_team && !nuke_team.tracked_nuke)
nuke_team.memorized_code = random_nukecode()
var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in GLOB.nuke_list
var/obj/machinery/nuclearbomb/syndicate/nuke = locate() in GLOB.nuke_list
if(nuke)
nuke_team.tracked_nuke = nuke
if(nuke.r_code == "ADMIN")
+38 -32
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,24 +576,11 @@ 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)
/obj/item/disk/fakenucleardisk
name = "nuclear authentication disk"
desc = "Better keep this safe."
icon_state = "nucleardisk"
/obj/item/disk/fakenucleardisk/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is pretending to go delta! It looks like [user.p_theyre()] trying to commit suicide!</span>")
playsound(src, 'sound/machines/alarm.ogg', 30, -1, 1)
addtimer(CALLBACK(src, .proc/manual_suicide, user), 101)
return MANUAL_SUICIDE
/obj/item/disk/fakenucleardisk/examine(mob/user)
..()
if(Adjacent(user))
to_chat(user, "<span class='warning'>Wait, this is a fake!</span>")
/obj/item/disk/nuclear/fake
fake = TRUE
+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
+2 -2
View File
@@ -807,8 +807,8 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once.
/datum/uplink_item/stealthy_tools/fakenucleardisk
name = "Decoy Nuclear Authentication Disk"
desc = "It's just a normal disk. Visually it's identical to the real deal, but it won't hold up under closer scrutiny. Don't try to give this to us to complete your objective, we know better!"
item = /obj/item/disk/fakenucleardisk
desc = "It's just a normal disk. Visually it's identical to the real deal, but it won't hold up under closer scrutiny by the Captain. Don't try to give this to us to complete your objective, we know better!"
item = /obj/item/disk/nuclear/fake
cost = 1
surplus = 1