diff --git a/.github/ISSUE_TEMPLATE/map_report.md b/.github/ISSUE_TEMPLATE/map_report.md new file mode 100644 index 00000000000..a3aa174357f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/map_report.md @@ -0,0 +1,29 @@ +--- +name: Map Bug report +about: Create a report, specific to any map related things. +title: '[MAPPING] ' +labels: ['Type: Bug', 'Type: Map'] +assignees: '' + +--- + + + + + + +#### Brief description of the bug + + +#### What you expected to happen + + +#### What actually happened + + +#### Code Revision +- (Found using the "Show Server Revision" verb under the OOC tab.) + + +#### Anything else you may wish to add: +- (Location if it's a mapping issue, screenshots, sprites, etc.) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index deea08a9751..c531d1ffd98 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,16 @@ jobs: - name: Install Tools run: | bash tools/ci/install_build_deps.sh + - name: Restore Yarn cache + if: "${{ contains(github.event.pull_request.labels.*.name, 'Type: TGUI Bundle') }}" + uses: actions/cache@v3 + with: + path: tgui/.yarn/cache + key: ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-build-${{ secrets.CACHE_PURGE_KEY }}- + ${{ runner.os }}-build- + ${{ runner.os }}- - name: Run Tests run: | tools/ci/validate_files.sh @@ -79,7 +89,7 @@ jobs: TEST_DEFINE: "UNIT_TEST" TEST_FILE: "code/_unit_tests.dm" RUN: "1" - - name: Compile POIs (no run) + - name: Compile POIs run: | tools/ci/install_byond.sh tools/ci/compile_and_run.sh @@ -87,7 +97,7 @@ jobs: TEST_DEFINE: "MAP_TEST" TEST_FILE: "code/_map_tests.dm" RUN: "0" - - name: Compile away missions (no run) + - name: Compile away missions run: | tools/ci/install_byond.sh tools/ci/compile_and_run.sh diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm index 6ed1384429c..9c5896a8066 100644 --- a/code/__defines/misc_vr.dm +++ b/code/__defines/misc_vr.dm @@ -58,6 +58,7 @@ #define PTO_CARGO "Cargo" #define PTO_CIVILIAN "Civilian" #define PTO_CYBORG "Cyborg" +#define PTO_TALON "Talon Contractor" #define DEPARTMENT_TALON "ITV Talon" diff --git a/code/controllers/subsystems/persist_vr.dm b/code/controllers/subsystems/persist_vr.dm index c40a0b0e35d..9cfc0de4ad6 100644 --- a/code/controllers/subsystems/persist_vr.dm +++ b/code/controllers/subsystems/persist_vr.dm @@ -63,10 +63,11 @@ SUBSYSTEM_DEF(persist) LAZYINITLIST(C.play_hours) var/dept_hours = C.department_hours var/play_hours = C.play_hours - if(isnum(dept_hours[department_earning])) - dept_hours[department_earning] += pto_factored - else - dept_hours[department_earning] = pto_factored + if(!(J.playtime_only)) + if(isnum(dept_hours[department_earning])) + dept_hours[department_earning] += pto_factored + else + dept_hours[department_earning] = pto_factored // If they're earning PTO they must be in a useful job so are earning playtime in that department if(J.timeoff_factor > 0) diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 568eb0f743e..858875a9827 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -40,7 +40,7 @@ if(!msg_sanitized) message = sanitize(message, extra = 0) - message_title = sanitizeSafe(message_title) + message_title = sanitizeSafe(message_title) var/list/zlevels if(zlevel) diff --git a/code/game/jobs/job/job_vr.dm b/code/game/jobs/job/job_vr.dm index a416a3af489..468d94c38e7 100644 --- a/code/game/jobs/job/job_vr.dm +++ b/code/game/jobs/job/job_vr.dm @@ -17,6 +17,9 @@ //Time required in the department as other jobs before playing this one (in hours) var/dept_time_required = 0 + //Do we forbid ourselves from earning PTO? + var/playtime_only = FALSE + // Check client-specific availability rules. /datum/job/proc/player_has_enough_pto(client/C) return timeoff_factor >= 0 || (C && LAZYACCESS(C.department_hours, pto_type) > 0) diff --git a/code/game/objects/items/gunbox_vr.dm b/code/game/objects/items/gunbox_vr.dm index 2770745f39b..4dbbb98b274 100644 --- a/code/game/objects/items/gunbox_vr.dm +++ b/code/game/objects/items/gunbox_vr.dm @@ -19,3 +19,26 @@ if(istype(AM, /obj/item/weapon/gun)) to_chat(user, "You have chosen \the [AM]. Say hello to your new best friend.") qdel(src) + +/* + * Site Manager's Box + */ +/obj/item/gunbox/captain + name = "Captain's sidearm box" + desc = "A secure box containing a sidearm befitting of the site manager. Includes both lethal and non-lethal munitions, beware what's loaded!" + icon = 'icons/obj/storage.dmi' + icon_state = "gunbox" +/obj/item/gunbox/captain/attack_self(mob/living/user) + var/list/options = list() + options["M1911 (.45)"] = list(/obj/item/weapon/gun/projectile/colt/detective, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45) + options["MT Mk58 (.45)"] = list(/obj/item/weapon/gun/projectile/sec, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45) + options["LAEP80 \"Thor\" (Stun/Laser)"] = list(/obj/item/weapon/gun/energy/gun, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon) + options["MarsTech P92X (9mm)"] = list(/obj/item/weapon/gun/projectile/p92x/rubber, /obj/item/ammo_magazine/m9mm/rubber, /obj/item/ammo_magazine/m9mm) + var/choice = tgui_input_list(user,"Would you prefer a ballistic pistol or an energy gun?", "Gun!", options) + if(src && choice) + var/list/things_to_spawn = options[choice] + for(var/new_type in things_to_spawn) // Spawn all the things, the gun and the ammo. + var/atom/movable/AM = new new_type(get_turf(src)) + if(istype(AM, /obj/item/weapon/gun)) + to_chat(user, "You have chosen \the [AM]. Say hello to your new friend.") + qdel(src) diff --git a/code/game/objects/items/weapons/explosives_vr.dm b/code/game/objects/items/weapons/explosives_vr.dm index fb065b7bf93..8d5bb8c961d 100644 --- a/code/game/objects/items/weapons/explosives_vr.dm +++ b/code/game/objects/items/weapons/explosives_vr.dm @@ -8,7 +8,7 @@ target = src var/turf/T = get_turf(target) - if(T.z in using_map.station_levels) + if((T.z in using_map.station_levels) || (T.z in using_map.admin_levels)) target.visible_message("\The [src] lets out a loud beep as safeties trigger, before imploding and falling apart.") target.cut_overlay(image_overlay, TRUE) qdel(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm index 7fa90698904..0bad0521c1b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm @@ -189,9 +189,9 @@ /obj/item/weapon/storage/lockbox/medal, /obj/item/device/radio/headset/heads/captain, /obj/item/device/radio/headset/heads/captain/alt, - /obj/item/weapon/gun/energy/gun, + /obj/item/gunbox/captain, /obj/item/weapon/melee/telebaton, /obj/item/device/flash, /obj/item/weapon/storage/box/ids, /obj/item/weapon/melee/rapier, - /obj/item/clothing/accessory/holster/machete/rapier) \ No newline at end of file + /obj/item/clothing/accessory/holster/machete/rapier) diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 08777970437..4a6bf5810fb 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -95,7 +95,11 @@ else var/new_lang = tgui_input_list(user, "Select an additional language", "Character Generation", available_languages) if(new_lang && pref.alternate_languages.len < (S.num_alternate_languages + pref.extra_languages)) - pref.alternate_languages |= new_lang + var/datum/language/chosen_lang = GLOB.all_languages[new_lang] + if(istype(chosen_lang)) + var/choice = tgui_alert(usr, "[chosen_lang.desc]",chosen_lang.name, list("Take","Cancel")) + if(choice != "Cancel" && pref.alternate_languages.len < (S.num_alternate_languages + pref.extra_languages)) + pref.alternate_languages |= new_lang return TOPIC_REFRESH else if(href_list["change_prefix"]) diff --git a/code/modules/mob/language/generic.dm b/code/modules/mob/language/generic.dm index 55ba735af4f..0c2fecfabc9 100644 --- a/code/modules/mob/language/generic.dm +++ b/code/modules/mob/language/generic.dm @@ -18,7 +18,7 @@ // 'basic' language; spoken by default. /datum/language/common name = LANGUAGE_GALCOM - desc = "The common galactic tongue, engineered for cross-species communication." + desc = "The common galactic tongue, engineered for cross-species communication. Every spacer there is knows this!" speech_verb = "says" whisper_verb = "whispers" key = "0" @@ -127,7 +127,7 @@ /datum/language/sign name = LANGUAGE_SIGN - desc = "A sign language commonly used for those who are deaf or mute." + desc = "A sign language commonly used for those who are deaf or mute. Especially popular with spacers, due to practicality in airless environments." signlang_verb = list("gestures") colour = "say_quote" key = "s" @@ -152,7 +152,7 @@ // Silly language for those times when you try to talk a languague you normally can't /datum/language/gibberish name = LANGUAGE_GIBBERISH - desc = "A completely incomprehensible language." + desc = "A completely incomprehensible gibberish that can barely be called a language." signlang_verb = list("flails") speech_verb = "spews" whisper_verb = "mumbles" diff --git a/code/modules/mob/language/monkey.dm b/code/modules/mob/language/monkey.dm index 6736b803fc2..0ceaf4a88fc 100644 --- a/code/modules/mob/language/monkey.dm +++ b/code/modules/mob/language/monkey.dm @@ -1,6 +1,6 @@ /datum/language/human/monkey name = "Chimpanzee" - desc = "Ook ook ook." + desc = "A collection of ooking noises made by monkeys" speech_verb = "chimpers" ask_verb = "chimpers" exclaim_verb = "screeches" @@ -10,28 +10,28 @@ /datum/language/skrell/monkey name = "Neaera" - desc = "Squik squik squik." + desc = "A collection of squiking noises made by naera." key = "8" - syllables = list("hiss","gronk") + syllables = list("squick","croak") machine_understands = 0 /datum/language/unathi/monkey name = "Stok" - desc = "Hiss hiss hiss." + desc = "A collection of hissing noises made by stok." key = "7" - syllables = list("squick","croak") + syllables = list("hiss","gronk") machine_understands = 0 /datum/language/tajaran/monkey name = "Farwa" - desc = "Meow meow meow." + desc = "A collection of meowing noises made by farwa." key = "9" syllables = list("meow","mew") machine_understands = 0 /datum/language/corgi name = "Dog" - desc = "Woof woof woof." + desc = "A set of barks and woofs that only dogs can understand." speech_verb = "barks" ask_verb = "woofs" exclaim_verb = "howls" @@ -43,7 +43,7 @@ /datum/language/cat name = "Cat" - desc = "Meow meow meow." + desc = "A set of meows and mrowls that only cats can understand." speech_verb = "meows" ask_verb = "mrowls" exclaim_verb = "yowls" @@ -55,7 +55,7 @@ /datum/language/mouse name = "Mouse" - desc = "Squeak squeak. *Nibbles on cheese*" + desc = "A set of squeaks that only mice can understand." speech_verb = "squeaks" ask_verb = "squeaks" exclaim_verb = "squeaks" @@ -67,7 +67,7 @@ /datum/language/bird name = "Bird" - desc = "Chirp chirp, give me food" + desc = "A set of chirps and squawks that only birds can understand." speech_verb = "chirps" ask_verb = "tweets" exclaim_verb = "squawks" @@ -76,3 +76,15 @@ machine_understands = 0 space_chance = 100 syllables = list("chirp", "squawk", "tweet") + +/datum/language/teppi + name = "Teppi" + desc = "A set of gyohs that only teppi can understand." + speech_verb = "rumbles" + ask_verb = "tilts" + exclaim_verb = "roars" + key = "i" + flags = WHITELISTED + machine_understands = 0 + space_chance = 100 + syllables = list("gyoh", "snoof", "gyoooooOOOooh", "iuuuuh", "gyuuuuh") diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index b0de63108c3..cb759eabb58 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -114,7 +114,7 @@ /datum/language/skrell name = LANGUAGE_SKRELLIAN - desc = "A set of warbles and hums, the language itself a complex mesh of both melodic and rhythmic components, exceptionally capable of conveying intent and emotion of the speaker." + desc = "A set of warbles and hums, the language itself a complex mesh of both melodic and rhythmic components, exceptionally capable of conveying intent and emotion of the speaker. Native to Skrell." speech_verb = "warbles" ask_verb = "warbles" exclaim_verb = "sings" @@ -127,7 +127,7 @@ /datum/language/skrellfar name = LANGUAGE_SKRELLIANFAR - desc = "The most common language among the Skrellian Far Kingdoms. Has an even higher than usual concentration of inaudible phonemes." + desc = "The most common language among the Skrellian Far Kingdoms. Has an even higher than usual concentration of inaudible phonemes. Native to Skrell." speech_verb = "warbles" ask_verb = "warbles" exclaim_verb = "sings" @@ -145,7 +145,7 @@ /datum/language/human name = LANGUAGE_SOL_COMMON - desc = "A bastardized hybrid of many languages, including Chinese, English, French, and more; it is the common language of the Sol system." + desc = "A bastardized hybrid of many human languages, including Chinese, English, French, and more; it is the common language of the Sol system." speech_verb = "says" whisper_verb = "whispers" colour = "solcom" @@ -172,7 +172,7 @@ /datum/language/machine name = LANGUAGE_EAL - desc = "An efficient language of encoded tones developed by positronics." + desc = "An efficient language of encoded tones developed by positronics, although compatible with any synthetic lifeforms." speech_verb = "whistles" ask_verb = "chirps" exclaim_verb = "whistles loudly" @@ -190,7 +190,7 @@ /datum/language/teshari name = LANGUAGE_SCHECHI - desc = "A trilling language spoken by the diminutive Teshari." + desc = "A trilling language spoken by the Teshari." speech_verb = "chirps" ask_verb = "chirrups" exclaim_verb = "trills" @@ -222,7 +222,7 @@ /datum/language/promethean name = LANGUAGE_PROMETHEAN - desc = "A complex language composed of guttural noises and bioluminescent signals" + desc = "A complex language of prometheans, composed of guttural noises and bioluminescent signals." signlang_verb = list("flickers","flashes","rapidly flashes a light","quickly flickers a light") speech_verb = "gurgles" ask_verb = "gurgles" diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm index 99917319502..97d094d85c0 100644 --- a/code/modules/mob/language/station_vr.dm +++ b/code/modules/mob/language/station_vr.dm @@ -11,7 +11,7 @@ /datum/language/birdsong name = LANGUAGE_BIRDSONG - desc = "A language primarily spoken by Narvians" + desc = "A tweety language primarily spoken by Nevreans." speech_verb = "chirps" colour = "birdsongc" key = "G" @@ -151,7 +151,7 @@ /datum/language/tavan name = LANGUAGE_TAVAN - desc = "A language native to the Altevians, it has been adopted by other rodent faring species over time." + desc = "A language native to the rat-like Altevians, it has been adopted by other rodent faring species over time." key = "E" speech_verb = "squeaks" whisper_verb = "squiks" @@ -162,7 +162,7 @@ /datum/language/echosong name = LANGUAGE_ECHOSONG - desc = "An ultrasound-based language, inaudible to those unable to understand it." + desc = "An ultrasound-based language, inaudible to those unable to understand it, spoken by few species capable of actually hearing it." key = "U" signlang_verb = list("opens their mouth soundlessly", "mouthes something silently") signlang_verb_understood = list("squeaks") diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 561a2c3fe23..039c64e663d 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -123,7 +123,7 @@ add_language(LANGUAGE_GUTTER, 1) add_language(LANGUAGE_EAL, 1) add_language(LANGUAGE_TERMINUS, 1) - add_language(LANGUAGE_SIGN, 0) + add_language(LANGUAGE_SIGN, 1) verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_verbs diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm index d9d560188a1..4808a3ff4e9 100644 --- a/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/code/modules/mob/living/simple_mob/simple_mob.dm @@ -309,7 +309,7 @@ /mob/living/simple_mob/Bump(var/atom/A) if(mobcard && istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A - if(!istype(D, /obj/machinery/door/firedoor) && !istype(D, /obj/machinery/door/blast) && !istype(D, /obj/machinery/door/airlock/lift) && D.check_access(mobcard)) + if(client && !istype(D, /obj/machinery/door/firedoor) && !istype(D, /obj/machinery/door/blast) && !istype(D, /obj/machinery/door/airlock/lift) && D.check_access(mobcard)) D.open() else ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm index 32ab7da58aa..036e07c2d40 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm @@ -870,18 +870,6 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? speak_chance = 0.5 wander = TRUE -/datum/language/teppi - name = "Teppi" - desc = "The language of the meat things." - speech_verb = "rumbles" - ask_verb = "tilts" - exclaim_verb = "roars" - key = "i" - flags = WHITELISTED - machine_understands = 0 - space_chance = 100 - syllables = list("gyoh", "snoof", "gyoooooOOOooh", "iuuuuh", "gyuuuuh") - ////////////////// Da babby ////////////// /mob/living/simple_mob/vore/alienanimals/teppi/baby diff --git a/code/modules/persistence/storage/smartfridge.dm b/code/modules/persistence/storage/smartfridge.dm index a47099f3282..1ffe9eb586e 100644 --- a/code/modules/persistence/storage/smartfridge.dm +++ b/code/modules/persistence/storage/smartfridge.dm @@ -65,12 +65,12 @@ /datum/persistent/storage/smartfridge/produce name = "fruit storage" max_storage = 50 - store_per_type = FALSE + store_per_type = TRUE target_type = /obj/machinery/smartfridge/produce /datum/persistent/storage/smartfridge/produce/lossy name = "fruit storage lossy" - go_missing_chance = 12.5 // 10% loss between rounds + go_missing_chance = 10 // 10% loss chance between rounds /datum/persistent/storage/smartfridge/produce/generate_items(var/list/L) // Mostly same as storage/generate_items() but without converting string to path . = list() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index c4967200635..416734eae9f 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -315,6 +315,8 @@ GLOBAL_LIST_EMPTY(smeses) "[user.name] has added cables to the [src].",\ "You added cables to the [src].") stat = 0 + if(!powernet) + connect_to_network() return FALSE else if(W.is_wirecutter() && !building_terminal) @@ -418,7 +420,7 @@ GLOBAL_LIST_EMPTY(smeses) switch(io) if(SMES_TGUI_INPUT) set_input(target) - if(SMES_TGUI_OUTPUT) + if(SMES_TGUI_OUTPUT) set_output(target) diff --git a/code/unit_tests/map_tests.dm b/code/unit_tests/map_tests.dm index 6dfec2bd608..d5979208a28 100644 --- a/code/unit_tests/map_tests.dm +++ b/code/unit_tests/map_tests.dm @@ -1,5 +1,5 @@ /datum/unit_test/apc_area_test - name = "MAP: Area Test APC / Scrubbers / Vents Z level 1" + name = "MAP: Area Test APC / Scrubbers / Vents (Defined Z-Levels)" /datum/unit_test/apc_area_test/start_test() var/list/bad_areas = list() @@ -47,17 +47,16 @@ var/area_good = 1 var/bad_msg = "--------------- [A.name]([A.type])" - if(isnull(A.apc) && !(A.type in exempt_from_apc)) - log_unit_test("[bad_msg] lacks an APC.") + log_unit_test("[bad_msg] lacks an APC. (X[A.x]|Y[A.y]) - Z[A.z])") area_good = 0 if(!A.air_scrub_info.len && !(A.type in exempt_from_atmos)) - log_unit_test("[bad_msg] lacks an Air scrubber.") + log_unit_test("[bad_msg] lacks an Air scrubber. (X[A.x]|Y[A.y]) - (Z[A.z])") area_good = 0 if(!A.air_vent_info.len && !(A.type in exempt_from_atmos)) - log_unit_test("[bad_msg] lacks an Air vent.") + log_unit_test("[bad_msg] lacks an Air vent. (X[A.x]|Y[A.y]) - (Z[A.z])") area_good = 0 if(!area_good) @@ -71,7 +70,7 @@ return 1 /datum/unit_test/wire_test - name = "MAP: Cable Test Z level 1" + name = "MAP: Cable Test (Defined Z-Levels)" /datum/unit_test/wire_test/start_test() var/wire_test_count = 0 @@ -81,11 +80,13 @@ var/list/cable_turfs = list() var/list/dirs_checked = list() + var/list/zs_to_test = using_map.unit_test_z_levels || list(1) //Either you set it, or you just get z1 + for(C in world) T = null T = get_turf(C) - if(T && T.z == 1) + if(T && (T.z in zs_to_test)) cable_turfs |= get_turf(C) for(T in cable_turfs) @@ -121,12 +122,12 @@ var/a_gas = "" for(var/gas in E.A.air.gas) a_gas += "[gas]=[E.A.air.gas[gas]]" - + var/b_temp var/b_moles var/b_vol var/b_gas = "" - + // Two zones mixing if(istype(E, /connection_edge/zone)) var/connection_edge/zone/Z = E @@ -144,11 +145,11 @@ b_vol = "Unsim" for(var/gas in U.air.gas) b_gas += "[gas]=[U.air.gas[gas]]" - + edge_log += "Active Edge [E] ([E.type])" edge_log += "Edge side A: T:[a_temp], Mol:[a_moles], Vol:[a_vol], Gas:[a_gas]" edge_log += "Edge side B: T:[b_temp], Mol:[b_moles], Vol:[b_vol], Gas:[b_gas]" - + for(var/turf/T in E.connecting_turfs) edge_log += "+--- Connecting Turf [T] ([T.type]) @ [T.x], [T.y], [T.z] ([T.loc])" diff --git a/icons/inventory/uniform/mob.dmi b/icons/inventory/uniform/mob.dmi index 607a3153770..d368c3a4d74 100644 Binary files a/icons/inventory/uniform/mob.dmi and b/icons/inventory/uniform/mob.dmi differ diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm index 88e7e572454..6bbf1d265dc 100644 --- a/maps/groundbase/gb-z2.dmm +++ b/maps/groundbase/gb-z2.dmm @@ -587,9 +587,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/white, /area/medical/virology) -"bt" = ( -/turf/simulated/wall/r_wall, -/area/groundbase/science) "bu" = ( /obj/machinery/door/airlock/freezer{ name = "Kitchen"; @@ -22850,7 +22847,7 @@ Rh EJ YI ng -bt +PD AH lO Ga @@ -22992,7 +22989,7 @@ Rh bO AZ ff -bt +PD IO qW PZ @@ -23134,7 +23131,7 @@ Rh ff AZ ff -bt +PD nw qW lw @@ -23276,7 +23273,7 @@ Rh Fk AZ yw -bt +PD ws qW lw @@ -23418,7 +23415,7 @@ Rh vh Nb Ys -bt +PD aB PR lw @@ -23560,7 +23557,7 @@ Rh PD qU PD -bt +PD Ov PR lw diff --git a/maps/groundbase/groundbase_defines.dm b/maps/groundbase/groundbase_defines.dm index 63e9535334b..de61e75d2f4 100644 --- a/maps/groundbase/groundbase_defines.dm +++ b/maps/groundbase/groundbase_defines.dm @@ -124,6 +124,9 @@ default_skybox = /datum/skybox_settings/groundbase unit_test_exempt_areas = list( //These are all outside + /area/groundbase/cargo/bay, + /area/groundbase/civilian/bar/upper, + /area/groundbase/exploration/shuttlepad, /area/groundbase/level1, /area/groundbase/level1/ne, /area/groundbase/level1/nw, @@ -140,11 +143,20 @@ /area/groundbase/level2/nw, /area/groundbase/level2/se, /area/groundbase/level2/sw, + /area/groundbase/level2/northspur, + /area/groundbase/level2/eastspur, + /area/groundbase/level2/westspur, + /area/groundbase/level2/southeastspur, + /area/groundbase/level2/southwestspur, /area/groundbase/level3, /area/groundbase/level3/ne, /area/groundbase/level3/nw, /area/groundbase/level3/se, /area/groundbase/level3/sw, + /area/groundbase/level3/ne/open, + /area/groundbase/level3/nw/open, + /area/groundbase/level3/se/open, + /area/groundbase/level3/sw/open, /area/maintenance/groundbase/level1/netunnel, /area/maintenance/groundbase/level1/nwtunnel, /area/maintenance/groundbase/level1/setunnel, @@ -165,6 +177,11 @@ unit_test_exempt_from_atmos = list() + unit_test_z_levels = list( + Z_LEVEL_GB_BOTTOM, + Z_LEVEL_GB_MIDDLE, + Z_LEVEL_GB_TOP + ) lateload_z_levels = list( list("Groundbase - Central Command"), @@ -534,4 +551,3 @@ */ //////////////////////////////////////////////////////////////////////// - diff --git a/maps/stellardelight/stellar_delight_defines.dm b/maps/stellardelight/stellar_delight_defines.dm index 3cafb69e00d..3f342d6b28f 100644 --- a/maps/stellardelight/stellar_delight_defines.dm +++ b/maps/stellardelight/stellar_delight_defines.dm @@ -125,6 +125,11 @@ unit_test_exempt_from_atmos = list() //it maint + unit_test_z_levels = list( + Z_LEVEL_SHIP_LOW, + Z_LEVEL_SHIP_MID, + Z_LEVEL_SHIP_HIGH + ) lateload_z_levels = list( list("Ship - Central Command"), diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index ef8cc70e64c..26f552ef02a 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -152,6 +152,13 @@ /area/tether/surfacebase/lowernortheva/external, //it outside /area/tether/surfacebase/security/gasstorage) //it maint + unit_test_z_levels = list( + Z_LEVEL_SURFACE_LOW, + Z_LEVEL_SURFACE_MID, + Z_LEVEL_SURFACE_HIGH, + Z_LEVEL_TRANSIT, + Z_LEVEL_SPACE_LOW + ) lateload_z_levels = list( list("Tether - Centcom","Tether - Misc","Tether - Underdark","Tether - Plains"), //Stock Tether lateload maps diff --git a/maps/tether/tether_jobs.dm b/maps/tether/tether_jobs.dm index 5d9be113cf8..18bdd571eb9 100644 --- a/maps/tether/tether_jobs.dm +++ b/maps/tether/tether_jobs.dm @@ -25,7 +25,10 @@ selection_color = "#999999" economic_modifier = 7 minimal_player_age = 14 - pto_type = null + playtime_only = TRUE + pto_type = PTO_TALON + timeoff_factor = 1 + dept_time_required = 60 access = list(access_talon) minimal_access = list(access_talon) alt_titles = list("Talon Commander" = /datum/alt_title/talon_commander) @@ -49,7 +52,9 @@ selection_color = "#aaaaaa" economic_modifier = 5 minimal_player_age = 14 - pto_type = null + playtime_only = TRUE + pto_type = PTO_TALON + timeoff_factor = 1 access = list(access_talon) minimal_access = list(access_talon) alt_titles = list("Talon Medic" = /datum/alt_title/talon_medic) @@ -74,7 +79,9 @@ selection_color = "#aaaaaa" economic_modifier = 5 minimal_player_age = 14 - pto_type = null + playtime_only = TRUE + pto_type = PTO_TALON + timeoff_factor = 1 access = list(access_talon) minimal_access = list(access_talon) alt_titles = list("Talon Technician" = /datum/alt_title/talon_tech) @@ -99,7 +106,9 @@ selection_color = "#aaaaaa" economic_modifier = 5 minimal_player_age = 14 - pto_type = null + playtime_only = TRUE + pto_type = PTO_TALON + timeoff_factor = 1 access = list(access_talon) minimal_access = list(access_talon) alt_titles = list("Talon Helmsman" = /datum/alt_title/talon_helmsman) @@ -124,7 +133,9 @@ selection_color = "#aaaaaa" economic_modifier = 5 minimal_player_age = 14 - pto_type = null + playtime_only = TRUE + pto_type = PTO_TALON + timeoff_factor = 1 access = list(access_talon) minimal_access = list(access_talon) alt_titles = list("Talon Security" = /datum/alt_title/talon_security) @@ -148,7 +159,9 @@ selection_color = "#aaaaaa" economic_modifier = 5 minimal_player_age = 14 - pto_type = null + playtime_only = TRUE + pto_type = PTO_TALON + timeoff_factor = 1 access = list(access_talon) minimal_access = list(access_talon) alt_titles = list("Talon Excavator" = /datum/alt_title/talon_excavator) diff --git a/tgui/packages/tgui/interfaces/NtosRevelation.js b/tgui/packages/tgui/interfaces/NtosRevelation.tsx similarity index 75% rename from tgui/packages/tgui/interfaces/NtosRevelation.js rename to tgui/packages/tgui/interfaces/NtosRevelation.tsx index 381cc32835b..cdd8bc0a33f 100644 --- a/tgui/packages/tgui/interfaces/NtosRevelation.js +++ b/tgui/packages/tgui/interfaces/NtosRevelation.tsx @@ -1,9 +1,15 @@ import { Section, Button, LabeledList } from '../components'; import { useBackend } from '../backend'; import { NtosWindow } from '../layouts'; +import { BooleanLike } from 'common/react'; + +type Data = { + armed: BooleanLike; +}; export const NtosRevelation = (props, context) => { - const { act, data } = useBackend(context); + const { act, data } = useBackend(context); + const { armed } = data; return ( @@ -23,14 +29,14 @@ export const NtosRevelation = (props, context) => { label="Payload Status" buttons={