277 lines
8.9 KiB
Plaintext
277 lines
8.9 KiB
Plaintext
//Contains the target item datums for Steal objectives.
|
|
|
|
/datum/objective_item
|
|
var/name = "A silly bike horn! Honk!"
|
|
var/targetitem = /obj/item/bikehorn //typepath of the objective item
|
|
var/difficulty = 9001 //vaguely how hard it is to do this objective
|
|
var/list/excludefromjob = list() //If you don't want a job to get a certain objective (no captain stealing his own medal, etcetc)
|
|
var/list/altitems = list() //Items which can serve as an alternative to the objective (darn you blueprints)
|
|
var/list/special_equipment = list()
|
|
|
|
/datum/objective_item/proc/check_special_completion() //for objectives with special checks (is that slime extract unused? does that intellicard have an ai in it? etcetc)
|
|
return 1
|
|
|
|
/datum/objective_item/proc/TargetExists()
|
|
return TRUE
|
|
|
|
/datum/objective_item/steal/New()
|
|
..()
|
|
if(TargetExists())
|
|
GLOB.possible_items += src
|
|
else
|
|
qdel(src)
|
|
|
|
/datum/objective_item/steal/Destroy()
|
|
GLOB.possible_items -= src
|
|
return ..()
|
|
|
|
/datum/objective_item/steal/caplaser
|
|
name = "the captain's antique laser gun."
|
|
targetitem = /obj/item/gun/energy/laser/captain
|
|
difficulty = 5
|
|
excludefromjob = list("Captain")
|
|
|
|
/datum/objective_item/steal/hoslaser
|
|
name = "the head of security's personal laser gun."
|
|
targetitem = /obj/item/gun/energy/e_gun/hos
|
|
difficulty = 10
|
|
excludefromjob = list("Head Of Security")
|
|
altitems = list(/obj/item/gun/ballistic/revolver/mws, /obj/item/choice_beacon/hosgun) //We now look for either the alt verson of the hos gun or the beacon picker.
|
|
|
|
/datum/objective_item/steal/handtele
|
|
name = "a hand teleporter."
|
|
targetitem = /obj/item/hand_tele
|
|
difficulty = 5
|
|
excludefromjob = list("Captain", "Research Director")
|
|
|
|
/datum/objective_item/steal/jetpack
|
|
name = "the Captain's jetpack."
|
|
targetitem = /obj/item/tank/jetpack/oxygen/captain
|
|
difficulty = 5
|
|
excludefromjob = list("Captain")
|
|
|
|
/datum/objective_item/steal/magboots
|
|
name = "the chief engineer's advanced magnetic boots."
|
|
targetitem = /obj/item/clothing/shoes/magboots/advance
|
|
difficulty = 5
|
|
excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
|
|
|
|
/datum/objective_item/steal/capmedal
|
|
name = "the medal of captaincy."
|
|
targetitem = /obj/item/clothing/accessory/medal/gold/captain
|
|
difficulty = 5
|
|
excludefromjob = list("Captain")
|
|
|
|
/datum/objective_item/steal/hypo
|
|
name = "the Chief Medical Officer's MKII hypospray."
|
|
targetitem = /obj/item/hypospray/mkii/CMO //CITADEL EDIT, changing theft objective for the Hypo MK II
|
|
difficulty = 5
|
|
excludefromjob = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Virologist", "Geneticist")
|
|
|
|
/datum/objective_item/steal/nukedisc
|
|
name = "the nuclear authentication disk."
|
|
targetitem = /obj/item/disk/nuclear
|
|
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
|
|
difficulty = 3
|
|
excludefromjob = list("Head of Security", "Warden")
|
|
|
|
/datum/objective_item/steal/reactive
|
|
name = "a reactive teleport armor."
|
|
targetitem = /obj/item/clothing/suit/armor/reactive
|
|
difficulty = 5
|
|
excludefromjob = list("Research Director","Scientist", "Roboticist")
|
|
|
|
/datum/objective_item/steal/documents
|
|
name = "any set of secret documents of any organization."
|
|
targetitem = /obj/item/documents //Any set of secret documents. Doesn't have to be NT's
|
|
difficulty = 5
|
|
|
|
/datum/objective_item/steal/blackbox
|
|
name = "the black box from the onboard blackbox recording device. Take care to wear the proper safety equipment when extracting the black box as the telecommunications array is likely to be under inhospitable conditions."
|
|
targetitem = /obj/item/blackbox //steal the forbidden ssblackbox
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/steal/nuke_core
|
|
name = "the heavily radioactive plutonium core from the onboard self-destruct. Take care to wear the proper safety equipment when extracting the core!"
|
|
targetitem = /obj/item/nuke_core
|
|
difficulty = 15
|
|
|
|
/datum/objective_item/steal/nuke_core/New()
|
|
special_equipment += /obj/item/storage/box/syndie_kit/nuke
|
|
..()
|
|
|
|
/datum/objective_item/steal/supermatter
|
|
name = "a sliver of a supermatter crystal. Be sure to use the proper safety equipment when extracting the sliver!"
|
|
targetitem = /obj/item/nuke_core/supermatter_sliver
|
|
difficulty = 15
|
|
|
|
/datum/objective_item/steal/supermatter/New()
|
|
special_equipment += /obj/item/storage/box/syndie_kit/supermatter
|
|
..()
|
|
|
|
/datum/objective_item/steal/supermatter/TargetExists()
|
|
return GLOB.main_supermatter_engine != null
|
|
|
|
//Items with special checks!
|
|
/datum/objective_item/steal/plasma
|
|
name = "28 moles of plasma (full tank)."
|
|
targetitem = /obj/item/tank
|
|
difficulty = 3
|
|
excludefromjob = list("Chief Engineer","Research Director","Station Engineer","Scientist","Atmospheric Technician")
|
|
|
|
/datum/objective_item/steal/plasma/check_special_completion(obj/item/tank/T)
|
|
var/target_amount = text2num(name)
|
|
var/found_amount = 0
|
|
found_amount += T.air_contents.get_moles(/datum/gas/plasma)
|
|
return found_amount>=target_amount
|
|
|
|
|
|
/datum/objective_item/steal/functionalai
|
|
name = "a functional AI."
|
|
targetitem = /obj/item/aicard
|
|
difficulty = 20 //beyond the impossible
|
|
|
|
/datum/objective_item/steal/functionalai/check_special_completion(obj/item/aicard/C)
|
|
for(var/mob/living/silicon/ai/A in C)
|
|
if(isAI(A) && A.stat != DEAD) //See if any AI's are alive inside that card.
|
|
return 1
|
|
return 0
|
|
|
|
/datum/objective_item/steal/blueprints
|
|
name = "the station blueprints."
|
|
targetitem = /obj/item/areaeditor/blueprints
|
|
difficulty = 10
|
|
excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
|
|
altitems = list(/obj/item/photo)
|
|
|
|
/datum/objective_item/steal/blueprints/check_special_completion(obj/item/I)
|
|
if(istype(I, /obj/item/areaeditor/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/slime
|
|
name = "an unused sample of slime extract."
|
|
targetitem = /obj/item/slime_extract
|
|
difficulty = 3
|
|
excludefromjob = list("Research Director","Scientist", "Roboticist")
|
|
|
|
/datum/objective_item/steal/slime/check_special_completion(obj/item/slime_extract/E)
|
|
if(E.Uses > 0)
|
|
return 1
|
|
return 0
|
|
|
|
//Unique Objectives
|
|
/datum/objective_item/unique/docs_red
|
|
name = "the \"Red\" secret documents."
|
|
targetitem = /obj/item/documents/syndicate/red
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/unique/docs_blue
|
|
name = "the \"Blue\" secret documents."
|
|
targetitem = /obj/item/documents/syndicate/blue
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/special/New()
|
|
..()
|
|
if(TargetExists())
|
|
GLOB.possible_items_special += src
|
|
else
|
|
qdel(src)
|
|
|
|
/datum/objective_item/special/Destroy()
|
|
GLOB.possible_items_special -= src
|
|
return ..()
|
|
|
|
//Old ninja objectives.
|
|
/datum/objective_item/special/pinpointer/nuke
|
|
name = "the captain's pinpointer."
|
|
targetitem = /obj/item/pinpointer
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/special/aegun
|
|
name = "an advanced energy gun."
|
|
targetitem = /obj/item/gun/energy/e_gun/nuclear
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/special/ddrill
|
|
name = "a diamond drill."
|
|
targetitem = /obj/item/pickaxe/drill/diamonddrill
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/special/boh
|
|
name = "a type of bag of holding."
|
|
targetitem = /obj/item/storage/backpack/holding
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/special/adv_surgical_drapes
|
|
name = "a set of smart surgical drapes."
|
|
targetitem = /obj/item/surgical_drapes/advanced
|
|
difficulty = 10 //would be 15 but cmo rarely have it on themselfs and leave it in their lockers...
|
|
|
|
/datum/objective_item/special/bluespace
|
|
name = "a bluespace power cell."
|
|
targetitem = /obj/item/stock_parts/cell/bluespace
|
|
difficulty = 5
|
|
|
|
/datum/objective_item/special/laserpointer
|
|
name = "a laser pointer."
|
|
targetitem = /obj/item/laser_pointer
|
|
difficulty = 5
|
|
|
|
/datum/objective_item/special/corgimeat
|
|
name = "a piece of corgi meat."
|
|
targetitem = /obj/item/reagent_containers/food/snacks/meat/slab/corgi
|
|
difficulty = 5
|
|
|
|
/datum/objective_item/stack/New()
|
|
..()
|
|
if(TargetExists())
|
|
GLOB.possible_items_special += src
|
|
else
|
|
qdel(src)
|
|
|
|
/datum/objective_item/stack/Destroy()
|
|
GLOB.possible_items_special -= src
|
|
return ..()
|
|
|
|
//Stack objectives get their own subtype
|
|
/datum/objective_item/stack
|
|
name = "5 cardboard."
|
|
targetitem = /obj/item/stack/sheet/cardboard
|
|
difficulty = 9001
|
|
|
|
/datum/objective_item/stack/check_special_completion(obj/item/stack/S)
|
|
var/target_amount = text2num(name)
|
|
var/found_amount = 0
|
|
|
|
if(istype(S, targetitem))
|
|
found_amount = S.amount
|
|
return found_amount>=target_amount
|
|
|
|
/datum/objective_item/stack/diamond
|
|
name = "10 diamonds."
|
|
targetitem = /obj/item/stack/sheet/mineral/diamond
|
|
difficulty = 10
|
|
|
|
/datum/objective_item/stack/gold
|
|
name = "50 gold bars."
|
|
targetitem = /obj/item/stack/sheet/mineral/gold
|
|
difficulty = 15
|
|
|
|
/datum/objective_item/stack/uranium
|
|
name = "25 refined uranium bars."
|
|
targetitem = /obj/item/stack/sheet/mineral/uranium
|
|
difficulty = 10
|