Merge pull request #12564 from Very-Soft/groundbase

Rascal's Pass
This commit is contained in:
Casey
2022-04-01 12:58:57 -04:00
committed by GitHub
24 changed files with 181078 additions and 21 deletions
+1
View File
@@ -62,6 +62,7 @@
#define HOLOMAP_AREACOLOR_ARRIVALS "#0000FFCC"
#define HOLOMAP_AREACOLOR_ESCAPE "#FF0000CC"
#define HOLOMAP_AREACOLOR_DORMS "#CCCC0099"
#define HOLOMAP_AREACOLOR_CIV "#3ea800" //VOREStation Addition
#define LIST_NUMERIC_SET(L, I, V) if(!L) { L = list(); } if (L.len < I) { L.len = I; } L[I] = V
@@ -69,7 +69,7 @@
desc = "Concrete shaped into a path!"
icon = 'icons/turf/outdoors_vr.dmi'
icon_state = "sidewalk"
edge_blending_priority = 1
edge_blending_priority = -1
movement_cost = -0.5
initial_flooring = /decl/flooring/outdoors/sidewalk
can_dirty = TRUE
@@ -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
@@ -141,14 +141,14 @@
)
heat_discomfort_level = 295
heat_discomfort_level = 320 //VOREStation Edit - 46c (higher than normal humans) Don't spam red text if you're slightly warm.
heat_discomfort_strings = list(
"You feel soothingly warm.",
"You feel the heat sink into your bones.",
"You feel warm enough to take a nap."
)
cold_discomfort_level = 292
cold_discomfort_level = 288.15 //VOREStation Edit - 15c Give a little bit of wiggle room here come on.
cold_discomfort_strings = list(
"You feel chilly.",
"You feel sluggish and cold.",
@@ -16,7 +16,7 @@
/mob/living/simple_mob/vore/alienanimals/catslug
name = "catslug"
desc = "A noodley bodied creature with thin arms and legs, and gloomy dark eyes."
tt_desc = "Mollusca Feline"
tt_desc = "Mollusca Feline"
icon_state = "catslug"
icon_living = "catslug"
icon_dead = "catslug_dead"
@@ -48,7 +48,7 @@
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/catslug
say_list_type = /datum/say_list/catslug
player_msg = "You have escaped the foul weather, into this much more pleasant place. You are an intelligent creature capable of more than most think. You can pick up and use many things, and even carry some of them with you into the vents, which you can use to move around quickly. You're quiet and capable, you speak with your hands and your deeds! <br>- - - - -<br> <span class='notice'>Keep in mind, your goal should generally be to survive. You're expected to follow the same rules as everyone else, so don't go self antagging without permission from the staff team, but you are able and capable of defending yourself from those who would attack you for no reason.</span>"
has_langs = list("Sign Language")
var/picked_color = FALSE
@@ -160,9 +160,9 @@
if(user != src)
to_chat(user, "<span class='notice'>\The [user] feeds \the [O] to you.</span>")
playsound(src, 'sound/items/eatfood.ogg', 75, 1)
/mob/living/simple_mob/vore/alienanimals/catslug/attack_hand(mob/living/carbon/human/M as mob)
if(stat == DEAD)
return ..()
if(M.a_intent != I_HELP)
@@ -211,7 +211,7 @@
else
return ..()
/mob/living/simple_mob/vore/alienanimals/catslug/Login() //If someone plays as us let's just be a passive mob in case accidents happen if the player D/Cs
/mob/living/simple_mob/vore/alienanimals/catslug/Login() //If someone plays as us let's just be a passive mob in case accidents happen if the player D/Cs
. = ..()
ai_holder.hostile = FALSE
ai_holder.wander = FALSE
@@ -240,7 +240,7 @@
holder.lay_down()
go_sleep()
addtimer(CALLBACK(src, .proc/consider_awakening), rand(1 MINUTE, 5 MINUTES), TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE)
else
else
return ..()
@@ -307,12 +307,12 @@
holder_type = /obj/item/weapon/holder/catslug/spaceslug
makes_dirt = 0
say_list_type = /datum/say_list/catslug/spaceslug
minbodytemp = 0 // Shamelessly stolen temp & atmos tolerances from the space cat.
maxbodytemp = 900
heat_damage_per_tick = 3
maxbodytemp = 900
heat_damage_per_tick = 3
cold_damage_per_tick = 2
min_oxy = 0
max_oxy = 0
min_tox = 0
@@ -321,9 +321,9 @@
max_co2 = 0
min_n2 = 0
max_n2 = 0
player_msg = "You are an intelligent creature capable of more than most think, clad in a spacesuit that protects you from the ravages of vacuum and hostile atmospheres alike. You can pick up and use many things, and even carry some of them with you into the vents, which you can use to move around quickly. You're quiet and capable, you speak with your hands and your deeds! <br>- - - - -<br> <span class='notice'>Keep in mind, your goal should generally be to survive. You're expected to follow the same rules as everyone else, so don't go self antagging without permission from the staff team, but you are able and capable of defending yourself from those who would attack you for no reason.</span>"
has_langs = list("Sign Language")
/datum/say_list/catslug/spaceslug
@@ -332,11 +332,11 @@
/mob/living/simple_mob/vore/alienanimals/catslug/spaceslug/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs += /mob/living/proc/hide
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //I don't even want to imagine what the colour change proc would do to their sprite, not to mention ghosts would need to be forced into the catslug so this is more just a safety net than anything
/mob/living/simple_mob/vore/alienanimals/catslug/spaceslug/attack_hand(mob/living/carbon/human/M as mob)
if(stat == DEAD)
return ..()
if(M.a_intent != I_HELP)
@@ -387,4 +387,308 @@
/obj/item/weapon/holder/catslug/spaceslug
item_state = "spaceslug"
//Engineer catslug
/datum/category_item/catalogue/fauna/catslug/engislug
name = "Alien Wildlife - Catslug - Engineer O'Brimn"
desc = "A resident worker at the NSB Rascal's Pass, Engineer O'Brimn \
keeps the facilities pipework and machinery maintained between shifts. - \
The Catslug is an omnivorous terrestrial creature.\
Exhibiting properties of both a cat and a slug (hence its name)\
it moves somewhat awkwardly. However, the unique qualities of\
its body make it exceedingly flexible and smooth, allowing it to\
wiggle into and move effectively in even extremely tight spaces.\
Additionally, it has surprisingly capable hands, and moves quite\
well on two legs or four. Caution is advised when interacting\
with these creatures, they are quite intelligent, and proficient\
tool users."
value = CATALOGUER_REWARD_TRIVIAL //Local catslugs worth less than rarer ones
/mob/living/simple_mob/vore/alienanimals/catslug/engislug
name = "Engineer O'Brimn"
desc = "A yellow-furred noodley bodied creature with thin arms and legs, and gloomy dark eyes. This one seems to be wearing a too-big high visibility vest and a full-face hardhat."
tt_desc = "Mollusca Felis Munitor"
icon_state = "engislug"
icon_living = "engislug"
icon_rest = "engislug_rest"
icon_dead = "engislug_dead"
digestable = 0
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/engislug)
holder_type = /obj/item/weapon/holder/catslug/engislug
makes_dirt = 0
say_list_type = /datum/say_list/catslug/engislug
minbodytemp = 200
maxbodytemp = 600 //engislug can survive a little heat, as a treat
heat_damage_per_tick = 1
cold_damage_per_tick = 2
min_oxy = 16 //Require atleast 16kPA oxygen
max_oxy = 0
min_tox = 0 //should still suffer hypoxia, but the mask ought to filter out not-nice gases for them
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
has_langs = list("Sign Language")
/datum/say_list/catslug/engislug
speak = list("Have any porl?", "What is that?", "Phoroncheck!", "Thump is mean work fine!", "What are you doing?", "How did you get here?", "Don't breathe in the spicy purple.", "Zap-zap ball bad.", "WAOW!", "The pipes make sense.")
/mob/living/simple_mob/vore/alienanimals/catslug/engislug/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //I don't even want to imagine what the colour change proc would do to their sprite, not to mention ghosts would need to be forced into the catslug so this is more just a safety net than anything
/mob/living/simple_mob/vore/alienanimals/catslug/engislug/attack_hand(mob/living/carbon/human/M as mob)
if(stat == DEAD)
return ..()
if(M.a_intent != I_HELP)
return ..()
playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
if(resting)
M.visible_message("<span class='notice'>\The [M.name] shakes \the [src] awake from their nap.</span>","<span class='notice'>You shake \the [src] awake!</span>")
lay_down()
ai_holder.go_wake()
return
if(M.zone_sel.selecting == BP_HEAD)
M.visible_message( \
"<span class='notice'>[M] pats \the [src] on their helmet.</span>", \
"<span class='notice'>You pat \the [src] on their helmet.</span>", )
if(client)
return
if(prob(10))
visible_message("<span class='notice'>\The [src] purrs and leans into [M]'s hand.</span>")
else if(M.zone_sel.selecting == BP_R_HAND || M.zone_sel.selecting == BP_L_HAND)
M.visible_message( \
"<span class='notice'>[M] shakes \the [src]'s hand.</span>", \
"<span class='notice'>You shake \the [src]'s hand.</span>", )
if(client)
return
if(prob(10))
visible_message("<span class='notice'>\The [src]'s looks a little confused and bonks their helmet's faceplate against [M]'s hand experimentally, attempting to nibble at it.</span>")
else if(M.zone_sel.selecting == "mouth")
M.visible_message( \
"<span class='notice'>[M] attempts to boop \the [src]'s nose, defeated only by the helmet they wear.</span>", \
"<span class='notice'>You attempt to boop \the [src] on the nose, stopped only by that helmet they wear.</span>", )
if(client)
return
if(prob(10))
visible_message("<span class='notice'>\The [src]'s eyes widen as they stare at [M]. After a moment they rub at the faint mark [M]'s digit left upon the surface of their helmet's faceplate.</span>")
else if(M.zone_sel.selecting == BP_GROIN)
M.visible_message( \
"<span class='notice'>[M] rubs \the [src]'s tummy...</span>", \
"<span class='notice'>You rub \the [src]'s tummy... You feel the danger.</span>", )
if(client)
return
visible_message("<span class='notice'>\The [src] pushes [M]'s hand away from their tummy and furrows their brow!</span>")
if(prob(5))
ai_holder.target = M
ai_holder.track_target_position()
ai_holder.set_stance(STANCE_FIGHT)
else
return ..()
/obj/item/weapon/holder/catslug/engislug
item_state = "engislug"
//Security catslug
/datum/category_item/catalogue/fauna/catslug/gatslug
name = "Alien Wildlife - Catslug - Officer Gatslug"
desc = "A resident worker at the NSB Rascal's Pass, Officer Gatslug \
served with distinction during upheaval at the NSB Adephagia in 2321. \
After their recovery from the wreckage afterwards, they were awarded \
several commendations and an offer to serve aboard the latest NT venture \
in the Virgo-Erigone system. - \
The Catslug is an omnivorous terrestrial creature.\
Exhibiting properties of both a cat and a slug (hence its name)\
it moves somewhat awkwardly. However, the unique qualities of\
its body make it exceedingly flexible and smooth, allowing it to\
wiggle into and move effectively in even extremely tight spaces.\
Additionally, it has surprisingly capable hands, and moves quite\
well on two legs or four. Caution is advised when interacting\
with these creatures, they are quite intelligent, and proficient\
tool users."
value = CATALOGUER_REWARD_TRIVIAL //Local catslugs worth less than rarer ones
/mob/living/simple_mob/vore/alienanimals/catslug/gatslug
name = "Officer Gatslug"
desc = "A light red-furred noodley bodied creature with thin arms and legs, and gloomy dark eyes. This one seems to be wearing a security cap, bandolier and holobadge."
tt_desc = "Mollusca Felis Magistratus"
icon_state = "gatslug"
icon_living = "gatslug"
icon_rest = "gatslug_rest"
icon_dead = "gatslug_dead"
digestable = 0
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/gatslug)
holder_type = /obj/item/weapon/holder/catslug/gatslug
maxHealth = 75
health = 75
makes_dirt = 0
say_list_type = /datum/say_list/catslug/gatslug
melee_damage_upper = 10 //"Trained" security member, so they can hit that little bit harder
armor = list(
"melee" = 15,
"bullet" = 0,
"laser" = 0,
"energy" = 0,
"bomb" = 0,
"bio" = 0,
"rad" = 0
) //Similarly, \some\ armour values for a smidge more survivability compared to other catslugs.
has_langs = list("Sign Language")
/datum/say_list/catslug/gatslug
speak = list("Have any flashbangs?", "Valids!", "Heard spiders?", "What is that?", "Freeze!", "What are you doing?", "How did you get here?", "Red alert means big bangsticks.", "No being naughty now.", "WAOW!", "Who ate all the donuts?")
/mob/living/simple_mob/vore/alienanimals/catslug/gatslug/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //I don't even want to imagine what the colour change proc would do to their sprite, not to mention ghosts would need to be forced into the catslug so this is more just a safety net than anything
/obj/item/weapon/holder/catslug/gatslug
item_state = "gatslug"
//Medical catslug
/datum/category_item/catalogue/fauna/catslug/medislug
name = "Alien Wildlife - Catslug - Doctor Mlemulon"
desc = "A resident worker at the NSB Rascal's Pass, Doctor Mlemulon \
works hard to drink and eat all the remaining medicine stocks in \
the smartfridge after the end of a shift. Rumour has it they have \
a side business of trading advanced surgical tools for \"tasty yummers\" too. - \
The Catslug is an omnivorous terrestrial creature.\
Exhibiting properties of both a cat and a slug (hence its name)\
it moves somewhat awkwardly. However, the unique qualities of\
its body make it exceedingly flexible and smooth, allowing it to\
wiggle into and move effectively in even extremely tight spaces.\
Additionally, it has surprisingly capable hands, and moves quite\
well on two legs or four. Caution is advised when interacting\
with these creatures, they are quite intelligent, and proficient\
tool users."
value = CATALOGUER_REWARD_TRIVIAL //Local catslugs worth less than rarer ones
/mob/living/simple_mob/vore/alienanimals/catslug/medislug
name = "Doctor Mlemulon"
desc = "A pale blue-furred noodley bodied creature with thin arms and legs, and gloomy dark eyes. This one appears to have a nurses hat perched upon it's head and a medi-hud."
tt_desc = "Mollusca Felis Medicus"
icon_state = "medislug"
icon_living = "medislug"
icon_rest = "medislug_rest"
icon_dead = "medislug_dead"
digestable = 0
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/medislug)
holder_type = /obj/item/weapon/holder/catslug/medislug
makes_dirt = 0
say_list_type = /datum/say_list/catslug/medislug
has_langs = list("Sign Language")
/datum/say_list/catslug/medislug
speak = list("Have any osteodaxon?", "What is that?", "Suit sensors!", "What are you doing?", "How did you get here?", "Put a mask on!", "No smoking!", "WAOW!", "Stop getting blood everywhere!", "WHERE IN MAINT?")
/mob/living/simple_mob/vore/alienanimals/catslug/medislug/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //I don't even want to imagine what the colour change proc would do to their sprite, not to mention ghosts would need to be forced into the catslug so this is more just a safety net than anything
/obj/item/weapon/holder/catslug/medislug
item_state = "medislug"
//Science catslug
/datum/category_item/catalogue/fauna/catslug/scienceslug
name = "Alien Wildlife - Catslug - Professor Nubbins"
desc = "A resident worker at the NSB Rascal's Pass, Professor Nubbins \
is tasked with the periodic maintenance of the R&D servers. \
Unfortunately, they take this to mean \"wipe all stored research\". - \
The Catslug is an omnivorous terrestrial creature.\
Exhibiting properties of both a cat and a slug (hence its name)\
it moves somewhat awkwardly. However, the unique qualities of\
its body make it exceedingly flexible and smooth, allowing it to\
wiggle into and move effectively in even extremely tight spaces.\
Additionally, it has surprisingly capable hands, and moves quite\
well on two legs or four. Caution is advised when interacting\
with these creatures, they are quite intelligent, and proficient\
tool users."
value = CATALOGUER_REWARD_TRIVIAL //Local catslugs worth less than rarer ones
/mob/living/simple_mob/vore/alienanimals/catslug/scienceslug
name = "Professor Nubbins"
desc = "A purple-furred noodley bodied creature with thin arms and legs, and gloomy dark eyes. This one looks to be wearing a swanky white science beret, as well as a pair of goggles."
tt_desc = "Mollusca Felis Inquisitorem"
icon_state = "scienceslug"
icon_living = "scienceslug"
icon_rest = "scienceslug_rest"
icon_dead = "scienceslug_dead"
digestable = 0
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/scienceslug)
holder_type = /obj/item/weapon/holder/catslug/scienceslug
makes_dirt = 0
say_list_type = /datum/say_list/catslug/scienceslug
has_langs = list("Sign Language")
/datum/say_list/catslug/scienceslug
speak = list("Slimes, squish!", "What is that?", "Smoking in Toxins is not advised.", "What are you doing?", "How did you get here?", "Do not deconstruct the cube!", "WAOW!", "Where are our materials?", "The acid dispenser is not full of juice. Must remember that.")
/mob/living/simple_mob/vore/alienanimals/catslug/scienceslug/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //I don't even want to imagine what the colour change proc would do to their sprite, not to mention ghosts would need to be forced into the catslug so this is more just a safety net than anything
/obj/item/weapon/holder/catslug/scienceslug
item_state = "scienceslug"
//Cargo catslug
/datum/category_item/catalogue/fauna/catslug/cargoslug
name = "Alien Wildlife - Catslug - Technician Nermley"
desc = "A resident worker at the NSB Rascal's Pass, Technician Nermley \
is something of a mystery. No one is sure where they came from, \
local scuttlebutt is that they just turned up one day and started \
moving crates around. - \
The Catslug is an omnivorous terrestrial creature.\
Exhibiting properties of both a cat and a slug (hence its name)\
it moves somewhat awkwardly. However, the unique qualities of\
its body make it exceedingly flexible and smooth, allowing it to\
wiggle into and move effectively in even extremely tight spaces.\
Additionally, it has surprisingly capable hands, and moves quite\
well on two legs or four. Caution is advised when interacting\
with these creatures, they are quite intelligent, and proficient\
tool users."
value = CATALOGUER_REWARD_TRIVIAL //Local catslugs worth less than rarer ones
/mob/living/simple_mob/vore/alienanimals/catslug/cargoslug
name = "Technician Nermley"
desc = "A brown-furred noodley bodied creature with thin arms and legs, and gloomy dark eyes. This one has a flipped-round baseball cap on their head and a pair of black mittens."
tt_desc = "Mollusca Felis Quisquiliae"
icon_state = "cargoslug"
icon_living = "cargoslug"
icon_rest = "cargoslug_rest"
icon_dead = "cargoslug_dead"
digestable = 0
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/cargoslug)
holder_type = /obj/item/weapon/holder/catslug/cargoslug
makes_dirt = 0
say_list_type = /datum/say_list/catslug/cargoslug
has_langs = list("Sign Language")
/datum/say_list/catslug/cargoslug
speak = list("Disposals is not for slip and slide.", "What is that?", "Stamp those manifests!", "What are you doing?", "How did you get here?", "Can order pizza crate?", "WAOW!", "Where are all of our materials?", "Got glubbs?")
/mob/living/simple_mob/vore/alienanimals/catslug/cargoslug/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //I don't even want to imagine what the colour change proc would do to their sprite, not to mention ghosts would need to be forced into the catslug so this is more just a safety net than anything
/obj/item/weapon/holder/catslug/cargoslug
item_state = "cargoslug"
+590
View File
@@ -0,0 +1,590 @@
#define VIRGO3C_ONE_ATMOSPHERE 92.5 //kPa
#define VIRGO3C_AVG_TEMP 288.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 = 6 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.45) // Night
low_brightness = 0.1
low_color = "#000066"
high_brightness = 0.2
high_color = "#66004D"
min = 0
if(0.45 to 0.50) // Twilight
low_brightness = 0.5
low_color = "#66004D"
high_brightness = 0.9
high_color = "#CC3300"
min = 0.40
if(0.50 to 0.55) // Sunrise/set
low_brightness = 0.9
low_color = "#CC3300"
high_brightness = 3.0
high_color = "#FF9933"
min = 0.50
if(0.55 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
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()
+8 -2
View File
@@ -5,7 +5,8 @@
anchored = TRUE
var/working = FALSE
var/negative_dir = null //VOREStation Addition
/obj/machinery/recycling/process()
return PROCESS_KILL // these are all stateful
@@ -85,7 +86,12 @@
/obj/machinery/recycling/crusher/can_accept_item(obj/item/O)
if(LAZYLEN(O.matter))
return ..()
return FALSE
//VOREStation Addition Start - Let's the machine decide to put things it can't accept somewhere else.
else if(negative_dir && isitem(O) && !ishuman(O.loc))
O.forceMove(get_step(src, negative_dir))
else
return FALSE
//VOREStation Addition End
/obj/machinery/recycling/crusher/take_item(obj/item/O)
. = ..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 29 KiB

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
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
+25
View File
@@ -0,0 +1,25 @@
#if !defined(USING_MAP_DATUM)
#include "groundbase_areas.dm"
#include "groundbase_defines.dm"
// #include "stellar_delight_shuttle_defs.dm"
#include "groundbase_telecomms.dm"
// #include "stellar_delight_things.dm"
#include "..\offmap_vr\common_offmaps.dm"
#include "..\tether\tether_jobs.dm"
// #include "..\stellardelight\stellar_delight_areas.dm"
// #include "..\tether\tether_areas.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
+330
View File
@@ -0,0 +1,330 @@
/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
flags = AREA_FLAG_IS_NOT_PERSISTENT
/area/groundbase/level1
name = "Rascal's Pass Level 1"
flags = AREA_FLAG_IS_NOT_PERSISTENT
/area/groundbase/level1/ne
name = "Northeast Rascal's Pass Level 1"
/area/groundbase/level1/nw
name = "Northwest Rascal's Pass Level 1"
/area/groundbase/level1/se
name = "Southeast Rascal's Pass Level 1"
/area/groundbase/level1/sw
name = "Southwest Rascal's Pass Level 1"
/area/groundbase/level1/centsquare
name = "\improper Central Square"
/area/groundbase/level1/northspur
name = "\improper North Spur"
/area/groundbase/level1/eastspur
name = "\improper East Spur"
/area/groundbase/level1/westspur
name = "\improper West Spur"
/area/groundbase/level1/southeastspur
name = "\improper Southeast Spur"
/area/groundbase/level1/southwestspur
name = "\improper Southwest Spur"
/area/groundbase/level2
name = "Rascal's Pass Level 2"
flags = AREA_FLAG_IS_NOT_PERSISTENT
/area/groundbase/level2/ne
name = "Northeast Rascal's Pass Level 2"
/area/groundbase/level2/nw
name = "Northwest Rascal's Pass Level 2"
/area/groundbase/level2/se
name = "Southeast Rascal's Pass Level 2"
/area/groundbase/level2/sw
name = "Southwest Rascal's Pass Level 2"
/area/groundbase/level3
name = "Rascal's Pass Level 3"
flags = AREA_FLAG_IS_NOT_PERSISTENT
/area/groundbase/level3/ne
name = "Northeast Rascal's Pass Level 3"
/area/groundbase/level3/nw
name = "Northwest Rascal's Pass Level 3"
/area/groundbase/level3/se
name = "Southeast Rascal's Pass Level 3"
/area/groundbase/level3/sw
name = "Southwest Rascal's Pass Level 3"
/area/groundbase/science
name = "Science"
holomap_color = HOLOMAP_AREACOLOR_SCIENCE
icon_state = "purwhisqu"
/area/groundbase/science/hall
name = "Science Hallway"
/area/groundbase/science/rnd
name = "Research and Development"
/area/groundbase/science/robotics
name = "Rocotics"
/area/groundbase/science/server
name = "Science Server Room"
/area/groundbase/science/rd
name = "Research Director's Office"
/area/groundbase/science/circuits
name = "Circuits Workshop"
/area/groundbase/science/xenohall
name = "Xeno Studies Hallway"
/area/groundbase/science/xenobot
name = "Xenobotany"
/area/groundbase/science/xenobot/storage
name = "Xenobotany Storage"
/area/groundbase/science/picnic
name = "Science Break Room"
/area/groundbase/command
name = "Command"
holomap_color = HOLOMAP_AREACOLOR_COMMAND
icon_state = "bluwhisqu"
/area/groundbase/command/bridge
name = "Bridge"
/area/groundbase/command/captain
name = "Captain's Office"
/area/groundbase/command/captainq
name = "Captain's Quarters"
/area/groundbase/command/hop
name = "Head of Personnel"
/area/groundbase/command/hall
name = "Command Hallway"
/area/groundbase/command/meeting
name = "Command Meeting Room"
/area/groundbase/command/ai
name = "AI Core"
/area/groundbase/command/ai/chamber
name = "AI Chamber"
/area/groundbase/command/ai/upload
name = "AI Upload"
/area/groundbase/command/ai/hall
name = "AI Hall"
/area/groundbase/command/ai/foyer
name = "AI Foyer"
/area/groundbase/command/ai/robot
name = "Robot Storage"
/area/groundbase/command/ai/storage
name = "AI Storage"
/area/groundbase/security
name = "Security"
holomap_color = HOLOMAP_AREACOLOR_SECURITY
icon_state = "redwhisqu"
/area/groundbase/security/lobby
name = "Security Lobby"
/area/groundbase/security/processing
name = "Security Processing"
/area/groundbase/security/halls
name = "Security South Hallway"
/area/groundbase/security/halle
name = "Security East Hallway"
/area/groundbase/security/warden
name = "Warden's Office"
/area/groundbase/security/armory
name = "Security Armory"
/area/groundbase/security/briefing
name = "Security Briefing Room"
/area/groundbase/security/equipment
name = "Security Equipment Room"
/area/groundbase/security/iaa1
name = "Internal Affairs West Office"
/area/groundbase/security/iaa2
name = "Internal Affairs East Office"
/area/groundbase/security/detective
name = "Detective's Office"
/area/groundbase/security/hos
name = "Head of Security's Office"
/area/prison/cell_block/gb
name = "Brig"
/area/groundbase/medical
name = "Medical"
holomap_color = HOLOMAP_AREACOLOR_MEDICAL
icon_state = "cyawhisqu"
/area/groundbase/medical/lobby
name = "Medical Lobby"
/area/groundbase/medical/psych
name = "Psychiatrist's Office"
/area/groundbase/medical/Chemistry
name = "Chemistry"
/area/groundbase/medical/triage
name = "Medical Triage"
/area/groundbase/medical/lhallway
name = "Medical Lower Hallway"
/area/groundbase/medical/resleeving
name = "Resleeving"
/area/groundbase/medical/autoresleeving
name = "Auto-Resleeving"
/area/groundbase/medical/or1
name = "Medical Operating Room 1"
/area/groundbase/medical/or2
name = "Medical Operating Room 2"
/area/groundbase/medical/equipment
name = "Medical Equipment Room"
/area/groundbase/medical/office
name = "Medical Office"
/area/groundbase/medical/uhallway
name = "Medical Upper Hallway"
/area/groundbase/medical/cmo
name = "Chief Medical Officer's Office"
/area/groundbase/medical/paramedic
name = "Paramedic Equipment Room"
/area/groundbase/medical/patio
name = "Medical Break Room"
/area/groundbase/medical/patient1
name = "Medical Patient Room 1"
/area/groundbase/medical/patient2
name = "Medical Patient Room 2"
/area/groundbase/medical/patient3
name = "Medical Patient Room 3"
/area/groundbase/medical/patient4
name = "Medical Patient Room 4"
/area/groundbase/engineering
name = "Engineering"
holomap_color = HOLOMAP_AREACOLOR_ENGINEERING
icon_state = "yelwhisqu"
/area/groundbase/engineering/lobby
name = "Engineering Lobby"
/area/groundbase/engineering/ce
name = "Chief Engineer's Office"
/area/groundbase/engineering/workshop
name = "Engineering Workshop"
/area/groundbase/engineering/eva
name = "Engineering EVA"
/area/groundbase/engineering/storage
name = "Engineering Storage"
/area/groundbase/engineering/techstorage
name = "Engineering Tech Storage"
/area/groundbase/engineering/engine
name = "Engine"
/area/groundbase/engineering/atmos
name = "Atmospherics"
/area/groundbase/engineering/atmos/monitoring
name = "Atmospherics Monitoring"
/area/groundbase/cargo
name = "Cargo"
holomap_color = HOLOMAP_AREACOLOR_CARGO
icon_state = "orawhisqu"
/area/groundbase/cargo/office
name = "Cargo Office"
/area/groundbase/cargo/bay
name = "Cargo Bay"
/area/groundbase/cargo/qm
name = "Quartermaster's Office"
/area/groundbase/cargo/mining
name = "Mining"
/area/maintenance/groundbase/trashpit
name = "Trash Pit"
/area/groundbase/civilian
name = "Civilian"
holomap_color = HOLOMAP_AREACOLOR_CIV
icon_state = "grewhisqu"
/area/groundbase/civilian/arrivals
name = "Arrivals"
/area/groundbase/civilian/toolstorage
name = "Tool Storage"
/area/groundbase/civilian/bar
name = "Bar"
/area/groundbase/civilian/hydroponics
name = "Hydroponics"
/area/groundbase/civilian/hydroponics/out
name = "Hydroponics Animal Pen"
/area/groundbase/civilian/kitchen
name = "Kitchen"
/area/groundbase/civilian/kitchen/freezer
name = "Kitchen Freezer"
/area/groundbase/civilian/kitchen/backroom
name = "Kitchen Back Room"
/area/groundbase/civilian/chapel
name = "Chapel"
/area/groundbase/civilian/chapel/office
name = "Chaplain's Office"
/area/groundbase/civilian/library
name = "Library"
/area/groundbase/civilian/pilot
name = "Pilot Equipment Room"
/area/groundbase/civilian/gateway
name = "Gateway"
/area/groundbase/civilian/janitor
name = "Janitor's Closet"
/area/groundbase/exploration
name = "Exploration"
holomap_color = HOLOMAP_AREACOLOR_SCIENCE
icon_state = "purwhisqu"
/area/groundbase/exploration/equipment
name = "Exploration Equipment Room"
/area/groundbase/exploration/shuttlepad
name = "Exploration Shuttlepad"
/area/groundbase/dorms
name = "Dormitories"
holomap_color = HOLOMAP_AREACOLOR_DORMS
icon_state = "grawhisqu"
flags = RAD_SHIELDED | BLUE_SHIELDED
/area/groundbase/dorms/bathroom
name = "Dormitory Bathroom"
/area/groundbase/dorms/room1
name = "Dorm Room 1"
/area/groundbase/dorms/room2
name = "Dorm Room 2"
/area/groundbase/dorms/room3
name = "Dorm Room 3"
/area/groundbase/dorms/room4
name = "Dorm Room 4"
/area/groundbase/dorms/room5
name = "Dorm Room 5"
/area/groundbase/dorms/room6
name = "Dorm Room 6"
/area/groundbase/dorms/room7
name = "Dorm Room 7"
/area/groundbase/dorms/room8
name = "Dorm Room 8"
/area/maintenance/groundbase/substation
name = "Substation"
holomap_color = HOLOMAP_AREACOLOR_ENGINEERING
icon_state = "yelwhitri"
/area/maintenance/groundbase/substation/medcargo
name = "Medical/Cargo Substation"
/area/maintenance/groundbase/substation/secsci
name = "Security/Research Substation"
/area/maintenance/groundbase/substation/aiciv
name = "AI/Civilian Substation"
/area/maintenance/groundbase/substation/command
name = "Command Substation"
/area/maintenance/groundbase/level1/netunnel
name = "\improper Level 1 Northeast Tunnel"
/area/maintenance/groundbase/level1/nwtunnel
name = "\improper Level 1 Northwest Tunnel"
/area/maintenance/groundbase/level1/setunnel
name = "\improper Level 1 Southeast Tunnel"
/area/maintenance/groundbase/level1/stunnel
name = "\improper Level 1 South Tunnel"
/area/maintenance/groundbase/level1/swtunnel
name = "\improper Level 1 Southwest Tunnel"
+458
View File
@@ -0,0 +1,458 @@
//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(
"endo"
))
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 = 15
usable_email_tlds = list("virgo.nt")
zlevel_datum_type = /datum/map_z_level/groundbase
lobby_icon = 'icons/misc/title_vr.dmi'
lobby_screens = list("endo")
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( //These are all outside
/area/groundbase/level1,
/area/groundbase/level1/ne,
/area/groundbase/level1/nw,
/area/groundbase/level1/se,
/area/groundbase/level1/sw,
/area/groundbase/level1/centsquare,
/area/groundbase/level1/northspur,
/area/groundbase/level1/eastspur,
/area/groundbase/level1/westspur,
/area/groundbase/level1/southeastspur,
/area/groundbase/level1/southwestspur,
/area/groundbase/level2,
/area/groundbase/level2/ne,
/area/groundbase/level2/nw,
/area/groundbase/level2/se,
/area/groundbase/level2/sw,
/area/groundbase/level3,
/area/groundbase/level3/ne,
/area/groundbase/level3/nw,
/area/groundbase/level3/se,
/area/groundbase/level3/sw,
/area/maintenance/groundbase/level1/netunnel,
/area/maintenance/groundbase/level1/nwtunnel,
/area/maintenance/groundbase/level1/setunnel,
/area/maintenance/groundbase/level1/stunnel,
/area/maintenance/groundbase/level1/swtunnel,
/area/groundbase/science/picnic,
/area/groundbase/medical/patio,
/area/groundbase/civilian/hydroponics/out
)
unit_test_exempt_from_atmos = list()
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/virgo3c
expected_z_levels = list(
Z_LEVEL_GB_BOTTOM,
Z_LEVEL_GB_MIDDLE,
Z_LEVEL_GB_TOP,
Z_LEVEL_CENTCOM
)
/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("groundbase")
initial_restricted_waypoints = list("Exploration Shuttle" = list("gbexplo"))
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/simulated/floor/outdoors/newdirt_nograss/virgo3c
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
/////EXPLOSHUTTL/////
// The shuttle's 'shuttle' computer
/obj/machinery/computer/shuttle_control/explore/gbexplo
name = "Shuttle control console"
shuttle_tag = "gbexplo"
req_one_access = list(access_pilot)
/obj/effect/overmap/visitable/ship/landable/gbexplo
name = "Exploration Shuttle"
desc = "A small shuttle from Rascal's Pass."
vessel_mass = 2500
vessel_size = SHIP_SIZE_TINY
shuttle = "gbexplo"
known = TRUE
// A shuttle lateloader landmark
/datum/shuttle/autodock/overmap/gbexplo
name = "Exploration Shuttlepad"
current_location = "ex_shuttlepad"
docking_controller_tag = "ex_docker"
shuttle_area = list(/area/shuttle/groundbase/exploration)
fuel_consumption = 1
defer_initialisation = TRUE
/area/shuttle/groundbase/exploration
icon = 'icons/turf/areas_vr.dmi'
icon_state = "yelwhitri"
name = "Exploration Shuttle"
requires_power = 1
//////////////////////////////////////////////
// Supply shuttle
/datum/shuttle/autodock/ferry/supply/cargo
name = "Supply"
location = FERRY_LOCATION_OFFSITE
shuttle_area = /area/shuttle/supply
warmup_time = 10
landmark_offsite = "supply_cc"
landmark_station = "supply_station"
docking_controller_tag = "supply_shuttle"
flags = SHUTTLE_FLAGS_PROCESS|SHUTTLE_FLAGS_SUPPLY
move_direction = WEST
////////////////////////////////////////////////
/datum/shuttle/autodock/ferry/emergency/escape
name = "Escape"
location = FERRY_LOCATION_OFFSITE
shuttle_area = /area/shuttle/escape
warmup_time = 10
landmark_offsite = "escape_cc"
landmark_station = "escape_station"
landmark_transition = "escape_transit"
move_time = SHUTTLE_TRANSIT_DURATION_RETURN
move_direction = SOUTH
docking_controller_tag = "escape_shuttle"
/obj/effect/shuttle_landmark/premade/groundbase
name = "Rascal's Pass"
landmark_tag = "groundbase"
/obj/effect/step_trigger/teleporter/to_mining
icon = 'icons/obj/structures/stairs_64x64.dmi'
icon_state = ""
invisibility = 0
/obj/effect/step_trigger/teleporter/to_mining/Initialize()
. = ..()
teleport_x = x
teleport_y = y ++
teleport_z = Z_LEVEL_MINING
/obj/effect/step_trigger/teleporter/from_mining
icon = 'icons/obj/structures/stairs_64x64.dmi'
icon_state = ""
invisibility = 0
/obj/effect/step_trigger/teleporter/from_mining/Initialize()
. = ..()
teleport_x = x
teleport_y = y --
teleport_z = Z_LEVEL_GB_BOTTOM
+94
View File
@@ -0,0 +1,94 @@
// ### Preset machines ###
// #### Relays ####
// Telecomms doesn't know about connected z-levels, so we need relays even for the other surface levels.
/obj/machinery/telecomms/relay/preset/station
id = "groundbase Relay"
listening_level = 9
autolinkers = list("groundbase_relay")
// #### Hub ####
/obj/machinery/telecomms/hub/preset/groundbase
id = "Hub"
network = "tcommsat"
autolinkers = list("hub",
"groundbase_relay", "c_relay", "m_relay", "r_relay",
"science", "medical", "supply", "service", "common", "command", "engineering", "security", "explorer", "unused",
"hb_relay", "receiverA", "broadcasterA"
)
/obj/machinery/telecomms/receiver/preset_right/groundbase
id = "groundbase_rx"
freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ)
/obj/machinery/telecomms/broadcaster/preset_right/groundbase
id = "groundbase_tx"
/obj/machinery/telecomms/bus/preset_two/groundbase
freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ)
/obj/machinery/telecomms/server/presets/service/groundbase
freq_listening = list(SRV_FREQ, EXP_FREQ)
autolinkers = list("service", "explorer")
// Telecommunications Satellite
/area/groundbase/command/tcomms
name = "\improper Telecomms"
ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg')
/area/groundbase/command/tcomms/entrance
name = "\improper Telecomms Teleporter"
/area/groundbase/command/tcomms/foyer
name = "\improper Telecomms Foyer"
/area/groundbase/command/tcomms/storage
name = "\improper Telecomms Storage"
/area/groundbase/command/tcomms/computer
name = "\improper Telecomms Control Room"
/area/groundbase/command/tcomms/chamber
name = "\improper Telecomms Central Compartment"
flags = BLUE_SHIELDED
/area/maintenance/substation/tcomms
name = "\improper Telecomms Substation"
/area/maintenance/station/tcomms
name = "\improper Telecoms Maintenance"
/datum/map/groundbase/default_internal_channels()
return list(
num2text(PUB_FREQ) = list(),
num2text(AI_FREQ) = list(access_synth),
num2text(ENT_FREQ) = list(),
num2text(ERT_FREQ) = list(access_cent_specops),
num2text(COMM_FREQ)= list(access_heads),
num2text(ENG_FREQ) = list(access_engine_equip, access_atmospherics),
num2text(MED_FREQ) = list(access_medical_equip),
num2text(MED_I_FREQ)=list(access_medical_equip),
num2text(SEC_FREQ) = list(access_security),
num2text(SEC_I_FREQ)=list(access_security),
num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology),
num2text(SUP_FREQ) = list(access_cargo),
num2text(SRV_FREQ) = list(access_janitor, access_hydroponics),
num2text(EXP_FREQ) = list(access_explorer)
)
/obj/item/device/multitool/groundbase_buffered
name = "pre-linked multitool (groundbase hub)"
desc = "This multitool has already been linked to the groundbase telecomms hub and can be used to configure one (1) relay."
/obj/item/device/multitool/groundbase_buffered/Initialize()
. = ..()
buffer = locate(/obj/machinery/telecomms/hub/preset/groundbase)
/obj/item/device/bluespaceradio/groundbase_prelinked
name = "bluespace radio (Stellar Delight)"
handset = /obj/item/device/radio/bluespacehandset/linked/groundbase_prelinked
/obj/item/device/radio/bluespacehandset/linked/groundbase_prelinked
bs_tx_preload_id = "groundbase_rx" //Transmit to a receiver
bs_rx_preload_id = "groundbase_tx" //Recveive from a transmitter
+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"