mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
Vault Spawning Point System (#35735)
* Vault spawn point system * Some balance * Bug fix and small tweak * just deleted it --------- Co-authored-by: Rubylips <Questionfrog@gmail.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
/datum/map_element/vault/brokeufo
|
||||
name = "Broken UFO"
|
||||
file_path = "maps/randomvaults/brokeufo.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/brokeufo/initialize(list/objects)
|
||||
..()
|
||||
|
||||
@@ -4,10 +4,11 @@
|
||||
/datum/map_element/vault/lightship
|
||||
name = "Light Speed Ship"
|
||||
file_path = "maps/randomvaults/lightspeedship.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/lightship/initialize(list/objects)
|
||||
..()
|
||||
|
||||
|
||||
/datum/shuttle/lightship
|
||||
name = "light speed ship"
|
||||
|
||||
@@ -34,7 +35,7 @@
|
||||
add_dock(/obj/docking_port/destination/syndicate/west)
|
||||
add_dock(/obj/docking_port/destination/syndicate/northwest)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/machinery/computer/shuttle_control/lightship
|
||||
icon_state = "syndishuttle"
|
||||
@@ -42,7 +43,7 @@
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/machinery/computer/shuttle_control/lightship/New() //Main shuttle_control code is in code/game/machinery/computer/shuttle_computer.dm
|
||||
|
||||
|
||||
var/global/datum/shuttle/lightship/lightship_shuttle = new(starting_area=/area/shuttle/lightship/start)
|
||||
lightship_shuttle.initialize()
|
||||
link_to(lightship_shuttle)
|
||||
@@ -54,4 +55,4 @@
|
||||
|
||||
|
||||
#undef LIGHT_SHIP_MOVE_TIME
|
||||
#undef LIGHT_SHIP_COOLDOWN
|
||||
#undef LIGHT_SHIP_COOLDOWN
|
||||
|
||||
@@ -12,6 +12,9 @@ var/list/existing_vaults = list()
|
||||
|
||||
var/base_turf_type = /turf/space //The "default" turf type that surrounds this vault. If it differs from the z-level's base turf type (for example if this vault is loaded on a snow map), all turfs of this type will be replaced with turfs of the z-level's base turf type
|
||||
|
||||
var/spawn_cost = 3 //The amount of "points" a vault costs to spawn, much larger/complicated vaults costing more, with simpler costing less
|
||||
//Spawn cost's will be defined even if inheretence makes it redundant, this is because vault makers are often less experienced with code and so the clarity will help
|
||||
|
||||
/datum/map_element/vault/initialize(list/objects)
|
||||
..(objects)
|
||||
existing_vaults.Add(src)
|
||||
@@ -35,10 +38,12 @@ var/list/existing_vaults = list()
|
||||
/datum/map_element/vault/icetruck_crash
|
||||
file_path = "maps/randomvaults/icetruck_crash.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/asteroid_temple
|
||||
file_path = "maps/randomvaults/asteroid_temple.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/asteroid_temple/initialize(list/objects)
|
||||
..(objects)
|
||||
@@ -59,31 +64,36 @@ var/list/existing_vaults = list()
|
||||
/datum/map_element/vault/gingerbread_house
|
||||
file_path = "maps/randomvaults/gingerbread_house.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 4
|
||||
|
||||
/datum/map_element/vault/tommyboyasteroid
|
||||
file_path = "maps/randomvaults/tommyboyasteroid.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/hivebot_factory
|
||||
file_path = "maps/randomvaults/hivebot_factory.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/pretty_rad_clubhouse
|
||||
file_path = "maps/randomvaults/pretty_rad_clubhouse.dmm"
|
||||
can_rotate = TRUE
|
||||
|
||||
spawn_cost = 2
|
||||
/datum/map_element/vault/clown_base
|
||||
file_path = "maps/randomvaults/clown_base.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/rust
|
||||
file_path = "maps/randomvaults/rust.dmm"
|
||||
can_rotate = TRUE
|
||||
|
||||
spawn_cost = 2
|
||||
/datum/map_element/vault/dance_revolution
|
||||
name = "Dance Dance Revolution"
|
||||
file_path = "maps/randomvaults/dance_revolution.dmm"
|
||||
var/obj/structure/dance_dance_revolution/machine
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/dance_revolution/initialize(list/objects)
|
||||
.=..()
|
||||
@@ -108,13 +118,16 @@ var/list/existing_vaults = list()
|
||||
/datum/map_element/vault/spacegym
|
||||
file_path = "maps/randomvaults/spacegym.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/oldarmory
|
||||
file_path = "maps/randomvaults/oldarmory.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 5
|
||||
|
||||
/datum/map_element/vault/spacepond
|
||||
file_path = "maps/randomvaults/spacepond.dmm"
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/spacepond/pre_load()
|
||||
load_dungeon(/datum/map_element/dungeon/wine_cellar,rotation)
|
||||
@@ -125,26 +138,29 @@ var/list/existing_vaults = list()
|
||||
/datum/map_element/vault/iou_vault
|
||||
file_path = "maps/randomvaults/iou_fort.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/biodome
|
||||
file_path = "maps/randomvaults/biodome.dmm"
|
||||
|
||||
/datum/map_element/vault/iou_vault
|
||||
file_path = "maps/randomvaults/iou_fort.dmm"
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/asteroids
|
||||
file_path = "maps/randomvaults/asteroids.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/listening
|
||||
file_path = "maps/randomvaults/listening.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/hivebot_crash
|
||||
file_path = "maps/randomvaults/hivebot_crash.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/prison
|
||||
file_path = "maps/randomvaults/prison_ship.dmm"
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/prison/pre_load()
|
||||
load_dungeon(/datum/map_element/dungeon/prison,rotation)
|
||||
@@ -155,55 +171,69 @@ var/list/existing_vaults = list()
|
||||
/datum/map_element/vault/AIsat
|
||||
file_path = "maps/randomvaults/AIsat.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/ejectedengine
|
||||
file_path = "maps/randomvaults/ejectedengine.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/droneship
|
||||
file_path = "maps/randomvaults/droneship.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/amelab
|
||||
file_path = "maps/randomvaults/amelab.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/meteorlogical_station
|
||||
file_path = "maps/randomvaults/meteorlogical_station.dmm"
|
||||
spawn_cost = 4
|
||||
|
||||
/datum/map_element/vault/taxi_engi
|
||||
file_path = "maps/randomvaults/taxi_engineering.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/ice_comet
|
||||
file_path = "maps/randomvaults/ice_comet.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/research_facility
|
||||
file_path = "maps/randomvaults/research_facility.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 4
|
||||
|
||||
/datum/map_element/vault/zoo_truck
|
||||
file_path = "maps/randomvaults/zoo_truck.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/syndiecargo
|
||||
file_path = "maps/randomvaults/syndiecargo.dmm"
|
||||
spawn_cost = 4
|
||||
|
||||
/datum/map_element/vault/black_site_prism
|
||||
file_path = "maps/randomvaults/black_site_prism.dmm"
|
||||
spawn_cost = 5
|
||||
|
||||
/datum/map_element/vault/skeleton_den
|
||||
file_path = "maps/randomvaults/rattlemebones.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/beach_party
|
||||
file_path = "maps/randomvaults/beach_party.dmm"
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/zathura
|
||||
file_path = "maps/randomvaults/house.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 1
|
||||
|
||||
/datum/map_element/vault/spy_sat
|
||||
file_path = "maps/randomvaults/spy_satellite.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/spy_sat/pre_load()
|
||||
load_dungeon(/datum/map_element/dungeon/satellite_deployment,rotation)
|
||||
@@ -213,27 +243,34 @@ var/list/existing_vaults = list()
|
||||
|
||||
/datum/map_element/vault/ironchef
|
||||
file_path = "maps/randomvaults/ironchef.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/assistantslair
|
||||
file_path = "maps/randomvaults/assistantslair.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/asteroidfield
|
||||
file_path = "maps/randomvaults/asteroidfield.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/clownroid
|
||||
file_path = "maps/randomvaults/clownroid.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/goonesat
|
||||
file_path = "maps/randomvaults/goonesat.dmm"
|
||||
can_rotate = TRUE
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/podstation
|
||||
file_path = "maps/randomvaults/podstation.dmm"
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/mini_station
|
||||
file_path = "maps/randomvaults/mini_station.dmm"
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/dungeon/habitation
|
||||
file_path = "maps/randomvaults/dungeons/habitation.dmm"
|
||||
@@ -244,6 +281,11 @@ var/list/existing_vaults = list()
|
||||
/datum/map_element/vault/fastfoodjoint
|
||||
name = "Fast food joint"
|
||||
file_path = "maps/randomvaults/fastfoodjoint.dmm"
|
||||
spawn_cost = 2
|
||||
|
||||
/datum/map_element/vault/laundromat
|
||||
file_path = "maps/randomvaults/laundromat.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
/datum/map_element/vault/laundromat/pre_load()
|
||||
load_dungeon(/datum/map_element/dungeon/laundromat_drug_lab,rotation)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#define MINIMUM_VAULT_AMOUNT 5 //Amount of guaranteed vault spawns
|
||||
#define MAXIMUM_VAULT_AMOUNT 15
|
||||
#define VAULT_POINT_MULTIPLIER 3
|
||||
|
||||
#define MAX_VAULT_WIDTH 80 //Vaults bigger than that have a slight chance of overlapping with other vaults
|
||||
#define MAX_VAULT_HEIGHT 80
|
||||
@@ -69,7 +70,7 @@
|
||||
|
||||
var/list/list_of_vaults = get_map_element_objects()
|
||||
|
||||
var/vault_number = rand(MINIMUM_VAULT_AMOUNT, min(list_of_vaults.len, MAXIMUM_VAULT_AMOUNT))
|
||||
var/vault_number = (rand(MINIMUM_VAULT_AMOUNT, min(list_of_vaults.len, MAXIMUM_VAULT_AMOUNT)) * VAULT_POINT_MULTIPLIER)
|
||||
|
||||
#ifdef SPAWN_ALL_VAULTS
|
||||
#warn Spawning ALL vaults!
|
||||
@@ -445,11 +446,14 @@
|
||||
else if(config.disable_vault_rotation)
|
||||
message_admins("<span class='info'>[ME.file_path] was not rotated, DISABLE_VAULT_ROTATION enabled in config.</span>")
|
||||
successes++
|
||||
if(amount > 0)
|
||||
amount--
|
||||
|
||||
if(amount == 0)
|
||||
break
|
||||
if(amount > 0) //Allowing overflow is intentional, ie: 1 point left and the last picked vault costs 4 points
|
||||
if(istype(ME, /datum/map_element/vault))
|
||||
var/datum/map_element/vault/VE = ME
|
||||
amount -= VE.spawn_cost
|
||||
else
|
||||
amount--
|
||||
if(amount <= 0)
|
||||
break
|
||||
else
|
||||
message_admins("<span class='danger'>Can't find [ME.file_path]!</span>")
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
/datum/map_element/vault/keycards
|
||||
name = "Keycard-gate vault entrance"
|
||||
file_path = "maps/randomvaults/keycard_entrance.dmm"
|
||||
spawn_cost = 3
|
||||
can_rotate = FALSE // It has dungeons, which don't rotate well for now
|
||||
var/difficulty = 0 // 0 to generate randomly, see preset variants below
|
||||
var/datum/map_element/dungeon/keycard_vault/thevault
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/map_element/vault/mothership_lab
|
||||
name = "Mothership Lab"
|
||||
file_path = "maps/randomvaults/mothership_lab.dmm"
|
||||
spawn_cost = 5
|
||||
|
||||
can_rotate = 0 // I doubt it would work
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
/datum/map_element/vault/sokoban
|
||||
name = "Sokoban"
|
||||
file_path = "maps/randomvaults/sokoban_entrance.dmm"
|
||||
spawn_cost = 3
|
||||
|
||||
var/list/available_levels = list(
|
||||
"maps/randomvaults/dungeons/sokoban/A.dmm",
|
||||
|
||||
@@ -168,6 +168,7 @@ var/list/shop_prices = list( //Cost in space credits
|
||||
/datum/map_element/vault/supermarket
|
||||
name = "Spessmart"
|
||||
file_path = "maps/randomvaults/spessmart.dmm"
|
||||
spawn_cost = 5
|
||||
|
||||
var/customer_has_entered = FALSE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user