Skip to content

Commit

Permalink
Adding the skeleton of Berg Karzerfeste.
Browse files Browse the repository at this point in the history
  • Loading branch information
MistakeNot4892 committed Aug 19, 2024
1 parent c5b39ff commit c8d8177
Show file tree
Hide file tree
Showing 16 changed files with 240 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
map_path: [example, tradeship, exodus, ministation, shaded_hills, away_sites_testing, modpack_testing, planets_testing]
map_path: [example, tradeship, exodus, ministation, shaded_hills, karzefeste, away_sites_testing, modpack_testing, planets_testing]
steps:
- uses: actions/checkout@v3
- name: Setup Cache
Expand Down
2 changes: 2 additions & 0 deletions maps/karzerfeste/areas/_area.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/area/karzerfeste
name = "Burg Karzerfeste"
Empty file added maps/karzerfeste/jobs/_job.dm
Empty file.
27 changes: 27 additions & 0 deletions maps/karzerfeste/karzerfeste.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#if !defined(USING_MAP_DATUM)

#include "../../mods/content/matchmaking/_matchmaking.dme"
#include "../../mods/content/mouse_highlights/_mouse_highlight.dme"
#include "../../mods/content/scaling_descriptors.dm"
#include "../../mods/species/drakes/_drakes.dme" // include before _fantasy.dme so overrides work
#include "../../mods/content/fantasy/_fantasy.dme"
#include "../../mods/pyrelight/_pyrelight.dme" // include after _fantasy.dme so overrides work

#include "areas/_area.dm"
#include "jobs/_job.dm"
#include "levels/_level.dm"
#include "levels/strata.dm"
#include "outfits/_outfit.dm"

#include "karzerfeste_currency.dm"
#include "karzerfeste_events.dm"
#include "karzerfeste_map.dm"
#include "karzerfeste_skills.dm"
#include "karzerfeste_testing.dm"
#include "karzerfeste_turfs.dm"

#define USING_MAP_DATUM /datum/map/karzerfeste

#elif !defined(MAP_OVERRIDE)
#warn A map has already been included, ignoring Berg Karzerfeste
#endif
12 changes: 12 additions & 0 deletions maps/karzerfeste/karzerfeste_currency.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/datum/map/shaded_hills
starting_cash_choices = list(
/decl/starting_cash_choice/none,
/decl/starting_cash_choice/cash
)
default_currency = /decl/currency/imperial
salary_modifier = 0.05 // turn the 300-400 base into 15-20 base

/// Functionally identical to its parent type, but with a different name since it's not defined until later.
/decl/starting_cash_choice/none
name = "none"
uid = "starting_cash_none"
56 changes: 56 additions & 0 deletions maps/karzerfeste/karzerfeste_define.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/datum/map/karzerfeste
name = "karzerfeste"
full_name = "Burg Karzerfeste"
path = "karzerfeste"
station_name = "Burg Karzerfeste"
station_short = "Karzerfeste"

// Leaving these for later replacement.
dock_name = "shaded heights"
boss_name = "the Splinter Kingdoms"
boss_short = "Splinter Kingdoms"
company_name = "whispers from the Deep"
company_short = "the Deep"
system_name = "Downlands"

default_spawn = /decl/spawnpoint/arrivals
allowed_latejoin_spawns = list(
/decl/spawnpoint/arrivals
)
map_tech_level = MAP_TECH_LEVEL_MEDIEVAL
survival_box_choices = list()
passport_type = null
_available_backpacks = list(
/decl/backpack_outfit/sack
)
lobby_screens = list(
'maps/karzerfeste/pyre_light.png'
)
lobby_tracks = list(
/decl/music_track/dhaka,
/decl/music_track/teller,
/decl/music_track/suonatore
)
credit_sound = list(
'sound/music/Miris-Magic-Dance.ogg'
)
game_year = -914 // in 2024, the year should be 1110, roughly a century after the fall of the Imperial Aegis

char_preview_bgstate_options = list(
"000",
"midgrey",
"FFF",
"wood" = /turf/floor/wood::color,
"mud",
"grass" = /turf/floor/natural/grass::color,
"rock" = /turf/floor/natural/rock/basalt::color,
"brick" = /turf/wall/brick/sandstone::color
)

/decl/backpack_outfit/sack
is_default = TRUE

// TODO replace this
/datum/map/karzerfeste/get_map_info()
return "You're in the <b>[station_name]</b> of the [system_name], nestled between the mountains and the river and bisected by the decaying Queens' Road. On all sides, you are surrounded by untamed wilds, with only a small ruined fort, rebuilt into an inn, to the east as a sign of civilisation. \
Far from the control of [boss_name], you are free to carve forward a path to survival for yourself and your comrades however you wish. Strike the earth!"
20 changes: 20 additions & 0 deletions maps/karzerfeste/karzerfeste_events.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/datum/map/shaded_hills
event_container_mundane = /datum/event_container/mundane/fantasy
event_container_moderate = /datum/event_container/moderate/fantasy
event_container_major = /datum/event_container/major/fantasy

// TODO: more appropriate events.
/datum/event_container/mundane/fantasy
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100)
)

/datum/event_container/moderate/fantasy
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100)
)

/datum/event_container/major/fantasy
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100)
)
21 changes: 21 additions & 0 deletions maps/karzerfeste/karzerfeste_map.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/datum/map/karzefeste
default_liquid_fuel_type = /decl/material/liquid/nutriment/plant_oil
loadout_categories = list(
/decl/loadout_category/fantasy/clothing,
/decl/loadout_category/fantasy/utility
)

/datum/map/karzefeste/finalize_map_generation()
. = ..()
var/static/list/banned_weather = list(
/decl/state/weather/snow/medium,
/decl/state/weather/snow/heavy,
/decl/state/weather/snow
)
var/datum/level_data/region = SSmapping.levels_by_id["karzefeste_region"]
if(istype(region)) // if this is false, something has badly exploded
SSweather.setup_weather_system(region, banned_states = banned_weather)

/decl/spawnpoint/arrivals
name = "Queens' Road"
spawn_announcement = null
15 changes: 15 additions & 0 deletions maps/karzerfeste/karzerfeste_skills.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Removal of space skills
/datum/map/shaded_hills/get_available_skill_types()
. = ..()
. -= list(
SKILL_EVA,
SKILL_MECH,
SKILL_PILOT,
SKILL_COMPUTER,
SKILL_FORENSICS,
SKILL_ELECTRICAL,
SKILL_ATMOS,
SKILL_ENGINES,
SKILL_DEVICES,
SKILL_CONSTRUCTION, // Anything using this should be replaced with another skill.
)
5 changes: 5 additions & 0 deletions maps/karzerfeste/karzerfeste_testing.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/datum/map/karzerfeste
apc_test_exempt_areas = list(
/area/space = NO_SCRUBBER|NO_VENT|NO_APC,
/area/karzerfeste = NO_SCRUBBER|NO_VENT|NO_APC
)
8 changes: 8 additions & 0 deletions maps/karzerfeste/karzerfeste_turfs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/turf/wall/natural/basalt/karzerfeste
strata_override = /decl/strata/karzerfeste

/turf/wall/natural/random/basalt/karzerfeste
strata_override = /decl/strata/karzerfeste

/turf/wall/natural/random/high_chance/basalt/karzerfeste
strata_override = /decl/strata/karzerfeste
53 changes: 53 additions & 0 deletions maps/karzerfeste/levels/_level.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/datum/level_data/player_level/karzerfeste
use_global_exterior_ambience = FALSE
base_area = null
base_turf = /turf/floor/natural/dirt
abstract_type = /datum/level_data/player_level/karzerfeste
ambient_light_level = 1
ambient_light_color = "#f3e6ca"
strata = /decl/strata/karzerfeste
exterior_atmosphere = list(
/decl/material/gas/oxygen = MOLES_O2STANDARD,
/decl/material/gas/nitrogen = MOLES_N2STANDARD
)
daycycle_type = /datum/daycycle/karzerfeste
daycycle_id = "daycycle_karzerfeste"
template_edge_padding = 0 // we use a strictly delineated subarea, no need for this guard
var/submap_budget = 0
var/submap_category = null
var/submap_area
var/list/mobs_to_spawn = list()

/datum/daycycle/karzerfeste
cycle_duration = 2 HOURS // 1 hour of daylight, 1 hour of night

// Randomized time of day to start at.
/datum/daycycle/karzerfeste/New()
time_in_cycle = rand(cycle_duration)
..()

/datum/level_data/player_level/karzerfeste/get_subtemplate_areas(template_category, blacklist, whitelist)
return submap_area ? (islist(submap_area) ? submap_area : list(submap_area)) : null

/datum/level_data/player_level/karzerfeste/get_subtemplate_budget()
return submap_budget

/datum/level_data/player_level/karzerfeste/get_subtemplate_category()
return submap_category

/datum/level_data/player_level/karzerfeste/after_generate_level()
. = ..()
if(length(mobs_to_spawn))
for(var/list/mob_category in mobs_to_spawn)
var/list/mob_types = mob_category[1]
var/mob_turf = mob_category[2]
var/mob_count = mob_category[3]
var/sanity = 1000
while(mob_count && sanity)
sanity--
var/turf/place_mob_at = locate(rand(level_inner_min_x, level_inner_max_x), rand(level_inner_min_y, level_inner_max_y), level_z)
if(istype(place_mob_at, mob_turf) && !(locate(/mob/living) in place_mob_at))
var/mob_type = pickweight(mob_types)
new mob_type(place_mob_at)
mob_count--
CHECK_TICK
18 changes: 18 additions & 0 deletions maps/karzerfeste/levels/strata.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Simplified metal list.
/decl/strata/karzerfeste
name = "mountainous rock"
base_materials = list(/decl/material/solid/stone/basalt)
default_strata_candidate = FALSE
ores_sparse = list(
/decl/material/solid/quartz,
/decl/material/solid/graphite,
/decl/material/solid/tetrahedrite,
/decl/material/solid/hematite
)
ores_rich = list(
/decl/material/solid/gemstone/diamond,
/decl/material/solid/metal/gold,
/decl/material/solid/metal/platinum,
/decl/material/solid/densegraphite,
/decl/material/solid/galena
)
Empty file.
Binary file added maps/karzerfeste/pyre_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions nebula.dme
Original file line number Diff line number Diff line change
Expand Up @@ -4029,6 +4029,8 @@
#include "maps\away_sites_testing\away_sites_testing_define.dm"
#include "maps\example\example_define.dm"
#include "maps\exodus\exodus_define.dm"
#include "maps\karzerfeste\karzerfeste.dm"
#include "maps\karzerfeste\karzerfeste_define.dm"
#include "maps\ministation\ministation_define.dm"
#include "maps\modpack_testing\modpack_testing_define.dm"
#include "maps\planets_testing\planets_testing_define.dm"
Expand Down

0 comments on commit c8d8177

Please sign in to comment.