[MIRROR] Adds a new redgate map: The Casino Canal (#11868)

Co-authored-by: Ryumi <ghosttehspychecka@gmail.com>
Co-authored-by: C.L. <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-10-26 15:23:47 -07:00
committed by GitHub
parent f63fa8ad9a
commit 5961af3835
31 changed files with 53712 additions and 60 deletions

View File

@@ -90,7 +90,7 @@ GLOBAL_VAR_INIT(refid_filter, TYPEID(filter(type="angular_blur")))
#define is_vehicle_inpassable(A) (istype(A, /turf/space) || istype(A, /turf/simulated/floor/water) || istype(A, /turf/simulated/floor/lava))
// Diveable water
#define isdiveablewater(A) istype(A, /turf/simulated/floor/water/deep/ocean/diving)
#define isdiveablewater(A) (istype(A, /turf/simulated/floor/water/deep/ocean/diving) || istype(A, /turf/simulated/floor/water/underwater/open) || istype(A, /turf/simulated/floor/water/underwater/indoors/open))
/// NaN isn't a number, damn it. Infinity is a problem too.
#define isnum_safe(x) ( isnum((x)) && !isnan((x)) && !isinf((x)) )

View File

@@ -133,3 +133,10 @@
cell = W
to_chat(user, "You insert the power cell.")
update_icon()
/obj/machinery/floodlight/starts_on
icon_state = "flood01"
/obj/machinery/floodlight/starts_on/Initialize(mapload)
. = ..()
turn_on()

View File

@@ -308,6 +308,12 @@
icon_state = "tile_white"
no_variants = FALSE
/obj/item/stack/tile/floor/purple
name = "purple floor tile"
singular_name = "purple floor tile"
color = COLOR_PURPLE_GRAY
no_variants = FALSE
/obj/item/stack/tile/floor/dark
name = "dark floor tile"
singular_name = "dark floor tile"

View File

@@ -436,3 +436,40 @@
prob(5);/obj/item/clothing/suit/shibari/black,
prob(5);/obj/item/clothing/suit/shibari/pink
)
/obj/random/chips
name = "random chips"
icon_state = "chips"
spawn_nothing_percentage = 10
/obj/random/chips/item_to_spawn()
return pick(
prob(35);/obj/item/spacecasinocash/c1,
prob(10);/obj/item/spacecasinocash/c10,
prob(5);/obj/item/spacecasinocash/c100,
)
/obj/random/chips/better
name = "better random chips"
icon_state = "chips_1"
spawn_nothing_percentage = 0
/obj/random/chips/item_to_spawn()
return pick(
prob(35);/obj/item/spacecasinocash/c10,
prob(15);/obj/item/spacecasinocash/c100,
prob(5);/obj/item/spacecasinocash/c200,
prob(1);/obj/item/spacecasinocash/c500,
)
/obj/random/chips/good
name = "good random chips"
icon_state = "chips_2"
/obj/random/chips/item_to_spawn()
return pick(
prob(45);/obj/item/spacecasinocash/c100,
prob(15);/obj/item/spacecasinocash/c200,
prob(5);/obj/item/spacecasinocash/c500,
prob(1);/obj/item/spacecasinocash/c1000,
)

View File

@@ -350,6 +350,18 @@
desc_with_canvas = "A piece of art (or \"art\"). Anyone could've hung it."
persistence_id = "public"
/obj/structure/sign/painting/public/north
pixel_y = 30
/obj/structure/sign/painting/public/south
pixel_y = -30
/obj/structure/sign/painting/public/east
pixel_x = 30
/obj/structure/sign/painting/public/west
pixel_x = -30
/obj/structure/sign/painting/library_secure
name = "\improper Curated Painting Exhibit mounting"
desc = "For masterpieces hand-picked by the librarian."

View File

@@ -379,6 +379,10 @@ var/list/flooring_types
/decl/flooring/tiling/new_tile/monotile
icon_base = "monotile"
/decl/flooring/tiling/new_tile/monotile/purple
icon_base = "monotile-purple"
build_type = /obj/item/stack/tile/floor/purple
/decl/flooring/tiling/new_tile/steel_grid
icon_base = "steel_grid"
build_type = /obj/item/stack/tile/floor/steelgrip
@@ -431,6 +435,12 @@ var/list/flooring_types
has_damage_range = null
build_type = /obj/item/stack/tile/floor/yellow
/decl/flooring/tiling/purple
name = "floor"
icon_base = "purple"
has_damage_range = null
build_type = /obj/item/stack/tile/floor/purple
/decl/flooring/tiling/dark
name = "floor"
desc = "How ominous."

View File

@@ -215,6 +215,10 @@
icon_state = "monotile"
initial_flooring = /decl/flooring/tiling/new_tile/monotile
/turf/simulated/floor/tiled/monotile/purple
icon_state = "monotile-purple"
initial_flooring = /decl/flooring/tiling/new_tile/monotile/purple
/turf/simulated/floor/tiled/steel_grid
name = "floor"
icon = 'icons/turf/flooring/tiles_vr.dmi'
@@ -406,6 +410,11 @@
icon_state = "white"
initial_flooring = /decl/flooring/tiling/yellow
/turf/simulated/floor/tiled/purple
name = "purple floor"
icon_state = "purple"
initial_flooring = /decl/flooring/tiling/purple
/turf/simulated/floor/tiled/freezer
name = "tiles"
icon_state = "freezer"

View File

@@ -259,6 +259,9 @@ CHOMP Removal End */
flooring_override = pickweight(possibledirts)
return ..()
/turf/simulated/floor/outdoors/newdirt_nograss/caves
outdoors = OUTDOORS_NO
/turf/simulated/floor/outdoors/sidewalk
name = "sidewalk"
desc = "Concrete shaped into a path!"

View File

@@ -1,3 +1,4 @@
/turf/simulated/floor/water/underwater
name = "sea floor"
desc = "It's the bottom of the sea, there's water all over the place!"
@@ -93,3 +94,91 @@
icon_state = "wood-broken0" // So it shows up in the map editor as water.
water_icon = 'icons/turf/flooring/wood_vr.dmi'
water_state = "wood-broken0"
/turf/simulated/floor/water/underwater/rocks
icon_state = "rock"
/turf/simulated/floor/water/underwater/open
icon = 'icons/effects/weather.dmi'
icon_state = "underwater-indoors" // Just looks underwater in the map editor, will be invisible once ingame
name = "deeper waters"
desc = "The watery depths seem to go even deeper here."
/turf/simulated/floor/water/underwater/open/update_icon()
. = ..()
icon = 'icons/turf/open_space.dmi'
icon_state = "black_open_lighter"
/turf/simulated/floor/water/underwater/open/LateInitialize()
. = ..()
AddElement(/datum/element/turf_z_transparency, FALSE)
/turf/simulated/floor/water/underwater/open/CanZPass(atom/A, direction, recursive)
return TRUE
/turf/simulated/floor/water/underwater/open/handle_water_icons()
// We'll rely on the turfs below for water visuals!
SHOULD_CALL_PARENT(FALSE)
var/atom/movable/weather_visuals/visuals = new(null)
visuals.icon = 'icons/effects/weather.dmi'
visuals.icon_state = "underwater"
vis_contents += visuals
// Indoors variants that do not use outdoor lighting, and must re-add water overlay icons since they won't be relying on the weather system to do it!
/turf/simulated/floor/water/underwater/indoors
outdoors = OUTDOORS_NO
var/overlay_icon = 'icons/effects/weather.dmi'
var/overlay_state = "underwater-indoors"
var/atom/movable/weather_visuals/visuals
/turf/simulated/floor/water/underwater/indoors/handle_water_icons()
SHOULD_CALL_PARENT(FALSE)
var/atom/movable/weather_visuals/visuals = new(null)
visuals.icon = overlay_icon
visuals.icon_state = overlay_state
vis_contents += visuals
/turf/simulated/floor/water/underwater/indoors/open
icon = 'icons/effects/weather.dmi'
icon_state = "underwater-indoors" // Just looks underwater in the map editor, will be invisible once ingame
name = "deeper waters"
desc = "The watery depths seem to go even deeper here."
/turf/simulated/floor/water/underwater/indoors/open/LateInitialize()
. = ..()
AddElement(/datum/element/turf_z_transparency, FALSE)
/turf/simulated/floor/water/underwater/indoors/open/update_icon()
. = ..()
icon = 'icons/turf/open_space.dmi'
icon_state = "black_open_lighter"
/turf/simulated/floor/water/underwater/indoors/open/CanZPass(atom/A, direction, recursive)
return TRUE
/turf/simulated/floor/water/underwater/indoors/cult
icon = 'icons/turf/flooring/cult.dmi'
icon_state = "cult"
/turf/simulated/floor/water/underwater/indoors/ruins
icon = 'maps/redgate/falls/icons/turfs/marble.dmi'
icon_state = "1"
/turf/simulated/floor/water/underwater/indoors/sand
icon = 'icons/misc/beach.dmi'
icon_state = "sand"
/turf/simulated/floor/water/underwater/indoors/wood
icon = 'icons/turf/flooring/wood_vr.dmi'
icon_state = "wood"
/turf/simulated/floor/water/underwater/indoors/woodbroken
icon = 'icons/turf/flooring/wood_vr.dmi'
icon_state = "wood-broken0"
/turf/simulated/floor/water/underwater/indoors/rocks
icon_state = "rock"
/turf/simulated/floor/water/underwater/indoors/rocks/vis_hide
flags = TURF_ACID_IMMUNE | VIS_HIDE

View File

@@ -702,6 +702,12 @@
strict_blending = TRUE
diagonal_blending = TRUE
/turf/simulated/wall/tgmc/window/CanPass(atom/movable/mover, turf/target)
// This IS a glass window, so things that can pass glass should pass through here!
if(istype(mover) && mover.checkpass(PASSGLASS))
return TRUE
return ..()
/turf/simulated/wall/tgmc/window/rwall
icon_state = "rwall_window0"
wall_base_state = "rwall_window"

View File

@@ -24,6 +24,11 @@
var/watercolor = null
/turf/simulated/floor/water/proc/handle_water_icons()
icon_state = under_state // This isn't set at compile time in order for it to show as water in the map editor.
var/image/water_sprite = image(icon = water_icon, icon_state = water_state, layer = WATER_LAYER)
add_overlay(water_sprite)
/turf/simulated/floor/water/Initialize(mapload)
. = ..()
update_icon()
@@ -39,10 +44,7 @@
/turf/simulated/floor/water/update_icon()
..() // To get the edges.
icon_state = under_state // This isn't set at compile time in order for it to show as water in the map editor.
var/image/water_sprite = image(icon = water_icon, icon_state = water_state, layer = WATER_LAYER)
add_overlay(water_sprite)
handle_water_icons()
/turf/simulated/floor/water/get_edge_icon_state()
return "water_shallow"

View File

@@ -1,43 +0,0 @@
/datum/playingcard/casino
name = "playing card"
card_icon = "card_back"
back_icon = "card_back"
/obj/item/deck/casino
w_class = ITEMSIZE_SMALL
cooldown = 0 // to prevent spam shuffle
/obj/item/deck/holder/casino //WIP In future do a cool holder
name = "card box"
desc = "A small leather case to show how classy you are compared to everyone else."
icon_state = "card_holder"
/obj/item/deck/cards/casino
name = "deck of casino cards"
desc = "A deck of playing cards from the golden goose casino, comes without a joker card!"
icon_state = "casino_deck"
/obj/item/deck/cards/casino/Initialize(mapload)
. = ..()
var/datum/playingcard/casino/P
for(var/suit in list("spades","clubs","diamonds","hearts"))
var/colour
if(suit == "spades" || suit == "clubs")
colour = "black_"
else
colour = "red_"
for(var/number in list("ace","two","three","four","five","six","seven","eight","nine","ten"))
P = new()
P.name = "[number] of [suit]"
P.card_icon = "casino_[colour]num"
P.back_icon = "casino_card_back"
cards += P
for(var/number in list("jack","queen","king"))
P = new()
P.name = "[number] of [suit]"
P.card_icon = "casino_[colour]col"
P.back_icon = "casino_card_back"
cards += P

View File

@@ -240,3 +240,10 @@ var/static/list/fake_sunlight_zs = list()
"color" = "#1c49ff"
)
)
/obj/effect/fake_sun/underwater/lighter
possible_light_setups = list(
list(
"brightness" = 1,
"color" = "#4bd1f3"
)
)

View File

@@ -68,19 +68,31 @@
if(!isobserver(src)) //Make sure they're an observer!
return
var/list/ar = list()
for(var/obj/machinery/transhuman/autoresleever/A in world)
// Set up an assorted list of auto-resleevers using their area name as the key, (as there should only ever be one per area)
var/list/autoresleevers = list()
for(var/obj/machinery/transhuman/autoresleever/A in GLOB.active_autoresleevers)
if(A.spawntype)
continue
else
ar |= A
var/area/resleever_area = get_area(A)
autoresleevers[resleever_area.name] = A
var/obj/machinery/transhuman/autoresleever/thisone = pick(ar)
var/obj/machinery/transhuman/autoresleever/chosen_resleever = null
if(length(autoresleevers) > 1)
// Prompt user to choose which one they wanna go to
var/choice = tgui_input_list(src, "There are multiple auto-resleevers available! Choose one.", "Choose Auto-Resleever", autoresleevers)
if(!choice)
// well okay then :L
return
chosen_resleever = autoresleevers[choice]
else
// If there's less than one, just choose whatever one is available (if any)
chosen_resleever = autoresleevers[pick(autoresleevers)]
if(!thisone)
if(!chosen_resleever)
to_chat(src, span_warning("There appears to be no auto-resleevers available."))
return
var/L = get_turf(thisone)
var/L = get_turf(chosen_resleever)
if(!L)
to_chat(src, span_warning("There appears to be something wrong with this auto-resleever, try again."))
return

View File

@@ -178,10 +178,9 @@
ai_log("handle_wander_movement() : Entered.", AI_LOG_TRACE)
if(isturf(holder.loc) && can_act())
wander_delay--
var/turf/simulated/floor/water/deep/ocean/diving/sink = holder.loc
var/turf/simulated/floor/water/underwater/surface = holder.loc
var/mob/living/simple_mob/H = holder
if(istype(sink) && H.vore_fullness)
if(isdiveablewater(holder.loc) && H.vore_fullness)
holder.zMove(DOWN)
wander_delay = base_wander_delay
else if(istype(surface) && !H.vore_fullness)

View File

@@ -54,8 +54,7 @@
return 0
if(direction == DOWN)
var/turf/simulated/floor/water/deep/ocean/diving/sink = start
if(istype(sink) && !destination.density)
if(isdiveablewater(start) && !destination.density)
var/pull_up_time = max((3 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1)
to_chat(src, span_notice("You start diving underwater..."))
src.audible_message(span_notice("[src] begins to dive under the water."), runemessage = "splish splosh")
@@ -90,7 +89,7 @@
to_chat(src, span_warning("You gave up on pulling yourself up."))
return 0
else if(istype(destination, /turf/simulated/floor/water/deep/ocean/diving))
else if(isdiveablewater(destination))
var/pull_up_time = max((5 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1)
to_chat(src, span_notice("You start swimming upwards..."))
src.audible_message(span_notice("[src] begins to swim towards the surface."), runemessage = "splish splosh")

View File

@@ -1,3 +1,5 @@
GLOBAL_LIST_EMPTY(active_autoresleevers)
/obj/machinery/transhuman/autoresleever
name = "automatic resleever"
desc = "Uses advanced technology to detect when someone needs to be resleeved, and automatically prints and sleeves them into a new body. It even generates its own biomass!"
@@ -13,6 +15,14 @@
var/spawn_slots = -1 //How many people can be spawned from this? If -1 it's unlimited
var/spawntype //The kind of mob that will be spawned, if set.
/obj/machinery/transhuman/autoresleever/Initialize(mapload)
. = ..()
GLOB.active_autoresleevers += src
/obj/machinery/transhuman/autoresleever/Destroy()
. = ..()
GLOB.active_autoresleevers -= src
/obj/machinery/transhuman/autoresleever/update_icon()
. = ..()
if(stat & (BROKEN | MAINT | EMPED))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 883 B

View File

@@ -104,6 +104,8 @@
#define Z_NAME_REDGATE_JUNGLE_CAVE "Redgate - Jungle Underground"
#define Z_NAME_REDGATE_JUNGLE "Redgate - Jungle"
#define Z_NAME_REDGATE_FACILITY "Redgate - Facility"
#define Z_NAME_REDGATE_CASINO_CANAL "Redgate - Casino Canal"
#define Z_NAME_REDGATE_CASINO_CANAL_LOWER "Redgate - Casino Canal Lower Level"
/obj/effect/landmark/map_data/groundbase
height = 3

View File

@@ -201,6 +201,7 @@
list(Z_NAME_REDGATE_CASCADING_FALLS),
list(Z_NAME_REDGATE_JUNGLE_CAVE, Z_NAME_REDGATE_JUNGLE),
list(Z_NAME_REDGATE_FACILITY),
list(Z_NAME_REDGATE_CASINO_CANAL_LOWER, Z_NAME_REDGATE_CASINO_CANAL),
)
lateload_gb_north = list(

View File

@@ -241,6 +241,8 @@
#ifdef AWAY_MISSION_TEST
#include "../redgate/falls/falls.dmm"
#include "../redgate/abandonedisland.dmm"
#include "../redgate/casino_canal/casino_canal_1.dmm"
#include "../redgate/casino_canal/casino_canal_2.dmm"
#include "../redgate/cybercity.dmm"
#include "../redgate/darkadventure.dmm"
#include "../redgate/eggnogtown.dmm"
@@ -289,6 +291,11 @@
desc = "Caves and grass and a tavern, woah!"
mappath = "maps/redgate/innland.dmm"
/datum/map_template/common_lateload/redgate/casino_canal
name = Z_NAME_REDGATE_ABANDONED_ISLAND
desc = "It seems like it used to be people here!"
mappath = "maps/redgate/casino_canal/casino_canal.dmm"
/datum/map_template/common_lateload/redgate/abandonedisland
name = Z_NAME_REDGATE_ABANDONED_ISLAND
desc = "It seems like it used to be people here!"
@@ -392,6 +399,19 @@
desc = "A facility full of unusual experiments."
mappath = "maps/redgate/facility.dmm"
/datum/map_template/common_lateload/redgate/casino_canal
name = Z_NAME_REDGATE_CASINO_CANAL
desc = "An underwater casino at the bottom of the sea."
mappath = "maps/redgate/casino_canal/casino_canal_2.dmm"
/datum/map_template/common_lateload/redgate/casino_canal_lower
name = Z_NAME_REDGATE_CASINO_CANAL_LOWER
desc = "The lower floor of an underwater casino at the bottom of the sea."
mappath = "maps/redgate/casino_canal/casino_canal_1.dmm"
/obj/effect/landmark/map_data/underwater_casino
height = 2
//////////////////////////////////////////////////////////////////////////////////////
// Admin-use z-levels for loading whenever an admin feels like
#ifdef AWAY_MISSION_TEST

View File

@@ -0,0 +1,324 @@
#define UNDERWATER_CASINO_NAME "Casino Canal"
// ******************************
// ***** OBJECTS ******
// ******************************
// Different type of chip machine that gives visitors a set amount of chips to start with.
// No pay-to-win here - One free use per ckey, and that's it!
/obj/machinery/oneuse_chipmachine
name = "automated chip dispenser"
desc = "A curious device that dispenses a set amount of chips to each visitor one time, and one time only."
icon = 'icons/obj/casino.dmi'
icon_state = "chipmachine"
anchored = 1
var/list/used_ckeys = list() // Players who have already received their chips.
var/amt_chips_to_dispense = 250
var/speaking = FALSE // Whether or not we are saying one message (to prevent overlap)
/obj/machinery/oneuse_chipmachine/proc/state_message(var/message, var/delay=0)
PROTECTED_PROC(TRUE)
SHOULD_NOT_SLEEP(TRUE)
// If we don't want a delay, say the message
if(!delay)
speaking = FALSE
playsound(loc, 'sound/voice/emotes/wawa.ogg', 50, 1)
audible_message("[icon2html(src,hearers(src))] [span_bold("\The [src]")] states, \"[message]\"", runemessage = "wawa")
// If we do, call the delay-less part of this but with, well, the delay
else
speaking = TRUE
addtimer(CALLBACK(src, PROC_REF(state_message), message), delay, TIMER_DELETE_ME)
/obj/machinery/oneuse_chipmachine/attackby(obj/item/W, mob/user, attack_modifier, click_parameters)
if(!speaking)
// No pay-to-win!
if(istype(W,/obj/item/spacecash))
state_message("Our apologies, but the [UNDERWATER_CASINO_NAME] does not accept payments of any kind. We ask only for your enjoyment of our games and facilities.")
state_message("Instead, please extend an empty hand before this machine. If this is your first time using this machine this shift, we will provide you with a set of starting chips.", 3 SECONDS)
if(istype(W,/obj/item/spacecasinocash))
state_message("Our apologies, but the [UNDERWATER_CASINO_NAME] does not convert chips to money.")
state_message("We do not require money to run our facilities. By that same token, you do not need money to enjoy them.", 3 SECONDS)
/obj/machinery/oneuse_chipmachine/attack_hand(mob/user)
if(user.ckey in used_ckeys)
if(!speaking)
state_message("You have already received your chips for this shift.")
state_message("The [UNDERWATER_CASINO_NAME] allows only [amt_chips_to_dispense] chips to be given per visitor, regardless of financial status.", 3 SECONDS)
else
spawn_casinochips(amt_chips_to_dispense, src.loc, user)
playsound(loc, 'sound/items/vending.ogg', 50, 1)
state_message("Thank you for visiting the [UNDERWATER_CASINO_NAME]. Please accept these complementary chips and enjoy your stay.", 1 SECONDS)
used_ckeys += user.ckey
// ******************************
// ***** AREAS ******
// ******************************
/area/redgate/underwater_casino
name = UNDERWATER_CASINO_NAME
dynamic_lighting = TRUE
flags = RAD_SHIELDED
base_turf = /turf/simulated/floor/water/underwater
/area/redgate/underwater_casino/indoors
name = UNDERWATER_CASINO_NAME + " Interior"
requires_power = FALSE
// Upper floors
/area/redgate/underwater_casino/indoors/upper
name = UNDERWATER_CASINO_NAME + " - Top Floor"
icon_state = "deck2"
base_turf = /turf/simulated/open
/area/redgate/underwater_casino/indoors/upper/hall
name = UNDERWATER_CASINO_NAME + " - Halls (Top Floor)"
ambience = AMBIENCE_CASINO
/area/redgate/underwater_casino/indoors/upper/maintenance
name = UNDERWATER_CASINO_NAME + " - Maintenance (Top Floor)"
icon_state = "deckmaint2"
sound_env = TUNNEL_ENCLOSED
/area/redgate/underwater_casino/indoors/upper/bar
name = UNDERWATER_CASINO_NAME + " - Bar"
icon = 'icons/turf/areas.dmi'
icon_state = "bar"
sound_env = LARGE_ENCLOSED
/area/redgate/underwater_casino/indoors/upper/lounge
name = UNDERWATER_CASINO_NAME + " - Lounge"
icon_state = "grewhicir"
sound_env = SMALL_SOFTFLOOR
/area/redgate/underwater_casino/indoors/upper/kitchen
name = UNDERWATER_CASINO_NAME + " - Kitchen"
icon = 'icons/turf/areas.dmi'
icon_state = "kitchen"
/area/redgate/underwater_casino/indoors/upper/entry
name = UNDERWATER_CASINO_NAME + " - Entry"
icon_state = "redwhitri"
/area/redgate/underwater_casino/indoors/upper/shop
name = UNDERWATER_CASINO_NAME + " - Shop"
icon_state = "bluwhisqu"
/area/redgate/underwater_casino/indoors/upper/janitorcloset
name = UNDERWATER_CASINO_NAME + " - Janitorial Supply Closet"
icon_state = "bluwhitri"
/area/redgate/underwater_casino/indoors/upper/bathroom
name = UNDERWATER_CASINO_NAME + " - Bathroom"
sound_env = SOUND_ENVIRONMENT_BATHROOM
icon = 'icons/turf/areas.dmi'
icon_state = "toilet"
/area/redgate/underwater_casino/indoors/upper/comms
name = UNDERWATER_CASINO_NAME + " - Communications"
icon_state = "yellow"
/area/redgate/underwater_casino/indoors/upper/vacant
name = UNDERWATER_CASINO_NAME + " - Vacant Site"
icon = 'icons/turf/areas.dmi'
icon_state = "vacant_site"
/area/redgate/underwater_casino/indoors/upper/barback
name = UNDERWATER_CASINO_NAME + " - Bar Vacant Site (Top Floor)"
icon = 'icons/turf/areas.dmi'
icon_state = "vacant_site"
/area/redgate/underwater_casino/indoors/upper/airlock
name = UNDERWATER_CASINO_NAME + " - Airlock"
icon = 'icons/turf/areas.dmi'
icon_state = "green"
/area/redgate/underwater_casino/indoors/upper/airlock/west
name = UNDERWATER_CASINO_NAME + " - Airlock (West)"
/area/redgate/underwater_casino/indoors/upper/airlock/east
name = UNDERWATER_CASINO_NAME + " - Airlock (East)"
/area/redgate/underwater_casino/indoors/upper/airlock/south
name = UNDERWATER_CASINO_NAME + " - Airlock (South)"
/area/redgate/underwater_casino/indoors/upper/casino
name = UNDERWATER_CASINO_NAME + " - Game Floor"
icon = 'icons/turf/areas.dmi'
icon_state = "casino"
ambience = AMBIENCE_CASINO
/area/redgate/underwater_casino/indoors/upper/casino/back
name = UNDERWATER_CASINO_NAME + " - Game Floor (Back Room)"
icon_state = "casino2"
/area/redgate/underwater_casino/indoors/upper/casino/slots
name = UNDERWATER_CASINO_NAME + " - Game Floor (Slot Machines)"
icon_state = "casino2"
/area/redgate/underwater_casino/indoors/upper/security
name = UNDERWATER_CASINO_NAME + " - Security (Top Floor)"
icon = 'icons/turf/areas_vr.dmi'
icon_state = "security"
/area/redgate/underwater_casino/indoors/upper/security
name = UNDERWATER_CASINO_NAME + " - Security Meeting Room"
// Lower floors
/area/redgate/underwater_casino/indoors/lower
name = UNDERWATER_CASINO_NAME + " - Bottom Floor"
icon_state = "deck1"
base_turf = /turf/simulated/mineral/floor
/area/redgate/underwater_casino/indoors/lower/hall
name = UNDERWATER_CASINO_NAME + " - Halls (Bottom Floor)"
ambience = AMBIENCE_CASINO
/area/redgate/underwater_casino/indoors/lower/maintenance
name = UNDERWATER_CASINO_NAME + " - Maintenance (Bottom Floor)"
sound_env = TUNNEL_ENCLOSED
icon_state = "deckmaint1"
/area/redgate/underwater_casino/indoors/lower/barback
name = UNDERWATER_CASINO_NAME + " - Bar Vacant Site (Bottom Floor)"
icon = 'icons/turf/areas.dmi'
icon_state = "vacant_site"
/area/redgate/underwater_casino/indoors/lower/autoresleeving
name = UNDERWATER_CASINO_NAME + " - Auto Resleeving"
icon_state = "medical"
/area/redgate/underwater_casino/indoors/lower/resleeving
name = UNDERWATER_CASINO_NAME + " - Resleeving"
icon_state = "medical"
/area/redgate/underwater_casino/indoors/lower/laundry
name = UNDERWATER_CASINO_NAME + " - Laundry"
icon = 'icons/turf/areas.dmi'
icon_state = "laundry"
/area/redgate/underwater_casino/indoors/lower/dorms
name = UNDERWATER_CASINO_NAME + " - Dorms"
flags = RAD_SHIELDED | BLUE_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT | AREA_FORBID_EVENTS | AREA_FORBID_SINGULO | AREA_SOUNDPROOF | AREA_ALLOW_LARGE_SIZE | AREA_BLOCK_SUIT_SENSORS | AREA_BLOCK_TRACKING | AREA_BLOCK_INSTANT_BUILDING
/area/redgate/underwater_casino/indoors/lower/dorms/dorm1
name = UNDERWATER_CASINO_NAME + " - Dormitory One"
icon_state = "dorm1"
/area/redgate/underwater_casino/indoors/lower/dorms/dorm2
name = UNDERWATER_CASINO_NAME + " - Dormitory Two"
icon_state = "dorm2"
/area/redgate/underwater_casino/indoors/lower/dorms/dorm3
name = UNDERWATER_CASINO_NAME + " - Dormitory Three"
icon_state = "dorm3"
/area/redgate/underwater_casino/indoors/lower/dorms/dorm4
name = UNDERWATER_CASINO_NAME + " - Dormitory Four"
icon_state = "dorm3"
/area/redgate/underwater_casino/indoors/lower/dorms/vip
name = UNDERWATER_CASINO_NAME + " - VIP Suite"
icon = 'icons/turf/areas.dmi'
icon_state = "Sleep"
/area/redgate/underwater_casino/indoors/lower/dorms/vip/kitchen
name = UNDERWATER_CASINO_NAME + " - VIP Suite Kitchen"
icon_state = "kitchen"
/area/redgate/underwater_casino/indoors/lower/dorms/vip/bath
name = UNDERWATER_CASINO_NAME + " - VIP Suite Bathroom"
icon_state = "toilet"
/area/redgate/underwater_casino/indoors/lower/dorms/vip/bedroom
name = UNDERWATER_CASINO_NAME + " - VIP Suite Bedroom"
/area/redgate/underwater_casino/indoors/lower/dorms/secret
name = UNDERWATER_CASINO_NAME + " - The Back Dorm"
icon = 'icons/turf/areas.dmi'
icon_state = "Sleep"
/area/redgate/underwater_casino/indoors/lower/dorms/privategameroom1
name = UNDERWATER_CASINO_NAME + " - Private Game Room One"
icon = 'icons/turf/areas.dmi'
icon_state = "casino"
/area/redgate/underwater_casino/indoors/lower/dorms/privategameroom2
name = UNDERWATER_CASINO_NAME + " - Private Game Room Two"
icon = 'icons/turf/areas.dmi'
icon_state = "casino2"
/area/redgate/underwater_casino/indoors/lower/arcade
name = UNDERWATER_CASINO_NAME + " - Arcade"
icon = 'icons/turf/areas.dmi'
icon_state = "arcade"
/area/redgate/underwater_casino/indoors/lower/boxing
name = UNDERWATER_CASINO_NAME + " - The Ring"
icon_state = "red"
/area/redgate/underwater_casino/indoors/lower/security
name = UNDERWATER_CASINO_NAME + " - Security (Bottom Floor)"
icon = 'icons/turf/areas_vr.dmi'
icon_state = "security"
/area/redgate/underwater_casino/indoors/lower/security/armory
name = UNDERWATER_CASINO_NAME + " - Armory"
icon_state = "armory"
// Misc. areas (caves, secret buildings etc)
/area/redgate/underwater_casino/indoors/upper/secret
name = UNDERWATER_CASINO_NAME + " - ??? (Top Floor)"
/area/redgate/underwater_casino/indoors/lower/secret
name = UNDERWATER_CASINO_NAME + " - ??? (Bottom Floor)"
/area/redgate/underwater_casino/indoors/upper/secret/researchbase
name = UNDERWATER_CASINO_NAME + " - Secret Research Base"
icon = 'icons/turf/areas.dmi'
icon_state = "purple"
/area/redgate/underwater_casino/indoors/upper/secret/cave
name = UNDERWATER_CASINO_NAME + " - Cave (Top Floor)"
sound_env = SOUND_ENVIRONMENT_CAVE
/area/redgate/underwater_casino/indoors/lower/secret/cave
name = UNDERWATER_CASINO_NAME + " - Cave (Bottom Floor)"
sound_env = SOUND_ENVIRONMENT_CAVE
/area/redgate/underwater_casino/indoors/upper/secret/piratebase
name = UNDERWATER_CASINO_NAME + " - Pirate Base (Top Floor)"
icon = 'icons/turf/areas.dmi'
icon_state = "red"
/area/redgate/underwater_casino/indoors/lower/secret/piratebase
name = UNDERWATER_CASINO_NAME + " - Pirate Base (Bottom Floor)"
icon = 'icons/turf/areas.dmi'
icon_state = "red"
/area/redgate/underwater_casino/indoors/upper/secret/piratebasetunnel
name = UNDERWATER_CASINO_NAME + " - Secret Tunnel (Top Floor)"
icon = 'icons/turf/areas.dmi'
icon_state = "red"
sound_env = TUNNEL_ENCLOSED
/area/redgate/underwater_casino/indoors/lower/secret/piratebasetunnel
name = UNDERWATER_CASINO_NAME + " - Secret Tunnel (Bottom Floor)"
icon = 'icons/turf/areas.dmi'
icon_state = "red"
sound_env = TUNNEL_ENCLOSED
/area/redgate/underwater_casino/indoors/upper/secret/biodome
name = UNDERWATER_CASINO_NAME + " - Biodome"
icon = 'icons/turf/areas.dmi'
icon_state = "green"
sound_env = SMALL_ENCLOSED
// Outdoors areas
/area/redgate/underwater_casino/outdoors
name = UNDERWATER_CASINO_NAME + " Exterior"
icon_state = "blublacir"
sound_env = SOUND_ENVIRONMENT_UNDERWATER

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
#define PURPLE_DECAL_CREATE(x) x/purple/color=COLOR_PURPLE_GRAY
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals1)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals2)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals3)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals4)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals5)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals6)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals7)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals8)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/steeldecal/steel_decals9)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/borderfloor)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/borderfloor/cee)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/borderfloor/corner)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/borderfloor/corner2)
PURPLE_DECAL_CREATE(/obj/effect/floor_decal/borderfloor/shifted)
#undef PURPLE_DECAL_CREATE

View File

@@ -161,6 +161,7 @@
list(Z_NAME_REDGATE_CASCADING_FALLS),
list(Z_NAME_REDGATE_JUNGLE_CAVE, Z_NAME_REDGATE_JUNGLE),
list(Z_NAME_REDGATE_FACILITY),
list(Z_NAME_REDGATE_CASINO_CANAL_LOWER, Z_NAME_REDGATE_CASINO_CANAL),
)
ai_shell_restricted = TRUE

View File

@@ -182,6 +182,7 @@
list(Z_NAME_REDGATE_CASCADING_FALLS),
list(Z_NAME_REDGATE_JUNGLE_CAVE, Z_NAME_REDGATE_JUNGLE),
list(Z_NAME_REDGATE_FACILITY),
list(Z_NAME_REDGATE_CASINO_CANAL_LOWER, Z_NAME_REDGATE_CASINO_CANAL),
)
ai_shell_restricted = TRUE

View File

@@ -2340,6 +2340,7 @@
#include "code\modules\casino\boxes_casino.dm"
#include "code\modules\casino\casino.dm"
#include "code\modules\casino\casino_book.dm"
#include "code\modules\casino\casino_cards.dm"
#include "code\modules\casino\casino_prize_vendor.dm"
#include "code\modules\casino\headset_casino.dm"
#include "code\modules\casino\premium_vendors.dm"
@@ -2929,7 +2930,6 @@
#include "code\modules\games\cah_white_cards.dm"
#include "code\modules\games\cardemon.dm"
#include "code\modules\games\cards.dm"
#include "code\modules\games\cards_ch.dm"
#include "code\modules\games\dice.dm"
#include "code\modules\games\egy_cards_vr.dm"
#include "code\modules\games\schnapsen_vr.dm"
@@ -4998,6 +4998,8 @@
#include "maps\offmap_vr\common_offmaps.dm"
#include "maps\redgate\facility_items.dm"
#include "maps\redgate\fantasy_items.dm"
#include "maps\redgate\casino_canal\casino_canal.dm"
#include "maps\redgate\casino_canal\casino_canal_floodecals.dm"
#include "maps\redgate\falls\atoll_decals.dm"
#include "maps\redgate\falls\atoll_objs.dm"
#include "maps\redgate\falls\atoll_turfs.dm"