Files
Paradise/code/game/gamemodes/steal_items.dm
T
76a845d380 Modsuits. Ready for review, sorry for the ammount of files changed 👉 👈 (#21147)
* biting off more than I can chew, but I feel like hurting myself

* more shit

* progress continues, moral stays sameish

* bite of 2587

* mod_theme down, but probably broken

* 385 errors, 16 warnings, zero tgui interactions

* 292 19

* final strech to buggy mess, break time

* it compiles. It almost fucking certainly doesnt work, but it compiles

* fudhsciffubgsbgpgb actions not working as should for modules

* fuck it we'll just open the pr as we work on it

* icons work now

* tgui stuff

* more progress

* JUDGEMENT

* IT LIVES. TGUI LIVES. Special thanks to Sirryan and my brother.

* jetpacks, gps, and go do what exo-suits yourself

* almost ready

* sorry to whoever has to review this

* should work™️

* should be good now

* pushing changes so I can do reviews next

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* lore™️ Adds illegals level to modsuit parts from syndicate.

* early returns

* and these illegals

* no uplink reference idiot

* mod inhands are a good idea

* this is needed for inhands nerd

* Bomb detector working, modsutis cover ears. skin things

* overslotting removal, cyborg charging, ert loadout for gamma

* duplicated signal

* modsuit themes, removes broken mister / bad base type module, 2 cores in robotics.

* tether module, orb module, holster stuff

* built in no slip, cheaper 87

* removes modules already installed, engineer ert get jetpack, equip into modsuit storage

* comments spaces and duplicate flags

* Some adjustments and thoughts on armor, heads get guns because they are cool like that / looting command members armor

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Compile TGUI, slowdown adjustment, Modsuit to MODsuit

* sonar, do after, more equipment, acid handling

* overlay bugs / ERT / DS suits autodeploy

* middle click action buttons

* traders, sec modsuit energy nerf

* surplus weighting

* Kinesis module.

* Pathfinder module, kinesis balance, blueprint for pathfinder and kinesis

* more power / unused module removed

* name, ds fix, pre equipped to cc suit

* depot / grammer

* ok should be good™️

* overslot, dupe gun, missing suit storage

* stealth nerf, new kit

* gun stuff  / ds theme

* bio armor is gone

* let me push changes please thank you

* makes shocks work right

* copies over some changes TG made to module prices after porting

* Merge remote-tracking branch 'upstream/master' into Because-I-hate-myself-and-someone-has-to-try-it-

* sirryans changes

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Update code/modules/telesci/gps.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Update code/modules/telesci/gps.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Control define, ERT / DS have gloves / boots again.

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* More changes

* god I hate tgui. Why do all the bundles live underground, instead of in my basement?

* she updates my master till I testmerge

* modsuits can recharge again

* fixes a lot of shit

* Ready for TM probably

* sure fuck it whatever that makes sense I guess

* the pinpointer works better™️

* Another storage module bug fix

* hair and medical stuff

* fuck fuck fuck

* fixes sonar

* Bag exploit fixes / plasma runtimes / ear nerf

* dna lock improvement / cryostorage

* whoops

* Ball form second cooldown wasn't helping, no more infinite cores

* she springs my lock till I ***SNAP***

* plasmaman no longer die

* fixes modsuit emp issues

* atmos no longer fucking dies

* Fixes, module printing, and a restriction on newly constructed modsuits

* Inventory code my hated

* WOOO PREFERENCE CODE WOOOOO

* icons my hated

* fix for mods / spaceproof shit

* holy shit whhhyyyyy

* backpack first

* Update mod_theme.dm

* prevent infinite gun arms / infinite modsuit cores / syndicate modules

* fixes tm error

* scream loudly if species sprites break. They shouldn't, but, you know.

* deconflicted with luck

* converts to refit for species

* fix pathfinder

* fixes modsuits being funky power wise

* lockboxes :gatto: , as well as DN-MP shield lock, and slight nerf to atmos modsuit

* nerfs the atmos modsuit

* magboots for ds / CC modsuit

* downside of autosave: typing in wrong window saves bad stuff

* Gamma ERT have internal cameras again.

* spellcheck when

* ah fuck

* yes delete the null that works

* whoops

* fixes error / description

* un vulps your cannon

* fixes tails disapeering on base modsuits

* space to underscore

* tgui fix / tajaran

* springlock buff, cryopod fix

* u helps

* WHO PUTS A GUN IN ITEMS

* tgui moment

* mining modsuit nerf / hidden holster module

* PAIN

* UNATHI TIDE STATION WIDE

* I love special code

* slightly dense

* shark jumpscare

* fixes ghost item, fixes springlock being bad

* YIPPEEEE IT WORKED

* she decons my flict

* pain

* ebbas days are numbered :^)

* hidden

* r-r-r-ebuild

* fixes more bugs

* qwerty, you are dense

* fixes gps

* fix mulebot crate

* level fix

* adds back icon

* moving storage, fix bug, modules activate / deactivate message

* yeah

* yeah

* yeah™️

* steels requests

* windoors no longer make pathfinder module explode

* chat spam

* oil slicks + modsuits

* whoops

* bag check

* ofc

* Update code/modules/mod/mod_control.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/datums/uplink_items/uplink_nuclear.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/modules/mod/mod_control.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/modules/mod/modules/module_pathfinder.dm

Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>
2023-08-19 15:36:13 -05:00

204 lines
7.4 KiB
Plaintext

// Theft objectives.
//
// Separated into datums so we can prevent roles from getting certain objectives.
#define THEFT_FLAG_SPECIAL 1//unused, maybe someone will use it some day, I'll leave it here for the children
#define THEFT_FLAG_UNIQUE 2
/datum/theft_objective
var/name = "this objective is impossible, yell at a coder"
var/typepath=/obj/effect/debugging
var/list/protected_jobs = list()
var/list/altitems = list()
var/flags = 0
var/location_override
/// Do we have a special item we give to somewhen when they get this objective?
var/special_equipment = null
/// If a steal objective has forbidden jobs, and the forbidden jobs would not be in the possession of this item, set this to false
var/job_possession = TRUE
/datum/theft_objective/proc/check_completion(datum/mind/owner)
if(!owner.current)
return 0
if(!isliving(owner.current))
return 0
var/list/all_items = owner.current.get_contents()
for(var/obj/I in all_items) //Check for items
if(istype(I, typepath) && check_special_completion(I))
return 1
return 0
//This proc is to be used for not granting objectives if a special requirement other than job is not met.
/datum/theft_objective/proc/check_objective_conditions()
return TRUE
/datum/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/theft_objective/antique_laser_gun
name = "the captain's antique laser gun"
typepath = /obj/item/gun/energy/laser/captain
protected_jobs = list("Captain")
location_override = "the Captain's Office"
/datum/theft_objective/captains_modsuit
name = "the captain's Magnate MODsuit"
typepath = /obj/item/mod/control/pre_equipped/magnate
protected_jobs = list("Captain")
location_override = "the Captain's Office"
/datum/theft_objective/captains_rapier
name = "the captain's rapier"
typepath = /obj/item/melee/rapier
protected_jobs = list("Captain")
location_override = "the Captain's Office"
/datum/theft_objective/hoslaser
name = "the head of security's X-01 multiphase energy gun"
typepath = /obj/item/gun/energy/gun/hos
protected_jobs = list("Head Of Security")
location_override = "the Head of Security's Office"
/datum/theft_objective/hand_tele
name = "a hand teleporter"
typepath = /obj/item/hand_tele
protected_jobs = list("Captain", "Research Director", "Chief Engineer")
location_override = "Teleporter"
/datum/theft_objective/ai
name = "a functional AI"
typepath = /obj/item/aicard
location_override = "AI Satellite. An intellicard for transportation can be found in Tech Storage, Science Department or manufactured"
/datum/theft_objective/ai/check_special_completion(obj/item/aicard/C)
if(..())
for(var/mob/living/silicon/ai/A in C)
if(isAI(A) && A.stat != 2) //See if any AI's are alive inside that card.
return 1
return 0
/datum/theft_objective/defib
name = "the chief medical officer's advanced compact defibrillator"
typepath = /obj/item/defibrillator/compact/advanced
protected_jobs = list("Chief Medical Officer", "Paramedic")
location_override = "the Chief Medical Officer's Office"
/datum/theft_objective/magboots
name = "the chief engineer's advanced magnetic boots"
typepath = /obj/item/clothing/shoes/magboots/advance
protected_jobs = list("Chief Engineer")
location_override = "the Chief Engineer's Office"
/datum/theft_objective/blueprints
name = "the station blueprints"
typepath = /obj/item/areaeditor/blueprints/ce
protected_jobs = list("Chief Engineer")
altitems = list(/obj/item/photo)
location_override = "the Chief Engineer's Office"
/datum/theft_objective/blueprints/check_special_completion(obj/item/I)
if(istype(I, /obj/item/areaeditor/blueprints/ce))
return 1
if(istype(I, /obj/item/photo))
var/obj/item/photo/P = I
if(P.blueprints)
return 1
return 0
/datum/theft_objective/capmedal
name = "the medal of captaincy"
typepath = /obj/item/clothing/accessory/medal/gold/captain
protected_jobs = list("Captain")
location_override = "the Captain's Office"
/datum/theft_objective/nukedisc
name = "the nuclear authentication disk"
typepath = /obj/item/disk/nuclear
protected_jobs = list("Captain")
location_override = "the Captain's Office"
/datum/theft_objective/reactive
name = "any type of reactive armor"
typepath = /obj/item/clothing/suit/armor/reactive
protected_jobs = list("Research Director", "Scientist", "Roboticist") //no one with protolathe access, who will often be handed a core
location_override = "the Research Director's Office"
/datum/theft_objective/steal/documents
name = "any set of secret documents of any organization"
typepath = /obj/item/documents //Any set of secret documents. Doesn't have to be NT's
location_override = "the Vault"
/datum/theft_objective/hypospray
name = "the chief medical officer's advanced hypospray"
typepath = /obj/item/reagent_containers/hypospray/CMO
protected_jobs = list("Chief Medical Officer")
location_override = "the Chief Medical Officer's Office"
/datum/theft_objective/krav
name = "the warden's krav maga martial arts gloves"
typepath = /obj/item/clothing/gloves/color/black/krav_maga/sec
protected_jobs = list("Head Of Security", "Warden")
location_override = "the Warden's Office"
/datum/theft_objective/supermatter_sliver
name = "a supermatter sliver"
typepath = /obj/item/nuke_core/supermatter_sliver
protected_jobs = list("Chief Engineer", "Station Engineer", "Life Support Specialist") //Unlike other steal objectives, all jobs in the department have easy access, and would not be noticed at all stealing this
location_override = "Engineering. You can use the box and instructions provided to harvest the sliver"
special_equipment = /obj/item/storage/box/syndie_kit/supermatter
job_possession = FALSE //The CE / engineers / atmos techs do not carry around supermater slivers.
/datum/theft_objective/supermatter_sliver/check_objective_conditions() //If there is no supermatter, you don't get the objective. Yes, one could order it from cargo, but I don't think that is fair, especially if we get a map without a supermatter
return !isnull(GLOB.main_supermatter_engine)
/datum/theft_objective/plutonium_core
name = "the plutonium core from the station's nuclear device"
typepath = /obj/item/nuke_core/plutonium
location_override = "the Vault. You can use the box and instructions provided to remove the core, with some extra tools"
special_equipment = /obj/item/storage/box/syndie_kit/nuke
/datum/theft_objective/number
var/min=0
var/max=0
var/step=1
var/required_amount=0
/datum/theft_objective/number/New()
if(min==max)
required_amount=min
else
var/lower=min/step
var/upper=min/step
required_amount=rand(lower,upper)*step
name = "[required_amount] [name]"
/datum/theft_objective/number/check_completion(datum/mind/owner)
if(!owner.current)
return 0
if(!isliving(owner.current))
return 0
var/list/all_items = owner.current.get_contents()
var/found_amount=0.0
for(var/obj/item/I in all_items)
if(istype(I, typepath))
found_amount += getAmountStolen(I)
return found_amount >= required_amount
/datum/theft_objective/number/proc/getAmountStolen(obj/item/I)
return I:amount
/datum/theft_objective/unique
flags = THEFT_FLAG_UNIQUE
/datum/theft_objective/unique/docs_red
name = "the \"Red\" secret documents"
typepath = /obj/item/documents/syndicate/red
location_override = "a Syndicate agent's possession"
/datum/theft_objective/unique/docs_blue
name = "the \"Blue\" secret documents"
typepath = /obj/item/documents/syndicate/blue
location_override = "a Syndicate agent's possession"