Files
Bubberstation/code/modules/bitrunning/virtual_domain/virtual_domain.dm
MrMelbert 6395f12833 Adds a rewards bonus for nohitting combat bitrunning domains (#93531)
## About The Pull Request

Completing a combat bitrunning domain grants 0.8 score bonus per player
that escaped without being hit

## Why It's Good For The Game

I figured it be a fun challenge to try to nohit these things, especially
the megafauna ones. For a bonus.

## Changelog

🆑 Melbert
add: Nohitting a combat bitrunning domain rewards a higher score.
/🆑
2025-11-01 13:39:08 +01:00

112 lines
3.8 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
/// Whether to tell observers this map is being used
var/announce_to_ghosts = FALSE
/// The map file to load
var/filename = "virtual_domain.dmm"
/// The start time of the map. Used to calculate time taken
var/start_time
/**
* Generic settings / UI
*/
/// Cost of this map to load
var/cost = BITRUNNER_COST_NONE
/// 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
/// Write these to help complete puzzles and other objectives. Viewed in the domain info ability.
var/help_text
// 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
/// Any additional flags for this domain
var/domain_flags = NONE
/**
* Player customization
*/
/// Any outfit that you wish to force on avatars. Overrides preferences
var/datum/outfit/forced_outfit
/**
* Loot
*/
/// An assoc list of typepath/amount to spawn on completion. Not weighted - the value is the amount
var/list/completion_loot
/// An assoc 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
/// Has this domain been beaten with high enough score to spawn a tech disk?
var/disk_reward_spawned = FALSE
/**
* Modularity
*/
/// 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()
/// Forces all mob modules to only load once
var/modular_unique_mobs = FALSE
/**
* Spawning
*/
/// Looks for random landmarks to spawn on.
var/list/custom_spawns = list()
/// Set TRUE if you want reusable custom spawners
var/keep_custom_spawns = FALSE
/// The domain must have this many ghost candidates willing to join as entities, or else it will not load.
var/mission_min_candidates = 0
/// Maximum amount possible of above.
var/mission_max_candidates = 0
/// Ghosts that will be spawned as, presumably, an antagonist in the map.
var/list/chosen_ghosts
/// List of spawners used for candidates.
var/list/obj/effect/mob_spawn/ghost_role/ghost_spawners
/// Current domain mobs being held by ghosts
var/list/mob/living/ghost_mobs
/// The role that ghosts will get. Only used for poll text.
var/spawner_role = "Antagonist"
/datum/lazy_template/virtual_domain/Destroy(force)
QDEL_NULL(ghost_spawners)
QDEL_NULL(ghost_mobs)
. = ..()
/// Sends a point to any loot signals on the map
/datum/lazy_template/virtual_domain/proc/add_points(points_to_add = 1)
SEND_SIGNAL(src, COMSIG_BITRUNNER_GOAL_POINT, points_to_add)
/// Loads the ghost candidates.
/datum/lazy_template/virtual_domain/proc/load_advanced_npcs(list/mob/lucky_ghosts)
for(var/mob/lucky_ghost as anything in lucky_ghosts)
var/obj/effect/mob_spawn/ghost_role/ghost_spawner = pick(ghost_spawners)
LAZYREMOVE(ghost_spawners, ghost_spawner)
var/mob/new_mob = ghost_spawner.create(lucky_ghost, lucky_ghost.real_name)
LAZYADD(ghost_mobs, new_mob)
var/ghostname = lucky_ghost.name
notify_ghosts("[ghostname] has been selected to be a [ghost_spawner.prompt_name]!", source = new_mob, header = "001010110")
/// Overridable proc to be called after the map is loaded.
/datum/lazy_template/virtual_domain/proc/setup_domain(list/created_atoms)
return