This too come on now

This commit is contained in:
VerySoft
2022-03-29 05:53:10 -04:00
parent eb8fd70ba8
commit 2076e9769a
14 changed files with 124310 additions and 39934 deletions
@@ -79,12 +79,31 @@
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_base = "sidewalk"
has_damage_range = 2
damage_temperature = T0C+1400
flags = TURF_REMOVE_CROWBAR | TURF_CAN_BREAK | TURF_CAN_BURN
build_type = /obj/item/stack/tile/floor/sidewalk
can_paint = 1
can_engrave = FALSE
footstep_sounds = list("human" = list(
'sound/effects/footstep/LightStone1.ogg',
'sound/effects/footstep/LightStone2.ogg',
'sound/effects/footstep/LightStone3.ogg',
'sound/effects/footstep/LightStone4.ogg',))
/obj/item/stack/tile/floor/sidewalk
name = "sidewalk tile"
singular_name = "floor tile"
desc = "A stone tile fit for covering a section of floor."
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
throwforce = 15.0
throw_speed = 5
throw_range = 20
no_variants = FALSE
/turf/simulated/floor/outdoors/sidewalk/Initialize(mapload)
var/possibledirts = list(
"[initial(icon_state)]" = 150,
@@ -104,6 +123,21 @@
/turf/simulated/floor/outdoors/sidewalk/side
icon_state = "side-walk"
initial_flooring = /decl/flooring/outdoors/sidewalk/side
/decl/flooring/outdoors/sidewalk/side
icon_base = "sidewalk"
build_type = /obj/item/stack/tile/floor/sidewalk/side
/obj/item/stack/tile/floor/sidewalk/side
/turf/simulated/floor/outdoors/sidewalk/slab
icon_state = "slab"
initial_flooring = /decl/flooring/outdoors/sidewalk/slab
/decl/flooring/outdoors/sidewalk/slab
icon_base = "slab"
build_type = /obj/item/stack/tile/floor/sidewalk/slab
/obj/item/stack/tile/floor/sidewalk/slab
+590
View File
@@ -0,0 +1,590 @@
#define VIRGO3C_ONE_ATMOSPHERE 92.5 //kPa
#define VIRGO3C_AVG_TEMP 278.15 //kelvin
#define VIRGO3C_PER_N2 0.78 //percent
#define VIRGO3C_PER_O2 0.21
#define VIRGO3C_PER_N2O 0.00 //Currently no capacity to 'start' a turf with this. See turf.dm
#define VIRGO3C_PER_CO2 0.01
#define VIRGO3C_PER_PHORON 0.00
//Math only beyond this point
#define VIRGO3C_MOL_PER_TURF (VIRGO3C_ONE_ATMOSPHERE*CELL_VOLUME/(VIRGO3C_AVG_TEMP*R_IDEAL_GAS_EQUATION))
#define VIRGO3C_MOL_N2 (VIRGO3C_MOL_PER_TURF * VIRGO3C_PER_N2)
#define VIRGO3C_MOL_O2 (VIRGO3C_MOL_PER_TURF * VIRGO3C_PER_O2)
#define VIRGO3C_MOL_N2O (VIRGO3C_MOL_PER_TURF * VIRGO3C_PER_N2O)
#define VIRGO3C_MOL_CO2 (VIRGO3C_MOL_PER_TURF * VIRGO3C_PER_CO2)
#define VIRGO3C_MOL_PHORON (VIRGO3C_MOL_PER_TURF * VIRGO3C_PER_PHORON)
//Turfmakers
#define VIRGO3C_SET_ATMOS nitrogen=VIRGO3C_MOL_N2;oxygen=VIRGO3C_MOL_O2;carbon_dioxide=VIRGO3C_MOL_CO2;phoron=VIRGO3C_MOL_PHORON;temperature=VIRGO3C_AVG_TEMP
#define VIRGO3C_TURF_CREATE(x) x/virgo3c/nitrogen=VIRGO3C_MOL_N2;x/virgo3c/oxygen=VIRGO3C_MOL_O2;x/virgo3c/carbon_dioxide=VIRGO3C_MOL_CO2;x/virgo3c/phoron=VIRGO3C_MOL_PHORON;x/virgo3c/temperature=VIRGO3C_AVG_TEMP;x/virgo3c/outdoors=TRUE;x/virgo3c/update_graphic(list/graphic_add = null, list/graphic_remove = null) return 0
#define VIRGO3C_TURF_CREATE_UN(x) x/virgo3c/nitrogen=VIRGO3C_MOL_N2;x/virgo3c/oxygen=VIRGO3C_MOL_O2;x/virgo3c/carbon_dioxide=VIRGO3C_MOL_CO2;x/virgo3c/phoron=VIRGO3C_MOL_PHORON;x/virgo3c/temperature=VIRGO3C_AVG_TEMP
var/datum/planet/virgo3c/planet_virgo3c = null
/datum/time/virgo3c
seconds_in_day = 4 HOURS
/datum/planet/virgo3c
name = "Virgo-3c"
desc = "A habitable moon of the gas giant Virgo 3. The volcanic activity of this moon keeps its atmosphere warm enough for life to flourish."
current_time = new /datum/time/virgo3c()
planetary_wall_type = /turf/unsimulated/wall/planetary/virgo3c
/datum/planet/virgo3c/New()
..()
planet_virgo3c = src
weather_holder = new /datum/weather_holder/virgo3c(src)
/datum/planet/virgo3c/update_sun()
..()
var/datum/time/time = current_time
var/length_of_day = time.seconds_in_day / 10 / 60 / 60
var/noon = length_of_day / 2
var/distance_from_noon = abs(text2num(time.show_time("hh")) - noon)
sun_position = distance_from_noon / noon
sun_position = abs(sun_position - 1)
var/low_brightness = null
var/high_brightness = null
var/low_color = null
var/high_color = null
var/min = 0
switch(sun_position)
if(0 to 0.20) // Night
low_brightness = 0.3
low_color = "#000066"
high_brightness = 0.5
high_color = "#66004D"
min = 0
if(0.20 to 0.30) // Twilight
low_brightness = 0.5
low_color = "#66004D"
high_brightness = 0.9
high_color = "#CC3300"
min = 0.40
if(0.30 to 0.40) // Sunrise/set
low_brightness = 0.9
low_color = "#CC3300"
high_brightness = 3.0
high_color = "#FF9933"
min = 0.50
if(0.40 to 1.00) // Noon
low_brightness = 3.0
low_color = "#DDDDDD"
high_brightness = 10.0
high_color = "#FFFFFF"
min = 0.70
var/interpolate_weight = (abs(min - sun_position)) * 4
var/weather_light_modifier = 1
if(weather_holder && weather_holder.current_weather)
weather_light_modifier = weather_holder.current_weather.light_modifier
var/new_brightness = (LERP(low_brightness, high_brightness, interpolate_weight) ) * weather_light_modifier
var/new_color = null
if(weather_holder && weather_holder.current_weather && weather_holder.current_weather.light_color)
new_color = weather_holder.current_weather.light_color
else
var/list/low_color_list = hex2rgb(low_color)
var/low_r = low_color_list[1]
var/low_g = low_color_list[2]
var/low_b = low_color_list[3]
var/list/high_color_list = hex2rgb(high_color)
var/high_r = high_color_list[1]
var/high_g = high_color_list[2]
var/high_b = high_color_list[3]
var/new_r = LERP(low_r, high_r, interpolate_weight)
var/new_g = LERP(low_g, high_g, interpolate_weight)
var/new_b = LERP(low_b, high_b, interpolate_weight)
new_color = rgb(new_r, new_g, new_b)
spawn(1)
update_sun_deferred(new_brightness, new_color)
/datum/weather_holder/virgo3c
temperature = T0C
allowed_weather_types = list(
WEATHER_CLEAR = new /datum/weather/virgo3c/clear(),
WEATHER_OVERCAST = new /datum/weather/virgo3c/overcast(),
WEATHER_LIGHT_SNOW = new /datum/weather/virgo3c/light_snow(),
WEATHER_SNOW = new /datum/weather/virgo3c/snow(),
WEATHER_BLIZZARD = new /datum/weather/virgo3c/blizzard(),
WEATHER_RAIN = new /datum/weather/virgo3c/rain(),
WEATHER_STORM = new /datum/weather/virgo3c/storm(),
WEATHER_HAIL = new /datum/weather/virgo3c/hail(),
WEATHER_BLOOD_MOON = new /datum/weather/virgo3c/blood_moon(),
WEATHER_EMBERFALL = new /datum/weather/virgo3c/emberfall(),
WEATHER_ASH_STORM = new /datum/weather/virgo3c/ash_storm(),
WEATHER_FALLOUT = new /datum/weather/virgo3c/fallout()
)
roundstart_weather_chances = list(
WEATHER_CLEAR = 50,
WEATHER_OVERCAST = 10,
WEATHER_RAIN = 1,
WEATHER_LIGHT_SNOW = 1
)
/datum/weather/virgo3c
name = "virgo3c"
temp_high = 283.15 // 10c
temp_low = 273.15 // 0c
/datum/weather/virgo3c/clear
name = "clear"
transition_chances = list(
WEATHER_CLEAR = 60,
WEATHER_OVERCAST = 20,
WEATHER_LIGHT_SNOW = 1,
WEATHER_BLOODMOON = 1,
WEATHER_EMBERFALL = 0.5)
transition_messages = list(
"The sky clears up.",
"The sky is visible.",
"The weather is calm."
)
sky_visible = TRUE
observed_message = "The sky is clear."
/datum/weather/virgo3c/overcast
name = "overcast"
temp_high = 283.15 // 10c
temp_low = 273.15 // 0c
light_modifier = 0.8
transition_chances = list(
WEATHER_CLEAR = 25,
WEATHER_OVERCAST = 50,
WEATHER_RAIN = 5,
WEATHER_LIGHT_SNOW = 5
)
observed_message = "It is overcast, all you can see are clouds."
transition_messages = list(
"All you can see above are clouds.",
"Clouds cut off your view of the sky.",
"It's very cloudy."
)
/datum/weather/virgo3c/light_snow
name = "light snow"
icon_state = "snowfall_light"
temp_high = 268.15 // -5c
temp_low = 263.15 // -10c
light_modifier = 0.7
transition_chances = list(
WEATHER_LIGHT_SNOW = 75,
WEATHER_OVERCAST = 25,
WEATHER_SNOW = 10,
WEATHER_RAIN = 5
)
observed_message = "It is snowing lightly."
transition_messages = list(
"Small snowflakes begin to fall from above.",
"It begins to snow lightly.",
)
/datum/weather/virgo3c/snow
name = "moderate snow"
icon_state = "snowfall_med"
temp_high = 268.15 // -5c
temp_low = 263.15 // -10c
wind_high = 2
wind_low = 0
light_modifier = 0.5
flight_failure_modifier = 5
transition_chances = list(
WEATHER_SNOW = 75,
WEATHER_LIGHT_SNOW = 25,
WEATHER_BLIZZARD = 5
)
observed_message = "It is snowing."
transition_messages = list(
"It's starting to snow.",
"The air feels much colder as snowflakes fall from above."
)
outdoor_sounds_type = /datum/looping_sound/weather/outside_snow
indoor_sounds_type = /datum/looping_sound/weather/inside_snow
/datum/weather/virgo3c/blizzard
name = "blizzard"
icon_state = "snowfall_heavy"
temp_high = 268.15 // -5c
temp_low = 263.15 // -10c
wind_high = 4
wind_low = 2
light_modifier = 0.3
flight_failure_modifier = 10
transition_chances = list(
WEATHER_BLIZZARD = 50,
WEATHER_SNOW = 50
)
observed_message = "A blizzard blows snow everywhere."
transition_messages = list(
"Strong winds howl around you as a blizzard appears.",
"It starts snowing heavily, and it feels extremly cold now."
)
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
/datum/weather/virgo3c/rain
name = "rain"
icon_state = "rain"
temp_high = 283.15 // 10c
temp_low = 273.15 // 0c
wind_high = 2
wind_low = 1
light_modifier = 0.5
effect_message = "<span class='warning'>Rain falls on you.</span>"
transition_chances = list(
WEATHER_OVERCAST = 25,
WEATHER_RAIN = 50,
WEATHER_STORM = 10,
WEATHER_LIGHT_SNOW = 5
)
observed_message = "It is raining."
transition_messages = list(
"The sky is dark, and rain falls down upon you."
)
/datum/weather/virgo3c/rain/process_effects()
..()
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.is_outdoors())
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain patters softly onto your umbrella.</span>")
continue
L.water_act(1)
if(show_message)
to_chat(L, effect_message)
/datum/weather/virgo3c/storm
name = "storm"
icon_state = "storm"
temp_high = 283.15 // 10c
temp_low = 273.15 // 0c
wind_high = 4
wind_low = 2
light_modifier = 0.3
flight_failure_modifier = 10
effect_message = "<span class='warning'>Rain falls on you, drenching you in water.</span>"
var/next_lightning_strike = 0 // world.time when lightning will strike.
var/min_lightning_cooldown = 5 SECONDS
var/max_lightning_cooldown = 1 MINUTE
observed_message = "An intense storm pours down over the region."
transition_messages = list(
"You feel intense winds hit you as the weather takes a turn for the worst.",
"Loud thunder is heard in the distance.",
"A bright flash heralds the approach of a storm."
)
transition_chances = list(
WEATHER_STORM = 50,
WEATHER_RAIN = 50,
WEATHER_BLIZZARD = 5,
WEATHER_HAIL = 5
)
/datum/weather/virgo3c/storm/process_effects()
..()
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.is_outdoors())
continue // They're indoors, so no need to rain on them.
// If they have an open umbrella, it'll guard from rain
var/obj/item/weapon/melee/umbrella/U = L.get_active_hand()
if(!istype(U) || !U.open)
U = L.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(L, "<span class='notice'>Rain showers loudly onto your umbrella!</span>")
continue
L.water_act(2)
if(show_message)
to_chat(L, effect_message)
handle_lightning()
// This gets called to do lightning periodically.
// There is a seperate function to do the actual lightning strike, so that badmins can play with it.
/datum/weather/virgo3c/storm/proc/handle_lightning()
if(world.time < next_lightning_strike)
return // It's too soon to strike again.
next_lightning_strike = world.time + rand(min_lightning_cooldown, max_lightning_cooldown)
var/turf/T = pick(holder.our_planet.planet_floors) // This has the chance to 'strike' the sky, but that might be a good thing, to scare reckless pilots.
lightning_strike(T)
/datum/weather/virgo3c/hail
name = "hail"
icon_state = "hail"
temp_high = 268.15 // -5c
temp_low = 263.15 // -10c
light_modifier = 0.3
flight_failure_modifier = 15
timer_low_bound = 2
timer_high_bound = 5
effect_message = "<span class='warning'>The hail smacks into you!</span>"
transition_chances = list(
WEATHER_HAIL = 25,
WEATHER_RAIN = 75
)
observed_message = "Ice is falling from the sky."
transition_messages = list(
"Ice begins to fall from the sky.",
"It begins to hail.",
"An intense chill is felt, and chunks of ice start to fall from the sky, towards you."
)
/datum/weather/virgo3c/hail/process_effects()
..()
for(var/mob/living/carbon/H as anything in human_mob_list)
if(H.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(H)
if(!T.is_outdoors())
continue // They're indoors, so no need to pelt them with ice.
// If they have an open umbrella, it'll guard from hail
var/obj/item/weapon/melee/umbrella/U = H.get_active_hand()
if(!istype(U) || !U.open)
U = H.get_inactive_hand()
if(istype(U) && U.open)
if(show_message)
to_chat(H, "<span class='notice'>Hail patters onto your umbrella.</span>")
continue
var/target_zone = pick(BP_ALL)
var/amount_blocked = H.run_armor_check(target_zone, "melee")
var/amount_soaked = H.get_armor_soak(target_zone, "melee")
var/damage = rand(1,3)
if(amount_blocked >= 30)
continue // No need to apply damage. Hardhats are 30. They should probably protect you from hail on your head.
//Voidsuits are likewise 40, and riot, 80. Clothes are all less than 30.
if(amount_soaked >= damage)
continue // No need to apply damage.
H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail")
if(show_message)
to_chat(H, effect_message)
/datum/weather/virgo3c/blood_moon
name = "blood moon"
light_modifier = 0.5
light_color = "#FF0000"
temp_high = 283.15 // 10c
temp_low = 273.15 // 0c
flight_failure_modifier = 25
transition_chances = list(
WEATHER_BLOODMOON = 75,
WEATHER_CLEAR = 25
)
observed_message = "Everything is red. Something really ominous is going on."
transition_messages = list(
"The sky turns blood red!"
)
outdoor_sounds_type = /datum/looping_sound/weather/wind
indoor_sounds_type = /datum/looping_sound/weather/wind/indoors
// Ash and embers fall forever, such as from a volcano or something.
/datum/weather/virgo3c/emberfall
name = "emberfall"
icon_state = "ashfall_light"
light_modifier = 0.7
light_color = "#880000"
temp_high = 293.15 // 20c
temp_low = 283.15 // 10c
flight_failure_modifier = 20
transition_chances = list(
WEATHER_ASH_STORM = 100
)
observed_message = "Soot, ash, and embers float down from above."
transition_messages = list(
"Gentle embers waft down around you like black snow. A wall of dark, glowing ash approaches in the distance..."
)
outdoor_sounds_type = /datum/looping_sound/weather/wind
indoor_sounds_type = /datum/looping_sound/weather/wind/indoors
// Like the above but a lot more harmful.
/datum/weather/virgo3c/ash_storm
name = "ash storm"
icon_state = "ashfall_heavy"
light_modifier = 0.1
light_color = "#FF0000"
temp_high = 313.15 // 40c
temp_low = 303.15 // 30c
wind_high = 6
wind_low = 3
flight_failure_modifier = 50
transition_chances = list(
WEATHER_ASH_STORM = 5,
WEATHER_CLEAR = 95
)
observed_message = "All that can be seen is black smoldering ash."
transition_messages = list(
"Smoldering clouds of scorching ash billow down around you!"
)
// Lets recycle.
outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard
indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard
/datum/weather/virgo3c/ash_storm/process_effects()
..()
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
if(!T.is_outdoors())
continue // They're indoors, so no need to burn them with ash.
else if (isanimal(L))
continue //Don't murder the wildlife, they live here it's fine
L.inflict_heat_damage(1)
to_chat(L, "<span class='warning'>Smoldering ash singes you!</span>")
// Totally radical.
/datum/weather/virgo3c/fallout
name = "fallout"
icon_state = "fallout"
light_modifier = 0.7
light_color = "#CCFFCC"
flight_failure_modifier = 30
transition_chances = list(
WEATHER_FALLOUT = 100
)
observed_message = "Radioactive soot and ash rains down from the heavens."
transition_messages = list(
"Radioactive soot and ash start to float down around you, contaminating whatever they touch."
)
outdoor_sounds_type = /datum/looping_sound/weather/wind
indoor_sounds_type = /datum/looping_sound/weather/wind/indoors
// How much radiation a mob gets while on an outside tile.
var/direct_rad_low = RAD_LEVEL_LOW
var/direct_rad_high = RAD_LEVEL_MODERATE
// How much radiation is bursted onto a random tile near a mob.
var/fallout_rad_low = RAD_LEVEL_HIGH
var/fallout_rad_high = RAD_LEVEL_VERY_HIGH
/datum/weather/virgo3c/fallout/process_effects()
..()
for(var/mob/living/L as anything in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
irradiate_nearby_turf(L)
var/turf/T = get_turf(L)
if(!T.is_outdoors())
continue // They're indoors, so no need to irradiate them with fallout.
L.rad_act(rand(direct_rad_low, direct_rad_high))
// This makes random tiles near people radioactive for awhile.
// Tiles far away from people are left alone, for performance.
/datum/weather/virgo3c/fallout/proc/irradiate_nearby_turf(mob/living/L)
if(!istype(L))
return
var/list/turfs = RANGE_TURFS(world.view, L)
var/turf/T = pick(turfs) // We get one try per tick.
if(!istype(T))
return
if(T.is_outdoors())
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
/turf/unsimulated/wall/planetary/virgo3c
name = "impassable rock"
desc = "It's quite impassable"
icon = 'icons/turf/walls.dmi'
icon_state = "rock-dark"
alpha = 0xFF
VIRGO3C_SET_ATMOS
VIRGO3C_TURF_CREATE(/turf/simulated/mineral/cave)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/outdoors/newdirt)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/outdoors/newdirt_nograss)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/outdoors/sidewalk)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/outdoors/sidewalk/side)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/outdoors/sidewalk/slab)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/water)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/tiled)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/reinforced)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/glass/reinforced)
VIRGO3C_TURF_CREATE(/turf/simulated/open)
VIRGO3C_TURF_CREATE(/turf/simulated/floor/tiled/dark)
VIRGO3C_TURF_CREATE(/turf/simulated/mineral)
VIRGO3C_TURF_CREATE(/turf/simulated/floor)
/turf/simulated/floor/outdoors/grass/virgo3c
VIRGO3C_SET_ATMOS
var/list/grass_types = list(
/obj/structure/flora/ausbushes/sparsegrass = 50,
/obj/structure/flora/ausbushes/fullgrass = 50,
/obj/structure/flora/ausbushes/brflowers = 1,
/obj/structure/flora/ausbushes/ppflowers = 1,
/obj/structure/flora/ausbushes/ywflowers = 1
)
/turf/simulated/floor/outdoors/grass/forest/virgo3c
VIRGO3C_SET_ATMOS
var/tree_chance = 5
var/animal_chance = 0.5
var/animal_types = list(
/mob/living/simple_mob/vore/alienanimals/teppi = 5,
/mob/living/simple_mob/vore/redpanda = 20,
/mob/living/simple_mob/vore/redpanda/fae = 1,
/mob/living/simple_mob/vore/sheep = 10,
/mob/living/simple_mob/vore/rabbit/black = 10,
/mob/living/simple_mob/vore/rabbit/white = 10,
/mob/living/simple_mob/vore/rabbit/brown = 10,
/mob/living/simple_mob/vore/leopardmander = 1,
/mob/living/simple_mob/vore/horse/big = 5,
/mob/living/simple_mob/vore/bigdragon/friendly = 0.5,
/mob/living/simple_mob/vore/alienanimals/dustjumper = 10
)
/turf/simulated/floor/outdoors/grass/forest/virgo3c/Initialize()
if(tree_chance && prob(tree_chance) && !check_density())
new /obj/structure/flora/tree/bigtree(src)
if(animal_chance && prob(animal_chance) && !check_density())
var/animal_type = pickweight(animal_types)
new animal_type(src)
. = ..()
//VIRGO3C_SET_ATMOS()
File diff suppressed because it is too large Load Diff
+51
View File
@@ -0,0 +1,51 @@
/turf/simulated/mineral/vacuum/gb_mine/make_ore(var/rare_ore)
if(mineral)
return
var/mineral_name
if(rare_ore)
mineral_name = pickweight(list(
"marble" = 3,
"uranium" = 10,
"platinum" = 10,
"hematite" = 20,
"carbon" = 5,
"diamond" = 1,
"gold" = 8,
"silver" = 8,
"phoron" = 18,
"lead" = 2,
"verdantium" = 1))
else
mineral_name = pickweight(list(
"marble" = 2,
"uranium" = 5,
"platinum" = 5,
"hematite" = 35,
"carbon" = 5,
"gold" = 3,
"silver" = 3,
"phoron" = 25,
"lead" = 1))
if(mineral_name && (mineral_name in GLOB.ore_data))
mineral = GLOB.ore_data[mineral_name]
UpdateMineral()
update_icon()
/datum/random_map/noise/ore/mining
descriptor = "asteroid field ore distribution map"
deep_val = 0.2
rare_val = 0.1
/datum/random_map/noise/ore/mining/check_map_sanity()
return 1 //Totally random, but probably beneficial.
/area/gb_mine/
ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
base_turf = /turf/simulated/mineral/floor/vacuum
/area/gb_mine/unexplored
name = "Virgo 3c Underground"
icon_state = "unexplored"
/area/gb_mine/explored
name = "Virgo 3c Underground"
icon_state = "explored"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+20188 -19697
View File
File diff suppressed because it is too large Load Diff
+19839 -19755
View File
File diff suppressed because it is too large Load Diff
+509 -481
View File
File diff suppressed because it is too large Load Diff
+23
View File
@@ -0,0 +1,23 @@
#if !defined(USING_MAP_DATUM)
#include "groundbase_areas.dm"
#include "groundbase_defines.dm"
// #include "stellar_delight_shuttle_defs.dm"
// #include "stellar_delight_telecomms.dm"
// #include "stellar_delight_things.dm"
#include "..\offmap_vr\common_offmaps.dm"
#include "..\tether\tether_jobs.dm"
#if !AWAY_MISSION_TEST //Don't include these for just testing away missions
#include "gb-z1.dmm"
#include "gb-z2.dmm"
#include "gb-z3.dmm"
#endif
#define USING_MAP_DATUM /datum/map/groundbase
#elif !defined(MAP_OVERRIDE)
#warn A map has already been included, ignoring Groundbase
#endif
+22
View File
@@ -0,0 +1,22 @@
/area/groundbase
name = "Groundbase"
icon = 'icons/turf/areas_vr.dmi'
icon_state = "blublacir"
requires_power = TRUE
dynamic_lighting = TRUE
ambience = AMBIENCE_MAINTENANCE
/area/maintenance/groundbase
name = "Maintenance"
icon = 'icons/turf/areas_vr.dmi'
icon_state = "purblasqu"
flags = RAD_SHIELDED
ambience = AMBIENCE_MAINTENANCE
/area/groundbase/level1
name = "Rascal's Pass Level 1"
/area/groundbase/level2
name = "Rascal's Pass Level 2"
/area/groundbase/level3
name = "Rascal's Pass Level 3"
+353
View File
@@ -0,0 +1,353 @@
//Normal map defs
#define Z_LEVEL_GB_BOTTOM 1
#define Z_LEVEL_GB_MIDDLE 2
#define Z_LEVEL_GB_TOP 3
#define Z_LEVEL_CENTCOM 4
#define Z_LEVEL_MISC 5
#define Z_LEVEL_MINING 6
#define Z_LEVEL_BEACH 7
#define Z_LEVEL_BEACH_CAVE 8
#define Z_LEVEL_AEROSTAT 9
#define Z_LEVEL_AEROSTAT_SURFACE 10
#define Z_LEVEL_DEBRISFIELD 11
#define Z_LEVEL_FUELDEPOT 12
#define Z_LEVEL_OFFMAP1 13
#define Z_LEVEL_GATEWAY 14
#define Z_LEVEL_OM_ADVENTURE 15
//Camera networks
#define NETWORK_HALLS "Halls"
/datum/map/groundbase/New()
..()
var/choice = pickweight(list(
"logo1" = 50,
"logo2" = 50,
"gateway" = 5
))
if(choice)
lobby_screens = list(choice)
/datum/map/groundbase
name = "RascalsPass"
full_name = "NSB Rascal's Pass"
path = "groundbase"
use_overmap = TRUE
overmap_z = Z_LEVEL_MISC
overmap_size = 25
overmap_event_areas = 25
usable_email_tlds = list("virgo.nt")
zlevel_datum_type = /datum/map_z_level/groundbase
lobby_icon = 'icons/misc/title_vr.dmi'
lobby_screens = list("logo1")
id_hud_icons = 'icons/mob/hud_jobs_vr.dmi'
holomap_smoosh = list(list(
Z_LEVEL_GB_BOTTOM,
Z_LEVEL_GB_MIDDLE,
Z_LEVEL_GB_TOP))
station_name = "NSB Rascal's Pass"
station_short = "Rascal's Pass"
facility_type = "base"
dock_name = "Virgo-3B Colony"
dock_type = "surface"
boss_name = "Central Command"
boss_short = "CentCom"
company_name = "NanoTrasen"
company_short = "NT"
starsys_name = "Virgo-Erigone"
shuttle_docked_message = "The scheduled shuttle to the %dock_name% has arrived. It will depart in approximately %ETD%."
shuttle_leaving_dock = "The shuttle has departed. Estimate %ETA% until arrival at %dock_name%."
shuttle_called_message = "A scheduled crew transfer to the %dock_name% is occuring. The shuttle will arrive shortly. Those departing should proceed to deck three, aft within %ETA%."
shuttle_recall_message = "The scheduled crew transfer has been cancelled."
shuttle_name = "Crew Transport"
emergency_shuttle_docked_message = "The evacuation shuttle has arrived. You have approximately %ETD% to board the shuttle."
emergency_shuttle_leaving_dock = "The emergency shuttle has departed. Estimate %ETA% until arrival at %dock_name%."
emergency_shuttle_called_message = "An emergency evacuation has begun, and an off-schedule shuttle has been called. It will arrive at deck three, aft in approximately %ETA%."
emergency_shuttle_recall_message = "The evacuation shuttle has been recalled."
station_networks = list(
NETWORK_CARGO,
NETWORK_CIRCUITS,
NETWORK_CIVILIAN,
NETWORK_COMMAND,
NETWORK_ENGINE,
NETWORK_ENGINEERING,
NETWORK_EXPLORATION,
NETWORK_MEDICAL,
NETWORK_MINE,
NETWORK_RESEARCH,
NETWORK_RESEARCH_OUTPOST,
NETWORK_ROBOTS,
NETWORK_SECURITY,
NETWORK_TELECOM,
NETWORK_HALLS
)
secondary_networks = list(
NETWORK_ERT,
NETWORK_MERCENARY,
NETWORK_THUNDER,
NETWORK_COMMUNICATORS,
NETWORK_ALARM_ATMOS,
NETWORK_ALARM_POWER,
NETWORK_ALARM_FIRE,
NETWORK_TALON_HELMETS,
NETWORK_TALON_SHIP
)
bot_patrolling = FALSE
allowed_spawns = list("Gateway","Cryogenic Storage","Cyborg Storage","ITV Talon Cryo")
spawnpoint_died = /datum/spawnpoint/cryo
spawnpoint_left = /datum/spawnpoint/gateway
spawnpoint_stayed = /datum/spawnpoint/cryo
meteor_strike_areas = list(
/area/groundbase/level3,
/area/groundbase/level2,
/area/groundbase/level1
)
default_skybox = /datum/skybox_settings/groundbase
unit_test_exempt_areas = list(
// /area/stellardelight/deck1/exterior,
// /area/stellardelight/deck1/exploshuttle,
// /area/stellardelight/deck1/miningshuttle
)
unit_test_exempt_from_atmos = list() //it maint
lateload_z_levels = list(
list("Groundbase - Central Command"),
list("Groundbase - Misc"), //Shuttle transit zones, holodeck templates, OM
list("V3c Underground"),
list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"),
list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface"),
list("Debris Field - Z1 Space"),
list("Fuel Depot - Z1 Space"),
list("Offmap Ship - Talon V2")
)
lateload_gateway = list(
list("Carp Farm"),
list("Snow Field"),
list("Listening Post"),
list(list("Honleth Highlands A", "Honleth Highlands B")),
list("Arynthi Lake Underground A","Arynthi Lake A"),
list("Arynthi Lake Underground B","Arynthi Lake B"),
list("Eggnog Town Underground","Eggnog Town"),
list("Wild West")
)
lateload_overmap = list(
list("Grass Cave")
)
ai_shell_restricted = TRUE
ai_shell_allowed_levels = list(
Z_LEVEL_GB_BOTTOM,
Z_LEVEL_GB_MIDDLE,
Z_LEVEL_GB_TOP,
Z_LEVEL_MISC,
Z_LEVEL_BEACH,
Z_LEVEL_AEROSTAT
)
planet_datums_to_make = list(
/datum/planet/virgo3b,
/datum/planet/virgo3c,
/datum/planet/virgo4)
/datum/map/groundbase/get_map_info()
. = list()
. += "[full_name] is a recently established base on one of Virgo 3's moons."
return jointext(., "<br>")
/datum/map/groundbase/perform_map_generation()
new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_MINING, world.maxx, world.maxy) // Create the mining Z-level.
new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_MINING, 64, 64) // Create the mining ore distribution map.
return 1
/datum/skybox_settings/groundbase
icon_state = "space5"
use_stars = FALSE
/datum/planet/virgo3b
expected_z_levels = list(Z_LEVEL_CENTCOM)
/datum/planet/virgo3c
expected_z_levels = list(
Z_LEVEL_GB_BOTTOM,
Z_LEVEL_GB_MIDDLE,
Z_LEVEL_GB_TOP
)
/datum/planet/virgo4
expected_z_levels = list(
Z_LEVEL_BEACH
)
/obj/effect/landmark/map_data/groundbase
height = 3
/obj/effect/overmap/visitable/sector/virgo3b
name = "Virgo 3B"
desc = "Full of phoron, and home to the NSB Adephagia."
scanner_desc = @{"[i]Registration[/i]: NSB Adephagia
[i]Class[/i]: Installation
[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
known = TRUE
in_space = TRUE
icon = 'icons/obj/overmap_vr.dmi'
icon_state = "virgo3b"
skybox_icon = 'icons/skybox/virgo3b.dmi'
skybox_icon_state = "small"
skybox_pixel_x = 0
skybox_pixel_y = 0
initial_generic_waypoints = list()
initial_restricted_waypoints = list()
extra_z_levels = list()
/obj/effect/overmap/visitable/sector/virgo3c
name = "Virgo 3C"
desc = "A small, volcanically active moon."
scanner_desc = @{"[i]Registration[/i]: NSB Rascal's Pass
[i]Class[/i]: Installation
[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
known = TRUE
in_space = TRUE
icon = 'icons/obj/overmap.dmi'
icon_state = "lush"
skybox_icon = null
skybox_icon_state = null
skybox_pixel_x = 0
skybox_pixel_y = 0
initial_generic_waypoints = list()
initial_restricted_waypoints = list()
extra_z_levels = list()
// For making the 6-in-1 holomap, we calculate some offsets
#define SHIP_MAP_SIZE 140 // Width and height of compiled in tether z levels.
#define SHIP_HOLOMAP_CENTER_GUTTER 40 // 40px central gutter between columns
#define SHIP_HOLOMAP_MARGIN_X ((HOLOMAP_ICON_SIZE - (2*SHIP_MAP_SIZE) - SHIP_HOLOMAP_CENTER_GUTTER) / 2) // 80
#define SHIP_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (2*SHIP_MAP_SIZE)) / 2) // 30
// We have a bunch of stuff common to the station z levels
/datum/map_z_level/groundbase
flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_XENOARCH_EXEMPT|MAP_LEVEL_PERSIST
holomap_legend_x = 220
holomap_legend_y = 160
/datum/map_z_level/groundbase/level_one
z = Z_LEVEL_GB_BOTTOM
name = "Level 1"
base_turf = /turf/simulated/floor/outdoors/newdirt_nograss/virgo3c
transit_chance = 0
holomap_offset_x = SHIP_HOLOMAP_MARGIN_X
holomap_offset_y = SHIP_HOLOMAP_MARGIN_Y
/datum/map_z_level/groundbase/deck_two
z = Z_LEVEL_GB_MIDDLE
name = "Level 2"
base_turf = /turf/simulated/open/virgo3c
transit_chance = 0
holomap_offset_x = SHIP_HOLOMAP_MARGIN_X
holomap_offset_y = SHIP_HOLOMAP_MARGIN_Y + SHIP_MAP_SIZE
/datum/map_z_level/groundbase/deck_three
z = Z_LEVEL_GB_TOP
name = "Level 3"
base_turf = /turf/simulated/open/virgo3c
transit_chance = 0
holomap_offset_x = HOLOMAP_ICON_SIZE - SHIP_HOLOMAP_MARGIN_X - SHIP_MAP_SIZE
holomap_offset_y = SHIP_HOLOMAP_MARGIN_Y + SHIP_MAP_SIZE
/datum/map_template/gb_lateload
allow_duplicates = FALSE
var/associated_map_datum
/////STATIC LATELOAD/////
/datum/map_template/gb_lateload/on_map_loaded(z)
if(!associated_map_datum || !ispath(associated_map_datum))
log_game("Extra z-level [src] has no associated map datum")
return
new associated_map_datum(using_map, z)
/datum/map_template/gb_lateload/gb_centcom
name = "Groundbase - Central Command"
desc = "Central Command lives here!"
mappath = 'gb-centcomm.dmm'
associated_map_datum = /datum/map_z_level/gb_lateload/gb_centcom
/datum/map_z_level/gb_lateload/gb_centcom
z = Z_LEVEL_CENTCOM
name = "Centcom"
flags = MAP_LEVEL_ADMIN|MAP_LEVEL_SEALED|MAP_LEVEL_CONTACT|MAP_LEVEL_XENOARCH_EXEMPT
base_turf = /turf/simulated/floor/outdoors/rocks
/area/centcom //Just to try to make sure there's not space!!!
base_turf = /turf/simulated/floor/outdoors/rocks
/datum/map_template/gb_lateload/gb_misc
name = "Groundbase - Misc"
desc = "Misc areas, like some transit areas, holodecks, merc area."
mappath = 'gb-misc.dmm'
associated_map_datum = /datum/map_z_level/gb_lateload/misc
/datum/map_z_level/gb_lateload/misc
z = Z_LEVEL_MISC
name = "Misc"
flags = MAP_LEVEL_ADMIN|MAP_LEVEL_SEALED|MAP_LEVEL_CONTACT|MAP_LEVEL_XENOARCH_EXEMPT
#include "gb-mining.dm"
/datum/map_template/gb_lateload/mining
name = "V3c Underground"
desc = "The caves underneath the survace of Virgo 3C"
mappath = 'maps/groundbase/gb-mining.dmm'
associated_map_datum = /datum/map_z_level/gb_lateload/mining
/datum/map_template/gb_lateload/mining/on_map_loaded(z)
. = ..()
// seed_submaps(list(Z_LEVEL_MINING), 60, /area/gb_mine/unexplored, /datum/map_template/space_rocks) //POI seeding
new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, Z_LEVEL_MINING, world.maxx - 4, world.maxy - 4)
new /datum/random_map/noise/ore/mining(null, 1, 1, Z_LEVEL_MINING, 64, 64)
/datum/map_z_level/gb_lateload/mining
z = Z_LEVEL_MINING
name = "V3c Underground"
base_turf = /turf/space
flags = MAP_LEVEL_PLAYER|MAP_LEVEL_CONTACT|MAP_LEVEL_CONSOLES
#include "../expedition_vr/aerostat/_aerostat.dm"
/datum/map_template/common_lateload/away_aerostat
name = "Remmi Aerostat - Z1 Aerostat"
desc = "The Virgo 2 Aerostat away mission."
mappath = 'maps/expedition_vr/aerostat/aerostat.dmm'
associated_map_datum = /datum/map_z_level/common_lateload/away_aerostat
+2 -1
View File
@@ -3414,6 +3414,7 @@
#include "code\modules\planet\sun.dm"
#include "code\modules\planet\time.dm"
#include "code\modules\planet\virgo3b_vr.dm"
#include "code\modules\planet\virgo3c_vr.dm"
#include "code\modules\planet\virgo4_vr.dm"
#include "code\modules\planet\weather.dm"
#include "code\modules\planet\weather_vr.dm"
@@ -4097,6 +4098,7 @@
#include "maps\expedition_vr\beach\submaps\mountains.dm"
#include "maps\expedition_vr\beach\submaps\mountains_areas.dm"
#include "maps\gateway_archive_vr\blackmarketpackers.dm"
#include "maps\groundbase\groundbase.dm"
#include "maps\offmap_vr\om_ships\abductor.dm"
#include "maps\southern_cross\items\clothing\sc_accessory.dm"
#include "maps\southern_cross\items\clothing\sc_suit.dm"
@@ -4104,7 +4106,6 @@
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
#include "maps\stellardelight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"