mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-12 10:42:37 +00:00
## About The Pull Request removes oxygen jetpack subtype and makes empty jetpack actual oxygen ## Why It's Good For The Game because our empty jetpack wasnt actually empty and we infact had two oxygen jetpacks? ## Changelog N/A
974 lines
37 KiB
Plaintext
974 lines
37 KiB
Plaintext
GLOBAL_DATUM_INIT(steal_item_handler, /datum/objective_item_handler, new())
|
|
|
|
/proc/add_item_to_steal(source, type)
|
|
GLOB.steal_item_handler.objectives_by_path[type] += source
|
|
return type
|
|
|
|
/// Holds references to information about all of the items you might need to steal for objectives
|
|
/datum/objective_item_handler
|
|
var/list/list/objectives_by_path
|
|
var/generated_items = FALSE
|
|
|
|
/datum/objective_item_handler/New()
|
|
. = ..()
|
|
objectives_by_path = list()
|
|
for(var/datum/objective_item/item as anything in subtypesof(/datum/objective_item))
|
|
objectives_by_path[initial(item.targetitem)] = list()
|
|
RegisterSignal(SSatoms, COMSIG_SUBSYSTEM_POST_INITIALIZE, PROC_REF(save_items))
|
|
RegisterSignal(SSdcs, COMSIG_GLOB_NEW_ITEM, PROC_REF(new_item_created))
|
|
|
|
/datum/objective_item_handler/proc/new_item_created(datum/source, obj/item/item)
|
|
SIGNAL_HANDLER
|
|
if(HAS_TRAIT(item, TRAIT_ITEM_OBJECTIVE_BLOCKED))
|
|
return
|
|
if(!generated_items)
|
|
item.add_stealing_item_objective()
|
|
return
|
|
var/typepath = item.add_stealing_item_objective()
|
|
if(typepath != null)
|
|
register_item(item, typepath)
|
|
|
|
/// Registers all items that are potentially stealable and removes ones that aren't.
|
|
/// We still need to do things this way because on mapload, items may not be on the station until everything has finished loading.
|
|
/datum/objective_item_handler/proc/save_items()
|
|
SIGNAL_HANDLER
|
|
for(var/obj/item/typepath as anything in objectives_by_path)
|
|
var/list/obj_by_path_cache = objectives_by_path[typepath].Copy()
|
|
for(var/obj/item/object as anything in obj_by_path_cache)
|
|
register_item(object, typepath)
|
|
generated_items = TRUE
|
|
|
|
/datum/objective_item_handler/proc/register_item(atom/object, typepath)
|
|
var/turf/place = get_turf(object)
|
|
if(!place || !is_station_level(place.z))
|
|
objectives_by_path[typepath] -= object
|
|
return
|
|
RegisterSignal(object, COMSIG_QDELETING, PROC_REF(remove_item))
|
|
|
|
/datum/objective_item_handler/proc/remove_item(atom/source)
|
|
SIGNAL_HANDLER
|
|
for(var/typepath in objectives_by_path)
|
|
objectives_by_path[typepath] -= source
|
|
|
|
//Contains the target item datums for Steal objectives.
|
|
/datum/objective_item
|
|
/// How the item is described in the objective
|
|
var/name = "a silly bike horn! Honk!"
|
|
/// Typepath of item
|
|
var/targetitem = /obj/item/bikehorn
|
|
/// Valid containers that the target item can be in.
|
|
var/list/valid_containers = list()
|
|
/// Who CARES if this item goes missing (no stealing unguarded items), often similar but not identical to the next list
|
|
var/list/item_owner = list()
|
|
/// Jobs which cannot generate this objective (no stealing your own stuff)
|
|
var/list/excludefromjob = list()
|
|
/// List of additional items which also count, for things like blueprints
|
|
var/list/altitems = list()
|
|
/// Items to provide to people in order to allow them to acquire the target
|
|
var/list/special_equipment = list()
|
|
/// Defines in which contexts the item can be given as an objective
|
|
var/objective_type = OBJECTIVE_ITEM_TYPE_NORMAL
|
|
/// Whether this item exists on the station map at the start of a round.
|
|
var/exists_on_map = FALSE
|
|
/**
|
|
* How hard it is to steal this item given normal circumstances, ranked on a scale of 1 to 5.
|
|
*
|
|
* 1 - Probably found in a public area
|
|
* 2 - Likely on someone's person, or in a less-than-public but otherwise unguarded area
|
|
* 3 - Usually on someone's person, or in a locked locker or otherwise secure area
|
|
* 4 - Always on someone's person, or in a secure area
|
|
* 5 - You know it when you see it. Things like the Nuke Disc which have a pointer to it at all times.
|
|
*
|
|
* Also accepts 0 as "extremely easy to steal" and >5 as "almost impossible to steal"
|
|
*/
|
|
var/difficulty = 0
|
|
/// A hint explaining how one may find the target item.
|
|
var/steal_hint = "The clown might have one."
|
|
|
|
///If the item takes special steps to destroy for an objective (e.g. blackbox)
|
|
var/destruction_method = null
|
|
|
|
/// For objectives with special checks (does that intellicard have an ai in it? etcetc)
|
|
/datum/objective_item/proc/check_special_completion(obj/item/thing)
|
|
return TRUE
|
|
|
|
/// Takes a list of minds and returns true if this is a valid objective to give to a team of these minds
|
|
/datum/objective_item/proc/valid_objective_for(list/potential_thieves, require_owner = FALSE)
|
|
if(!target_exists() || (require_owner && !owner_exists()))
|
|
return FALSE
|
|
for (var/datum/mind/possible_thief as anything in potential_thieves)
|
|
var/datum/job/role = possible_thief.assigned_role
|
|
if(role.title in excludefromjob)
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/// Returns true if the target item exists
|
|
/datum/objective_item/proc/target_exists()
|
|
return (exists_on_map) ? length(GLOB.steal_item_handler.objectives_by_path[targetitem]) : TRUE
|
|
|
|
/// Returns true if one of the item's owners exists somewhere
|
|
/datum/objective_item/proc/owner_exists()
|
|
if (!length(item_owner))
|
|
return TRUE
|
|
for (var/mob/living/player as anything in GLOB.player_list)
|
|
if ((player.mind?.assigned_role.title in item_owner) && player.stat != DEAD && !is_centcom_level(player.z))
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/datum/objective_item/steal/New()
|
|
. = ..()
|
|
if(target_exists())
|
|
GLOB.possible_items += src
|
|
else
|
|
qdel(src)
|
|
|
|
/datum/objective_item/steal/Destroy()
|
|
GLOB.possible_items -= src
|
|
return ..()
|
|
|
|
// Low risk steal objectives
|
|
/datum/objective_item/steal/traitor
|
|
objective_type = OBJECTIVE_ITEM_TYPE_TRAITOR
|
|
|
|
// Unique-ish low risk objectives
|
|
/datum/objective_item/steal/traitor/bartender_shotgun
|
|
name = "the bartender's shotgun"
|
|
targetitem = /obj/item/gun/ballistic/shotgun/doublebarrel
|
|
excludefromjob = list(JOB_BARTENDER)
|
|
item_owner = list(JOB_BARTENDER)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "A double-barrel shotgun usually found on the bartender's person, or if none are around, in the bar's backroom."
|
|
|
|
/obj/item/gun/ballistic/shotgun/doublebarrel/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/ballistic/shotgun/doublebarrel)
|
|
|
|
/datum/objective_item/steal/traitor/fireaxe
|
|
name = "a fire axe"
|
|
targetitem = /obj/item/fireaxe
|
|
excludefromjob = list(
|
|
JOB_ATMOSPHERIC_TECHNICIAN,
|
|
JOB_CAPTAIN,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_QUARTERMASTER,
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_STATION_ENGINEER,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "Only two of these exist on the station - one in the bridge, and one in atmospherics. \
|
|
You can use a multitool to hack open the case, or break it open the hard way."
|
|
|
|
/obj/item/fireaxe/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/fireaxe)
|
|
|
|
/datum/objective_item/steal/traitor/big_crowbar
|
|
name = "a mech removal tool"
|
|
targetitem = /obj/item/crowbar/mechremoval
|
|
excludefromjob = list(
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_SCIENTIST,
|
|
JOB_ROBOTICIST,
|
|
)
|
|
item_owner = list(JOB_ROBOTICIST)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "A specialized tool found in the roboticist's lab. You can use a multitool to hack open the case, or break it open the hard way."
|
|
|
|
/obj/item/crowbar/mechremoval/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/crowbar/mechremoval)
|
|
|
|
/datum/objective_item/steal/traitor/nullrod
|
|
name = "the chaplain's null rod"
|
|
targetitem = /obj/item/nullrod
|
|
excludefromjob = list(JOB_CHAPLAIN)
|
|
item_owner = list(JOB_CHAPLAIN)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "A holy artifact usually found on the chaplain's person, or if none are around, in the chapel's relic closet. \
|
|
If there is a chaplain aboard, it is likely be to be transformed into some holy weapon - some of which are... difficult to remove from their person."
|
|
|
|
/obj/item/nullrod/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/nullrod)
|
|
|
|
/datum/objective_item/steal/traitor/clown_shoes
|
|
name = "the clown's shoes"
|
|
targetitem = /obj/item/clothing/shoes/clown_shoes
|
|
excludefromjob = list(JOB_CLOWN, JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER)
|
|
item_owner = list(JOB_CLOWN)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "The clown's huge, bright shoes. They should always be on the clown's feet."
|
|
|
|
/obj/item/clothing/shoes/clown_shoes/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/shoes/clown_shoes)
|
|
|
|
/datum/objective_item/steal/traitor/mime_mask
|
|
name = "the mime's mask"
|
|
targetitem = /obj/item/clothing/mask/gas/mime
|
|
excludefromjob = list(JOB_MIME, JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER)
|
|
item_owner = list(JOB_MIME)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "The mime's mask. It should always be on the mime's face."
|
|
|
|
/obj/item/clothing/mask/gas/mime/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/mask/gas/mime)
|
|
|
|
/datum/objective_item/steal/traitor/pka
|
|
name = "a protokinetic accelerator"
|
|
targetitem = /obj/item/gun/energy/recharge/kinetic_accelerator
|
|
excludefromjob = list(JOB_SHAFT_MINER, JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER)
|
|
item_owner = list(JOB_SHAFT_MINER)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "A tool primarily used by shaft miners to mine. Most carry one (or multiple) on their person, \
|
|
but they can also be found in the Mining Station, Mining office, or Auxiliary Mining Base on the station."
|
|
|
|
/obj/item/gun/energy/recharge/kinetic_accelerator/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/energy/recharge/kinetic_accelerator)
|
|
|
|
/datum/objective_item/steal/traitor/chef_moustache
|
|
name = "a fancy fake moustache"
|
|
targetitem = /obj/item/clothing/mask/fakemoustache/italian
|
|
excludefromjob = list(JOB_COOK, JOB_HEAD_OF_PERSONNEL, JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER)
|
|
item_owner = list(JOB_COOK)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "The chef's fake Italian moustache, either found on their face or in the garbage, depending on who's on duty."
|
|
|
|
/obj/item/clothing/mask/fakemoustache/italian/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/mask/fakemoustache/italian)
|
|
|
|
/datum/objective_item/steal/traitor/det_revolver
|
|
name = "detective's revolver"
|
|
targetitem = /obj/item/gun/ballistic/revolver/c38/detective
|
|
excludefromjob = list(JOB_DETECTIVE)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A .38 special revolver found in the Detective's holder. \
|
|
Usually found on the Detective's person, or if none are around, in the detective's locker, in their office."
|
|
|
|
/obj/item/gun/ballistic/revolver/c38/detective/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/ballistic/revolver/c38/detective)
|
|
|
|
/datum/objective_item/steal/traitor/lawyers_badge
|
|
name = "the lawyer's badge"
|
|
targetitem = /obj/item/clothing/accessory/lawyers_badge
|
|
excludefromjob = list(JOB_LAWYER)
|
|
item_owner = list(JOB_LAWYER)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "The lawyer's badge. Usually pinned to their chest, but a spare can be obtained from their clothes vendor."
|
|
|
|
/obj/item/clothing/accessory/lawyers_badge/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/accessory/lawyers_badge)
|
|
|
|
/datum/objective_item/steal/traitor/chief_engineer_belt
|
|
name = "the chief engineer's belt"
|
|
targetitem = /obj/item/storage/belt/utility/chief
|
|
excludefromjob = list(JOB_CHIEF_ENGINEER)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "The chief engineer's toolbelt, strapped to their waist at all times."
|
|
|
|
/obj/item/storage/belt/utility/chief/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/storage/belt/utility/chief)
|
|
|
|
/datum/objective_item/steal/traitor/telebaton
|
|
name = "a head of staff's telescopic baton"
|
|
targetitem = /obj/item/melee/baton/telescopic
|
|
excludefromjob = list(
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_CAPTAIN,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_QUARTERMASTER,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A self-defense weapon standard-issue for all heads of staffs barring the Head of Security. Rarely found off of their person."
|
|
|
|
/datum/objective_item/steal/traitor/telebaton/check_special_completion(obj/item/thing)
|
|
return !istype(thing, /obj/item/melee/baton/telescopic/contractor_baton)
|
|
|
|
/obj/item/melee/baton/telescopic/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/melee/baton/telescopic)
|
|
|
|
/datum/objective_item/steal/traitor/cargo_budget
|
|
name = "cargo's departmental budget"
|
|
targetitem = /obj/item/card/id/departmental_budget/car
|
|
excludefromjob = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN)
|
|
item_owner = list(JOB_QUARTERMASTER)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "A card that grants access to Cargo's funds. \
|
|
Normally found in the locker of the Quartermaster, but a particularly keen one may have it on their person or in their wallet."
|
|
|
|
/obj/item/card/id/departmental_budget/car/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/card/id/departmental_budget/car)
|
|
|
|
/datum/objective_item/steal/traitor/captain_modsuit
|
|
name = "the captain's magnate MOD control unit"
|
|
targetitem = /obj/item/mod/control/pre_equipped/magnate
|
|
excludefromjob = list(JOB_CAPTAIN)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "An expensive, hand-crafted MOD unit made for the station's Captain. \
|
|
If not being worn by the Captain, you would find it in the Suit Storage Unit in their quarters."
|
|
|
|
/obj/item/mod/control/pre_equipped/magnate/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/mod/control/pre_equipped/magnate)
|
|
|
|
/datum/objective_item/steal/traitor/captain_spare
|
|
name = "the captain's spare ID"
|
|
targetitem = /obj/item/card/id/advanced/gold/captains_spare
|
|
excludefromjob = list(
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_CAPTAIN,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_QUARTERMASTER,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "The spare ID of the High Lord himself. \
|
|
If there's no official Captain around, you may find it pinned to the chest of the Acting Captain - one of the Heads of Staff. \
|
|
Otherwise, you'll have to bust open the golden safe on the bridge with acid or explosives to get to it."
|
|
|
|
/obj/item/card/id/advanced/gold/captains_spare/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/card/id/advanced/gold/captains_spare)
|
|
|
|
// High risk steal objectives
|
|
|
|
// Will always generate even with no Captain due to its security and temptation to use it
|
|
/datum/objective_item/steal/caplaser
|
|
name = "the captain's antique laser gun"
|
|
targetitem = /obj/item/gun/energy/laser/captain
|
|
excludefromjob = list(JOB_CAPTAIN)
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "A self-charging laser gun found in a display case in the Captain's Quarters. \
|
|
Breaking it open may trigger a security alert, so be careful."
|
|
|
|
/obj/item/gun/energy/laser/captain/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/energy/laser/captain)
|
|
|
|
/datum/objective_item/steal/hoslaser
|
|
name = "the head of security's personal laser gun"
|
|
targetitem = /obj/item/gun/energy/e_gun/hos
|
|
excludefromjob = list(JOB_HEAD_OF_SECURITY)
|
|
item_owner = list(JOB_HEAD_OF_SECURITY)
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "The Head of Security's unique three mode laser gun. \
|
|
Always found on their person, if they are alive, but may otherwise be found in their locker."
|
|
|
|
/obj/item/gun/energy/e_gun/hos/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/energy/e_gun/hos)
|
|
|
|
/datum/objective_item/steal/compactshotty
|
|
name = "the warden's personal compact shotgun"
|
|
targetitem = /obj/item/gun/ballistic/shotgun/automatic/combat/compact
|
|
excludefromjob = list(JOB_WARDEN)
|
|
item_owner = list(JOB_WARDEN)
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "A miniaturized combat shotgun. May be found in Head of Security's locker or strapped to their back."
|
|
|
|
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/ballistic/shotgun/automatic/combat/compact)
|
|
|
|
/datum/objective_item/steal/handtele
|
|
name = "a hand teleporter"
|
|
targetitem = /obj/item/hand_tele
|
|
excludefromjob = list(JOB_CAPTAIN, JOB_RESEARCH_DIRECTOR, JOB_HEAD_OF_PERSONNEL)
|
|
item_owner = list(JOB_CAPTAIN, JOB_RESEARCH_DIRECTOR)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "Only two of these devices exist on the station, with one sitting in the Teleporter Room \
|
|
for emergencies, and the other in the Captain's Quarters for personal use."
|
|
|
|
/obj/item/hand_tele/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/hand_tele)
|
|
|
|
/datum/objective_item/steal/jetpack
|
|
name = "the Captain's jetpack"
|
|
targetitem = /obj/item/tank/jetpack/captain
|
|
excludefromjob = list(JOB_CAPTAIN)
|
|
item_owner = list(JOB_CAPTAIN)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A special yellow jetpack found in the Suit Storage Unit in the Captain's Quarters."
|
|
|
|
/obj/item/tank/jetpack/captain/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/tank/jetpack/captain)
|
|
|
|
/datum/objective_item/steal/magboots
|
|
name = "the chief engineer's advanced magnetic boots"
|
|
targetitem = /obj/item/clothing/shoes/magboots/advance
|
|
excludefromjob = list(JOB_CHIEF_ENGINEER)
|
|
item_owner = list(JOB_CHIEF_ENGINEER)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A pair of magnetic boots found in the Chief Engineer's Suit Storage Unit. \
|
|
May also be found on their person, concealed beneath their MODsuit."
|
|
|
|
/obj/item/clothing/shoes/magboots/advance/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/shoes/magboots/advance)
|
|
|
|
/datum/objective_item/steal/capmedal
|
|
name = "the medal of captaincy"
|
|
targetitem = /obj/item/clothing/accessory/medal/gold/captain
|
|
excludefromjob = list(JOB_CAPTAIN)
|
|
item_owner = list(JOB_CAPTAIN)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A gold medal found in the medal box in the Captain's Quarters. \
|
|
The Captain usually also has one pinned to their jumpsuit."
|
|
|
|
/obj/item/clothing/accessory/medal/gold/captain/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/accessory/medal/gold/captain)
|
|
|
|
/datum/objective_item/steal/hypo
|
|
name = "the hypospray"
|
|
targetitem = /obj/item/reagent_containers/hypospray/cmo
|
|
excludefromjob = list(JOB_CHIEF_MEDICAL_OFFICER)
|
|
item_owner = list(JOB_CHIEF_MEDICAL_OFFICER)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "The Chief Medical Officer's personal medical injector. \
|
|
Usually found amongst their medical supplies on their person, in their belt, or otherwise in their locker."
|
|
|
|
/obj/item/reagent_containers/hypospray/cmo/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/reagent_containers/hypospray/cmo)
|
|
|
|
/datum/objective_item/steal/nukedisc
|
|
name = "the nuclear authentication disk"
|
|
targetitem = /obj/item/disk/nuclear
|
|
excludefromjob = list(JOB_CAPTAIN)
|
|
difficulty = 5
|
|
steal_hint = "THAT disk - you know the one. Carried by the Captain at all times (hopefully). \
|
|
Difficult to miss, but if you can't find it, the Head of Security and Captain both have devices to track its precise location."
|
|
|
|
/obj/item/disk/nuclear/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/disk/nuclear)
|
|
|
|
/datum/objective_item/steal/nukedisc/check_special_completion(obj/item/disk/nuclear/N)
|
|
return !N.fake
|
|
|
|
/datum/objective_item/steal/ablative
|
|
name = "an ablative trenchcoat"
|
|
targetitem = /obj/item/clothing/suit/hooded/ablative
|
|
excludefromjob = list(JOB_HEAD_OF_SECURITY, JOB_WARDEN)
|
|
item_owner = list(JOB_HEAD_OF_SECURITY)
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "An ablative trechcoat found on the shelves of the Armory."
|
|
|
|
/obj/item/clothing/suit/hooded/ablative/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/suit/hooded/ablative)
|
|
|
|
/datum/objective_item/steal/reactive
|
|
name = "the reactive teleport armor"
|
|
targetitem = /obj/item/clothing/suit/armor/reactive/teleport
|
|
excludefromjob = list(JOB_RESEARCH_DIRECTOR)
|
|
item_owner = list(JOB_RESEARCH_DIRECTOR)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A special suit of armor found in the possession of the Research Director. \
|
|
You may otherwise find it in their locker."
|
|
|
|
/obj/item/clothing/suit/armor/reactive/teleport/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/suit/armor/reactive/teleport)
|
|
|
|
/datum/objective_item/steal/documents
|
|
name = "any set of secret documents of any organization"
|
|
valid_containers = list(/obj/item/folder)
|
|
targetitem = /obj/item/documents
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A set of papers belonging to a megaconglomerate. \
|
|
Nanotrasen documents can easily be found in the station's vault. \
|
|
For other corporations, you may find them in strange and distant places. \
|
|
A photocopy may also suffice."
|
|
|
|
/obj/item/documents/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/documents) //Any set of secret documents. Doesn't have to be NT's
|
|
|
|
/datum/objective_item/steal/nuke_core
|
|
name = "the heavily radioactive plutonium core from the onboard self-destruct"
|
|
valid_containers = list(/obj/item/nuke_core_container)
|
|
targetitem = /obj/item/nuke_core
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "The core of the station's self-destruct device, found in the vault."
|
|
|
|
/obj/item/nuke_core/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/nuke_core)
|
|
|
|
/datum/objective_item/steal/nuke_core/New()
|
|
special_equipment += /obj/item/storage/box/syndie_kit/nuke
|
|
..()
|
|
|
|
/datum/objective_item/steal/hdd_extraction
|
|
name = "the source code for Project Goon from the master R&D server mainframe"
|
|
targetitem = /obj/item/computer_disk/hdd_theft
|
|
excludefromjob = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST)
|
|
item_owner = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST)
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "The hard drive of the master research server, found in R&D's server room."
|
|
|
|
/obj/item/computer_disk/hdd_theft/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/computer_disk/hdd_theft)
|
|
|
|
/datum/objective_item/steal/hdd_extraction/New()
|
|
special_equipment += /obj/item/paper/guides/antag/hdd_extraction
|
|
return ..()
|
|
|
|
|
|
/datum/objective_item/steal/supermatter
|
|
name = "a sliver of a supermatter crystal"
|
|
targetitem = /obj/item/nuke_core/supermatter_sliver
|
|
valid_containers = list(/obj/item/nuke_core_container/supermatter)
|
|
difficulty = 5
|
|
steal_hint = "A small shard of the station's supermatter crystal engine."
|
|
|
|
/datum/objective_item/steal/supermatter/New()
|
|
special_equipment += /obj/item/storage/box/syndie_kit/supermatter
|
|
..()
|
|
|
|
/datum/objective_item/steal/supermatter/target_exists()
|
|
return GLOB.main_supermatter_engine != null
|
|
|
|
// Doesn't need item_owner = (JOB_AI) because this handily functions as a murder objective if there isn't one
|
|
/datum/objective_item/steal/functionalai
|
|
name = "a functional AI"
|
|
targetitem = /obj/item/aicard
|
|
difficulty = 5
|
|
steal_hint = "An intellicard (or MODsuit) containing an active, functional AI."
|
|
|
|
/datum/objective_item/steal/functionalai/New()
|
|
. = ..()
|
|
altitems += typesof(/obj/item/mod/control) // only here so we can account for AIs tucked away in a MODsuit.
|
|
|
|
/datum/objective_item/steal/functionalai/check_special_completion(obj/item/potential_storage)
|
|
var/mob/living/silicon/ai/being
|
|
|
|
if(istype(potential_storage, /obj/item/aicard))
|
|
var/obj/item/aicard/card = potential_storage
|
|
being = card.AI // why is this one capitalized and the other one not? i wish i knew.
|
|
else if(istype(potential_storage, /obj/item/mod/control))
|
|
var/obj/item/mod/control/suit = potential_storage
|
|
if(isAI(suit.ai_assistant))
|
|
being = suit.ai_assistant
|
|
else
|
|
stack_trace("check_special_completion() called on [src] with [potential_storage] ([potential_storage.type])! That's not supposed to happen!")
|
|
return FALSE
|
|
|
|
if(isAI(being) && being.stat != DEAD)
|
|
return TRUE
|
|
|
|
return FALSE
|
|
|
|
/datum/objective_item/steal/blueprints
|
|
name = "the station blueprints"
|
|
targetitem = /obj/item/blueprints
|
|
excludefromjob = list(JOB_CHIEF_ENGINEER)
|
|
item_owner = list(JOB_CHIEF_ENGINEER)
|
|
altitems = list(/obj/item/photo)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "The blueprints of the station, found in the Chief Engineer's locker, or on their person. A picture may suffice."
|
|
|
|
/obj/item/blueprints/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/blueprints)
|
|
|
|
/datum/objective_item/steal/blueprints/check_special_completion(obj/item/I)
|
|
if(istype(I, /obj/item/blueprints))
|
|
return TRUE
|
|
if(istype(I, /obj/item/photo))
|
|
var/obj/item/photo/P = I
|
|
if(P.picture.has_blueprints) //if the blueprints are in frame
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/datum/objective_item/steal/blackbox
|
|
name = "the Blackbox"
|
|
targetitem = /obj/item/blackbox
|
|
excludefromjob = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN)
|
|
exists_on_map = TRUE
|
|
difficulty = 4
|
|
steal_hint = "The station's data Blackbox, found solely within Telecommunications."
|
|
destruction_method = "Too strong to be destroyed via normal means - needs to be dusted via the supermatter, or burnt in the chapel's crematorium."
|
|
|
|
/obj/item/blackbox/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/blackbox)
|
|
|
|
|
|
// A number of special early-game steal objectives intended to be used with the steal-and-destroy objective.
|
|
// They're basically items of utility or emotional value that may be found on many players or lying around the station.
|
|
/datum/objective_item/steal/traitor/insuls
|
|
name = "some insulated gloves"
|
|
targetitem = /obj/item/clothing/gloves/color/yellow
|
|
excludefromjob = list(JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_CHIEF_ENGINEER)
|
|
item_owner = list(JOB_STATION_ENGINEER, JOB_CHIEF_ENGINEER)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "A basic pair of insulated gloves, usually worn by Assistants, Engineers, or Cargo Technicians."
|
|
|
|
/obj/item/clothing/gloves/color/yellow/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/gloves/color/yellow)
|
|
|
|
/datum/objective_item/steal/traitor/moth_plush
|
|
name = "a cute moth plush toy"
|
|
targetitem = /obj/item/toy/plush/moth
|
|
excludefromjob = list(JOB_PSYCHOLOGIST, JOB_PARAMEDIC, JOB_CHEMIST, JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CORONER)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "A moth plush toy. The Psychologist has one to help console patients."
|
|
|
|
/obj/item/toy/plush/moth/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/toy/plush/moth)
|
|
|
|
/datum/objective_item/steal/traitor/lizard_plush
|
|
name = "a cute lizard plush toy"
|
|
targetitem = /obj/item/toy/plush/lizard_plushie
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "A lizard plush toy. Often found hidden in maintenance."
|
|
|
|
/obj/item/toy/plush/lizard_plushie/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/toy/plush/lizard_plushie)
|
|
|
|
/datum/objective_item/steal/traitor/denied_stamp
|
|
name = "cargo's denied stamp"
|
|
targetitem = /obj/item/stamp/denied
|
|
excludefromjob = list(JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER, JOB_SHAFT_MINER)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "Cargo often has multiple of these red stamps lying around to process paperwork."
|
|
|
|
/obj/item/stamp/denied/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/stamp/denied)
|
|
|
|
/datum/objective_item/steal/traitor/granted_stamp
|
|
name = "cargo's granted stamp"
|
|
targetitem = /obj/item/stamp/granted
|
|
excludefromjob = list(JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER, JOB_SHAFT_MINER)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "Cargo often has multiple of these green stamps lying around to process paperwork."
|
|
|
|
/obj/item/stamp/granted/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/stamp/granted)
|
|
|
|
/datum/objective_item/steal/traitor/space_law
|
|
name = "a book on space law"
|
|
targetitem = /obj/item/book/manual/wiki/security_space_law
|
|
excludefromjob = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY, JOB_LAWYER, JOB_DETECTIVE)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "Sometimes found in the possession of members of Security and Lawyers. \
|
|
The courtroom and the library are also good places to look."
|
|
|
|
/obj/item/book/manual/wiki/security_space_law/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/book/manual/wiki/security_space_law)
|
|
|
|
/datum/objective_item/steal/traitor/rpd
|
|
name = "a rapid pipe dispenser"
|
|
targetitem = /obj/item/pipe_dispenser
|
|
excludefromjob = list(
|
|
JOB_ATMOSPHERIC_TECHNICIAN,
|
|
JOB_STATION_ENGINEER,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_SCIENTIST,
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_GENETICIST,
|
|
JOB_ROBOTICIST,
|
|
)
|
|
item_owner = list(JOB_CHIEF_ENGINEER)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "A tool often used by Engineers, Atmospherics Technicians, and Ordnance Technicians."
|
|
|
|
/obj/item/pipe_dispenser/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/pipe_dispenser)
|
|
|
|
/datum/objective_item/steal/traitor/donut_box
|
|
name = "a box of prized donuts"
|
|
targetitem = /obj/item/storage/fancy/donut_box
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_QUARTERMASTER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
JOB_LAWYER,
|
|
JOB_DETECTIVE,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "Everyone has a box of donuts - you may most commonly find them on the Bridge, within Security, or in any department's break room."
|
|
|
|
/obj/item/storage/fancy/donut_box/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/storage/fancy/donut_box)
|
|
|
|
/datum/objective_item/steal/spy
|
|
objective_type = OBJECTIVE_ITEM_TYPE_SPY
|
|
|
|
/datum/objective_item/steal/spy/lamarr
|
|
name = "the Research Director's pet headcrab"
|
|
targetitem = /obj/item/clothing/mask/facehugger/lamarr
|
|
excludefromjob = list(JOB_RESEARCH_DIRECTOR)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "The Research Director's pet headcrab, Lamarr, found in a secure cage in their office."
|
|
|
|
/obj/item/clothing/mask/facehugger/lamarr/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/clothing/mask/facehugger/lamarr)
|
|
|
|
/datum/objective_item/steal/spy/disabler
|
|
name = "a disabler"
|
|
targetitem = /obj/item/gun/energy/disabler
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_DETECTIVE,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
difficulty = 2
|
|
steal_hint = "A hand-held disabler, often found in the possession of Security Officers."
|
|
|
|
/datum/objective_item/steal/spy/energy_gun
|
|
name = "an energy gun"
|
|
targetitem = /obj/item/gun/energy/e_gun
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_DETECTIVE,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_QUARTERMASTER,
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "A two-mode energy gun, found in the station's Armory, as well as in the hands of some heads of staff for personal defense."
|
|
|
|
/datum/objective_item/steal/spy/energy_gun/check_special_completion(obj/item/thing)
|
|
return thing.type == /obj/item/gun/energy/e_gun
|
|
|
|
/obj/item/gun/energy/e_gun/add_stealing_item_objective()
|
|
if(type == /obj/item/gun/energy/e_gun)
|
|
return add_item_to_steal(src, /obj/item/gun/energy/e_gun)
|
|
|
|
/datum/objective_item/steal/spy/laser_gun
|
|
name = "a laser gun"
|
|
targetitem = /obj/item/gun/energy/laser
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_DETECTIVE,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_QUARTERMASTER,
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A simple laser gun, found in the station's Armory."
|
|
|
|
/datum/objective_item/steal/spy/laser_gun/check_special_completion(obj/item/thing)
|
|
return thing.type == /obj/item/gun/energy/laser
|
|
|
|
/obj/item/gun/energy/laser/add_stealing_item_objective()
|
|
if(type == /obj/item/gun/energy/laser)
|
|
return add_item_to_steal(src, /obj/item/gun/energy/laser)
|
|
|
|
/datum/objective_item/steal/spy/shotgun
|
|
name = "a riot shotgun"
|
|
targetitem = /obj/item/gun/ballistic/shotgun/riot
|
|
excludefromjob = list(
|
|
JOB_DETECTIVE,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "A shotgun found in the station's Armory for riot suppression. Doesn't miss."
|
|
|
|
/obj/item/gun/ballistic/shotgun/riot/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/ballistic/shotgun/riot)
|
|
|
|
/datum/objective_item/steal/spy/temp_gun
|
|
name = "security's temperature gun"
|
|
targetitem = /obj/item/gun/energy/temperature/security
|
|
excludefromjob = list(
|
|
JOB_DETECTIVE,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 2 // lowered for the meme
|
|
steal_hint = "Security's TRUSTY temperature gun, found in the station's Armory."
|
|
|
|
/obj/item/gun/energy/temperature/security/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/gun/energy/temperature/security)
|
|
|
|
/datum/objective_item/steal/spy/stamp
|
|
name = "a head of staff's stamp"
|
|
targetitem = /obj/item/stamp/head
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_QUARTERMASTER,
|
|
JOB_RESEARCH_DIRECTOR,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 1
|
|
steal_hint = "A stamp owned by a head of staff, from their offices."
|
|
|
|
/obj/item/stamp/head/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/stamp/head)
|
|
|
|
/datum/objective_item/steal/spy/sunglasses
|
|
name = "some sunglasses"
|
|
targetitem = /obj/item/clothing/glasses/sunglasses
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_CHIEF_ENGINEER,
|
|
JOB_CHIEF_MEDICAL_OFFICER,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_LAWYER,
|
|
JOB_QUARTERMASTER,
|
|
JOB_RESEARCH_DIRECTOR,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
difficulty = 1
|
|
steal_hint = "A pair of sunglasses. Lawyers often have a few pairs, as do some heads of staff. \
|
|
You can also obtain a pair from dissassembling hudglasses."
|
|
|
|
/datum/objective_item/steal/spy/ce_modsuit
|
|
name = "the chief engineer's advanced MOD control unit"
|
|
targetitem = /obj/item/mod/control/pre_equipped/advanced
|
|
excludefromjob = list(JOB_CHIEF_ENGINEER)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "An advanced version of the standard Engineering MODsuit commonly worn by the Chief Engineer."
|
|
|
|
/obj/item/mod/control/pre_equipped/advanced/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/mod/control/pre_equipped/advanced)
|
|
|
|
/datum/objective_item/steal/spy/rd_modsuit
|
|
name = "the research director's research MOD control unit"
|
|
targetitem = /obj/item/mod/control/pre_equipped/research
|
|
excludefromjob = list(JOB_RESEARCH_DIRECTOR)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "A bulky MODsuit commonly worn by the Research Director to protect themselves from the hazards of their work."
|
|
|
|
/obj/item/mod/control/pre_equipped/research/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/mod/control/pre_equipped/research)
|
|
|
|
/datum/objective_item/steal/spy/cmo_modsuit
|
|
name = "the chief medical officer's rescure MOD control unit"
|
|
targetitem = /obj/item/mod/control/pre_equipped/rescue
|
|
excludefromjob = list(JOB_CHIEF_MEDICAL_OFFICER)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "A MODsuit sometimes equipped by the Chief Medical Officer to perform rescue opperations in hazardous environments."
|
|
|
|
/obj/item/mod/control/pre_equipped/rescue/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/mod/control/pre_equipped/rescue)
|
|
|
|
/datum/objective_item/steal/spy/hos_modsuit
|
|
name = "the head of security's safeguard MOD control unit"
|
|
targetitem = /obj/item/mod/control/pre_equipped/safeguard
|
|
excludefromjob = list(JOB_HEAD_OF_SECURITY)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "An advanced MODsuit sometimes worn by the Head of Security when needing to detain hostiles invading the station."
|
|
|
|
/obj/item/mod/control/pre_equipped/safeguard/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/mod/control/pre_equipped/safeguard)
|
|
|
|
/datum/objective_item/steal/spy/stun_baton
|
|
name = "a stun baton"
|
|
targetitem = /obj/item/melee/baton/security
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_DETECTIVE,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
difficulty = 2
|
|
steal_hint = "Steal any stun baton from Security."
|
|
|
|
/datum/objective_item/steal/spy/stun_baton/check_special_completion(obj/item/thing)
|
|
return !istype(thing, /obj/item/melee/baton/security/cattleprod)
|
|
|
|
/datum/objective_item/steal/spy/det_baton
|
|
name = "the detective's baton"
|
|
targetitem = /obj/item/melee/baton
|
|
excludefromjob = list(
|
|
JOB_CAPTAIN,
|
|
JOB_DETECTIVE,
|
|
JOB_HEAD_OF_PERSONNEL,
|
|
JOB_HEAD_OF_SECURITY,
|
|
JOB_SECURITY_OFFICER,
|
|
JOB_WARDEN,
|
|
)
|
|
exists_on_map = TRUE
|
|
difficulty = 2
|
|
steal_hint = "The detective's old wooden truncheon, commonly found on their person for self defense."
|
|
|
|
/datum/objective_item/steal/spy/det_baton/check_special_completion(obj/item/thing)
|
|
return thing.type == /obj/item/melee/baton
|
|
|
|
/obj/item/melee/baton/add_stealing_item_objective()
|
|
if(type == /obj/item/melee/baton)
|
|
return add_item_to_steal(src, /obj/item/melee/baton)
|
|
|
|
/datum/objective_item/steal/spy/captain_sabre_sheathe
|
|
name = "the captain's sabre sheathe"
|
|
targetitem = /obj/item/storage/belt/sheath/sabre
|
|
excludefromjob = list(JOB_CAPTAIN)
|
|
exists_on_map = TRUE
|
|
difficulty = 3
|
|
steal_hint = "The sheathe for the captain's sabre, found in their closet or strapped to their waist at all times."
|
|
|
|
/obj/item/storage/belt/sheath/sabre/add_stealing_item_objective()
|
|
return add_item_to_steal(src, /obj/item/storage/belt/sheath/sabre)
|