Re-weighted secondary goals. (#26586)

This commit is contained in:
Charlie Nolan
2024-09-10 15:42:26 -07:00
committed by GitHub
parent f57ebfa1a0
commit 6c2d43ec5a
14 changed files with 40 additions and 24 deletions
+1 -1
View File
@@ -3379,7 +3379,7 @@
if(T == /datum/station_goal/secondary)
continue
var/datum/station_goal/secondary/SG = T
if(initial(SG.abstract))
if(initial(SG.weight) < 1)
type_choices -= SG
var/picked = pick_closest_path(FALSE, make_types_fancy(type_choices), skip_filter = TRUE)
if(!picked)
@@ -1,7 +1,7 @@
/datum/station_goal/secondary/random_bulk_reagent/bar
name = "Random Bulk Drink"
department = "Bar"
abstract = FALSE
weight = 9
/datum/station_goal/secondary/random_bulk_reagent/bar/randomize_params()
..()
@@ -3,7 +3,7 @@
progress_type = /datum/secondary_goal_progress/variety_reagent
department = "Bar"
generic_name_plural = "alcoholic drinks"
abstract = FALSE
weight = 1
/datum/station_goal/secondary/variety_reagent/bar/randomize_params()
..()
@@ -2,7 +2,7 @@
name = "Random Kudzu"
department = "Hydroponics"
progress_type = /datum/secondary_goal_progress/random_kudzu
abstract = FALSE
weight = 1
var/list/traits = list()
var/amount = 5
@@ -1,7 +1,7 @@
/datum/station_goal/secondary/random_bulk_reagent/kitchen
name = "Random Bulk Condiment"
department = "Kitchen"
abstract = FALSE
weight = 1
/datum/station_goal/secondary/random_bulk_reagent/kitchen/randomize_params()
..()
@@ -2,7 +2,7 @@
name = "Random Bulk Food"
department = "Kitchen"
progress_type = /datum/secondary_goal_progress/random_bulk_food
abstract = FALSE
weight = 8
var/obj/item/food/food_type
var/amount
var/reward
@@ -2,7 +2,7 @@
name = "Variety of Food"
progress_type = /datum/secondary_goal_progress/variety_food
department = "Kitchen"
abstract = FALSE
weight = 1
/// How many different types of food are needed.
var/different_types = 10
/// How many of each food type are needed.
@@ -1,7 +1,7 @@
/datum/station_goal/secondary/random_bulk_reagent/medchem
name = "Random Bulk Medicine"
department = "Chemistry"
abstract = FALSE
weight = 9
/datum/station_goal/secondary/random_bulk_reagent/medchem/randomize_params()
..()
@@ -3,7 +3,7 @@
progress_type = /datum/secondary_goal_progress/variety_reagent
department = "Chemistry"
generic_name_plural = "medicines"
abstract = FALSE
weight = 1
/datum/station_goal/secondary/variety_reagent/medchem/randomize_params()
..()
@@ -1,7 +1,7 @@
/datum/station_goal/secondary/random_bulk_reagent/scichem
name = "Random Bulk Chemical"
department = "Science"
abstract = FALSE
weight = 9
/datum/station_goal/secondary/random_bulk_reagent/scichem/randomize_params()
..()
@@ -3,7 +3,7 @@
department = "Robotics"
progress_type = /datum/secondary_goal_progress/random_ripley
should_send_crate = FALSE
abstract = FALSE
weight = 1
var/list/modules = list()
var/static/list/general_modules = list(
/obj/item/mecha_parts/mecha_equipment/repair_droid,
@@ -4,7 +4,7 @@
different_types = 5
department = "Science"
generic_name_plural = "chemicals"
abstract = FALSE
weight = 1
/datum/station_goal/secondary/variety_reagent/scichem/randomize_params()
..()
@@ -17,8 +17,8 @@
var/datum/secondary_goal_progress/progress
/// Tracker that manages the goal progress, permanent and temporary.
var/datum/secondary_goal_tracker/tracker
/// Abstract goals can't be used directly.
var/abstract = TRUE
/// The goal weight of a secondary goal type defines how many copies of it are in the grab bag that new secondary goals are pulled from. When the bag is empty, it gets refilled with the same number of each secondary goal type. Max 10.
weight = 0
/datum/station_goal/secondary/proc/Initialize(requester_name_in, requester_account)
SHOULD_CALL_PARENT(TRUE)
@@ -53,23 +53,38 @@
if(department != "Bridge")
send_requests_console_message(message_parts, "Central Command", "Bridge", "Stamped with the Central Command rubber stamp.", "Verified by A.L.I.C.E (CentCom AI)", RQ_NORMALPRIORITY)
/proc/generate_secondary_goal(department, requester = null, mob/user = null)
var/list/possible = list()
var/list/departments = list()
/proc/init_secondary_goal_grab_bags()
SSticker.mode.secondary_goal_grab_bags = list()
for(var/T in subtypesof(/datum/station_goal/secondary))
var/datum/station_goal/secondary/G = T
if(!initial(G.abstract) && !departments[initial(G.department)])
departments[initial(G.department)] = TRUE
if(initial(G.department) != department || initial(G.abstract))
if(initial(G.weight) < 1)
continue
possible += G
var/department = initial(G.department)
if(isnull(SSticker.mode.secondary_goal_grab_bags[department]))
SSticker.mode.secondary_goal_grab_bags[department] = list()
for(var/i in 1 to min(10, initial(G.weight)))
SSticker.mode.secondary_goal_grab_bags[department] += G
if(!length(possible))
/proc/generate_secondary_goal(department, requester = null, mob/user = null)
if(isnull(SSticker.mode.secondary_goal_grab_bags))
init_secondary_goal_grab_bags()
var/list/possible = SSticker.mode.secondary_goal_grab_bags[department]
if(isnull(possible))
if(user)
to_chat(user, "<span class='notice'>No goals available for [department]. Goals are currently available for [english_list(departments)].</span>")
to_chat(user, "<span class='notice'>No goals available for [department]. Goals are currently available for [english_list(SSticker.mode.secondary_goal_grab_bags)].</span>")
return
var/datum/station_goal/secondary/picked = pick(possible)
if(length(possible) == 0)
for(var/T in subtypesof(/datum/station_goal/secondary))
var/datum/station_goal/secondary/G = T
if(initial(G.weight) < 1 || initial(G.department) != department)
continue
for(var/i in 1 to min(10, initial(G.weight)))
possible += G
var/datum/station_goal/secondary/picked = pick_n_take(possible)
var/datum/station_goal/secondary/built = new picked
var/requester_name = null