[MDB IGNORE] [PRE-ALPHA] MiniStation (#22568)

* Create MiniStation new.dmm

* ministation

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* ministayion

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* actual changes oops

* Update MiniStation.dmm

* Update MiniStation.dmm

* miniaturestation

* Update maps.txt

* more fixes

* fixes broken path

* more fixes

* Update MiniStation.dmm

* Update MiniStation.dmm

* filters

* robotics changes

* fixes pipes

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* spawns + job overrides

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* more work

* Update MiniStation.dmm

* misc stuff

* maint stuff

* uopdates

* fixes bad area and chair

* tool storage + fixes

* mining APC

* cargo + hooks up some disposals

* more disposals + launcher

* lights

* more fixes

* Update MiniStation.dmm

* Update MiniStation.dmm

* more fixes

* sink

* remove sign

* expand janitor room

* Update MiniStation.dmm

* ai stuff + more firealarms

* meeting room, etc

* fixes wire

* Update MiniStation.dmm

* fixes

* Update MiniStation.dmm

* yep!

* atmos area

* fixes some map errors

* bookbinder

* robo shutters

* stair and chem fix

* fixes bad decals

* honesly no clue what's different

* disposals + pets

* Update MiniStation.dmm

* asteroid area

* more fixes

* medbay mixup

* choom button

* wire toxin room to grid

* remove this

* more fixes

* Update ai_whale.dmm

* more cameras

* Update networking_machines.dm

* update freezer

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* new service

* hawk + tuah + backrooms

* special charters

* remove that lol

* move him a little

* Update MiniStation.dmm

* yeah

* Update MiniStation.dmm

* psych office + more fixes + robo stuff

* thermomachines

* Update MiniStation.dmm

* maints + APCs

* all this stuff

* cameras

* air alarms

* RD office and the like

* Update MiniStation.dmm

* fixes these

* glass floors

* Update MiniStation.dmm

* more firelocks

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* extra pipe moment

* Update MiniStation.dmm

* looking up and down/fixes

* neat

* wire

* Update MiniStation.dmm

* fixes some issues

* asdad

* better SM stuff

* amon gus

* fixing falling

* Update MiniStation.dmm

* Update MiniStation.dmm

* fixes this

* fixes

* Update MiniStation.dmm

* remove stairs

* Update MiniStation.dmm

* Update MiniStation.dmm

* Update MiniStation.dmm

* fixes some ai stuff

* Update MiniStation.dmm

* adds some missing bells

* maint

* more maint stuff

* ai upload and goodbye meeting room

* fixes multiz pda stuff

* fixes locker

* ministation fixes

* requested changes

* shadows

* removes shadows

* adds medhuds

* no smoking

* move up/down

* correct medhuds

* brig stuff

* cameras

* fixes

* more lights

* more fixes

* fix one turf

* idk randomstuff

* more lights

* navigation nation (thanks plant)

* fixes + better flooring

* jamie changes

* myriad changes

* some more stuff

* server room fix
This commit is contained in:
Byemoh
2024-10-18 18:13:31 -05:00
committed by GitHub
parent 642573f92f
commit d93428fe4b
48 changed files with 178822 additions and 153 deletions

View File

@@ -531,16 +531,6 @@
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/space/nearstation)
"jT" = (
/obj/structure/ethernet_cable{
icon_state = "0-2"
},
/obj/machinery/ai/networking{
label = "Computer Science - 2";
roundstart_connection = "Subcontroller"
},
/turf/open/floor/circuit/green/telecomms,
/area/ai_monitored/turret_protected/ai)
"jY" = (
/obj/machinery/telecomms/broadcaster/preset_right,
/turf/open/floor/circuit/green/telecomms/mainframe,
@@ -970,6 +960,16 @@
},
/turf/open/floor/plasteel/dark/telecomms,
/area/ai_monitored/turret_protected/ai)
"qx" = (
/obj/structure/ethernet_cable{
icon_state = "0-2"
},
/obj/machinery/ai/networking{
label = "Main Core";
roundstart_connection = "Computer Science"
},
/turf/open/floor/circuit/green/telecomms,
/area/ai_monitored/turret_protected/ai)
"rm" = (
/obj/machinery/power/terminal{
dir = 8
@@ -4738,7 +4738,7 @@ jR
PH
kY
PH
jT
qx
AS
uV
zW

View File

@@ -9,6 +9,7 @@
#include "map_files\YogStation\Yogstation.dmm"
#include "map_files\IceMeta\IceMeta.dmm"
#include "map_files\GaxStation\GaxStation.dmm"
#include "map_files\MiniStation\MiniStation.dmm"
#include "map_files\ManateeStation\ManateeStation.dmm"
#include "map_files\DonutStation\DonutStation.dmm"
#ifdef TRAVISBUILDING

View File

@@ -8,5 +8,14 @@
"ferry": "ferry_fancy",
"emergency": "emergency_box"
},
"cryo_spawn": true
"cryo_spawn": true,
"job_changes": {
"Captain": {
"special_charter": "ship"
},
"Psychiatrist": {
"spawn_positions": 0,
"total_positions": 0
}
}
}

View File

@@ -45,5 +45,10 @@
"No Parallax": true
}
],
"minetype": "none"
"minetype": "none",
"job_changes": {
"Captain": {
"special_charter": "moon"
}
}
}

View File

@@ -7,5 +7,10 @@
"ferry": "ferry_fancy",
"whiteship": "whiteship_box",
"emergency": "emergency_box"
},
"job_changes": {
"Captain": {
"special_charter": "asteroid"
}
}
}

View File

@@ -37498,17 +37498,6 @@
},
/turf/open/space/basic,
/area/space/nearstation)
"seS" = (
/obj/docking_port/stationary{
dwidth = 2;
height = 5;
name = "fore bay 1";
roundstart_template = /datum/map_template/shuttle/labour/gax;
shuttle_id = "laborcamp_home";
width = 9
},
/turf/open/space/basic,
/area/space)
"sfo" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -72710,12 +72699,12 @@ vRP
vRP
vRP
ubS
tkl
tkl
tkl
tkl
tkl
tkl
vRP
vRP
vRP
vRP
vRP
vRP
dll
dll
dll
@@ -72967,7 +72956,7 @@ vRP
vRP
vRP
aCD
tkl
vRP
vRP
vRP
vRP
@@ -73224,7 +73213,7 @@ vRP
vRP
vRP
ubS
tkl
vRP
vRP
vRP
vRP
@@ -73481,12 +73470,12 @@ vRP
vRP
vRP
aCD
tkl
vRP
vRP
vRP
vRP
seS
vRP
vRP
eAe
lUn
bOF
@@ -73738,7 +73727,7 @@ vRP
vRP
vRP
ubS
tkl
vRP
vRP
vRP
vRP
@@ -73995,7 +73984,7 @@ vRP
vRP
vRP
ubS
tkl
vRP
vRP
vRP
vRP
@@ -74252,7 +74241,7 @@ vRP
vRP
vRP
aCD
tkl
vRP
vRP
vRP
vRP
@@ -74509,7 +74498,7 @@ vRP
vRP
vRP
aCD
tkl
vRP
vRP
vRP
vRP
@@ -74766,7 +74755,7 @@ vRP
vRP
vRP
aCD
tkl
vRP
vRP
vRP
vRP
@@ -75023,7 +75012,7 @@ vRP
vRP
vRP
ubS
tkl
vRP
vRP
vRP
vRP
@@ -75280,12 +75269,12 @@ vRP
vRP
vRP
ubS
tkl
tkl
tkl
tkl
tkl
tkl
vRP
vRP
vRP
vRP
vRP
vRP
tkl
aCD
lMu

File diff suppressed because it is too large Load Diff

1
_maps/ministation.dm Normal file
View File

@@ -0,0 +1 @@
#define FORCE_MAP "ministation"

56
_maps/ministation.json Normal file
View File

@@ -0,0 +1,56 @@
{
"map_name": "MiniStation",
"map_path": "map_files/MiniStation",
"map_file": "MiniStation.dmm",
"shuttles": {
"emergency": "emergency_box",
"ferry": "ferry_fancy",
"cargo": "cargo_box",
"whiteship": "whiteship_box"
},
"cryo_spawn": true,
"traits": [
{
"Up": true,
"Linkage": null
},
{
"Down": true,
"Baseturf": "/turf/open/openspace",
"Linkage": "Cross"
}
],
"job_changes": {
"Captain": {
"special_charter": "asteroid"
},
"Artist": {
"spawn_positions": 0,
"total_positions": 0
},
"Lawyer": {
"spawn_positions": 0,
"total_positions": 0
},
"Brig Physician": {
"spawn_positions": 0,
"total_positions": 0
},
"Clerk": {
"spawn_positions": 0,
"total_positions": 0
},
"Paramedic": {
"spawn_positions": 1,
"total_positions": 1
},
"Cook": {
"spawn_positions": 1,
"total_positions": 1
},
"Chemist": {
"spawn_positions": 1,
"total_positions": 1
}
}
}

View File

@@ -101,6 +101,7 @@
#define CLICK_CD_HANDCUFFED 1 SECONDS
#define CLICK_CD_RESIST 2 SECONDS
#define CLICK_CD_GRABBING 1 SECONDS
#define CLICK_CD_LOOK_UP 0.5 SECONDS
//Cuff resist speeds
#define FAST_CUFFBREAK 1

View File

@@ -100,12 +100,14 @@
#define ui_combat_toggle "EAST-3:24,SOUTH:5"
#define ui_zonesel "EAST-1:28,SOUTH:5"
#define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12)
#define ui_crafting "EAST-4:22,SOUTH:5"
#define ui_building "EAST-4:22,SOUTH:21"
#define ui_crafting "EAST-4:4,SOUTH:5"
#define ui_building "EAST-4:4,SOUTH:21"
#define ui_borg_pull "EAST-2:26,SOUTH+1:7"
#define ui_borg_radio "EAST-1:28,SOUTH+1:7"
#define ui_borg_intents "EAST-2:26,SOUTH:5"
#define ui_language_menu "EAST-4:6,SOUTH:21"
#define ui_language_menu "EAST-5:20,SOUTH:21"
#define ui_move_up "EAST-4:22, SOUTH:21"
#define ui_move_down "EAST-4:22, SOUTH:5"
//Upper-middle right (alerts)
#define ui_alert1 "EAST-1:28,CENTER+5:27"
@@ -218,6 +220,8 @@
#define ui_ghost_chem "SOUTH: 22,CENTER+3:-8"
#define ui_ghost_nanite "SOUTH: 6,CENTER+3:8"
#define ui_ghost_wound "SOUTH: 22,CENTER+3:8"
#define ui_ghost_move_up "SOUTH: 22,CENTER+3:24"
#define ui_ghost_move_down "SOUTH: 6,CENTER+3:24"
// Defines relating to action button positions

View File

@@ -203,3 +203,6 @@ Always compile, always use that verb, and always make sure that it works for wha
#define MAP_JOB_CHECK if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return; }
#define MAP_JOB_CHECK_BASE if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return ..(); }
#define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() }
/// Checks the job changes in the map config for the passed change key.
#define CHECK_MAP_JOB_CHANGE(job, change) SSmapping.config.job_changes?[job]?[change]

View File

@@ -93,6 +93,16 @@
using.icon = ui_style
static_inventory += using
using = new /atom/movable/screen/move(src)
using.icon = ui_style
using.screen_loc = ui_ghost_move_up
static_inventory += using
using = new /atom/movable/screen/move/down(src)
using.icon = ui_style
using.screen_loc = ui_ghost_move_down
static_inventory += using
/datum/hud/ghost/show_hud(version = 0, mob/viewmob)
// don't show this HUD if observing; show the HUD of the observee
var/mob/dead/observer/O = mymob

View File

@@ -94,6 +94,10 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
var/atom/movable/screen/stamina
var/atom/movable/screen/healthdoll
var/atom/movable/screen/spacesuit
var/atom/movable/screen/move_up
var/atom/movable/screen/move_down
// subtypes can override this to force a specific UI style
var/ui_style
@@ -242,6 +246,8 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
blobpwrdisplay = null
alien_plasma_display = null
alien_queen_finder = null
move_up = null
move_down = null
QDEL_LIST_ASSOC_VAL(master_groups)
QDEL_LIST_ASSOC_VAL(plane_master_controllers)

View File

@@ -292,6 +292,18 @@
pull_icon.screen_loc = ui_above_intent
static_inventory += pull_icon
move_up = new /atom/movable/screen/move(src)
move_up.icon = ui_style
move_up.update_appearance(UPDATE_ICON)
//move_up.screen_loc = ui_move_up
static_inventory += move_up
move_down = new /atom/movable/screen/move/down(src)
move_down.icon = ui_style
move_down.update_appearance(UPDATE_ICON)
//move_down.screen_loc = ui_move_down
static_inventory += move_down
devilsouldisplay = new /atom/movable/screen/devil/soul_counter(src)
infodisplay += devilsouldisplay

View File

@@ -810,3 +810,24 @@
name = "stamina"
icon_state = "stamina0"
screen_loc = ui_stamina
/atom/movable/screen/move
name = "move up"
icon_state = "move_up"
screen_loc = ui_move_up
var/direction = UP
/atom/movable/screen/move/Click(location, control, params)
. = ..()
var/mob/M = usr
switch(direction)
if(UP)
M.up()
if(DOWN)
M.down()
/atom/movable/screen/move/down
name = "move down"
icon_state = "move_down"
screen_loc = ui_move_down
direction = DOWN

View File

@@ -154,6 +154,11 @@ SUBSYSTEM_DEF(throwing)
if (callback)
callback.Invoke()
if(!thrownthing.currently_z_moving) // I don't think you can zfall while thrown but hey, just in case.
var/turf/T = get_turf(thrownthing)
if(T && thrownthing.has_gravity(T))
T.zFall(thrownthing)
if(thrownthing)
SEND_SIGNAL(thrownthing, COMSIG_MOVABLE_THROW_LANDED, src)

View File

@@ -507,6 +507,8 @@ SUBSYSTEM_DEF(ticker)
/datum/controller/subsystem/ticker/proc/check_maprotate()
if (!CONFIG_GET(flag/maprotation))
return
if(SSticker.maprotatechecked || SSmapping.next_map_config) //we already have a map set
return
//map rotate chance defaults to 75% of the length of the round (in minutes)
if (!prob((world.time/600)*CONFIG_GET(number/maprotationchancedelta)))
return

View File

@@ -35,6 +35,9 @@
"whiteship" = "whiteship_1",
"emergency" = "emergency_box",
)
/// Dictionary of job sub-typepath to template changes dictionary
var/job_changes = list()
/// List of unit tests that are skipped when running this map
var/list/skipped_tests
@@ -171,6 +174,12 @@
if("cryo_spawn" in json)
cryo_spawn = json["cryo_spawn"]
if("job_changes" in json)
if(!islist(json["job_changes"]))
log_world("map_config \"job_changes\" field is missing or invalid!")
return
job_changes = json["job_changes"]
allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE
#ifdef UNIT_TESTS

View File

@@ -183,6 +183,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Aft (S) Maintenance"
icon_state = "amaint"
/area/maintenance/aft/lower
name = "Lower Aft (S) Maintenance"
/area/maintenance/aft/secondary
name = "Aft (S) Maintenance"
icon_state = "amaint_2"
@@ -191,6 +194,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Central Maintenance"
icon_state = "maintcentral"
/area/maintenance/central/lower
name = "Lower Central Maintenance"
/area/maintenance/central/secondary
name = "Central Maintenance"
icon_state = "maintcentral"
@@ -200,6 +206,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Fore (N) Maintenance"
icon_state = "fmaint"
/area/maintenance/fore/lower
name = "Lower Fore (N) Maintenance"
/area/maintenance/fore/secondary
name = "Fore (N) Maintenance"
icon_state = "fmaint_2"
@@ -208,6 +217,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Starboard (E) Maintenance"
icon_state = "smaint"
/area/maintenance/starboard/lower
name = "Lower Starboard (E) Maintenance"
/area/maintenance/starboard/central
name = "Central Starboard (E) Maintenance"
icon_state = "smaint"
@@ -220,6 +232,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Starboard Quarter (SE) Maintenance"
icon_state = "asmaint"
/area/maintenance/starboard/aft/lower
name = "Lower Starboard Quarter (SE) Maintenance"
/area/maintenance/starboard/aft/secondary
name = "Secondary Starboard Quarter (SE) Maintenance"
icon_state = "asmaint_2"
@@ -228,10 +243,16 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Starboard Bow (NE) Maintenance"
icon_state = "fsmaint"
/area/maintenance/starboard/fore/lower
name = "Lower Starboard Fore (NE) Maintenance"
/area/maintenance/port
name = "Port (W) Maintenance"
icon_state = "pmaint"
/area/maintenance/port/lower
name = "Lower Port (W) Maintenance"
/area/maintenance/port/central
name = "Central Port (W) Maintenance"
icon_state = "maintcentral"
@@ -240,10 +261,16 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Port Quarter (SW) Maintenance"
icon_state = "apmaint"
/area/maintenance/port/aft/lower
name = "Lower Port Quarter (SW) Maintenance"
/area/maintenance/port/fore
name = "Port Bow (NW) Maintenance"
icon_state = "fpmaint"
/area/maintenance/port/fore/lower
name = "Lower Port Bow (NW) Maintenance"
/area/maintenance/disposal
name = "Waste Disposal"
icon_state = "disposal"

View File

@@ -274,17 +274,6 @@
if(!(impact_flags & ZIMPACT_NO_SPIN))
INVOKE_ASYNC(src, PROC_REF(SpinAnimation), 5, 2)
SEND_SIGNAL(src, COMSIG_ATOM_ON_Z_IMPACT, impacted_turf, levels)
//Yog code: since we still handle falling as throwing things
var/atom/highest = impacted_turf
for(var/i in impacted_turf.contents)
var/atom/A = i
if(!A.density)
continue
if(isobj(A) || ismob(A))
if(A.layer > highest.layer)
highest = A
throw_impact(highest)
return TRUE
/*

View File

@@ -167,11 +167,17 @@
/datum/signal/subspace/messaging/New(init_source, init_data)
source = init_source
data = init_data
var/turf/T = get_turf(source)
var/turf/T
if(istype(source, /datum/computer_file/program)) //programs don't actually have locations
var/datum/computer_file/program/P = source
T = get_turf_global(P.computer)
else
T = get_turf_global(source)
if(T)
levels = SSmapping.get_connected_levels(T)
else
levels = list(2)
levels = SSmapping.levels_by_trait(ZTRAIT_STATION) //just assume we're on station..
if(!("reject" in data))
data["reject"] = TRUE

View File

@@ -419,3 +419,8 @@
icon = 'yogstation/icons/effects/station_blood.dmi'
icon_state = "kilo"
random_icon_states = null
/obj/effect/decal/cleanable/blood/kilo/gus
name = "remember gus"
desc = "Never been to Gusstation before."
icon_state = "gus"

View File

@@ -526,3 +526,50 @@
singular_name = "smooth iron catwalk floor tile"
icon_state = "smoothiron_catwalk"
turf_type = /turf/open/floor/catwalk_floor/iron_smooth
// Glass floors
/obj/item/stack/tile/glass
name = "glass floor"
singular_name = "glass floor tile"
desc = "Glass window floors, to let you see... Whatever that is down there."
icon_state = "tile_glass"
turf_type = /turf/open/floor/glass
item_state = "tile-glass"
merge_type = /obj/item/stack/tile/glass
mats_per_unit = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT * 0.25) // 4 tiles per sheet
replace_plating = TRUE
/obj/item/stack/tile/glass/sixty
amount = 60
/obj/item/stack/tile/rglass
name = "reinforced glass floor"
singular_name = "reinforced glass floor tile"
desc = "Reinforced glass window floors. These bad boys are 50% stronger than their predecessors!"
icon_state = "tile_rglass"
item_state = "tile-rglass"
turf_type = /turf/open/floor/glass/reinforced
merge_type = /obj/item/stack/tile/rglass
mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 0.125, /datum/material/glass=SHEET_MATERIAL_AMOUNT * 0.25) // 4 tiles per sheet
replace_plating = TRUE
/obj/item/stack/tile/rglass/sixty
amount = 60
/obj/item/stack/tile/glass/plasma
name = "plasma glass floor"
singular_name = "plasma glass floor tile"
desc = "Plasma glass window floors, for when... Whatever is down there is too scary for normal glass."
icon_state = "tile_pglass"
turf_type = /turf/open/floor/glass/plasma
merge_type = /obj/item/stack/tile/glass/plasma
mats_per_unit = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT * 0.125, /datum/material/glass=SHEET_MATERIAL_AMOUNT * 0.25)
/obj/item/stack/tile/rglass/plasma
name = "reinforced plasma glass floor"
singular_name = "reinforced plasma glass floor tile"
desc = "Reinforced plasma glass window floors, because whatever's downstairs should really stay down there."
icon_state = "tile_rpglass"
turf_type = /turf/open/floor/glass/reinforced/plasma
merge_type = /obj/item/stack/tile/rglass/plasma
mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 0.125, /datum/material/plasma=SHEET_MATERIAL_AMOUNT * 0.125, /datum/material/glass=SHEET_MATERIAL_AMOUNT * 0.25)

View File

@@ -0,0 +1,121 @@
/turf/open/floor/glass
name = "glass floor"
desc = "Don't jump on it, or do, I'm not your mom."
icon = 'icons/turf/floors/glass.dmi'
icon_state = "glass-0"
base_icon_state = "glass"
baseturfs = /turf/baseturf_bottom
layer = GLASS_FLOOR_LAYER
underfloor_accessibility = UNDERFLOOR_VISIBLE
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS
canSmoothWith = SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS
footstep = FOOTSTEP_PLATING
barefootstep = FOOTSTEP_HARD_BAREFOOT
clawfootstep = FOOTSTEP_HARD_CLAW
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
floor_tile = /obj/item/stack/tile/glass
overfloor_placed = FALSE
/// List of /atom/movable/render_step that are being used to make this glass floor glow
/// These are OWNED by this floor, they delete when we delete them, not before not after
var/list/glow_stuff
/// How much alpha to leave when cutting away emissive blockers
var/alpha_to_leave = 255
/// Color of starlight to use. Defaults to STARLIGHT_COLOR if not set
var/starlight_color
/turf/open/floor/glass/broken_states()
return list("glass-damaged1", "glass-damaged2", "glass-damaged3")
/turf/open/floor/glass/Initialize(mapload)
icon_state = "" //Prevent the normal icon from appearing behind the smooth overlays
..()
return INITIALIZE_HINT_LATELOAD
/turf/open/floor/glass/LateInitialize()
AddElement(/datum/element/turf_z_transparency)
setup_glow()
/turf/open/floor/glass/Destroy()
. = ..()
QDEL_LIST(glow_stuff)
UnregisterSignal(SSdcs, COMSIG_STARLIGHT_COLOR_CHANGED)
/// If this turf is at the bottom of the local rendering stack
/// Then we're gonna make it emissive block so the space below glows
/turf/open/floor/glass/proc/setup_glow()
if(GET_TURF_PLANE_OFFSET(src) != GET_LOWEST_STACK_OFFSET(z)) // We ain't the bottom brother
return
// We assume no parallax means no space means no light
if(SSmapping.level_trait(z, ZTRAIT_NOPARALLAX))
return
glow_stuff = partially_block_emissives(src, alpha_to_leave)
if(!starlight_color)
RegisterSignal(SSdcs, COMSIG_STARLIGHT_COLOR_CHANGED, PROC_REF(starlight_changed))
else
UnregisterSignal(SSdcs, COMSIG_STARLIGHT_COLOR_CHANGED)
set_light(2, 1, starlight_color || GLOB.starlight_color, l_height = LIGHTING_HEIGHT_SPACE)
/turf/open/floor/glass/proc/starlight_changed(datum/source, old_star, new_star)
if(light_color == old_star)
set_light(l_color = new_star)
/turf/open/floor/glass/make_plating()
return
/turf/open/floor/glass/icemoon
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
/turf/open/floor/glass/airless
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/glass/reinforced
name = "reinforced glass floor"
desc = "Do jump on it, it can take it."
icon = 'icons/turf/floors/reinf_glass.dmi'
icon_state = "reinf_glass-0"
base_icon_state = "reinf_glass"
floor_tile = /obj/item/stack/tile/rglass
alpha_to_leave = 206
/turf/open/floor/glass/reinforced/telecomms
initial_gas_mix = TCOMMS_ATMOS
/turf/open/floor/glass/reinforced/icemoon
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
/turf/open/floor/glass/reinforced/airless
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/glass/plasma
name = "plasma glass floor"
desc = "Studies by the Nanotrasen Materials Safety Division have not yet determined if this is safe to jump on, do so at your own risk."
icon = 'icons/turf/floors/plasma_glass.dmi'
icon_state = "plasma_glass-0"
base_icon_state = "plasma_glass"
floor_tile = /obj/item/stack/tile/glass/plasma
starlight_color = COLOR_STRONG_VIOLET
alpha_to_leave = 255
/turf/open/floor/glass/plasma/icemoon
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
/turf/open/floor/glass/plasma/airless
initial_gas_mix = AIRLESS_ATMOS
/turf/open/floor/glass/reinforced/plasma
name = "reinforced plasma glass floor"
desc = "Do jump on it, jump on it while in a mecha, it can take it."
icon = 'icons/turf/floors/reinf_plasma_glass.dmi'
icon_state = "reinf_plasma_glass-0"
base_icon_state = "reinf_plasma_glass"
floor_tile = /obj/item/stack/tile/rglass/plasma
starlight_color = COLOR_STRONG_VIOLET
alpha_to_leave = 206
/turf/open/floor/glass/reinforced/plasma/icemoon
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
/turf/open/floor/glass/reinforced/plasma/airless
initial_gas_mix = AIRLESS_ATMOS

View File

@@ -69,10 +69,10 @@
return
zFall(movable)
/turf/open/openspace/zAirIn()
/turf/open/openspace/zAirIn(direction, turf/source)
return TRUE
/turf/open/openspace/zAirOut()
/turf/open/openspace/zAirOut(direction, turf/source)
return TRUE
/turf/open/openspace/zPassIn(direction)

View File

@@ -256,7 +256,7 @@ GLOBAL_LIST_EMPTY(starlight)
/turf/open/space/openspace
icon = 'icons/turf/floors.dmi'
icon_state = MAP_SWITCH("pure_white", "transparent")
icon_state = MAP_SWITCH("pure_white", "invisible")
plane = TRANSPARENT_FLOOR_PLANE
/turf/open/space/openspace/Initialize(mapload) // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker
@@ -280,10 +280,10 @@ GLOBAL_LIST_EMPTY(starlight)
UnregisterSignal(below, COMSIG_TURF_CHANGE)
return ..()
/turf/open/space/openspace/zAirIn()
/turf/open/space/openspace/zAirIn(direction, turf/source)
return TRUE
/turf/open/space/openspace/zAirOut()
/turf/open/space/openspace/zAirOut(direction, turf/source)
return TRUE
/turf/open/space/openspace/zPassIn(direction)

View File

@@ -258,13 +258,12 @@ GLOBAL_LIST_EMPTY(station_turfs)
/turf/proc/multiz_turf_new(turf/T, dir)
SEND_SIGNAL(src, COMSIG_TURF_MULTIZ_NEW, T, dir)
//zPassIn doesn't necessarily pass an atom!
//direction is direction of travel of air
/turf/proc/zPassIn(atom/movable/A, direction, turf/source)
/turf/proc/zPassIn(direction)
return FALSE
//direction is direction of travel of air
/turf/proc/zPassOut(atom/movable/A, direction, turf/destination)
/turf/proc/zPassOut(direction)
return FALSE
//direction is direction of travel of air
@@ -329,10 +328,6 @@ GLOBAL_LIST_EMPTY(station_turfs)
falling_mov.pulledby.stop_pulling()
return TRUE
/turf/proc/can_zFall(atom/movable/A, levels = 1, turf/target)
SHOULD_BE_PURE(TRUE)
return zPassOut(A, DOWN, target) && target.zPassIn(A, DOWN, src)
/turf/proc/handleRCL(obj/item/rcl/C, mob/user)
if(C.loaded)
for(var/obj/structure/cable/LC in src)

View File

@@ -33,12 +33,103 @@
mapname += "\]"
maprotatechoices[mapname] = VM
var/chosenmap = input("Choose a map to change to", "Change Map") as null|anything in maprotatechoices
var/chosenmap = input("Choose a map to change to", "Change Map") as null|anything in (maprotatechoices|"Custom")
if (!chosenmap)
return
SSticker.maprotatechecked = 1
var/datum/map_config/VM = maprotatechoices[chosenmap]
message_admins("[key_name_admin(usr)] is changing the map to [VM.map_name]")
log_admin("[key_name(usr)] is changing the map to [VM.map_name]")
if (SSmapping.changemap(VM) == 0)
message_admins("[key_name_admin(usr)] has changed the map to [VM.map_name]")
if(chosenmap == "Custom")
message_admins("[key_name_admin(usr)] is changing the map to a custom map")
log_admin("[key_name(usr)] is changing the map to a custom map")
var/datum/map_config/virtual_map = new
var/map_file = input(usr, "Pick file:", "Map File") as null|file
if(isnull(map_file))
return
if(copytext("[map_file]", -4) != ".dmm")//4 == length(".dmm")
to_chat(usr, span_warning("Filename must end in '.dmm': [map_file]"))
return
if(fexists("_maps/custom/[map_file]"))
fdel("_maps/custom/[map_file]")
if(!fcopy(map_file, "_maps/custom/[map_file]"))
return
// This is to make sure the map works so the server does not start without a map.
var/datum/parsed_map/M = new (map_file)
if(!M)
to_chat(usr, span_warning("Map '[map_file]' failed to parse properly."))
return
if(!M.bounds)
to_chat(usr, span_warning("Map '[map_file]' has non-existant bounds."))
qdel(M)
return
qdel(M)
var/config_file = null
var/list/json_value = list()
var/config = tgui_alert(usr,"Would you like to upload an additional config for this map?", "Map Config", list("Yes", "No"))
if(config == "Yes")
config_file = input(usr, "Pick file:", "Config JSON File") as null|file
if(isnull(config_file))
return
if(copytext("[config_file]", -5) != ".json")
to_chat(src, span_warning("Filename must end in '.json': [config_file]"))
return
if(fexists("data/custom_map_json/[config_file]"))
fdel("data/custom_map_json/[config_file]")
if(!fcopy(config_file, "data/custom_map_json/[config_file]"))
return
if (virtual_map.LoadConfig("data/custom_map_json/[config_file]", TRUE) != TRUE)
to_chat(src, span_warning("Failed to load config: [config_file]. Check that the fields are filled out correctly. \"map_path\": \"custom\" and \"map_file\": \"your_map_name.dmm\""))
return
json_value = list(
"version" = MAP_CURRENT_VERSION,
"map_name" = virtual_map.map_name,
"map_path" = virtual_map.map_path,
"map_file" = virtual_map.map_file,
"shuttles" = virtual_map.shuttles,
"traits" = virtual_map.traits,
"job_changes" = virtual_map.job_changes,
)
else
virtual_map = load_map_config()
virtual_map.map_name = input(usr, "Choose the name for the map", "Map Name") as null|text
if(isnull(virtual_map.map_name))
virtual_map.map_name = "Custom"
var/shuttles = tgui_alert(usr,"Do you want to modify the shuttles?", "Map Shuttles", list("Yes", "No"))
if(shuttles == "Yes")
for(var/s in virtual_map.shuttles)
var/shuttle = input(usr, s, "Map Shuttles") as null|text
if(!shuttle)
continue
if(!SSmapping.shuttle_templates[shuttle])
to_chat(usr, span_warning("No such shuttle as '[shuttle]' exists, using default."))
continue
virtual_map.shuttles[s] = shuttle
json_value = list(
"version" = MAP_CURRENT_VERSION,
"map_name" = virtual_map.map_name,
"map_path" = CUSTOM_MAP_PATH,
"map_file" = "[map_file]",
"shuttles" = virtual_map.shuttles,
)
// If the file isn't removed text2file will just append.
if(fexists(PATH_TO_NEXT_MAP_JSON))
fdel(PATH_TO_NEXT_MAP_JSON)
text2file(json_encode(json_value), PATH_TO_NEXT_MAP_JSON)
if(SSmapping.changemap(virtual_map))
message_admins("[key_name_admin(usr)] has changed the map to [virtual_map.map_name]")
log_admin("[key_name_admin(usr)] has changed the map to [virtual_map.map_name]")
SSticker.maprotatechecked = 1
fdel("data/custom_map_json/[config_file]")
else
var/datum/map_config/virtual_map = maprotatechoices[chosenmap]
if (SSmapping.changemap(virtual_map))
message_admins("[key_name_admin(usr)] has changed the map to [virtual_map.map_name]")
log_admin("[key_name_admin(usr)] has changed the map to [virtual_map.map_name]")
SSticker.maprotatechecked = 1

View File

@@ -214,7 +214,7 @@
/obj/machinery/atmospherics/components/unary/thermomachine/freezer
name = "Thermomachine"
icon_state = "freezer"
icon_state = MAP_SWITCH("freezer", "freezer_map")
icon_state_off = "freezer"
icon_state_on = "freezer_1"
icon_state_open = "freezer-o"
@@ -237,7 +237,7 @@
target_temperature = T0C-80
/obj/machinery/atmospherics/components/unary/thermomachine/heater
name = "Thermomachine"
icon_state = "heater"
icon_state = MAP_SWITCH("heater", "heater_map")
icon_state_off = "heater"
icon_state_on = "heater_1"
icon_state_open = "heater-o"

View File

@@ -88,8 +88,6 @@
/// If this job's mail goodies compete with generic goodies.
var/exclusive_mail_goodies = FALSE
var/list/changed_maps = list() // Maps on which the job is changed. Should use the same name as the mapping config
///The text a person using olfaction will see for the job of the target's scent
var/smells_like = "a freeloader"
@@ -109,45 +107,17 @@
*/
var/list/minimal_lightup_areas = list()
/*
If you want to change a job on a specific map with this system, you will want to go onto that job datum
and add said map's name to the changed_maps list, like so:
changed_maps = list("OmegaStation")
Then, you're going to want to make a proc called "OmegaStationChanges" on the job, which will be the one
actually making the changes, like so:
/datum/job/miner/proc/OmegaStationChanges()
If you want to remove the job from said map, you will return TRUE in the proc, otherwise you can make
whatever changes to the job datum you need to make. For example, say we want to make it so 2 wardens spawn
on OmegaStation, we'd do the following:
/datum/job/warden
changed_maps = list("OmegaStation")
/datum/job/warden/proc/OmegaStationChanges()
total_positions = 2
spawn_positions = 2
Here is another example of using this:
/datum/job/doctor/proc/OmegaStationChanges()
total_positions = 3
spawn_positions = 3
added_access = list()
base_access = list(ACCESS_MEDICAL, ACCESS_MORGUE)
supervisors = "the captain and the head of personnel"
*/
/datum/job/New()
.=..()
lightup_areas = typecacheof(lightup_areas)
minimal_lightup_areas = typecacheof(minimal_lightup_areas)
if(changed_maps.len)
for(var/map in changed_maps)
RegisterSignal(src, map, text2path("[type]/proc/[map]Changes"))
var/new_spawn_positions = CHECK_MAP_JOB_CHANGE(title, "spawn_positions")
if(isnum(new_spawn_positions))
spawn_positions = new_spawn_positions
var/new_total_positions = CHECK_MAP_JOB_CHANGE(title, "total_positions")
if(isnum(new_total_positions))
total_positions = new_total_positions
//Only override this proc
//H is usually a human unless an /equip override transformed it

View File

@@ -86,6 +86,32 @@
chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/captain)
var/special_charter
/datum/outfit/job/captain/pre_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
special_charter = CHECK_MAP_JOB_CHANGE("Captain", "special_charter")
if(!special_charter)
return
backpack_contents -= /obj/item/station_charter
if(!l_hand)
l_hand = /obj/item/station_charter/flag
else if(!r_hand)
r_hand = /obj/item/station_charter/flag
/datum/outfit/job/captain/post_equip(mob/living/carbon/human/equipped, visualsOnly)
. = ..()
if(visualsOnly || !special_charter)
return
var/obj/item/station_charter/flag/celestial_charter = locate() in equipped.held_items
if(isnull(celestial_charter))
// failed to give out the unique charter, plop on the ground
celestial_charter = new(get_turf(equipped))
/datum/outfit/job/captain/hardsuit
name = "Captain (Hardsuit)"

View File

@@ -42,8 +42,6 @@
/datum/job_department/command,
)
changed_maps = list("YogsPubby")
mail_goodies = list(
/obj/item/stack/sheet/plastic/five = 20, //need that plastic chair
/obj/item/clothing/head/hatsky = 10,
@@ -76,9 +74,6 @@
var/obj/item/clothing/suit/my_suit = H.wear_suit
my_suit.attach_badge(badge)
/datum/job/hos/proc/YogsPubbyChanges()
base_access |= ACCESS_CREMATORIUM
/datum/outfit/job/hos
name = "Head of Security"
jobtype = /datum/job/hos

View File

@@ -37,8 +37,10 @@
QDEL_LIST(surgeries)
return ..()
/mob/living/onZImpact(turf/T, levels)
ZImpactDamage(T, levels)
/mob/living/onZImpact(turf/impacted_turf, levels, impact_flags = NONE)
if(!isgroundlessturf(impacted_turf))
impact_flags |= ZImpactDamage(impacted_turf, levels)
return ..()
/mob/living/proc/ZImpactDamage(turf/T, levels)

View File

@@ -150,3 +150,5 @@
var/usable_hands = 2
/// What our current gravity state is. Used to avoid duplicate animates and such
var/gravity_state = null
/// Is the mob looking vertically
var/looking_vertically = FALSE

View File

@@ -238,7 +238,7 @@ GLOBAL_LIST_EMPTY(ai_networking_machines)
if(target_label == label)
return
for(var/obj/machinery/ai/networking/N in GLOB.ai_networking_machines)
if(N.z != src.z)
if(!is_station_level(N.z) && !is_station_level(src.z) && N.z != src.z) //non-station levels can only connect to their own z level
return
if(N.label == target_label)
if(N.locked)

View File

@@ -676,27 +676,32 @@ Pass a positive integer as an argument to override a bot's default speed.
/mob/living/simple_animal/bot/proc/get_next_patrol_target()
// search the beacon list for the next target in the list.
for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"])
if(NB.location == next_destination) //Does the Beacon location text match the destination?
destination = new_destination //We now know the name of where we want to go.
patrol_target = NB.loc //Get its location and set it as the target.
next_destination = NB.codes["next_patrol"] //Also get the name of the next beacon in line.
return TRUE
var/list/connected_levels = SSmapping.get_connected_levels(z)
for(var/level in connected_levels)
for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[level]"])
if(NB.location == next_destination) //Does the Beacon location text match the destination?
destination = new_destination //We now know the name of where we want to go.
patrol_target = NB.loc //Get its location and set it as the target.
next_destination = NB.codes["next_patrol"] //Also get the name of the next beacon in line.
return TRUE
/mob/living/simple_animal/bot/proc/find_nearest_beacon()
for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"])
var/dist = get_dist(src, NB)
if(nearest_beacon) //Loop though the beacon net to find the true closest beacon.
//Ignore the beacon if were are located on it.
if(dist>1 && dist<get_dist(src,nearest_beacon_loc))
var/list/connected_levels = SSmapping.get_connected_levels(z)
for(var/level in connected_levels)
for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[level]"])
var/dist = get_dist(src, NB)
if(nearest_beacon) //Loop though the beacon net to find the true closest beacon.
//Ignore the beacon if were are located on it.
if(dist>1 && dist<get_dist(src,nearest_beacon_loc))
nearest_beacon = NB.location
nearest_beacon_loc = NB.loc
next_destination = NB.codes["next_patrol"]
else
continue
else if(dist > 1) //Begin the search, save this one for comparison on the next loop.
nearest_beacon = NB.location
nearest_beacon_loc = NB.loc
next_destination = NB.codes["next_patrol"]
else
continue
else if(dist > 1) //Begin the search, save this one for comparison on the next loop.
nearest_beacon = NB.location
nearest_beacon_loc = NB.loc
patrol_target = nearest_beacon_loc
destination = nearest_beacon

View File

@@ -1377,3 +1377,134 @@
/mob/setMovetype(newval)
. = ..()
update_movespeed(FALSE)
//I am looking respectfully
/mob/living/verb/lookup()
set name = "Look Up"
set category = "IC"
if(looking_vertically)
end_look_up()
else
look_up()
/mob/living/verb/lookdown()
set name = "Look Down"
set category = "IC"
if(looking_vertically)
end_look_down()
else
look_down()
/**
* look_up Changes the perspective of the mob to any openspace turf above the mob
*
* This also checks if an openspace turf is above the mob before looking up or resets the perspective if already looking up
*
*/
/mob/living/proc/look_up()
if(client.perspective != MOB_PERSPECTIVE) //We are already looking up.
stop_look_up()
if(!can_look_up())
return
changeNext_move(CLICK_CD_LOOK_UP)
RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(stop_look_up)) //We stop looking up if we move.
RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(start_look_up)) //We start looking again after we move.
start_look_up()
/mob/living/proc/start_look_up()
SIGNAL_HANDLER
var/turf/ceiling = get_step_multiz(src, UP)
if(!ceiling) //We are at the highest z-level.
if (prob(0.1))
to_chat(src, span_warning("You gaze out into the infinite vastness of deep space, for a moment, you have the impulse to continue travelling, out there, out into the deep beyond, before your conciousness reasserts itself and you decide to stay within travelling distance of the station."))
return
to_chat(src, span_warning("There's nothing interesting up there."))
return
else if(!istransparentturf(ceiling)) //There is no turf we can look through above us
var/turf/front_hole = get_step(ceiling, dir)
if(istransparentturf(front_hole))
ceiling = front_hole
else
for(var/turf/checkhole in TURF_NEIGHBORS(ceiling))
if(istransparentturf(checkhole))
ceiling = checkhole
break
if(!istransparentturf(ceiling))
to_chat(src, span_warning("You can't see through the floor above you."))
return
looking_vertically = TRUE
reset_perspective(ceiling)
/mob/living/proc/stop_look_up()
SIGNAL_HANDLER
reset_perspective()
/mob/living/proc/end_look_up()
stop_look_up()
looking_vertically = FALSE
UnregisterSignal(src, COMSIG_MOVABLE_PRE_MOVE)
UnregisterSignal(src, COMSIG_MOVABLE_MOVED)
/**
* look_down Changes the perspective of the mob to any openspace turf below the mob
*
* This also checks if an openspace turf is below the mob before looking down or resets the perspective if already looking up
*
*/
/mob/living/proc/look_down()
if(client.perspective != MOB_PERSPECTIVE) //We are already looking down.
stop_look_down()
if(!can_look_up()) //if we cant look up, we cant look down.
return
changeNext_move(CLICK_CD_LOOK_UP)
RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(stop_look_down)) //We stop looking down if we move.
RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(start_look_down)) //We start looking again after we move.
start_look_down()
/mob/living/proc/start_look_down()
SIGNAL_HANDLER
var/turf/floor = get_turf(src)
var/turf/lower_level = get_step_multiz(floor, DOWN)
if(!lower_level) //We are at the lowest z-level.
to_chat(src, span_warning("You can't see through the floor below you."))
return
else if(!istransparentturf(floor)) //There is no turf we can look through below us
var/turf/front_hole = get_step(floor, dir)
if(istransparentturf(front_hole))
floor = front_hole
lower_level = get_step_multiz(front_hole, DOWN)
else
// Try to find a hole near us
for(var/turf/checkhole in TURF_NEIGHBORS(floor))
if(istransparentturf(checkhole))
floor = checkhole
lower_level = get_step_multiz(checkhole, DOWN)
break
if(!istransparentturf(floor))
to_chat(src, span_warning("You can't see through the floor below you."))
return
looking_vertically = TRUE
reset_perspective(lower_level)
/mob/living/proc/stop_look_down()
SIGNAL_HANDLER
reset_perspective()
/mob/living/proc/end_look_down()
stop_look_down()
looking_vertically = FALSE
UnregisterSignal(src, COMSIG_MOVABLE_PRE_MOVE)
UnregisterSignal(src, COMSIG_MOVABLE_MOVED)
///Checks if the user is incapacitated or on cooldown.
/mob/living/proc/can_look_up()
if(next_move > world.time)
return FALSE
if(incapacitated(ignore_restraints = TRUE))
return FALSE
return TRUE

View File

@@ -525,9 +525,16 @@
else
to_chat(src, span_warning("You are not Superman."))
return
if(zMove(UP, z_move_flags = ZMOVE_FLIGHT_FLAGS|ZMOVE_FEEDBACK|ventcrawling_flag))
to_chat(src, span_notice("You move upwards."))
balloon_alert(src, "moving up...")
var/move_time = isobserver(src) ? 0 : 1 SECONDS
if(hud_used?.move_up && move_time)
hud_used.move_up.icon_state = "move_up_using"
if(do_after(src, move_time))
if(zMove(UP, z_move_flags = ZMOVE_FLIGHT_FLAGS|ZMOVE_FEEDBACK|ventcrawling_flag))
to_chat(src, span_notice("You move upwards."))
if(hud_used?.move_up)
hud_used.move_up.icon_state = initial(hud_used.move_up.icon_state)
///Moves a mob down a z level
/mob/verb/down()
@@ -549,10 +556,15 @@
return loc_atom.relaymove(src, DOWN)
var/ventcrawling_flag = HAS_TRAIT(src, TRAIT_MOVE_VENTCRAWLING) ? ZMOVE_VENTCRAWLING : 0
if(zMove(DOWN, z_move_flags = ZMOVE_FLIGHT_FLAGS|ZMOVE_FEEDBACK|ventcrawling_flag))
to_chat(src, span_notice("You move down."))
return FALSE
balloon_alert(src, "moving down...")
var/move_time = isobserver(src) ? 0 : 1 SECONDS
if(hud_used?.move_down && move_time)
hud_used.move_down.icon_state = "move_down_using"
if(do_after(src, move_time))
if(zMove(DOWN, z_move_flags = ZMOVE_FLIGHT_FLAGS|ZMOVE_FEEDBACK|ventcrawling_flag))
to_chat(src, span_notice("You move down."))
if(hud_used?.move_down)
hud_used.move_down.icon_state = initial(hud_used.move_down.icon_state)
/mob/abstract_move(atom/destination)
var/turf/new_turf = get_turf(destination)

View File

@@ -40,6 +40,11 @@ map donutstation
votable
endmap
map ministation
maxplayers 30
votable
endmap
# Debug-only maps.
map multiz_debug

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1649,6 +1649,7 @@
#include "code\game\turfs\open\river.dm"
#include "code\game\turfs\open\water.dm"
#include "code\game\turfs\open\floor\fancy_floor.dm"
#include "code\game\turfs\open\floor\glass.dm"
#include "code\game\turfs\open\floor\hull.dm"
#include "code\game\turfs\open\floor\light_floor.dm"
#include "code\game\turfs\open\floor\mineral_floor.dm"

View File

@@ -25,8 +25,6 @@
/datum/job_department/medical,
)
changed_maps = list("GaxStation")
mail_goodies = list(
/obj/item/storage/box/hug = 30,
/obj/item/storage/pill_bottle/mannitol = 25,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

After

Width:  |  Height:  |  Size: 1.1 KiB