mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-30 03:22:41 +00:00
* Bitrunning 1.5: Secondary Objectives (#81828) ## About The Pull Request Added secondary objective lockboxes to bitrunning. These pull from a list of secondary objective loot on the domain, with a limited quantity of items. Once there are no items left to pull, the secondary objective disappears. If multiple secondary objective markers are placed, they will be placed until all markers have been used, or all the items in the loot pool are already spoken for. To support this functionality, adds SSbitrunning, which stores all domains as instances, instead of checking the hardcoded types as previously. SSbitrunning manages listing domains for the quantum console, and rolling secondary loot. As an example of this functionality, added a side path to Glacier Grind with a polar bear and some loot. ## Why It's Good For The Game Secondary objectives give mappers ways to encourage players to venture into a wider range of domains by offering non-trivial loot beyond the fluff items given in the main caches. The absolute limit on the number of items available ensures these items can't be farmed. As well as supporting secondary objectives, SSbitrunning allows for future support of features relying on mid-round modification of domains, for instance adding custom domains. ## Changelog 🆑 add: Added secondary objectives to bitrunning! add: Pick up encrypted curiosities and return them to the safehouse to claim their contents. add: Glacier Grind has been given a secondary objective, look out for the limited edition hat. add: Bitrunning domains can now be modified during the round by admins. /🆑 * Bitrunning 1.5: Secondary Objectives * Update virtual_domain.dm --------- Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com> Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
55 lines
2.3 KiB
Plaintext
55 lines
2.3 KiB
Plaintext
/**
|
|
* # Virtual Domains
|
|
* Create your own: Read the readme file in the '_maps/virtual_domains' folder.
|
|
*/
|
|
/datum/lazy_template/virtual_domain
|
|
map_dir = "_maps/virtual_domains"
|
|
map_name = "None"
|
|
key = "Virtual Domain"
|
|
place_on_top = TRUE
|
|
|
|
/// Cost of this map to load
|
|
var/cost = BITRUNNER_COST_NONE
|
|
/// Any outfit that you wish to force on avatars. Overrides preferences
|
|
var/datum/outfit/forced_outfit
|
|
/// The description of the map for the console UI
|
|
var/desc = "A map."
|
|
/// Affects the ui and ability to scan info.
|
|
var/difficulty = BITRUNNER_DIFFICULTY_NONE
|
|
/// The map file to load
|
|
var/filename = "virtual_domain.dmm"
|
|
/// If this domain blocks the use of items from disks, for whatever reason
|
|
var/forbids_disk_items = FALSE
|
|
/// If this domain blocks the use of spells from disks, for whatever reason
|
|
var/forbids_disk_spells = FALSE
|
|
/// Information given to connected clients via ability
|
|
var/help_text
|
|
/// Whether to display this as a modular map
|
|
var/is_modular = FALSE
|
|
/// Byond will look for modular mob segment landmarks then choose from here at random. You can make them unique also.
|
|
var/list/datum/modular_mob_segment/mob_modules = list()
|
|
/// An assoc list of typepath/amount to spawn on completion. Not weighted - the value is the amount
|
|
var/list/completion_loot
|
|
/// An accoc list of typepath/amount to spawn from secondary objectives. Not weighted - the value is the total number of items that can be obtained.
|
|
var/list/secondary_loot = list()
|
|
/// Number of secondary loot boxes generated. Resets when the domain is reloaded.
|
|
var/secondary_loot_generated
|
|
/// Forces all mob modules to only load once
|
|
var/modular_unique_mobs = FALSE
|
|
// Name to show in the UI
|
|
var/name = "Virtual Domain"
|
|
/// Points to reward for completion. Used to purchase new domains and calculate ore rewards.
|
|
var/reward_points = BITRUNNER_REWARD_MIN
|
|
/// The start time of the map. Used to calculate time taken
|
|
var/start_time
|
|
/// This map is specifically for unit tests. Shouldn't display in game
|
|
var/test_only = FALSE
|
|
|
|
/// Sends a point to any loot signals on the map
|
|
/datum/lazy_template/virtual_domain/proc/add_points(points_to_add)
|
|
SEND_SIGNAL(src, COMSIG_BITRUNNER_GOAL_POINT, points_to_add)
|
|
|
|
/// Overridable proc to be called after the map is loaded.
|
|
/datum/lazy_template/virtual_domain/proc/setup_domain(list/created_atoms)
|
|
return
|