Secondary goals (#24599)

* Extract requests console message sending code.

* Add secondary goals

* Converted supply shuttle to a signal-based system.

* Lint.

* Review suggestions.

* Secondary goals can now check the supply shuttle for their requirements.

* Remove redundant completion variable, undef what we define.

* Made the request console refuse to issue a secondary goal until you finish the current one.

* Made the shuttle blacklist error more specific, added locked/manifest-attached crates to blacklist.

* Added round end secondary goal report.

* Lint

* Add tags to reagents for secondary goals to use.

* Extracted the reagent logic from the bar goal, used reagent tags.

* Added the Variety of Drinks Bar goal.

* Added variety drinks goal for the Bar.

* CC no longer complains about sending stuff in containers, but the shuttle will refuse lockboxes without goal items.

* Allow unlocked lockboxes on the shuttle.

* Added kitchen goals.

* Lint

* More lint

* Add goals for scichem and medchem, pending reagent labelling.

* Added Kudzu goal for botany.

* I forgot to rename them, oops.

* Lint

* Made mechs sellable, configurable goal rewards.

* Balancing changes.

* Added random Ripley goal.

* Add Clear Task Backlog station goal.

* Lint

* Oops.

* did i even do this right

* Lint

* Excluded drinks available from upgraded booze dispenser.

* Such bugs. Much fix. Wow.

* Goal notice formatting.

* Apply suggestions from code review

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

* Made storage nesting better, improved consistency between storage types.

* Out, er, space.

* Added a proc for sending a requests console message.

* Added error messages to Virology Goals.

Backported a few small things from Secondary Goals to make this easier.

* Extracted out the three-way reward code into a proc.

* Update code/__DEFINES/dcs/signals.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>

* Removed redundant SIGNAL_HANDLER labels.

* Yes, that should be a proc.

* Enforce important parent calls.

* Thank you, DreamChecker

* Undid accidental merge of #24699

* Removed a testing proc that wasn't intended for this PR.

* Removed parts of #24750 that also crept in.

* Made the variety of [x] goals more explicit that they want 50u of each.

* Reduced Kudzu trait requirement to 1.

* Request consoles now output the list of valid departments if you're at an unsupported one.

* Added personal crates.

* Added a supply pack of personal crates.

* Added special cargo handling for personal crates.

* Added automatic personal crate when requesting a goal.

* Required personal crates for most secondary goals.

* Add goal labels to the hand labeler, require them for mech goals.

* Made secondary goals one-per-person, not one-per-department.

* Added support for multi-line system messages to the request consoles.

* Made the RC message for goals nicer.

* Send goal crates even if no normal crates are ready, name and access-lock them properly.

* Don't double-label.

* Let's not use registered_account, names are fine.

* Add a ton of blackbox data to cargo and secondary goals.

* Fix a few bugs.

* More bugfixing, couple more stats.

* Even more stats.

* Text fix.

* Made cargo fines more consistent with other cargo feedback.

* Fixed a bug that prevented non-top-level items from being checked for CARGO_REQUIRE_PRIORITY.

* Blocked large crates from being sent back unopened.

* Enum values should probably be different from each other.

* Correct a bitflag mishap.

* Removed redundant supply shuttle docking and buy/sell attempts.

* Tweak message about personal crates to inlclude that they need to lock it.

* Add /Crates to the Personal Lockers description.

* Less pretty alignment, less complaining linters.

* Corrected a bad name in stats tracking.

* Reduced SciChem variety goal to 5 types.

* Toned down Task Backlog a bit.

* Fixed a bug that made unsellable items nested in containers be stolen by CC (qdeleted).

* Don't require bluespace 8, that's silly.

* Made secondary goals modifiable in the Modify Station Goals UI.

* Whoops, that was supposed to be 600u.

* i ded pls nerf

---------

Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com>
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
Charlie Nolan
2024-04-01 07:50:07 +00:00
committed by GitHub
co-authored by Henri215 DGamerL synthtee
parent 663e007d4d
commit 5c5f7842df
64 changed files with 2892 additions and 490 deletions
+25 -6
View File
@@ -48,14 +48,34 @@ SUBSYSTEM_DEF(economy)
///Current Order number
var/ordernum = 1
/// points gained per slip returned
/// credits gained per slip returned
var/credits_per_manifest = 5
/// points gained per intel returned
/// credits gained per intel sold
var/credits_per_intel = 750
/// points gained per plasma returned
/// credits gained per plasma sold
var/credits_per_plasma = 10
/// points gained per research design returned
/// credits gained per research design sold
var/credits_per_design = 20
/// credits gained per working mech sold
var/credits_per_mech = 100
/// credits gained for each secondary goal completed
/// These get split in 3, one part for Cargo, one for the department,
/// and one part for the person who requested the goal.
var/credits_per_easy_reagent_goal = 150
var/credits_per_normal_reagent_goal = 300
var/credits_per_hard_reagent_goal = 450
var/credits_per_variety_reagent_goal = 300
var/credits_per_easy_food_goal = 300
var/credits_per_normal_food_goal = 450
var/credits_per_hard_food_goal = 600
var/credits_per_ripley_goal = 600
var/credits_per_kudzu_goal = 600
/// credits lost for sending unsecured cargo
var/fine_for_loose_cargo = -100
/// credits lost for sending a messy shuttle
var/fine_for_messy_shuttle = -100
/// credits lost for sending unwanted items
var/fine_for_selling_trash = -100
/// points gained per virology goal
var/credits_per_virology_goal = 200
@@ -150,8 +170,7 @@ SUBSYSTEM_DEF(economy)
next_paycheck_delay = 30 MINUTES + world.time
next_mail_delay = 15 MINUTES + world.time
for(var/obj/machinery/computer/pandemic/P in GLOB.pandemics)
P.print_goal_orders()
check_total_virology_goals_completion()
/datum/controller/subsystem/economy/fire()
if(next_paycheck_delay <= world.time)