Assunzione & Port Volturno (#22258)

Contains assets, code, maps, etc. for Assunzione and Port Volturno. This
is something like v0.9 for live unit testing, etc. Do not merge yet.

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| Path | Original Author | License |
| --- | --- | --- |
| icons/obj/structure/urban/arches.dmi |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/structure/urban/assunzione_neon.dmi |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/structure/urban/assunzione_signs.dmi (stafylia_sign) |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/structure/urban/billboard.dmi (sign_assunzione1 & 2) |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/structure/urban/poles.dmi (radial_floodlight) |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/structure/urban/restaurant.dmi (menu_gyro) |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/structure/urban/statues.dmi (aec_small) |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/pottedplants_big.dmi (luce-vine-plant) |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/pottedplants_small.dmi (luce-vine-plant) |
[Fyni](https://github.com/Fyniiy) | CC-BY-SA |
| icons/obj/structure/urban/billboard.dmi (sign_assunzione3) | Minzeyes
| CC-BY-SA |
| icons/obj/structure/urban/assunzione_96x110.dmi | Minzeyes | CC-BY-SA
|
| icons/turf/smooth/composite_brick.dmi |
[nauticall](https://github.com/nauticall) | CC-BY-SA |

---------

Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
Co-authored-by: Kano <89972582+kano-dot@users.noreply.github.com>
This commit is contained in:
Batrachophreno
2026-04-19 15:50:20 -04:00
committed by GitHub
parent 08ee5c3f71
commit aaea5d8a57
82 changed files with 164304 additions and 79 deletions
+7
View File
@@ -2636,6 +2636,7 @@
#include "code\modules\mapping\planet_types\jungle.dm"
#include "code\modules\mapping\planet_types\lava.dm"
#include "code\modules\mapping\planet_types\snow.dm"
#include "code\modules\mapping\planet_types\lore\assunzione.dm"
#include "code\modules\mapping\planet_types\lore\burzsia.dm"
#include "code\modules\mapping\planet_types\lore\konyang.dm"
#include "code\modules\mapping\planet_types\lore\srandmarr.dm"
@@ -3293,6 +3294,7 @@
#include "code\modules\overmap\exoplanets\decor\flora\_rock.dm"
#include "code\modules\overmap\exoplanets\decor\flora\_tree.dm"
#include "code\modules\overmap\exoplanets\decor\flora\adhomai.dm"
#include "code\modules\overmap\exoplanets\decor\flora\assunzione.dm"
#include "code\modules\overmap\exoplanets\decor\flora\crystal.dm"
#include "code\modules\overmap\exoplanets\decor\flora\desert.dm"
#include "code\modules\overmap\exoplanets\decor\flora\generic_flora.dm"
@@ -3308,6 +3310,7 @@
#include "code\modules\overmap\exoplanets\decor\objs\pit.dm"
#include "code\modules\overmap\exoplanets\decor\turfs\abyss.dm"
#include "code\modules\overmap\exoplanets\decor\turfs\asphalt.dm"
#include "code\modules\overmap\exoplanets\decor\turfs\assunzione.dm"
#include "code\modules\overmap\exoplanets\decor\turfs\barren.dm"
#include "code\modules\overmap\exoplanets\decor\turfs\carpet.dm"
#include "code\modules\overmap\exoplanets\decor\turfs\ceiling.dm"
@@ -4072,6 +4075,10 @@
#include "maps\away\away_site\abandoned_propellant_depot\abandoned_propellant_depot_.dm"
#include "maps\away\away_site\abandoned_propellant_depot\abandoned_propellant_depot_areas.dm"
#include "maps\away\away_site\abandoned_propellant_depot\abandoned_propellant_depot_landmarks.dm"
#include "maps\away\away_site\assunzione\port_volturno\port_volturno.dm"
#include "maps\away\away_site\assunzione\port_volturno\port_volturno_areas.dm"
#include "maps\away\away_site\assunzione\port_volturno\port_volturno_ghostroles.dm"
#include "maps\away\away_site\assunzione\port_volturno\port_volturno_landmarks.dm"
#include "maps\away\away_site\big_derelict\bigderelict.dm"
#include "maps\away\away_site\blueriver\blueriver.dm"
#include "maps\away\away_site\blueriver\blueriver_areas.dm"
+9 -9
View File
@@ -695,14 +695,14 @@
access_type = ACCESS_TYPE_CENTCOM
desc = "Golden Deep"
#define ACCESS_KONYANG_POLICE 218
/datum/access/konyang_police
id = ACCESS_KONYANG_POLICE
#define ACCESS_PORTOFCALL_POLICE 218
/datum/access/portofcall_police
id = ACCESS_PORTOFCALL_POLICE
access_type = ACCESS_TYPE_CENTCOM
#define ACCESS_KONYANG_VENDORS 219
/datum/access/konyang_vendors
id = ACCESS_KONYANG_VENDORS
#define ACCESS_PORTOFCALL_VENDORS 219
/datum/access/portofcall_vendors
id = ACCESS_PORTOFCALL_VENDORS
access_type = ACCESS_TYPE_CENTCOM
#define ACCESS_IDRIS 220
@@ -733,9 +733,9 @@
id = ACCESS_GADPATHUR_NAVY_OFFICER
access_type = ACCESS_TYPE_CENTCOM
#define ACCESS_KONYANG_CORPORATE 225
/datum/access/konyang_corporate
id = ACCESS_KONYANG_CORPORATE
#define ACCESS_PORTOFCALL_CORPORATE 225
/datum/access/portofcall_corporate
id = ACCESS_PORTOFCALL_CORPORATE
access_type = ACCESS_TYPE_CENTCOM
#define ACCESS_HOUSE_VOLVALAAD_SHIP 226
+2
View File
@@ -21,6 +21,8 @@
#define LIGHT_COLOR_ORANGE "#FA9632"
/// Soft purple. rgb(169, 127, 170)
#define LIGHT_COLOR_PURPLE "#A97FAA"
/// Softer purple. Assunzione lighting. rgb(240,200,240)
#define LIGHT_COLOR_PALE_PURPLE "#F0C8F0"
/// Deep purple. rgb(180, 60, 184)
#define LIGHT_COLOR_VIOLET "#B43CB8"
/// Light red. rgb(232, 86, 86)
+1
View File
@@ -7,6 +7,7 @@
/* Aurora Snowflake */
#define ZTRAIT_OVERMAP "Overmap"
#define ZTRAIT_EXPLANET "Exoplanet"
#define ZTRAIT_PORTOFCALL "Port of Call"
// Whether this z level is linked up/down. Bool.
+1
View File
@@ -20,6 +20,7 @@
#define MATERIAL_BRONZE "bronze"
#define MATERIAL_OSMIUM "osmium"
#define MATERIAL_MARBLE "marble"
#define MATERIAL_BRICK "brick"
#define MATERIAL_CULT "cult"
#define MATERIAL_CULT_REINFORCED "cult_reinforced"
#define MATERIAL_TITANIUM "titanium"
+3 -2
View File
@@ -27,7 +27,8 @@
#define SECTOR_XANU "Xanu" // Xanu Prime is here
#define SECTOR_BURZSIA "Burzsia" //Burzsia I and II are here
#define SECTOR_HANEUNIM "Haneunim" //Haneunim and its gravity well, Konyang is found here
#define ALL_COALITION_SECTORS list(SECTOR_COALITION, SECTOR_XANU, SECTOR_WEEPING_STARS, SECTOR_ARUSHA, SECTOR_LIBERTYS_CRADLE, SECTOR_BURZSIA, SECTOR_HANEUNIM, SECTOR_LIGHTS_EDGE)
#define SECTOR_AL_MAQDISI "Al-Maqdisi" //Assunzione is here
#define ALL_COALITION_SECTORS list(SECTOR_COALITION, SECTOR_XANU, SECTOR_WEEPING_STARS, SECTOR_ARUSHA, SECTOR_LIBERTYS_CRADLE, SECTOR_BURZSIA, SECTOR_HANEUNIM, SECTOR_LIGHTS_EDGE, SECTOR_AL_MAQDISI)
//Light's edge, which should have unique properties all around
#define SECTOR_LIGHTS_EDGE "Light's Edge" //For the area of Light's Edge that is somewhat inhabited. NOTE- this also lives in ALL_COALITION_SECTORS, per lore.
@@ -56,7 +57,7 @@
#define ALL_DANGEROUS_SECTORS list(SECTOR_BADLANDS, ALL_VOID_SECTORS, ALL_CRESCENT_EXPANSE_SECTORS, ALL_UNCHARTED_SECTORS)
/// all non-generic, named and specific sectors, where generic planets or the like should not spawn
#define ALL_SPECIFIC_SECTORS list(SECTOR_TAU_CETI, SECTOR_SRANDMARR, SECTOR_HANEUNIM, SECTOR_BURZSIA, SECTOR_UUEOAESA, SECTOR_TABITI, SECTOR_AEMAQ, SECTOR_NRRAHRAHUL, SECTOR_GAKAL)
#define ALL_SPECIFIC_SECTORS list(SECTOR_TAU_CETI, SECTOR_SRANDMARR, SECTOR_HANEUNIM, SECTOR_BURZSIA, SECTOR_UUEOAESA, SECTOR_TABITI, SECTOR_AEMAQ, SECTOR_NRRAHRAHUL, SECTOR_GAKAL, SECTOR_AL_MAQDISI)
/// Everything!
#define ALL_POSSIBLE_SECTORS list(ALL_TAU_CETI_SECTORS, ALL_BADLAND_SECTORS, ALL_COALITION_SECTORS, ALL_VOID_SECTORS, ALL_GENERIC_SECTORS, ALL_CORPORATE_SECTORS, ALL_CRESCENT_EXPANSE_SECTORS)
+2
View File
@@ -21,6 +21,8 @@ GLOBAL_VAR(station_level_z_scratch)
: GLOB.station_levels_cache[GLOB.station_level_z_scratch] \
)
#define is_portofcall_level(z) SSmapping.level_trait(z, ZTRAIT_PORTOFCALL)
#define is_mining_level(z) SSmapping.level_trait(z, ZTRAIT_MINING)
#define is_reserved_level(z) SSmapping.level_trait(z, ZTRAIT_RESERVED)
@@ -6,21 +6,24 @@ SUBSYSTEM_DEF(atlas)
init_order = INIT_ORDER_MAPPING
init_stage = INITSTAGE_EARLY
// Whatever map is currently loaded. Null until SSatlas Initialize() starts.
/// Whatever map is currently loaded. Null until SSatlas Initialize() starts.
var/datum/map/current_map
var/list/known_maps = list()
var/dmm_suite/maploader
var/list/mapload_callbacks = list()
var/map_override // If set, SSatlas will forcibly load this map. If the map does not exist, mapload will fail and SSatlas will panic.
/// If set, SSatlas will forcibly load this map. If the map does not exist, mapload will fail and SSatlas will panic.
var/map_override
var/list/spawn_locations = list()
var/datum/space_sector/current_sector
var/list/possible_sectors = list()
//Note that the dirs here are REVERSE because they're used for entry points, so it'd be the dir facing starboard for example.
//These are strings because otherwise the list indexes would be out of bounds. Thanks BYOND.
/**
* Note that the dirs here are REVERSE because they're used for entry points, so it'd be the dir facing starboard for example.
* These are strings because otherwise the list indexes would be out of bounds. Thanks BYOND.
*/
var/list/naval_to_dir = list(
"1" = list(
"starboard" = WEST,
+1 -1
View File
@@ -117,7 +117,7 @@
)
/obj/outfit/admin/ert/konyang/get_id_access()
return list(ACCESS_DISTRESS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_COALITION, ACCESS_COALITION_NAVY, ACCESS_KONYANG_POLICE)
return list(ACCESS_DISTRESS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_COALITION, ACCESS_COALITION_NAVY, ACCESS_PORTOFCALL_POLICE)
/obj/outfit/admin/ert/konyang/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
+1 -1
View File
@@ -107,7 +107,7 @@
/obj/item/clothing/mask/gas/monkeymask = TRADER_THIS_TYPE,
/obj/item/clothing/suit/monkeysuit = TRADER_THIS_TYPE,
/obj/item/clothing/mask/luchador = TRADER_ALL,
/obj/item/gun/bang = TRADER_SUBTYPES_ONLY
/obj/item/gun/bang/deagle = TRADER_SUBTYPES_ONLY
)
species_bias = list(
ALL_DIONA_SPECIES = TRADER_BIAS_DISCOUNT
+11 -5
View File
@@ -199,11 +199,17 @@
var/allow_occupant_types = list(/mob/living/carbon/human)
var/disallow_occupant_types = list()
var/mob/occupant // Person waiting to be despawned.
var/time_till_despawn = 1200 // Two minute safe period before being despawned.
var/time_till_force_cryo = 3000 // Five minutes safe period until they're despawned even if active.
var/time_entered = 0 // Used to keep track of the safe period.
/// Person waiting to be despawned.
var/mob/occupant
/// Two minute safe period before being despawned.
var/time_till_despawn = 1200
/// Five minutes safe period until they're despawned even if active.
var/time_till_force_cryo = 3000
/// Used to keep track of the safe period.
var/time_entered = 0
var/obj/item/radio/intercom/announce
/// If this cryopod/lift should ALWAYS announce that a person is departing the map. Primarily used in ports of call for flavorful custom text.
var/force_announce = FALSE
var/obj/machinery/computer/cryopod/control_computer
@@ -379,7 +385,7 @@
else
W.forceMove(T)
if(is_station_level(z))
if(force_announce || is_station_level(z))
GLOB.global_announcer.autosay("[occupant.real_name], [occupant.mind.role_alt_title], [on_store_message] [on_store_location].", "[on_store_name]")
visible_message(SPAN_NOTICE("\The [src] hums and hisses as it moves [occupant] to [on_store_location]."))
playsound(loc, on_store_sound, 25)
+1 -1
View File
@@ -244,7 +244,7 @@
/obj/machinery/suit_cycler/offship/konyang
model_text = "Konyang Aerospace Force"
req_access = list(ACCESS_KONYANG_POLICE)
req_access = list(ACCESS_PORTOFCALL_POLICE)
departments = list("Konyang")
species = list(BODYTYPE_HUMAN, BODYTYPE_IPC)
suit = /obj/item/clothing/suit/space/void/sol/konyang
+4 -2
View File
@@ -120,8 +120,10 @@
var/list/key_data_sports = list()
/obj/machinery/vending/rental_bikes/build_products()
products[/obj/item/key/bike/moped] = length(key_data_mopeds)
products[/obj/item/key/bike/sport] = length(key_data_sports)
if(length(key_data_mopeds))
products[/obj/item/key/bike/moped] = length(key_data_mopeds)
if(length(key_data_sports))
products[/obj/item/key/bike/sport] = length(key_data_sports)
/obj/machinery/vending/rental_bikes/vended_product_post(var/obj/vended)
var/obj/item/key/key = vended
@@ -53,7 +53,7 @@ GLOBAL_LIST_INIT(tape_roll_applications, list())
/obj/item/tape/police
name = "police tape"
desc = "A length of police tape. Do not cross."
req_one_access = list(ACCESS_SECURITY, ACCESS_KONYANG_POLICE) // Any role that is considered 'police' and gets this item should also have it's access added to this variable. If this list gets too long we may need to make subtypes.
req_one_access = list(ACCESS_SECURITY, ACCESS_PORTOFCALL_POLICE) // Any role that is considered 'police' and gets this item should also have it's access added to this variable. If this list gets too long we may need to make subtypes.
icon_base = "police"
/obj/item/taperoll/medical
+1 -1
View File
@@ -241,7 +241,7 @@
/obj/item/clothing/under/syndicate/tacticool = 7,
/obj/item/toy/sword = 22,
/obj/item/gun/projectile/revolver/capgun = 11,
/obj/item/gun/bang = 22,
/obj/item/gun/bang/deagle = 22,
/obj/item/toy/crossbow = 11,
/obj/random/action_figure = 11,
/obj/item/toy/cultsword = 7,
+38 -10
View File
@@ -14,6 +14,8 @@ GLOBAL_LIST_EMPTY(marketsign_overlay_cache)
var/currently_on = FALSE
var/on_icon_state
var/off_icon_state = "off"
/// Whether or not the sign settings can be modified.
var/sign_change_allowed = TRUE
/// Local reference of the global list associated with this object's singletons.
var/list/target_cache = list()
@@ -47,6 +49,9 @@ GLOBAL_LIST_EMPTY(marketsign_overlay_cache)
/obj/structure/sign/double/barsign/attackby(obj/item/attacking_item, mob/user)
if(cult)
return ..()
if(!sign_change_allowed)
balloon_alert("access denied")
return
var/obj/item/card/id/card = attacking_item.GetID()
if(istype(card))
if(!check_access(card))
@@ -83,6 +88,21 @@ GLOBAL_LIST_EMPTY(marketsign_overlay_cache)
. = TRUE
/obj/structure/sign/double/barsign/AltClick(mob/user) // Alt-click a sign with an empty hand to power or depower it, if it has the associated "[name]-off" state in the .dmi file.
if(!on_icon_state)
to_chat(user, SPAN_WARNING("The sign is already off!"))
return
if(!currently_on)
currently_on = TRUE
icon_state = on_icon_state
return
icon_state = off_icon_state
currently_on = FALSE
/obj/structure/sign/double/barsign/proc/get_sign_choices()
var/list/sign_choices = GET_SINGLETON_SUBTYPE_MAP(choice_types)
return sign_choices
/obj/structure/sign/double/barsign/proc/set_sign(choice)
var/singleton/sign/double/chosen_singleton = text2path(choice)
@@ -94,16 +114,6 @@ GLOBAL_LIST_EMPTY(marketsign_overlay_cache)
on_icon_state = icon_state
update_icon()
/obj/structure/sign/double/barsign/AltClick(mob/user) // Alt-click a sign with an empty hand to power or depower it, if it has the associated "[name]-off" state in the .dmi file.
if(!on_icon_state)
to_chat(user, SPAN_WARNING("The sign is already off!"))
return
if(!currently_on)
currently_on = TRUE
icon_state = on_icon_state
return
icon_state = off_icon_state
currently_on = FALSE
// ---- Kitchen sign
@@ -134,6 +144,24 @@ GLOBAL_LIST_EMPTY(marketsign_overlay_cache)
/obj/structure/sign/double/barsign/marketsign/mirrored // Visible from the other end of the sign.
pixel_x = -32
/// Static signs can be toggled on and off, but have no alternative icons to set. Used for mapping.
/obj/structure/sign/double/barsign/marketsign/staticsign
sign_change_allowed = FALSE
/obj/structure/sign/double/barsign/marketsign/staticsign/quikstop
/obj/structure/sign/double/barsign/marketsign/staticsign/quikstop/Initialize()
..()
var/singleton/sign/double/market/signselect = /singleton/sign/double/market/quikstop
name = signselect.name
desc = signselect.desc
desc_extended = signselect.desc_extended
icon_state = signselect.icon_state
currently_on = TRUE
on_icon_state = icon_state
update_icon()
return INITIALIZE_HINT_NORMAL
/singleton/sign/double
var/name = "Holographic Projector"
var/icon_state = "off"
@@ -2058,6 +2058,17 @@
/obj/structure/sign/flag/assunzione/large/west/Initialize(mapload)
. = ..(mapload, WEST)
/obj/item/flag/luceist/l
name = "large Luceian flag"
flag_size = TRUE
flag_structure = /obj/structure/sign/flag/luceist/large
/obj/structure/sign/flag/luceist/large
icon_state = "luceist_l"
flag_path = "luceist"
flag_size = TRUE
flag_item = /obj/item/flag/luceist/l
// Port Antillia
/obj/item/flag/portantillia
@@ -19,6 +19,7 @@
/turf/unsimulated/wall/steel, // Centcomm wall.
/turf/unsimulated/wall/darkshuttlewall, // Centcomm wall.
/turf/unsimulated/wall/riveted, // Centcomm wall.
/turf/unsimulated/wall/fakepdoor,
/obj/structure/window_frame,
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty,
+1
View File
@@ -56,6 +56,7 @@
/turf/unsimulated/wall/steel,
/turf/unsimulated/wall/darkshuttlewall,
/turf/unsimulated/wall/riveted,
/turf/unsimulated/wall/fakepdoor,
/obj/structure/window_frame,
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty,
@@ -53,6 +53,11 @@
icon = 'icons/obj/structure/urban/poles.dmi'
icon_state = "street"
/obj/structure/utility_pole/street_aszn
desc = "A tall light source. This one seems to be off."
icon = 'icons/obj/structure/urban/poles.dmi'
icon_state = "street_aszn"
/obj/effect/overlay/street_light
icon = 'icons/obj/structure/urban/poles.dmi'
icon_state = "street_light"
@@ -62,6 +67,14 @@
icon_state = "classic_lamp_light"
density = 1
/obj/effect/overlay/street_light/classic/alt
icon_state = "classic_lamp_light_alt"
/obj/effect/overlay/street_aszn_light
icon = 'icons/obj/structure/urban/poles.dmi'
icon_state = "street_aszn_light"
plane = ABOVE_LIGHTING_PLANE
/obj/structure/utility_pole/street/on
desc = "A tall light source. This one shines brightly."
light_color = "#e8ffeb"
@@ -74,6 +87,35 @@
AddOverlays(/obj/effect/overlay/street_light)
return
/obj/structure/utility_pole/street_aszn/on
desc = "A tall light source. This one shines painfully brightly in all directions."
light_color = LIGHT_COLOR_PALE_PURPLE
light_range = 12
light_power = 2.0
/obj/structure/utility_pole/street_aszn/on/Initialize(mapload)
. = ..()
ClearOverlays()
AddOverlays(/obj/effect/overlay/street_aszn_light)
return
/obj/effect/overlay/floodlight
icon = 'icons/obj/structure/urban/poles.dmi'
icon_state = "radial_floodlight-light"
plane = ABOVE_LIGHTING_PLANE
/obj/structure/utility_pole/floodlight
desc = "Most people probably wouldn't go this far to light up public spaces; this fixture shines painfully brightly in all directions."
light_color = LIGHT_COLOR_PALE_PURPLE
light_range = 8
light_power = 1.9
/obj/structure/utility_pole/floodlight/on/Initialize(mapload)
. = ..()
ClearOverlays()
AddOverlays(/obj/effect/overlay/floodlight)
return
/obj/structure/utility_pole/street/classic
icon_state = "classic_lamp"
@@ -89,6 +131,21 @@
AddOverlays(/obj/effect/overlay/street_light/classic)
return
/obj/structure/utility_pole/street/classic/alt
icon_state = "classic_lamp"
/obj/structure/utility_pole/street/classic/alt/on
desc = "A tall light source. This one shines brightly."
light_color = LIGHT_COLOR_PALE_PURPLE
light_range = 8
light_power = 2.4
/obj/structure/utility_pole/street/classic/alt/on/Initialize(mapload)
. = ..()
ClearOverlays()
AddOverlays(/obj/effect/overlay/street_light/classic/alt)
return
/obj/effect/overlay/street_light/crosswalk
icon_state = "crosswalk_go"
@@ -207,6 +207,24 @@
/obj/structure/bed/stool/chair/sofa/corner/convex/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/bench
name = "bench"
desc = "A long, simple bench with a backboard, commonly found in subways, spaceports, and so on. Not known for being particularly comfortable."
icon_state = "pewmiddle"
base_icon = "pewmiddle"
build_amt = 3
/obj/structure/bed/stool/chair/sofa/bench/New(var/newloc)
..(newloc, MATERIAL_STEEL)
/obj/structure/bed/stool/chair/sofa/bench/left
icon_state = "pewend_left"
base_icon = "pewend_left"
/obj/structure/bed/stool/chair/sofa/bench/right
icon_state = "pewend_right"
base_icon = "pewend_right"
/obj/structure/bed/stool/chair/sofa/pew
name = "pew"
desc = "A long, simple bench with a backboard, commonly found in places of worship, courtrooms and so on. Not known for being particularly comfortable."
+245 -3
View File
@@ -285,6 +285,31 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
dir = SOUTH
bound_height = 64
ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp_assun)
icon = 'icons/obj/structure/urban/ledges_assun.dmi'
name = "inclined asphalt ramp"
desc = "A solid asphalt ramp to allow your vehicle to traverse inclines with ease."
icon_state = "road-ramp-center"
layer = 2.02
/obj/structure/stairs/urban/road_ramp_assun/right
dir = EAST
bound_width = 64
bound_x = -32
/obj/structure/stairs/urban/road_ramp_assun/left
dir = WEST
bound_width = 64
/obj/structure/stairs/urban/road_ramp_assun/north
dir = NORTH
bound_height = 64
bound_y = -32
/obj/structure/stairs/urban/road_ramp_assun/south
dir = SOUTH
bound_height = 64
/obj/structure/closet/crate/bin/urban
name = "tall garbage can"
desc = "Garbage day!"
@@ -407,6 +432,65 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
anchored = TRUE
layer = ABOVE_HUMAN_LAYER
/obj/structure/neon_sign/assunzione/music_shop
name = "\improper PV AV"
desc = "The PV AV (Port Volturno Audio / Visual), a trendy hang-out spot for the music-conscious. Local radio DJ, Livia Sabatino, is said to be a regular."
icon = 'icons/obj/structure/urban/assunzione_neon.dmi'
icon_state = "PV_AV"
layer = 5.16 // in the biz, we call this the above above ABOVE human layer
/obj/structure/neon_sign/assunzione/music_shop/Initialize()
. = ..()
AddComponent(/datum/component/large_transparency)
/obj/structure/neon_sign/assunzione/liquor_shop
name = "\improper Assunzione Duty-Free Libations"
desc = "Spaceports are fine places to make a tidy profit selling alcohol. Don't drink and pilot."
icon = 'icons/obj/structure/urban/assunzione_neon.dmi'
icon_state = "duty_free"
layer = 5.16 // in the biz, we call this the above above ABOVE human layer
/obj/structure/neon_sign/assunzione/repair_shop
name = "\improper Sybdari Electromechanics"
desc = "A hybrid mechanics' bay and electronics shop that will fix just anything, from mopeds to laptops. Though not built for serious IPC work, they can help out in a pinch. A subsidiary of Iraklio Shipworks, as it happens."
icon = 'icons/obj/structure/urban/assunzione_neon.dmi'
icon_state = "repair_shop_r"
layer = 5.16 // in the biz, we call this the above above ABOVE human layer
/obj/structure/neon_sign/assunzione/hotel
name = "\improper H O T E L sign"
desc = "A design five-hundred years old and still seen all across human space."
icon = 'icons/obj/structure/urban/assunzione_neon.dmi'
icon_state = "hotel"
/obj/structure/neon_sign/assunzione/chapel
name = "\improper Saint Alvisiol Chapel"
desc = "A local chapel consecrated by the Luceist Church, dedicated to spreading the Light of Ennoia."
icon = 'icons/obj/structure/urban/assunzione_neon.dmi'
icon_state = "assunzione"
/obj/structure/neon_sign/assunzione/witch_hand
name = "\improper WITCH HAND"
desc = "A massive neon sign for Port Volturno's best underground nightclub. Not for the pious, and <i>especially</i> not for the photosensitive. Like, seriously. They make you sign a waiver."
icon = 'icons/obj/structure/urban/assunzione_96x160.dmi'
icon_state = "wh_sign"
layer = 5.16 // in the biz, we call this the above above ABOVE human layer
pixel_x = -32
pixel_y = -32
light_range = 3.8
light_power = 0.5
light_color = LIGHT_COLOR_VIOLET
/obj/structure/neon_sign/assunzione/witch_hand/Initialize()
. = ..()
AddComponent(/datum/component/large_transparency)
AddOverlays(emissive_appearance(icon, "[icon_state]-em", src, alpha = src.alpha))
set_light_range_power_color(light_range, light_power, light_color)
set_light_on(TRUE)
bound_width = 96
bound_height = 96
return INITIALIZE_HINT_NORMAL
/obj/structure/shipping_container_old
name = "freight container"
desc = "A hulking industrial shipping container, bound for who knows where."
@@ -627,7 +711,6 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
density = TRUE
anchored = TRUE
/obj/structure/statue/buddha
name = "buddha statue"
desc = "A bronze statue of the Amitabha Buddha, the Buddha of Limitless Light."
@@ -638,6 +721,38 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
desc = "A set of armor modelled after historical designs. Pieces replicating ancient artifacts are common on Konyang and viewed as favored pieces of art."
icon_state = "gusoku"
/obj/structure/statue/aec/small
name = "\improper AEC memorial statue"
desc = "A bronze statue of the Amitabha Buddha, the Buddha of Limitless Light."
icon_state = "aec_small"
/obj/structure/statue/aec/large
name = "\improper AEC memorial statue"
desc = "A towering memorial to all the fatalities incurred over the AEC's operations. Beneath the towering ranger in bronze, a plaque reads:<br>\
<b>FOR ALL HEROES FALLEN;</b><br>\
<b>INTREPID AND PIOUS,</b><br>\
<b>IN THAT HOLIEST OF MISSIONS:</b><br>\
<b>THE SEARCH OF LIGHT IN DARKNESS.</b><br>\
The list of names below is terribly long, the font so small as to be barely readable at all."
icon = 'icons/obj/structure/urban/assunzione_96x160.dmi'
icon_state = "aec_large"
layer = 5.16 // in the biz, we call this the above above ABOVE human layer
pixel_x = -32
pixel_y = -32
light_range = 3.8
light_power = 0.7
light_color = LIGHT_COLOR_VIOLET
/obj/structure/statue/aec/large/Initialize()
. = ..()
AddComponent(/datum/component/large_transparency)
AddOverlays(emissive_appearance(icon, "[icon_state]-em", src, alpha = src.alpha))
set_light_range_power_color(light_range, light_power, light_color)
set_light_on(TRUE)
bound_width = 32
bound_height = 64
return INITIALIZE_HINT_NORMAL
/obj/structure/sign/urban
name = "exit sign"
desc = "A sign indicating where you should probably go in a hurry."
@@ -653,16 +768,58 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
density = TRUE
layer = ABOVE_HUMAN_LAYER
/obj/structure/sign/billboard/Initialize()
. = ..()
AddComponent(/datum/component/large_transparency)
/obj/structure/sign/billboard/nolegs
name = "commercial billboard"
desc = "A large billboard rented out for advertisement space."
icon = 'icons/obj/structure/urban/billboard.dmi'
icon_state = "board_nolegs-l"
density = TRUE
layer = ABOVE_HUMAN_LAYER
/obj/structure/sign/billboard/advert
name = "billboard advertisement"
desc = null
icon_state = "sign"
density = TRUE
/**
* Billboard adverts have icon_states named for whether they're generic or location-specific. These variable records the # of a given type for the purpose of populating appropriate adverts.
* When new adverts are added to a pool, or a new pool is added, the XYZ_adverts variables should be updated so that billboards at a given location populate their adverts randomly.
*/
var/list/advert_pool = list()
var/generic_adverts = 8
var/konyang_adverts = 11
var/assunzione_adverts = 3
/obj/structure/sign/billboard/advert/random/Initialize(mapload)
/obj/structure/sign/billboard/advert/random/generic/Initialize(mapload)
. = ..()
ClearOverlays()
icon_state = "sign[rand(1, 14)]"
for(var/x = 1 to generic_adverts)
advert_pool += "sign_generic[x]"
icon_state = pick(advert_pool)
return
/obj/structure/sign/billboard/advert/random/konyang/Initialize(mapload)
. = ..()
ClearOverlays()
for(var/x = 1 to generic_adverts)
advert_pool += "sign_generic[x]"
for(var/y = 1 to konyang_adverts)
advert_pool += "sign_konyang[y]"
icon_state = pick(advert_pool)
return
/obj/structure/sign/billboard/advert/random/assunzione/Initialize(mapload)
. = ..()
ClearOverlays()
for(var/x = 1 to generic_adverts)
advert_pool += "sign_generic[x]"
for(var/y = 1 to assunzione_adverts)
advert_pool += "sign_assunzione[y]"
icon_state = pick(advert_pool)
return
/obj/structure/sign/urban/drive_thru
@@ -691,14 +848,21 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
light_color = LIGHT_COLOR_CYAN
light_range = 1.8
var/menu_text = ""
/// Whether or not the menu text can be updated.
var/static_menu = FALSE
/obj/structure/restaurant_menu/attack_hand(mob/user)
if(static_menu)
to_chat(user, SPAN_WARNING("This menu sign's text is not configurable."))
var/new_text = sanitize(input(user, "Enter new text for the hologram to display.", "Hologram Display", html2pencode(menu_text, TRUE)) as null|message)
if(!isnull(new_text))
menu_text = pencode2html(new_text)
update_icon()
/obj/structure/restaurant_menu/attackby(obj/item/attacking_item, mob/user)
if(static_menu)
to_chat(user, SPAN_WARNING("This menu sign's text is not configurable."))
return ..()
if(istype(attacking_item, /obj/item/paper))
var/obj/item/paper/P = attacking_item
to_chat(user, SPAN_NOTICE("You scan \the [attacking_item.name] into \the [name]."))
@@ -709,6 +873,30 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
return TRUE
return ..()
/obj/structure/restaurant_menu/stafylia
name = "\improper Stafýlia menu"
icon_state = "menu_gyro"
desc = "Welcome to Stafýlia! The real taste of Assunzione!\
<br><br>\
<br><b>Mains</b>\
<br>Signature Stafýlia Gyro - 6电\
<br>Doner Kebab - 6电\
<br>Falafel Pita - 6电\
<br><br>\
<br><b>Sides</b>\
<br>Salad - 3电\
<br>Fries - 3电\
<br>Chocolate Pita - 4电\
<br><br>\
<br><b>Drinks</b>\
<br>Drosiá Grape - 2电\
<br>Drosiá Cherry - 2电\
<br>Comet Cola - 2电\
<br>Xanu Rush - 2电\
<br><br>\
<br>Get the Stafýlia meal combo! Your choice of main, side and drink for only 9.50电!"
static_menu = TRUE
/obj/structure/sign/urban/konyang
name = "convenience store sign"
desc = "A sign labeling the structure as a 24-7 MINI MART. Convenient!"
@@ -740,6 +928,22 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
desc = "A sign labeling the structure as a Konyang health and supply pharmacy."
icon_state = "pharmacy_sign"
/obj/structure/sign/urban/assunzione
name = "convenience store sign"
desc = "A sign labeling the structure as a 24-7 MINI MART. Convenient!"
icon = 'icons/obj/structure/urban/assunzione_signs.dmi'
icon_state = "shop_sign"
/obj/structure/sign/urban/assunzione/police
name = "police station sign"
desc = "A sign labeling the structure as an Volturno Spaceport security facility; while the spaceport is administered by the government of Triesto, internal security is Zeng-Hu corporate."
icon_state = "police_sign"
/obj/structure/sign/urban/assunzione/pharmacy
name = "pharmacy & clinic sign"
desc = "A sign labeling the structure as a Zeng-Hu pharmaceutical distributor and medical clinic."
icon_state = "pharmacy_sign"
/obj/structure/window/urban
icon = 'icons/obj/structure/urban/windows_tall.dmi'
icon_state = "wood"
@@ -909,6 +1113,7 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
balloon_alert_to_viewers("*unlocks*")
to_chat(user, SPAN_NOTICE("You unlock \the [src]."))
playsound(src.loc, hatch_open_sound, 40, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE)
open()
//Save the list of accesses and empty them up
@@ -927,6 +1132,7 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
balloon_alert_to_viewers("*locks*")
to_chat(user, SPAN_NOTICE("You lock \the [src]."))
playsound(src.loc, hatch_close_sound, 30, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE)
close()
//Readd the list of accesses, and empty up the previous access lists
@@ -1006,3 +1212,39 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp)
/obj/item/key/door_key/GetAccess()
return access_list
// Overhead structural arches. Cool as hell.
ABSTRACT_TYPE(/obj/structure/arch)
icon = 'icons/obj/structure/urban/arches.dmi'
icon_state = "gothic_arch_single"
layer = ABOVE_ABOVE_HUMAN_LAYER
name = "arch"
anchored = TRUE
/obj/structure/arch/Initialize()
. = ..()
AddComponent(/datum/component/large_transparency, 0, 0, 0, 0)
// East/west arch pieces
/obj/structure/arch/gothic/eastwest/_single
dir = 4
/obj/structure/arch/gothic/eastwest/left
icon_state = "gothic_arch_end"
dir = 4
/obj/structure/arch/gothic/eastwest/middle
icon_state = "gothic_arch_middle"
dir = 4
/obj/structure/arch/gothic/eastwest/right
icon_state = "gothic_arch_end"
dir = 8
// North/south arch pieces
/obj/structure/arch/gothic/northsouth/_single
/obj/structure/arch/gothic/northsouth/upper
icon_state = "gothic_arch_end"
/obj/structure/arch/gothic/northsouth/center
icon_state = "gothic_arch_middle"
/obj/structure/arch/gothic/northsouth/lower
icon_state = "gothic_arch_end"
dir = 1
+1
View File
@@ -618,6 +618,7 @@
/turf/unsimulated/wall/steel,
/turf/unsimulated/wall/darkshuttlewall,
/turf/unsimulated/wall/riveted,
/turf/unsimulated/wall/fakepdoor,
/obj/structure/window_frame,
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty,
@@ -110,6 +110,11 @@
/turf/simulated/floor/grass/no_edge
has_edge_icon = FALSE
/turf/simulated/floor/grass1/no_edge
icon = 'icons/turf/flooring/grass2.dmi'
icon_state = "grass10"
has_edge_icon = FALSE
/turf/simulated/floor/diona
name = "biomass flooring"
icon = 'icons/turf/flooring/diona.dmi'
+53
View File
@@ -84,9 +84,15 @@
desc = "A short ledge that an adult-sized Human wouldn't have much trouble traversing. At best, an oversized step."
icon_state = "quarter-height"
/obj/structure/ledge/quarter/above_decals
layer = ABOVE_TILE_LAYER // Forgive me.
/obj/structure/ledge/quarter/corner
icon_state = "quarter-corner"
/obj/structure/ledge/quarter/corner/above_decals
layer = ABOVE_TILE_LAYER // Forgive me.
/obj/structure/ledge/roof
name = "roof ledge"
desc = "A basic roofing ledge to mark the edge of a rooftop. Don't trip!"
@@ -132,3 +138,50 @@
broken_overlay = "tiled"
burned_overlay = "tiled"
initial_flooring = /singleton/flooring/concrete/square
// Assunzione variants.
/turf/simulated/floor/asphalt/assunzione
name = "asphalt"
desc = "Once-hot asphalt."
icon = 'icons/turf/flooring/urban_turfs_assun.dmi'
icon_state = "asphalt0"
/turf/simulated/floor/sidewalk/assunzione
name = "weathered tiling"
desc = "Great for speeding on."
icon = 'icons/turf/flooring/urban_turfs_assun.dmi'
icon_state = "sidewalk-tile"
/turf/simulated/floor/sidewalk/assunzione/detail
icon_state = "sidewalk-tile-detail"
/turf/simulated/floor/sidewalk/assunzione/paved
name = "paved tiles"
icon_state = "brick-paver"
/turf/simulated/floor/sidewalk/assunzione/flat
name = "flat paved tiles"
icon_state = "flat"
/turf/simulated/floor/sidewalk/assunzione/flat/Initialize(mapload)
. = ..()
icon_state = "flat[rand(1,3)]"
/turf/simulated/floor/sidewalk/assunzione/blocks
name = "blocked sidewalk tiles"
icon_state = "blocks"
/turf/simulated/floor/sidewalk/assunzione/blocks/Initialize(mapload)
. = ..()
icon_state = "blocks[rand(1,3)]"
/turf/simulated/floor/roofing_tiles/assunzione
name = "roofing tiles"
desc = "You're on top of the world!"
icon = 'icons/turf/flooring/urban_turfs_assun.dmi'
icon_state = "rooftop"
/turf/simulated/floor/roofing_tiles/assunzione/Initialize(mapload)
. = ..()
icon_state = "rooftop[rand(1,3)]"
+7
View File
@@ -82,6 +82,13 @@
. = ..(mapload, MATERIAL_SANDSTONE)
canSmoothWith = list(src.type)
/turf/simulated/wall/brick
icon = 'icons/turf/smooth/wall_preview.dmi'
icon_state = "brick"
/turf/simulated/wall/brick/Initialize(mapload)
. = ..(mapload, MATERIAL_BRICK)
/turf/simulated/wall/ironphoron/Initialize(mapload)
canSmoothWith = list(src.type)
. = ..(mapload, MATERIAL_IRON, MATERIAL_PHORON)
+2 -1
View File
@@ -21,7 +21,8 @@
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty,
/obj/machinery/door,
/obj/machinery/door/airlock
/obj/machinery/door/airlock,
/obj/structure/arch
)
hitsound = 'sound/weapons/Genhit.ogg'
explosion_resistance = 10
+3 -1
View File
@@ -29,7 +29,8 @@
/turf/unsimulated/wall/fakepdoor,
/obj/structure/window_frame,
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty
/obj/structure/window_frame/empty,
/obj/structure/arch
)
/turf/unsimulated/wall/fakepdoor
@@ -56,6 +57,7 @@
icon_state = "map-shuttle"
desc = "It's a wall. It appears to be composed of a highly durable alloy."
smoothing_flags = SMOOTH_TRUE
color = COLOR_WALL_GUNMETAL
canSmoothWith = list(
/turf/unsimulated/wall/darkshuttlewall,
/turf/unsimulated/wall/riveted,
+1
View File
@@ -584,6 +584,7 @@ GLOBAL_LIST_EMPTY(asset_datums)
"biesel.png" = 'html/images/scans/exoplanets/biesel.png',
"moghes.png" = 'html/images/scans/exoplanets/moghes.png',
"chanterel.png" = 'html/images/scans/exoplanets/chanterel.png',
"assunzione.png" = 'html/images/scans/exoplanets/assunzione.png',
//end scan images
"bluebird.woff" = 'html/fonts/OFL/Bluebird.woff',
"grandhotel.woff" = 'html/fonts/OFL/GrandHotel.woff',
@@ -171,3 +171,38 @@
"77.7 SoulFM" = 'texts/lore_radio/konyang/77.7_SoulFM.txt',
"78.1 RealFM" = 'texts/lore_radio/konyang/78.1_RealFM.txt'
)
/datum/space_sector/al_maqdisi
name = SECTOR_AL_MAQDISI
description = "Located in the southeastern reaches of the Spur, Light's Edge was the furthest that explorers from the Alliance's hegemonic colonization era reached. Few attempts were made to colonize it prior to the Interstellar War, and it remains sparsely populated even today. It is home to Assunzione in the Al-Maqdisi sector and the mysterious, inimical Lemurian Sea, about which extraordinarily little is known."
skybox_icon = "lights_edge"
guaranteed_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/assunzione)
cargo_price_coef = list(
"nanotrasen" = 1.1,
"orion" = 0.7,
"hephaestus" = 0.7,
"zeng_hu" = 0.6,
"eckharts" = 1,
"blam" = 0.9,
"zharkov" = 1.2,
"virgo" = 0.9,
"bishop" = 0.5,
"xion" = 0.8,
"zavodskoi" = 0.8,
)
ports_of_call = list("Port Volturno, Triesto")
scheduled_port_visits = list("Sunday", "Wednesday")
starlight_color = "#351035"
starlight_power = 1
starlight_range = 2
sector_lobby_transitions = 0
sector_welcome_message = 'sound/AI/welcome_assunzione.ogg'
lobby_tracks = list(
'sound/music/lobby/lights_edge/lights_edge_1.ogg',
'sound/music/lobby/lights_edge/lights_edge_2.ogg'
)
lore_radio_stations = list(
)
@@ -355,6 +355,7 @@
flags["flag, Private Military Contracting Group"] = /obj/item/flag/pmcg/l
flags["flag, United Syndicates of Himeo"] = /obj/item/flag/himeo/l
flags["flag, Republic of Assunzione"] = /obj/item/flag/assunzione/l
flags["flag, Luceist"] = /obj/item/flag/luceist/l
flags["flag, Union of Port Antillia"] = /obj/item/flag/portantillia/l
flags["flag, Sovereign Solarian Republic of San Colette"] = /obj/item/flag/sancolette/l
flags["flag, Old Sovereign Solarian Republic of San Colette"] = /obj/item/flag/sancolette/old/l
+9
View File
@@ -771,6 +771,15 @@
icon_state = "pmc_warden_hat_nologo"
item_state = "pmc_warden_hat_nologo"
// Assunzione security overseer hat
/obj/item/clothing/head/peaked_cap/zenghu
name = "\improper Zeng-Hu peaked cap"
desc = "A military-style corporate peaked cap. This one bears the emblem of Zeng-Hu Pharmaceuticals."
icon_state = "zh_warden_hat"
item_state = "zh_warden_hat"
icon = 'icons/obj/item/clothing/department_uniforms/security.dmi'
contained_sprite = TRUE
//goblin.stev's stuff
/obj/item/clothing/head/qeburger_visor
name = "Quick-E-Burger Food Technician Visor"
@@ -907,3 +907,13 @@
desc = "Tough synthetic fibres make up the bulk of this Himean planetary guard naval uniform, dyed a deep navy blue. It is embellished with red detailing, signalling the wearer as a fighter pilot."
icon_state = "himeo_coveralls_pilot"
item_state = "himeo_coveralls_pilot"
// Assunzione
/obj/item/clothing/under/rank/assunzione/stafylia
name = "\improper Stafylia uniform"
desc = "Only true masters of the art of gyro have the right to wear this uniform. Only at Stafylia will you find such ones."
icon = 'icons/obj/item/clothing/under/human/coc/assunzione.dmi'
icon_state = "stafylia"
item_state = "stafylia"
contained_sprite = TRUE
has_sensor = SUIT_NO_SENSORS
@@ -0,0 +1,66 @@
// --------------------------------- Assunzione
/obj/effect/overmap/visitable/sector/exoplanet/assunzione
name = "Assunzione"
desc = "A dark, frozen world blighted by the mysterious extinguishing of its star in 2274. Surface uninhabitable; significant (500+ mil) population resides in planetary network of biodomes. Both legal injunction and mass ice deposition makes mining here effectively impossible."
icon_state = "globe1"
color = "#b375ca"
planetary_area = /area/exoplanet/assunzione
initial_weather_state = /singleton/state/weather/calm
scanimage = "assunzione.png"
massvolume = "0.97-1.01"
surfacegravity = "0.98"
charted = "Charted 2243CE, Sol Alliance Department of Colonization."
alignment = "Coalition of Colonies"
geology = "Low tectonic heat signature, minimal surface disruption."
weather = "Negligible. All atmospheric and hydrological activity collapsed; marginal wind drift imparted by Coriolis force present."
surfacewater = "All surface water is frozen; majority exists in former oceans, while remainder is ice deposition over permafrost."
features_budget = 8
surface_color = null//pre colored
water_color = null//pre colored
rock_colors = null//pre colored
plant_colors = null//pre colored
generated_name = FALSE
flora_diversity = 0
has_trees = TRUE
ruin_planet_type = PLANET_LORE
ruin_type_whitelist = list()
possible_themes = list(/datum/exoplanet_theme/snow/assunzione)
place_near_main = list(1,0)
var/landing_area
/obj/effect/overmap/visitable/sector/exoplanet/assunzione/Initialize()
. = ..()
var/area/overmap/map = GLOB.map_overmap
for(var/obj/effect/overmap/visitable/sector/port_volturno/P in map)
P.x = x
P.y = y
/obj/effect/overmap/visitable/sector/exoplanet/assunzione/generate_habitability()
return HABITABILITY_BAD
/obj/effect/overmap/visitable/sector/exoplanet/assunzione/generate_map()
lightlevel = 0
..()
/obj/effect/overmap/visitable/sector/exoplanet/assunzione/generate_planet_image()
skybox_image = image('icons/skybox/lore_planets.dmi', "assunzione")
skybox_image.pixel_x = rand(0,64)
skybox_image.pixel_y = rand(128,256)
/obj/effect/overmap/visitable/sector/exoplanet/assunzione/update_icon()
return
/obj/effect/overmap/visitable/sector/exoplanet/assunzione/generate_atmosphere()
..()
if(atmosphere)
atmosphere.remove_ratio(1)
atmosphere.adjust_gas(GAS_OXYGEN, MOLES_O2STANDARD, 1)
atmosphere.adjust_gas(GAS_NITROGEN, MOLES_N2STANDARD, 1)
// hey at least 97% of the the atmosphere hasn't condensed to a liquid yet!
atmosphere.temperature = 103
atmosphere.update_values()
/obj/effect/overmap/visitable/sector/exoplanet/assunzione/generate_ground_survey_result()
ground_survey_result = "" // so it does not get randomly generated survey results
+10
View File
@@ -420,6 +420,16 @@
drop_sound = 'sound/items/drop/boots.ogg'
pickup_sound = 'sound/items/pickup/boots.ogg'
/material/stone/brick
name = MATERIAL_BRICK
reinf_icon = "reinf_stone"
icon_colour = COLOR_GRAY30
wall_colour = COLOR_GRAY30
wall_icon = 'icons/turf/smooth/composite_brick.dmi'
multipart_reinf_icon = 'icons/turf/smooth/composite_brick.dmi'
hardness = 70
golem = SPECIES_GOLEM_MARBLE
/material/concrete
name = MATERIAL_CONCRETE
icon_colour = COLOR_CONCRETE
+4
View File
@@ -13,6 +13,10 @@
/turf/unsimulated/mineral/konyang
color = "#514e5c"
/turf/unsimulated/mineral/assunzione
name = "impassable substrate"
color = "#222222"
/// This is a global list so we can share the same list with all mineral turfs; it's the same for all of them anyways.
GLOBAL_LIST_INIT(mineral_can_smooth_with, list(
/turf/simulated/mineral,
@@ -302,3 +302,19 @@
),
WILDLIFE = list() //no xanu wildlife assets yet
)
// it's looking pretty bleak out there boys
/singleton/biome/snow/assunzione
spawn_types = list(
PLANET_TURF = list(/turf/simulated/floor/exoplanet/permafrost = 1),
GRASSES = list(),
LARGE_FLORA = list(
/obj/structure/flora/rock/ice = 2,
/obj/structure/flora/tree/dead = 1
),
SMALL_FLORA = list(
/obj/structure/flora/assunzione/bush/lucevine = 3,
/obj/effect/floor_decal/snowdrift/large/random = 2
),
WILDLIFE = list()
)
@@ -72,6 +72,12 @@
name = "Xanu Prime Wilderness"
base_turf = /turf/simulated/floor/exoplanet/grass/stalk
/area/exoplanet/assunzione
name = "Assunzioni Wilderness"
ambience = list()
base_turf = /turf/simulated/floor/exoplanet/snow
area_blurb = "A lightless lifelessness more oppressive than even that of barren asteroids. One day, even the nitrogen in the still air will freeze solid and the luce vines will finally die out in the wild."
/area/exoplanet/lava
name = "\improper Planetary surface"
ambience = AMBIENCE_LAVA
@@ -0,0 +1,110 @@
/obj/structure/flora/assunzione
name = "native Assunzionii flora"
desc = "One of the species of local plantlife originally native to Assunzione, preserved now only in domes after the Dimming all but flattened the biosphere."
icon = 'icons/obj/flora/assunzione/grass.dmi'
icon_state = "stalks"
layer = BASE_ABOVE_OBJ_LAYER
anchored = TRUE
density = FALSE
/obj/structure/flora/assunzione/grass
name = "grass stalks"
desc = "Thin and tall stalks of native Assunzionii grasses, soft though slightly rubbery to the touch."
/obj/structure/flora/assunzione/grass/Initialize(mapload)
. = ..()
icon_state = "stalks[rand(1, 5)]"
/obj/structure/flora/assunzione/grass/alt
icon_state = "stalks_alt"
/obj/structure/flora/assunzione/grass/alt/Initialize(mapload)
. = ..()
icon_state = "stalks_alt[rand(1, 5)]"
/obj/structure/flora/assunzione/grass/alt
icon_state = "stalks_alt"
/obj/structure/flora/assunzione/grass/sparse
icon_state = "sparsegrass_1"
/obj/structure/flora/assunzione/grass/sparse/New()
..()
icon_state = "sparsegrass_[rand(1, 3)]"
/obj/structure/flora/assunzione/grass/full
icon_state = "fullgrass_1"
/obj/structure/flora/assunzione/grass/full/New()
..()
icon_state = "fullgrass_[rand(1, 3)]"
/obj/structure/flora/assunzione/flowers
icon = 'icons/obj/flora/assunzione/flowers.dmi'
layer = BASE_ABOVE_OBJ_LAYER
/obj/structure/flora/assunzione/flowers/lavendergrass
icon_state = "lavendergrass_1"
/obj/structure/flora/assunzione/flowers/lavendergrass/New()
..()
icon_state = "lavendergrass_[rand(1, 4)]"
/obj/structure/flora/assunzione/flowers/ywflowers
icon_state = "ywflowers_1"
/obj/structure/flora/assunzione/flowers/ywflowers/New()
..()
icon_state = "ywflowers_[rand(1, 4)]"
/obj/structure/flora/assunzione/flowers/brflowers
icon_state = "brflowers_1"
/obj/structure/flora/assunzione/flowers/brflowers/New()
..()
icon_state = "brflowers_[rand(1, 3)]"
/obj/structure/flora/assunzione/flowers/ppflowers
icon_state = "ppflowers_1"
/obj/structure/flora/assunzione/flowers/ppflowers/New()
..()
icon_state = "ppflowers_[rand(1, 3)]"
/obj/structure/flora/assunzione/bush
icon = 'icons/obj/flora/assunzione/bush.dmi'
/obj/structure/flora/assunzione/bush/pale
icon_state = "palebush_1"
/obj/structure/flora/assunzione/bush/pale/New()
..()
icon_state = "palebush_[rand(1, 4)]"
/obj/structure/flora/assunzione/bush/ferny
icon_state = "fernybush_1"
/obj/structure/flora/assunzione/bush/ferny/New()
..()
icon_state = "fernybush_[rand(1, 3)]"
/obj/structure/flora/assunzione/bush/lucevine
name = "luce vine cluster"
desc = "The namesake plant for Luceism, the light-centric religion of Assunzione, the Luce Vine is a fruiting vine noted for its astounding resilience to cold following the Dimming. \
The plant and its bioluminscent fruit, called 'luce bulbs', are considered evidence of miracle to devout Assunzioni."
icon_state = "lvcluster_1"
light_range = 1.4
light_power = 1
light_color = COLOR_CYAN
layer = BASE_ABOVE_OBJ_LAYER
/obj/structure/flora/assunzione/bush/lucevine/New()
..()
icon_state = "lvcluster_[rand(1, 3)]"
/obj/structure/flora/assunzione/bush/lucevine/Initialize(mapload)
..()
AddOverlays(emissive_appearance(icon, "[icon_state]-em", src, alpha = src.alpha))
set_light_range_power_color(light_range, light_power, light_color)
set_light_on(TRUE)
return INITIALIZE_HINT_NORMAL
@@ -312,3 +312,15 @@
and is said to have the unpleasant taste of bleached cotton. \
It is sometimes used in the textile industry due to it's vibrant colors."
icon_state = "plant-tc-03"
/obj/structure/flora/pottedplant/luce_vine
name = "potted luce vine"
desc = "The namesake plant for Luceism, the light-centric religion of Assunzione, the Luce Vine is a fruiting vine noted for its astounding resilience to cold following the Dimming. \
The plant and its bioluminscent fruit, called 'luce bulbs', are considered evidence of miracle to devout Assunzioni."
icon_state = "plant-luce-vine"
light_system = MOVABLE_LIGHT
/obj/structure/flora/pottedplant/luce_vine/Initialize()
. = ..()
set_light(l_range = 2.2, l_power = 3, l_color = LIGHT_COLOR_PURPLE)
return INITIALIZE_HINT_NORMAL
@@ -189,3 +189,15 @@
name = "blueish potted fern"
desc = "A miniature fern, with one big dark blue leaf."
icon_state = "plant-27"
/obj/item/flora/pottedplant_small/luce_vine
name = "potted luce vine"
desc = "The namesake plant for Luceism, the light-centric religion of Assunzione, the Luce Vine is a fruiting vine noted for its astounding resilience to cold following the Dimming. \
The plant and its bioluminscent fruit, called 'luce bulbs', are considered evidence of miracle to devout Assunzioni."
icon_state = "plant-luce-vine"
light_system = MOVABLE_LIGHT
/obj/item/flora/pottedplant_small/luce_vine/Initialize()
. = ..()
set_light(l_range = 1.4, l_power = 3, l_color = LIGHT_COLOR_PURPLE)
return INITIALIZE_HINT_NORMAL
@@ -0,0 +1,13 @@
/turf/simulated/floor/exoplanet/assunzione
name = "artificial substratum"
desc = "The unclean but highly compacted solid foundation for a building or structure."
icon = 'icons/turf/flooring/urban_turfs.dmi'
icon_state = "rust"
has_resources = FALSE
/turf/simulated/floor/exoplanet/assunzione/Initialize(mapload)
. = ..()
icon_state = "rust[rand(1,12)]"
/turf/simulated/floor/exoplanet/assunzione/no_edge
has_edge_icon = FALSE
@@ -103,3 +103,20 @@
BIOME_SEMIARID = /singleton/biome/snow/forest/xanu
)
)
/datum/exoplanet_theme/snow/assunzione
name = "Assunzione"
surface_turfs = list(
/turf/simulated/floor/exoplanet/permafrost
)
mountain_biome = null
possible_biomes = list(
BIOME_POLAR = list(
BIOME_ARID = /singleton/biome/water/ice,
BIOME_SEMIARID = /singleton/biome/snow/assunzione
),
BIOME_COOL = list(
BIOME_ARID = /singleton/biome/water/ice,
BIOME_SEMIARID = /singleton/biome/snow/assunzione
)
)
@@ -1433,6 +1433,17 @@
glass_name = "glass of Orange Starshine"
glass_desc = "A citrusy orange soda."
/singleton/reagent/drink/orangeade
name = "Orangeade"
description = "A fizzy citrus-y splash of delight."
color = "#e77110"
taste_description = "fizzy citrus"
carbonated = TRUE
glass_icon_state = "glass_orange"
glass_name = "glass of orangeade"
glass_desc = "It tastes like it might be good for you, but it's not! Mmm, citrus!"
//
// Diet Soda
//
@@ -1286,3 +1286,60 @@ ABSTRACT_TYPE(/obj/item/reagent_containers/food/snacks/bowl)
reagent_data = list(/singleton/reagent/nutriment = list("jam" = 5, "salad" =5), /singleton/reagent/nutriment/protein = list("seasoned meat" = 5))
bitesize = 3
filling_color = "#695753"
/obj/item/reagent_containers/food/snacks/lentil_soup
name = "midnight lentil soup"
desc = "A self-heating cup of thick lentil soup with garlic, oil, and black pepper, popular on late tram rides between domes. Comes with a too-small plastic spoon clipped to the inside of the lid. Distributed by Dalyan Delights!"
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "lentil_soup"
is_liquid = TRUE
reagents_to_add = list(/singleton/reagent/nutriment/protein = 5, /singleton/reagent/nutriment = 5, /singleton/reagent/spacespice = 1)
reagent_data = list(/singleton/reagent/nutriment = list("hot soup" = 6, "lentils" = 5, "garlicky oil" = 4), /singleton/reagent/nutriment/protein = list("lentils" = 5))
bitesize = 2
filling_color = "#7c3d20"
// If the ungrateful players don't like that under the hood it's literally just ramen, TOO BAD!
/obj/item/reagent_containers/food/drinks/dry_pasta
name = "cup pasta"
desc = "All they needed to do was tweak the formula. Just add 10ml water and it self-heats, just like your favorite ramen cup! Has a dash of saffron powder, onion flakes, garlic, and tomato concentrate."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "pasta"
trash = /obj/item/trash/pasta
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=11)
reagents_to_add = list(/singleton/reagent/drink/dry_ramen = 30)
is_liquid = FALSE
/obj/item/reagent_containers/food/drinks/dry_pasta/on_reagent_change()
..()
if(reagents.has_reagent("dry_ramen"))
is_liquid = FALSE
else
is_liquid = TRUE
/obj/item/trash/pasta
name = "cup pasta"
desc = "This used to be delicious delicious cup pasta."
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "pasta_empty"
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
/obj/item/reagent_containers/food/snacks/candied_citrus
name = "\improper Seven Lamps candied citrus peels"
desc = "A prepackaged assortment of candied citrus peel dusted lightly with sugar. Sticky, fragrant, and easy to snack on. Distributed by Dalyan Delights!"
icon = 'icons/obj/item/reagent_containers/food/cultural/human.dmi'
icon_state = "candied_citrus"
reagents_to_add = list(/singleton/reagent/nutriment = 6, /singleton/reagent/sugar = 4, /singleton/reagent/spacespice = 1)
reagent_data = list(/singleton/reagent/nutriment = list("orange" = 5, "lemon" = 5), /singleton/reagent/sugar = list("sugar" = 5))
bitesize = 1
filling_color = "#ffbb00"
/obj/item/reagent_containers/food/drinks/cans/orangeade
name = "\improper Dameri orangeade"
desc = "A dark orange-red soft drink with a sharper citrus flavour and a pleasantly bitter finish."
icon_state = "orangeade"
item_state = "orangeade"
contained_sprite = TRUE
reagents_to_add = list(/singleton/reagent/drink/orangeade = 30)
+27 -23
View File
@@ -16,15 +16,15 @@
/// Speed on land. Higher is slower.
/// If 0 it can't go on land turfs at all.
var/land_speed = 5
var/land_speed = 1.4
/// Speed if walk intent is on.
/// Should be slower, but does not crash into other bikes or people at this speed.
/// If land speed is 0, still can't go on land turfs at all.
var/land_speed_careful = 6
var/land_speed_careful = 2.2
/// Same as land speed, but for space turfs.
var/space_speed = 1
/// Same as land speed if walk intent is on, but for space turfs.
var/space_speed_careful = 4
var/space_speed_careful = 2
var/bike_icon = "bike"
var/storage_type = /obj/item/storage/toolbox/bike_storage
@@ -57,7 +57,7 @@
. += "CTRL-click the bike to toggle the engine."
. += "ALT-click to toggle the kickstand which prevents movement by driving and dragging."
. += "Click the resist button or type \"resist\" in the command bar at the bottom of your screen to get off the bike."
. += "Use walk intent to move around carefully, or run intent to go fast, and risk crashing into other people or bikes."
. += "Go fast! Use the RUN intent to go fast! Just be careful you don't run anyone over."
/obj/vehicle/bike/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
@@ -198,6 +198,25 @@
return
return Move(get_step(src, direction))
/obj/vehicle/bike/RunOver(var/mob/living/carbon/human/H)
var/mob/living/M
if(!buckled)
return
if(istype(buckled, /mob/living))
M = buckled
var/collision_damage = clamp((maxhealth/6), 5, 30)
if(M.m_intent == M_RUN)
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Was rammed by [src]</font>"
M.attack_log += "\[[time_stamp()]\] <span class='warning'>rammed[M.name] ([M.ckey]) rammed [H.name] ([H.ckey]) with the [src].</span>"
msg_admin_attack("[src] crashed into [key_name(H)] at (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[H.x];Y=[H.y];Z=[H.z]'>JMP</a>)" )
src.visible_message(SPAN_DANGER("\The [src] runs over \the [H]!"))
H.apply_damage(collision_damage, DAMAGE_BRUTE)
H.apply_effect(4, WEAKEN)
return TRUE
/obj/vehicle/bike/proc/check_destination(var/turf/destination)
var/static/list/types = typecacheof(list(/turf/space))
if((is_type_in_typecache(destination,types) && !locate(/obj/structure/lattice)) || pulledby)
@@ -230,7 +249,7 @@
/obj/vehicle/bike/turn_on()
ion.start()
anchored = 1
anchored = TRUE
if(can_hover)
flying = TRUE
@@ -343,7 +362,7 @@
desc = "A Hephaestus-manufactured military speeder, used by the forces of the Izweski Hegemony."
icon_state = "heg_speeder_on"
bike_icon = "heg_speeder"
land_speed = 2
land_speed = 1
space_speed = 1
health = 250
maxhealth = 250
@@ -366,27 +385,12 @@
dir = EAST
land_speed = 1
land_speed_careful = 4
land_speed_careful = 1.6
space_speed = 0
space_speed_careful = 0
can_hover = FALSE
/obj/vehicle/bike/monowheel/RunOver(var/mob/living/carbon/human/H)
var/mob/living/M
if(!buckled)
return
if(istype(buckled, /mob/living))
M = buckled
if(M.m_intent == M_RUN)
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Was rammed by [src]</font>"
M.attack_log += "\[[time_stamp()]\] <span class='warning'>rammed[M.name] ([M.ckey]) rammed [H.name] ([H.ckey]) with the [src].</span>"
msg_admin_attack("[src] crashed into [key_name(H)] at (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[H.x];Y=[H.y];Z=[H.z]'>JMP</a>)" )
src.visible_message(SPAN_DANGER("\The [src] runs over \the [H]!"))
H.apply_damage(30, DAMAGE_BRUTE)
H.apply_effect(4, WEAKEN)
return TRUE
/obj/vehicle/bike/monowheel/check_destination(var/turf/destination)
var/static/list/types = typecacheof(list(/turf/space))
if((is_type_in_typecache(destination,types) && !locate(/obj/structure/lattice)) || pulledby)
@@ -460,7 +464,7 @@
icon_state = "sport_on"
bike_icon = "sport"
land_speed = 1
land_speed_careful = 4
land_speed_careful = 1.6
space_speed = 0
protection_percent = 10
can_hover = FALSE
+11
View File
@@ -0,0 +1,11 @@
author: Batrachophrenoboocosmomachia
delete-after: True
changes:
- rscadd: "Adds the space sector for Assunzione, its exoplanet map, and its port of call, Port Volturno."
- rscadd: "Adds support for billboards to display sets of randomized ads based on icon_state prefixes for different worlds/locations."
- rscadd: "Adds support for 2x1 illuminated signs to be locked to a single initial setting."
- rscadd: "All bikes can now run people over if colliding with Run intent, not just monowheels."
- rscadd: "Adds new Luceist flag (large only), also available in gear loadout."
- balance: "Increases default vehicle speeds to account for smooth movement speed buffs (currently only affects mopeds, which were painfully slow.)"
- imageadd: "Adds many new sprites by Fyni, Minezeyes, Sammy, and Batrachophrenoboocosmomachia."
- bugfix: "Rental bike machines no longer vend dummy keys of a type if only configured to sell keys of another type."
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1,47 @@
/datum/map_template/ruin/away_site/port_volturno
name = "Assunzione - Port Volturno"
id = "port_volturno"
description = "A landing zone designated by local authorities within a Zeng-Hu-affiliated spaceport in the planetary capital of Triesto. Accommodations have been made to ensure full visitation of any open facilities present."
sectors = list(SECTOR_AL_MAQDISI)
traits = list(
//Z1
list(ZTRAIT_AWAY = TRUE, ZTRAIT_PORTOFCALL = TRUE, ZTRAIT_UP = TRUE, ZTRAIT_DOWN = FALSE),
//Z2
list(ZTRAIT_AWAY = TRUE, ZTRAIT_PORTOFCALL = TRUE, ZTRAIT_UP = FALSE, ZTRAIT_DOWN = TRUE),
)
prefix = "away_site/assunzione/port_volturno/"
suffix = "port_volturno.dmm"
spawn_weight = 1
spawn_cost = 1
template_flags = TEMPLATE_FLAG_PORT_SPAWN
unit_test_groups = list(2)
/singleton/submap_archetype/port_volturno
map = "port_volturno"
descriptor = "A landing zone within one of the Triesto biodomes."
/obj/effect/overmap/visitable/sector/port_volturno
name = "Assunzione - Port Volturno"
desc = "A landing zone designated by local authorities within a Zeng-Hu-affiliated spaceport in the planetary capital of Triesto. Accommodations have been made to ensure full visitation of any open facilities present."
icon_state = "poi"
scanimage = "assunzione.png"
place_near_main = list(0,0)
landing_site = TRUE
alignment = "Coalition of Colonies"
requires_contact = FALSE
instant_contact = TRUE
comms_support = TRUE
comms_name = "Zeng-Hu Corporate Security" //these comms should only be used by ZH Security ghostroles
freq_name = "ZH Volturno-13-Kappa Patrol"
initial_generic_waypoints = list()
initial_restricted_waypoints = list(
"Intrepid" = list("nav_port_volturno_spaceport_intrepid"),
"Quark" = list("nav_port_volturno_spaceport_quark"),
"Spark" = list("nav_port_volturno_spaceport_spark")
)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,135 @@
/area/port_volturno
name = "Port Volturno"
requires_power = 0
no_light_control = 1
icon_state = "nature_showcase"
area_flags = AREA_FLAG_HIDE_FROM_HOLOMAP | AREA_FLAG_RAD_SHIELDED | AREA_FLAG_INDESTRUCTIBLE_TURFS | AREA_FLAG_PREVENT_PERSISTENT_TRASH
base_turf = /turf/simulated/floor/exoplanet/assunzione
ambience = AMBIENCE_KONYANG_TRAFFIC
sound_environment = SOUND_ENVIRONMENT_CITY
is_outside = OUTSIDE_NO
/area/port_volturno/exterior
area_blurb = "A vast dome encloses you within the open space; beyond it only is killing cold and darkness, but here, inside, it is warm and bright and welcoming."
/area/port_volturno/interior
name = "Port Volturno - Interior"
icon_state = "green"
sound_environment = SOUND_AREA_LARGE_ENCLOSED
ambience = AMBIENCE_HANGAR
is_outside = OUTSIDE_NO
area_blurb = "With the interior curvature of the dome out of sight, it's easy to imagine you're on a normal, well-lit temperate world somewhere."
/area/port_volturno/interior/spaceport
name = "Port Volturno - Spaceport"
icon_state = "ship"
/area/port_volturno/interior/spaceport/traffic_control
name = "Port Volturno - Spaceport Traffic Control"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
icon_state = "wizard"
/area/port_volturno/interior/spaceport/security_office
name = "Port Volturno - Spaceport Security Office"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
icon_state = "security"
//Main city buildings
/area/port_volturno/interior/liquor_store
name = "Port Volturno - Duty-Free Liquor Store"
icon_state = "crew_quarters"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/port_volturno/interior/music_store
name = "Port Volturno - PV|AV"
icon_state = "party"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/port_volturno/interior/clothing_store
name = "Port Volturno - Parilti Outfitters"
icon_state = "party"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/port_volturno/interior/parking
name = "Port Volturno - Parking Garage"
area_blurb = "Sounds echo impressively through this space."
sound_environment = SOUND_AREA_STANDARD_STATION
icon_state = "dk_yellow"
/area/port_volturno/interior/riad
name = "Port Volturno - Spaceport Riad"
icon_state = "bar"
/area/port_volturno/interior/riad/garden
name = "Port Volturno - AEC Memorial Garden"
icon_state = "green"
/area/port_volturno/interior/robotics
name = "Port Volturno - Electromechanics Shop"
icon_state = "machinist_workshop"
/area/port_volturno/interior/minimart
name = "Port Volturno - QuikStop"
icon_state = "merchant"
/area/port_volturno/interior/cafe
name = "Port Volturno - Cafe"
icon_state = "cafe"
/area/port_volturno/interior/stafylia
name = "Port Volturno - Stafylia"
icon_state = "burglar"
/area/port_volturno/interior/police
name = "Port Volturno - Zeng-Hu ISD"
icon_state = "security"
/area/port_volturno/interior/police/overseer
name = "Port Volturno - Zeng-Hu ISD (Overseer's Office)"
icon_state = "sec_hos"
/area/port_volturno/interior/police/brig
name = "Port Volturno - Zeng-Hu ISD (Detention Area)"
icon_state = "brig"
/area/port_volturno/interior/pool
name = "Port Volturno - Pool"
icon_state = "fitness_pool"
/area/port_volturno/interior/clinic
name = "Port Volturno - Zeng-Hu Clinic"
icon_state = "morgue"
/area/port_volturno/interior/clinic/pharmacy
name = "Port Volturno - Zeng-Hu Clinic Pharmacy"
icon_state = "phar"
/area/port_volturno/interior/clinic/storage
name = "Port Volturno - Zeng-Hu Clinic Storage"
icon_state = "toxstorage"
/area/port_volturno/interior/maintenance
name = "Port Volturno - Maintenance Tunnels"
icon_state = "green"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
ambience = AMBIENCE_MAINTENANCE
icon_state = "maintenance"
area_blurb = "Even the emergency lighting here seems tuned a little brighter than seems strictly necessary."
/area/port_volturno/interior/hotel
name = "Port Volturno - Hotel"
icon_state = "locker"
area_blurb = "Many local vendors either commute to Port Volturno daily or stay in hotels like these."
/area/port_volturno/interior/chapel
name = "Port Volturno - Saint Alvisiol Chapel"
icon_state = "chapel"
/area/port_volturno/interior/chapel/office
name = "Port Volturno - Saint Alvisiol Chapel (Office)"
icon_state = "chapeloffice"
/area/port_volturno/interior/tram_station
name = "Port Volturno - Triesto Tram Line"
icon_state = "ship"
area_blurb = "The tram stations at Port Volturno serve not only as the fastest link to the rest of Triesto, but also as emergency shelters in the catastrophic event of a dome breach."
@@ -0,0 +1,238 @@
//Police
/datum/ghostspawner/human/assunzione_cop
short_name = "assunzione_cop"
name = "Zeng-Hu Volturno Security Officer"
desc = "Maintain overall security and adherence to corporate regulations under the dome of Port Volturno. Look the other way if no one gets hurt."
tags = list("External")
spawnpoints = list("assunzione_cop")
max_count = 2
outfit = /obj/outfit/admin/assunzione/cop
possible_species = list(SPECIES_HUMAN,
SPECIES_IPC,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_IPC_BISHOP,
SPECIES_IPC_SHELL)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Zeng-Hu Security Officer"
special_role = "Zeng-Hu Security Officer"
respawn_flag = null
/obj/outfit/admin/assunzione/cop
name = "Zeng-Hu Volturno Security Officer"
uniform = /obj/item/clothing/under/rank/security/zeng
accessory = /obj/item/clothing/accessory/holster/hip
shoes = /obj/item/clothing/shoes/jackboots
head = /obj/item/clothing/head/beret/corporate/zeng
id = /obj/item/card/id
l_ear = /obj/item/radio/headset/ship
belt = /obj/item/storage/belt/security/full
r_pocket = /obj/item/storage/wallet/random
back = /obj/item/storage/backpack/satchel
/obj/outfit/admin/assunzione/cop/get_id_access()
return list(ACCESS_PORTOFCALL_POLICE)
/datum/ghostspawner/human/assunzione_cop/overseer
short_name = "assunzione_cop_overseer"
name = "Zeng-Hu Volturno Security Overseer"
desc = "The Keiretsu are depending on you- at least that's what they tell you. The Keiretsu actually have no idea you exist. Try and keep the peace anyway."
spawnpoints = list("assunzione_cop_overseer")
max_count = 1
outfit = /obj/outfit/admin/assunzione/cop/superintendent
assigned_role = "Zeng-Hu Security Overseer"
special_role = "Zeng-Hu Security Overseer"
/obj/outfit/admin/assunzione/cop/superintendent
name = "Zeng-Hu Volturno Security Overseer"
uniform = /obj/item/clothing/under/rank/security/zeng
head = /obj/item/clothing/head/peaked_cap/zenghu
back = /obj/item/storage/backpack/satchel/leather
//Civilian
/datum/ghostspawner/human/assunzione_vendor
short_name = "assunzione_vendor"
name = "Point Volturno Vendor"
desc = "Man the stores around Port Volturno. Sell goods to the visiting crewmembers. Don't think too hard about what's probably going to happen to them in the Sea."
max_count = 6
tags = list("External")
spawnpoints = list("assunzione_vendor")
outfit = /obj/outfit/admin/assunzione/vendor
possible_species = list(SPECIES_HUMAN,
SPECIES_IPC,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_IPC_BISHOP,
SPECIES_IPC_SHELL)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Point Volturno Vendor"
special_role = "Point Volturno Vendor"
respawn_flag = null
/obj/outfit/admin/assunzione/vendor
name = "Assunzione Vendor"
uniform = /obj/item/clothing/pants/jeans
shoes = /obj/item/clothing/shoes/sneakers/black
suit = /obj/item/clothing/under/dressshirt
back = /obj/item/storage/backpack/satchel
l_pocket = /obj/item/storage/wallet/random
id = /obj/item/card/id
/obj/outfit/admin/assunzione/vendor/get_id_access()
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/assunzione_electromechanic
short_name = "assunzione_electromechanic"
name = "Sybdari Electromechanics Employee"
desc = "Man the local branch. Offer repairs and assistance with hardware to anyone that require it. If an IPC needs repairs... Do your best."
max_count = 2
tags = list("External")
spawnpoints = list("assunzione_electromechanic")
outfit = /obj/outfit/admin/assunzione/mechanic
possible_species = list(SPECIES_HUMAN,
SPECIES_IPC,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_IPC_BISHOP,
SPECIES_IPC_SHELL)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Sybdari Electromechanics Employee"
special_role = "Sybdari Electromechanics Employee"
respawn_flag = null
/obj/outfit/admin/assunzione/mechanic
name = "Sybdari Electromechanics Employee"
uniform = /obj/item/clothing/under/color/lightblue
shoes = /obj/item/clothing/shoes/laceup/brown
id = /obj/item/card/id
back = /obj/item/storage/backpack/satchel
l_pocket = /obj/item/storage/wallet/random
/obj/outfit/admin/assunzione/mechanic/get_id_access()
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/assunzione_clinic
short_name = "assunzione_clinic"
name = "Zeng-Hu Clinician"
desc = "Provide medical care to those in need. Argue relentlessly for proof of insurance."
max_count = 1
tags = list("External")
spawnpoints = list("assunzione_clinic")
outfit = /obj/outfit/admin/assunzione/clinic
possible_species = list(SPECIES_HUMAN,
SPECIES_IPC,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_IPC_BISHOP,
SPECIES_IPC_SHELL)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Zeng-Hu Clinician"
special_role = "Zeng-Hu Clinician"
respawn_flag = null
/datum/ghostspawner/human/assunzione_clinic/pharmacist
short_name = "assunzione_pharm"
name = "Zeng-Hu Pharmacist"
desc = "Sell medicine out of the pharmacy. Forget to check for prescriptions. Negotiate with Zeng-Hu for your latest batch of supplies."
spawnpoints = list("assunzione_pharm")
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Zeng-Hu Pharmacist"
special_role = "Zeng-Hu Pharmacist"
/obj/outfit/admin/assunzione/clinic
name = "Zeng-Hu Clinician"
uniform = /obj/item/clothing/under/color/white
shoes = /obj/item/clothing/shoes/sneakers/medsci
back = /obj/item/storage/backpack/satchel/pharm
l_pocket = /obj/item/storage/wallet/random
id = /obj/item/card/id
/obj/outfit/admin/assunzione/clinic/get_id_access()
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/assunzione_utility
short_name = "assunzione_utility"
name = "Port Volturno Utility Worker"
desc = "Maintain the infrastructure of Port Volturno. Replace approximately 400 light bulbs a day."
max_count = 2
tags = list("External")
spawnpoints = list("assunzione_utility")
outfit = /obj/outfit/admin/assunzione/utility
possible_species = list(SPECIES_HUMAN,
SPECIES_IPC,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_IPC_BISHOP,
SPECIES_IPC_SHELL)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Port Volturno Utility Worker"
special_role = "Port Volturno Utility Worker"
respawn_flag = null
/obj/outfit/admin/assunzione/utility
name = "Port Volturno Utility Worker"
uniform = /obj/item/clothing/under/color/purple
shoes = /obj/item/clothing/shoes/workboots/dark
head = /obj/item/clothing/head/hardhat
id = /obj/item/card/id
l_pocket = /obj/item/storage/wallet/random
back = /obj/item/storage/backpack/satchel/eng
belt = /obj/item/storage/belt/utility/full
r_pocket = /obj/item/radio
/datum/ghostspawner/human/assunzione_stafylia
short_name = "assunzione_stafylia"
name = "Stafylia Employee"
desc = "Sell gyros! If anyone asks for burgers, scream at them to get the hell out. Bloody tourists, this is gyro territory!"
max_count = 2
tags = list("External")
spawnpoints = list("assunzione_stafylia")
outfit = /obj/outfit/admin/assunzione/stafylia
possible_species = list(SPECIES_HUMAN,
SPECIES_IPC,
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_IPC_BISHOP,
SPECIES_IPC_SHELL)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Stafylia Employee"
special_role = "Stafylia Employee"
respawn_flag = null
/obj/outfit/admin/assunzione/stafylia
name = "Stafylia Employee"
uniform = /obj/item/clothing/under/rank/assunzione/stafylia
shoes = /obj/item/clothing/shoes/workboots/dark
suit = /obj/item/clothing/accessory/apron/chef
id = /obj/item/card/id
l_pocket = /obj/item/storage/wallet/random
back = /obj/item/storage/backpack/satchel
/obj/outfit/admin/assunzione/stafylia/get_id_access()
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/assunzione_keeper
short_name = "assunzione_keeper"
name = "Luceist Keeper"
desc = "Preach the Light of Ennoia! Give out warding spheres for free to Assunzionii, and to any non-believers as well (after they fork over some donation money). Show non-believers where the ATM is!"
max_count = 1
tags = list("External")
spawnpoints = list("assunzione_keeper")
outfit = /obj/outfit/admin/assunzione/keeper
possible_species = list(SPECIES_HUMAN)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Luceist Keeper"
special_role = "Luceist Keeper"
respawn_flag = null
/obj/outfit/admin/assunzione/keeper
name = "Luceist Keeper"
uniform = /obj/item/clothing/under/assunzione/priest
shoes = /obj/item/clothing/shoes/laceup
suit = /obj/item/clothing/suit/storage/hooded/wintercoat/assunzione_robe
id = /obj/item/card/id
l_pocket = /obj/item/storage/wallet/random
back = /obj/item/storage/backpack/satchel
/obj/outfit/admin/assunzione/keeper/get_id_access()
return list(ACCESS_PORTOFCALL_VENDORS)
@@ -0,0 +1,43 @@
/obj/effect/shuttle_landmark/port_volturno
landmark_flags = SLANDMARK_FLAG_AUTOSET
/obj/effect/shuttle_landmark/port_volturno/spaceport_intrepid
name = "Port Volturno, Landing Pad A (Intrepid)"
landmark_tag = "nav_port_volturno_spaceport_intrepid"
/obj/effect/shuttle_landmark/port_volturno/spaceport_quark
name = "Port Volturno, Landing Pad B (Quark)"
landmark_tag = "nav_port_volturno_spaceport_quark"
/obj/effect/shuttle_landmark/port_volturno/spaceport_spark
name = "Port Volturno, Landing Pad C (Spark)"
landmark_tag = "nav_port_volturno_spaceport_spark"
/obj/effect/shuttle_landmark/port_volturno/offship
landmark_flags = 0
/obj/effect/shuttle_landmark/port_volturno/offship/dock_01
name = "Port Volturno, Docking Point E01"
landmark_tag = "nav_port_volturno_altdock_01"
/obj/effect/shuttle_landmark/port_volturno/offship/dock_02
name = "Port Volturno, Docking Point E02"
landmark_tag = "nav_port_volturno_altdock_02"
/obj/effect/shuttle_landmark/port_volturno/offship/dock_03
name = "Port Volturno, Docking Point E03"
landmark_tag = "nav_port_volturno_altdock_03"
/obj/effect/shuttle_landmark/port_volturno/offship/dock_04
name = "Port Volturno, Docking Point E01"
landmark_tag = "nav_port_volturno_altdock_04"
/obj/effect/shuttle_landmark/port_volturno/offship/dock_05
name = "Port Volturno, Docking Point E02"
landmark_tag = "nav_port_volturno_altdock_05"
/obj/effect/shuttle_landmark/port_volturno/offship/dock_06
name = "Port Volturno, Docking Point E03"
landmark_tag = "nav_port_volturno_altdock_06"
@@ -31,7 +31,7 @@
r_pocket = /obj/item/storage/wallet/random
/obj/outfit/admin/konyang/zh/get_id_access()
return list(ACCESS_KONYANG_CORPORATE)
return list(ACCESS_PORTOFCALL_CORPORATE)
/datum/ghostspawner/human/konyang_ee
short_name = "konyang_ee"
@@ -56,7 +56,7 @@
r_pocket = /obj/item/storage/wallet/random
/obj/outfit/admin/konyang/ee/get_id_access()
return list(ACCESS_KONYANG_CORPORATE)
return list(ACCESS_PORTOFCALL_CORPORATE)
//Police
/datum/ghostspawner/human/konyang_cop
@@ -86,7 +86,7 @@
back = /obj/item/storage/backpack/satchel
/obj/outfit/admin/konyang/cop/get_id_access()
return list(ACCESS_KONYANG_POLICE)
return list(ACCESS_PORTOFCALL_POLICE)
/datum/ghostspawner/human/konyang_cop/senior
short_name = "konyang_senior_cop"
@@ -180,7 +180,7 @@
id = /obj/item/card/id
/obj/outfit/admin/konyang/vendor/get_id_access()
return list(ACCESS_KONYANG_VENDORS)
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/konyang_clinic
short_name = "konyang_clinic"
@@ -205,7 +205,7 @@
l_pocket = /obj/item/storage/wallet/random
/obj/outfit/admin/konyang/clinic/get_id_access()
return list(ACCESS_KONYANG_VENDORS)
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/konyang_pharm
short_name = "konyang_pharm"
@@ -230,7 +230,7 @@
id = /obj/item/card/id
/obj/outfit/admin/konyang/pharm/get_id_access()
return list(ACCESS_KONYANG_VENDORS)
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/konyang_bar
short_name = "konyang_bar"
@@ -255,7 +255,7 @@
id = /obj/item/card/id
/obj/outfit/admin/konyang/bar/get_id_access()
return list(ACCESS_KONYANG_VENDORS)
return list(ACCESS_PORTOFCALL_VENDORS)
/datum/ghostspawner/human/konyang_utility
short_name = "konyang_utility"
@@ -307,7 +307,7 @@
back = /obj/item/storage/backpack/satchel
/obj/outfit/admin/konyang/gwok/get_id_access()
return list(ACCESS_KONYANG_VENDORS)
return list(ACCESS_PORTOFCALL_VENDORS)
//Konyang Army Personnel - basically a pseudo-ert for if shit's going down on Point Verdant
/datum/ghostspawner/human/konyang_army
@@ -346,7 +346,7 @@
/obj/outfit/admin/konyang/army_response/get_id_access()
return list(ACCESS_DISTRESS, ACCESS_KONYANG_POLICE, ACCESS_KONYANG_CORPORATE, ACCESS_KONYANG_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
return list(ACCESS_DISTRESS, ACCESS_PORTOFCALL_POLICE, ACCESS_PORTOFCALL_CORPORATE, ACCESS_PORTOFCALL_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
/datum/ghostspawner/human/konyang_army/medic
name = "Konyang Army Medic"
@@ -436,7 +436,7 @@
back = null
/obj/outfit/admin/corporate_solutions/get_id_access()
return list(ACCESS_CENT_SPECOPS, ACCESS_KONYANG_CORPORATE, ACCESS_EXTERNAL_AIRLOCKS)
return list(ACCESS_CENT_SPECOPS, ACCESS_PORTOFCALL_CORPORATE, ACCESS_EXTERNAL_AIRLOCKS)
/datum/ghostspawner/human/corporate_solutions/einstein
name = "Einstein Corporate Solutions Agent"
@@ -42,7 +42,7 @@
tag.citizenship_info = CITIZENSHIP_COALITION
/obj/outfit/admin/kasf_crewman/get_id_access()
return list(ACCESS_KONYANG_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
return list(ACCESS_PORTOFCALL_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
// kasf engineer
/datum/ghostspawner/human/kasf_crewman/engineer
@@ -106,4 +106,4 @@
/obj/item/card/id/kasf_corvette
name = "kasf corvette id"
access = list(ACCESS_KONYANG_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
access = list(ACCESS_PORTOFCALL_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
@@ -57,9 +57,9 @@
id = /obj/item/card/id/konyang_army
/obj/outfit/admin/konyang/army/get_id_access()
return list(ACCESS_KONYANG_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
return list(ACCESS_PORTOFCALL_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
/obj/item/card/id/konyang_army
name = "konyang army id"
access = list(ACCESS_KONYANG_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
access = list(ACCESS_PORTOFCALL_POLICE, ACCESS_EXTERNAL_AIRLOCKS)
Binary file not shown.