From 693c6ea85498c61403f5c768f0fd04d4b14df334 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 20 Sep 2023 00:12:36 +0000 Subject: [PATCH 01/23] Automatic changelog compile [ci skip] --- html/changelog.html | 6 ------ 1 file changed, 6 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index c3feb36b2f3..3bd9e0a90a9 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -258,12 +258,6 @@

SerynEngi updated:

  • Connected nucleum Z-level adapter to FTL gas network on the Aetherwhisp
  • Connected the stormdrive output to the nucleum gas network on the Aetherwhisp
  • - -

    19 July 2023

    -

    DeltaFire15 updated:

    - GoonStation 13 Development Team From c871d8fb6d31f8a75bd83c0d4908b6d79c15776b Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 00:12:25 +0000 Subject: [PATCH 02/23] Automatic changelog compile [ci skip] --- html/changelog.html | 8 -------- 1 file changed, 8 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 3bd9e0a90a9..c2778e74fe0 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -250,14 +250,6 @@

    BlueHNT updated:

    - -

    20 July 2023

    -

    SerynEngi updated:

    - GoonStation 13 Development Team From dc2d54cea84b8b4a66b8679918e7d6bde9b50ab6 Mon Sep 17 00:00:00 2001 From: BlueHNT <79374236+BlueHNT@users.noreply.github.com> Date: Thu, 21 Sep 2023 23:54:12 +0200 Subject: [PATCH 03/23] Ju Jitsu Update [REDO] (#2454) Co-authored-by: Bokkiewokkie <43698041+Bokkiewokkie@users.noreply.github.com> --- code/datums/martial/_martial.dm | 1 + .../code/modules/jobs/security/martial_art.dm | 100 +++++++++++++++--- nsv13/sound/weapons/chokehold.ogg | Bin 0 -> 9954 bytes 3 files changed, 89 insertions(+), 12 deletions(-) create mode 100644 nsv13/sound/weapons/chokehold.ogg diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm index 475936d11cb..31c5cd1472c 100644 --- a/code/datums/martial/_martial.dm +++ b/code/datums/martial/_martial.dm @@ -9,6 +9,7 @@ var/reroute_deflection = FALSE //Delete the bullet, or actually deflect it in some direction? var/block_chance = 0 //Chance to block melee attacks using items while on throw mode. var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not + var/armlockstate = 0 //used in jujitsu grab after hand armlock move var/help_verb var/no_guns = FALSE var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts diff --git a/nsv13/code/modules/jobs/security/martial_art.dm b/nsv13/code/modules/jobs/security/martial_art.dm index af918d05cd2..76f88c0170d 100644 --- a/nsv13/code/modules/jobs/security/martial_art.dm +++ b/nsv13/code/modules/jobs/security/martial_art.dm @@ -1,7 +1,7 @@ #define MARTIALART_JUJITSU "ju jitsu" - -#define TAKEDOWN_COMBO "DD" -#define JUDO_THROW "DHHG" +#define TAKEDOWN_COMBO "DG" +#define JUDO_THROW "HHG" +#define ARMLOCKING "DHGG" /obj/item/book/granter/martial/jujitsu martial = /datum/martial_art/jujitsu @@ -37,8 +37,11 @@ set desc = "Remember your police academy martial arts training." set category = "Jujitsu" to_chat(usr, "Combos:") - to_chat(usr, "Disarm, disarm will perform a takedown on the target, if they have been slowed / weakened first") - to_chat(usr, "Disarm, harm, harm, grab will execute a judo throw on the target,landing you on top of them in a pinning position. Provided that you have a grab on them on the final step...") + to_chat(usr, "Disarm, Grab will perform a takedown on the target, if they have been slowed / weakened first") + to_chat(usr, "Harm, Harm, Grab will execute a judo throw on the target,landing you on top of them in a pinning position. Provided that you have a grab on them on the final step...") + to_chat(usr, "Disarm, Harm, Grab, Grab will execute an armlock on the target, throwing you both to the ground. You however have more maneuverability than the perp from this position.") + + to_chat(usr, "In addition, you also have a small window of opportunity to forcefully grab the perp during armlock.") /datum/martial_art/jujitsu/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) if(findtext(streak,TAKEDOWN_COMBO)) @@ -49,6 +52,10 @@ streak = "" judo_throw(A,D) return TRUE + if(findtext(streak,ARMLOCKING)) + streak = "" + armlocking(A, D) + return TRUE return FALSE /datum/martial_art/jujitsu/proc/takedown(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -61,12 +68,15 @@ A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] trips [D] up and pins them to the ground!", "[A] is pinning you to the ground!") playsound(get_turf(D), 'nsv13/sound/effects/judo_throw.ogg', 100, TRUE) - D.Paralyze(7 SECONDS) //Equivalent to a clown PDA + D.Paralyze(2 SECONDS) + D.Knockdown(7 SECONDS) A.shake_animation(10) - D.shake_animation(10) + D.shake_animation(20) + D.adjustOxyLoss(10) // you smashed him into the ground A.forceMove(get_turf(D)) - A.start_pulling(D, supress_message = FALSE) - A.setGrabState(GRAB_AGGRESSIVE) + if(A.mobility_flags & MOBILITY_STAND) //Fixes permanent slowdown + A.start_pulling(D, supress_message = FALSE) + A.setGrabState(GRAB_AGGRESSIVE) last_move = world.time /datum/martial_art/jujitsu/proc/judo_throw(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -81,25 +91,78 @@ target = get_turf(A) D.forceMove(target) A.setDir(newdir) - A.start_pulling(D, supress_message = FALSE) - A.setGrabState(GRAB_AGGRESSIVE) + D.dropItemToGround(D.get_active_held_item()) // yeet + if(A.mobility_flags & MOBILITY_STAND) //Fixes permanent slowdown + A.start_pulling(D, supress_message = FALSE) + A.setGrabState(GRAB_AGGRESSIVE) + D.adjustOxyLoss(40) // YOU THREW HIM, THREW HIM!! D.Paralyze(7 SECONDS) //Equivalent to a clown PDA D.visible_message("[A] throws [D] over their shoulder and pins them down!", "[A] throws you over their shoulder and pins you to the ground!") playsound(get_turf(D), 'nsv13/sound/effects/judo_throw.ogg', 100, TRUE) last_move = world.time +// Armlock state removal after 5s +/datum/martial_art/jujitsu/proc/drop_armlocking() + armlockstate = FALSE + +// Armlock +/datum/martial_art/jujitsu/proc/armlocking(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!can_use(A)) + return FALSE + if(world.time < last_move+cooldown) + to_chat(A, "You're too fatigued to perform this move right now...") + return FALSE + if(!D.stat) + D.visible_message("[A] locks [D] into a armlock position!", \ + "[A] locks you into a armlock position!") + A.Knockdown(20) // knockdown officer with the perp + A.adjustStaminaLoss(15) + D.adjustStaminaLoss(30) + D.Paralyze(70) + D.shake_animation(50) + A.start_pulling(D, supress_message = FALSE) + armlockstate = TRUE + addtimer(CALLBACK(src, PROC_REF(drop_armlocking)), 50, TIMER_UNIQUE) // you get 3 seconds after standing up to grab the perp + A.do_attack_animation(D, ATTACK_EFFECT_DISARM) + playsound(get_turf(D), 'nsv13/sound/effects/judo_throw.ogg', 100, TRUE) + last_move = world.time + return TRUE + /datum/martial_art/jujitsu/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE if(A==D) return FALSE //prevents grabbing yourself - if(A.a_intent == INTENT_GRAB) + if(A.a_intent == INTENT_GRAB && A.mobility_flags & MOBILITY_STAND) //Fixes permanent slowdown and missfire + if(armlockstate == TRUE) // neck grabs if armlocked + A.setGrabState(GRAB_NECK) + D.visible_message("[A] grabs [D] from the armlock position by the neck!", \ + "[A] grabs you from the armlock position by the neck!") + armlockstate = FALSE add_to_streak("G",D) if(check_streak(A,D)) //doing combos is prioritized over upgrading grabs return TRUE return FALSE /datum/martial_art/jujitsu/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected)) + var/def_check = D.getarmor(BODY_ZONE_CHEST, "melee") + var/bonus_damage = 0 + if((armlockstate == TRUE)) // disable chosen arm temporarily when armlocked + if(A.zone_selected == BODY_ZONE_L_ARM) + D.apply_damage(100, STAMINA, BODY_ZONE_L_ARM, def_check) + D.visible_message("[A] has cracked [D]'s arm!", "[A] cracks your arm, causing a coursing pain!") + armlockstate = FALSE + if(A.zone_selected == BODY_ZONE_R_ARM) + D.apply_damage(100, STAMINA, BODY_ZONE_R_ARM, def_check) + D.visible_message("[A] has cracked [D]'s arm!", "[A] cracks your arm, causing a coursing pain!") + armlockstate = FALSE + return FALSE + if((A.grab_state >= GRAB_AGGRESSIVE)) + bonus_damage += 5 + D.apply_damage(rand(2,3) + bonus_damage, A.dna.species.attack_type, affecting, def_check) // bonus damage when grabbing at least aggressively if required to kill + if((D.mobility_flags & MOBILITY_STAND)) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) // makes punch be default if he's standing if(!can_use(A)) return FALSE add_to_streak("H",D) @@ -108,6 +171,19 @@ return FALSE /datum/martial_art/jujitsu/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + var/bonus_stam = 0 + if((A.grab_state >= GRAB_AGGRESSIVE)) // If you shove during agressive grab it deals bonus stam + bonus_stam = 20 + if(!(D.mobility_flags & MOBILITY_STAND)) // If you shove while perp is on ground and aggressive grabbing, it deals even more stam + bonus_stam += 10 + D.adjustStaminaLoss(10 + bonus_stam) // deals minor stam damage with scaling dependant on grab and perp standing + A.do_attack_animation(D, ATTACK_EFFECT_DISARM) + if(A.pulling == D && A.grab_state >= GRAB_NECK) // LV3 hold minimum + D.visible_message("[A] puts [D] into a chokehold!", \ + "[A] puts you into a chokehold!") + playsound(get_turf(D), 'nsv13/sound/weapons/chokehold.ogg', 50, 1, 1) + D.SetSleeping(200) + return FALSE if(!can_use(A)) return FALSE add_to_streak("D",D) diff --git a/nsv13/sound/weapons/chokehold.ogg b/nsv13/sound/weapons/chokehold.ogg new file mode 100644 index 0000000000000000000000000000000000000000..43e0db0741f5c20d1f69ef94ef964a6a882becd8 GIT binary patch literal 9954 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 Date: Thu, 21 Sep 2023 16:55:21 -0500 Subject: [PATCH 04/23] Automatic changelog generation for PR #2454 [ci skip] --- html/changelogs/AutoChangeLog-pr-2454.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2454.yml diff --git a/html/changelogs/AutoChangeLog-pr-2454.yml b/html/changelogs/AutoChangeLog-pr-2454.yml new file mode 100644 index 00000000000..e08de77c11f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2454.yml @@ -0,0 +1,5 @@ +author: BlueHNT +delete-after: true +changes: + - rscadd: Added new Ju Jitsu move + - tweak: Tweaked Ju Jitsu From e6e336b9e82e4e5044efea1b83d30ad63e4bd7e8 Mon Sep 17 00:00:00 2001 From: The Lusty E <89947174+bruhlookatthisdood@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:57:16 -0500 Subject: [PATCH 05/23] Snake atmospherics fixes (#2513) --- _maps/map_files/Snake/snake_lower.dmm | 31 +++++++++++++++---- nsv13.dme | 4 +++ nsv13/code/__DEFINES/atmospherics.dm | 3 ++ .../game/machinery/computer/atmos_control.dm | 11 +++++++ .../game/objects/items/nsv_circuitboards.dm | 6 ++++ .../unary_devices/outlet_injector.dm | 3 ++ .../components/unary_devices/vent_pump.dm | 3 ++ 7 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 nsv13/code/__DEFINES/atmospherics.dm create mode 100644 nsv13/code/game/machinery/computer/atmos_control.dm create mode 100644 nsv13/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm create mode 100644 nsv13/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm diff --git a/_maps/map_files/Snake/snake_lower.dmm b/_maps/map_files/Snake/snake_lower.dmm index 8f23ef89e58..b0dcc7ac19a 100644 --- a/_maps/map_files/Snake/snake_lower.dmm +++ b/_maps/map_files/Snake/snake_lower.dmm @@ -765,7 +765,7 @@ /turf/open/floor/plasteel, /area/security/brig) "cO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos{ +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ dir = 8 }, /turf/open/floor/engine/air, @@ -3151,7 +3151,7 @@ /turf/open/floor/engine, /area/nsv/weapons/fore) "ls" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output{ dir = 4 }, /turf/open/floor/engine/airless, @@ -3797,9 +3797,9 @@ /turf/open/floor/plasteel/white, /area/science/lab) "nL" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input{ dir = 8; - name = "Fuel Mix Injector" + piping_layer = 4 }, /turf/open/floor/engine/airless, /area/engine/atmos) @@ -4718,6 +4718,12 @@ /obj/machinery/light_switch/north, /turf/open/floor/engine, /area/security/execution/transfer) +"ru" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nucleium_output{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) "rv" = ( /obj/machinery/light_switch/north, /turf/open/floor/plasteel/dark/side, @@ -6293,6 +6299,9 @@ dir = 4 }, /obj/item/radio/intercom/directional/south, +/obj/machinery/computer/atmos_control/tank/nucleium_tank{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/engine/atmos) "wV" = ( @@ -9238,6 +9247,12 @@ }, /turf/open/floor/plasteel/dark, /area/engine/atmos) +"GQ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nucleium_input{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) "GS" = ( /obj/structure/kitchenspike, /obj/machinery/camera/autoname, @@ -13075,6 +13090,10 @@ /area/security/brig) "TL" = ( /obj/machinery/light/small, +/obj/machinery/air_sensor/atmos/nucleium_tank, +/obj/machinery/portable_atmospherics/canister/nucleium{ + filled = 0 + }, /turf/open/floor/engine/vacuum, /area/engine/atmos) "TP" = ( @@ -40506,7 +40525,7 @@ NS Ly IV hP -Hg +ru Hg ge ge @@ -41020,7 +41039,7 @@ iB yL xe hP -Hg +GQ Hg ge oe diff --git a/nsv13.dme b/nsv13.dme index af6c1d39ea5..3a98b52c0a9 100644 --- a/nsv13.dme +++ b/nsv13.dme @@ -3660,6 +3660,7 @@ #include "interface\interface.dm" #include "interface\stylesheet.dm" #include "interface\skin.dmf" +#include "nsv13\code\__DEFINES\atmospherics.dm" #include "nsv13\code\__DEFINES\components.dm" #include "nsv13\code\__DEFINES\fleets.dm" #include "nsv13\code\__DEFINES\ftl.dm" @@ -3788,6 +3789,7 @@ #include "nsv13\code\game\machinery\plasma_loader.dm" #include "nsv13\code\game\machinery\refillable_chem_dispenser.dm" #include "nsv13\code\game\machinery\computer\_ship.dm" +#include "nsv13\code\game\machinery\computer\atmos_control.dm" #include "nsv13\code\game\machinery\computer\boarding_pin.dm" #include "nsv13\code\game\machinery\computer\helm.dm" #include "nsv13\code\game\machinery\computer\munitions.dm" @@ -3840,8 +3842,10 @@ #include "nsv13\code\modules\antagonists\boarders\boarders.dm" #include "nsv13\code\modules\antagonists\boarders\pirate_boarders.dm" #include "nsv13\code\modules\atmospherics\gasmixtures\reactions.dm" +#include "nsv13\code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm" #include "nsv13\code\modules\atmospherics\machinery\components\binary_devices\constrictor.dm" #include "nsv13\code\modules\atmospherics\machinery\components\unary_devices\tank.dm" +#include "nsv13\code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm" #include "nsv13\code\modules\cargo\mission_rewards.dm" #include "nsv13\code\modules\cargo\objective_cargo.dm" #include "nsv13\code\modules\cargo\packs.dm" diff --git a/nsv13/code/__DEFINES/atmospherics.dm b/nsv13/code/__DEFINES/atmospherics.dm new file mode 100644 index 00000000000..5de0fedc9f0 --- /dev/null +++ b/nsv13/code/__DEFINES/atmospherics.dm @@ -0,0 +1,3 @@ +#define ATMOS_GAS_MONITOR_INPUT_NUCLEIUM "nucleium_in" +#define ATMOS_GAS_MONITOR_OUTPUT_NUCLEIUM "nucleium_out" +#define ATMOS_GAS_MONITOR_SENSOR_NUCLEIUM "nucleium_sensor" diff --git a/nsv13/code/game/machinery/computer/atmos_control.dm b/nsv13/code/game/machinery/computer/atmos_control.dm new file mode 100644 index 00000000000..223ec4566f1 --- /dev/null +++ b/nsv13/code/game/machinery/computer/atmos_control.dm @@ -0,0 +1,11 @@ +/obj/machinery/computer/atmos_control/tank/nucleium_tank //NSV added nucleium tank console + name = "Nucleium Supply Monitor" + input_tag = ATMOS_GAS_MONITOR_INPUT_NUCLEIUM + output_tag = ATMOS_GAS_MONITOR_OUTPUT_NUCLEIUM + sensors = list(ATMOS_GAS_MONITOR_SENSOR_NUCLEIUM = "Nucleium Tank") + circuit = /obj/item/circuitboard/computer/atmos_control/tank/nucleium_tank + +/obj/machinery/air_sensor/atmos/nucleium_tank //nucleium stuff + name = "nucleium tank gas sensor" + id_tag = ATMOS_GAS_MONITOR_SENSOR_NUCLEIUM + diff --git a/nsv13/code/game/objects/items/nsv_circuitboards.dm b/nsv13/code/game/objects/items/nsv_circuitboards.dm index 4465dee6c6d..d89894a974f 100644 --- a/nsv13/code/game/objects/items/nsv_circuitboards.dm +++ b/nsv13/code/game/objects/items/nsv_circuitboards.dm @@ -439,6 +439,12 @@ /obj/item/stack/sheet/glass = 1) needs_anchored = FALSE +//Atmospheric consoles +/obj/item/circuitboard/computer/atmos_control/tank/nucleium_tank + name = "nucleium supply control (Computer Board)" + build_path = /obj/machinery/computer/atmos_control/tank/nucleium_tank + +//Bot navbeacon /obj/item/circuitboard/machine/navbeacon name = "Bot Navigational Beacon" icon_state = "science" diff --git a/nsv13/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm new file mode 100644 index 00000000000..5a372955b8a --- /dev/null +++ b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -0,0 +1,3 @@ +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nucleium_input + name = "nucleium tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_NUCLEIUM diff --git a/nsv13/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm new file mode 100644 index 00000000000..2c9f578581e --- /dev/null +++ b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -0,0 +1,3 @@ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nucleium_output + name = "nucleium tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_NUCLEIUM From fe7fccb644626aa0ec40d35e39efcd7b01a08edf Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:58:01 -0500 Subject: [PATCH 06/23] Automatic changelog generation for PR #2513 [ci skip] --- html/changelogs/AutoChangeLog-pr-2513.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2513.yml diff --git a/html/changelogs/AutoChangeLog-pr-2513.yml b/html/changelogs/AutoChangeLog-pr-2513.yml new file mode 100644 index 00000000000..0cdbe041400 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2513.yml @@ -0,0 +1,8 @@ +author: bruhlookatthisdood +delete-after: true +changes: + - bugfix: Fixes snake atmospherics having wrong injector and vent types in fuel + mix chamber + - bugfix: Fixes snake atmospherics having wrong vent type in air chamber + - bugfix: Fixes snake atmospherics's nucleium chamber missing sensor, canister, + vent, and injector From 3dbbfe94fcca0432df3ffb05ee7005410f51fd63 Mon Sep 17 00:00:00 2001 From: Brillcrafter <110330962+Brillcrafter@users.noreply.github.com> Date: Thu, 21 Sep 2023 22:58:24 +0100 Subject: [PATCH 07/23] Upped the firerate on the mech LBX AC 10 "Scattershot" (#2496) --- code/game/mecha/equipment/weapons/weapons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index dbe623a03de..c800adb9edf 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -293,7 +293,7 @@ name = "\improper LBX AC 10 \"Scattershot\"" desc = "A weapon for combat exosuits. Shoots a spread of pellets." icon_state = "mecha_scatter" - equip_cooldown = 20 + equip_cooldown = 15 //NSV13 - decreased cool down to 15 from 20 projectile = /obj/item/projectile/bullet/scattershot projectiles = 40 projectile_energy_cost = 25 From 890eb4690c60c02e177f40b9fe700af4c797ebbc Mon Sep 17 00:00:00 2001 From: Ikalpo Date: Thu, 21 Sep 2023 14:58:37 -0700 Subject: [PATCH 08/23] VLS unloading fix (#2521) --- .../munitions/ship_weapons/ballistic_weapons/revision2/vls.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm index 8a6c19c5974..3cf4a5d9905 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm @@ -58,6 +58,8 @@ return FALSE if(loading) return FALSE + if(oldloc == src)// stops torps from getting sent back in instantly + return FALSE if(state >= STATE_LOADED) return FALSE load(torp) @@ -133,9 +135,7 @@ hatch.toggle(HT_CLOSED) /obj/machinery/ship_weapon/vls/unload() - loading = TRUE // This prevents torps from immediately falling back into the VLS tube . = ..() - loading = FALSE if(!hatch) return hatch.toggle(HT_CLOSED) From 6d3c8f17cb44061533e354f9cac362850e3c104d Mon Sep 17 00:00:00 2001 From: someone543 <95106800+someone543@users.noreply.github.com> Date: Fri, 22 Sep 2023 05:58:48 +0800 Subject: [PATCH 09/23] Hammerhead missing items (#2522) --- _maps/map_files/Hammerhead/Hammerhead.dmm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/_maps/map_files/Hammerhead/Hammerhead.dmm b/_maps/map_files/Hammerhead/Hammerhead.dmm index 770cbdcdb3b..a3dbae2f4e2 100644 --- a/_maps/map_files/Hammerhead/Hammerhead.dmm +++ b/_maps/map_files/Hammerhead/Hammerhead.dmm @@ -16758,6 +16758,8 @@ "bbI" = ( /obj/machinery/computer/lore_terminal, /obj/structure/munitions_trolley, +/obj/item/ammo_box/magazine/nsv/heavy_cannon, +/obj/item/ammo_box/magazine/nsv/heavy_cannon, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "bbJ" = ( @@ -21870,8 +21872,8 @@ pixel_y = -8 }, /obj/structure/table/glass, -/obj/item/storage/toolbox/mechanical, /obj/item/radio/intercom/directional/north, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/plasteel/white, /area/science/lab) "cGV" = ( @@ -27424,6 +27426,12 @@ "gqM" = ( /obj/machinery/computer/ship/viewscreen, /obj/structure/munitions_trolley, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "gre" = ( @@ -30064,6 +30072,7 @@ /obj/item/clothing/head/welding{ pixel_x = 7 }, +/obj/item/stack/sheet/plasteel/twenty, /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "ibY" = ( @@ -35687,7 +35696,7 @@ "lLE" = ( /obj/effect/turf_decal/tile/purple, /obj/structure/table, -/obj/item/stack/sheet/plasteel/twenty, +/obj/machinery/ecto_sniffer, /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "lMH" = ( From 30b5b1737b2a75a1a2e9e87a20ac0e86cc3d7b5a Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:59:29 -0500 Subject: [PATCH 10/23] Automatic changelog generation for PR #2521 [ci skip] --- html/changelogs/AutoChangeLog-pr-2521.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2521.yml diff --git a/html/changelogs/AutoChangeLog-pr-2521.yml b/html/changelogs/AutoChangeLog-pr-2521.yml new file mode 100644 index 00000000000..e7f6da64e03 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2521.yml @@ -0,0 +1,4 @@ +author: Ikalpo +delete-after: true +changes: + - bugfix: fixed VLS eating torps that get unloaded From c9c09e31d6213b1823185aae48cfd53155be0f2e Mon Sep 17 00:00:00 2001 From: DeltaFire <46569814+DeltaFire15@users.noreply.github.com> Date: Fri, 22 Sep 2023 00:01:08 +0200 Subject: [PATCH 11/23] Adds a overmap z failsafe (#2525) --- nsv13/code/__DEFINES/overmap.dm | 3 +++ nsv13/code/modules/overmap/FTL/ftl_jump.dm | 6 ++++++ nsv13/code/modules/overmap/ai-skynet.dm | 2 ++ nsv13/code/modules/overmap/overmap.dm | 1 + 4 files changed, 12 insertions(+) diff --git a/nsv13/code/__DEFINES/overmap.dm b/nsv13/code/__DEFINES/overmap.dm index ed4354121b9..beb76f66c13 100644 --- a/nsv13/code/__DEFINES/overmap.dm +++ b/nsv13/code/__DEFINES/overmap.dm @@ -102,6 +102,9 @@ GLOBAL_LIST_INIT(overmap_impact_sounds, list('nsv13/sound/effects/ship/freespace #define INTERIOR_DELETING 3 #define INTERIOR_DELETED 4 +//Overmap flags +#define OVERMAP_FLAG_ZLEVEL_CARRIER (1<<0) //! This overmap is meant to carry a z with it, prompting restoration in certain cases. + //Ship mass #define MASS_TINY 1 //1 Player - Fighters #define MASS_SMALL 2 //2-5 Players - FoB/Mining Ship diff --git a/nsv13/code/modules/overmap/FTL/ftl_jump.dm b/nsv13/code/modules/overmap/FTL/ftl_jump.dm index e6b585cf61c..f63c95723a9 100644 --- a/nsv13/code/modules/overmap/FTL/ftl_jump.dm +++ b/nsv13/code/modules/overmap/FTL/ftl_jump.dm @@ -1,11 +1,17 @@ /datum/star_system/proc/add_ship(obj/structure/overmap/OM, turf/target_turf) if(!system_contents.Find(OM)) system_contents += OM //Lets be safe while I cast some black magic. + var/did_restore_system = FALSE if(!occupying_z && OM.z) //Does this system have a physical existence? if not, we'll set this now so that any inbound ships jump to the same Z-level that we're on. if(!SSmapping.level_trait(OM.z, ZTRAIT_OVERMAP)) occupying_z = OM.get_reserved_z() else occupying_z = OM.z + did_restore_system = TRUE + else if(!occupying_z && ((OM.overmap_flags & OVERMAP_FLAG_ZLEVEL_CARRIER) || length(OM.mobs_in_ship))) //If someone is inside, or we always want it loaded, load it. + occupying_z = OM.get_reserved_z() + did_restore_system = TRUE + if(did_restore_system) if(fleets.len) for(var/datum/fleet/F in fleets) if(!F.current_system) diff --git a/nsv13/code/modules/overmap/ai-skynet.dm b/nsv13/code/modules/overmap/ai-skynet.dm index bb1164370fa..eab22f31145 100644 --- a/nsv13/code/modules/overmap/ai-skynet.dm +++ b/nsv13/code/modules/overmap/ai-skynet.dm @@ -1610,6 +1610,8 @@ Seek a ship thich we'll station ourselves around var/ai_can_launch_fighters = FALSE //AI variable. Allows your ai ships to spawn fighter craft var/list/ai_fighter_type = list() var/ai_flags = AI_FLAG_DESTROYER + ///Overmap bitflags + var/overmap_flags = NONE var/list/holding_cargo = list() // list of objective datums. This station has cargo to deliver to the players as part of a courier objective var/list/expecting_cargo = list() // list of objective datums. This station is expecting cargo delivered to them by the players as a part of a courier objective diff --git a/nsv13/code/modules/overmap/overmap.dm b/nsv13/code/modules/overmap/overmap.dm index 00f5b0650d7..9216e047d2a 100644 --- a/nsv13/code/modules/overmap/overmap.dm +++ b/nsv13/code/modules/overmap/overmap.dm @@ -232,6 +232,7 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. var/turf/exit = get_turf(locate(round(world.maxx * 0.5, 1), round(world.maxy * 0.5, 1), world.maxz)) //Plop them bang in the center of the system. var/obj/structure/overmap/OM = new _path(exit) //Ship'll pick up the info it needs, so just domp eet at the exit turf. OM.reserved_z = world.maxz + OM.overmap_flags |= OVERMAP_FLAG_ZLEVEL_CARRIER OM.current_system = SSstar_system.find_system(OM) if(OM.role == MAIN_OVERMAP) //If we're the main overmap, we'll cheat a lil' and apply our status to all of the Zs under "station" for(var/z in SSmapping.levels_by_trait(ZTRAIT_STATION)) From 1a41156f5fa0447975caf45b14da3f73f49eaa49 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 17:01:53 -0500 Subject: [PATCH 12/23] Automatic changelog generation for PR #2525 [ci skip] --- html/changelogs/AutoChangeLog-pr-2525.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2525.yml diff --git a/html/changelogs/AutoChangeLog-pr-2525.yml b/html/changelogs/AutoChangeLog-pr-2525.yml new file mode 100644 index 00000000000..d147b2bcedb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2525.yml @@ -0,0 +1,5 @@ +author: DeltaFire15 +delete-after: true +changes: + - bugfix: Overmap objects with players should be a bit less likely to get stuck + in nullspace. From 6ac2546bf2481f946caf3a2f7431bbb2d1db033f Mon Sep 17 00:00:00 2001 From: someone543 <95106800+someone543@users.noreply.github.com> Date: Fri, 22 Sep 2023 06:02:10 +0800 Subject: [PATCH 13/23] Gives Tycoon a FLARE (#2528) --- _maps/map_files/Tycoon/Tycoon2.dmm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/_maps/map_files/Tycoon/Tycoon2.dmm b/_maps/map_files/Tycoon/Tycoon2.dmm index 4d99ee10e2a..dcffdb84ab8 100644 --- a/_maps/map_files/Tycoon/Tycoon2.dmm +++ b/_maps/map_files/Tycoon/Tycoon2.dmm @@ -42294,6 +42294,13 @@ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) +"fQR" = ( +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/conquest_beacon/nanotrasen, +/turf/open/floor/monotile/dark, +/area/bridge{ + name = "CIC" + }) "fSF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -88543,7 +88550,7 @@ bBU wMJ nDn bmE -bmE +fQR bmE xvg bTi From d36dc75d9b327c6a384be6baf7e18dc72faf1c93 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 17:02:57 -0500 Subject: [PATCH 14/23] Automatic changelog generation for PR #2528 [ci skip] --- html/changelogs/AutoChangeLog-pr-2528.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2528.yml diff --git a/html/changelogs/AutoChangeLog-pr-2528.yml b/html/changelogs/AutoChangeLog-pr-2528.yml new file mode 100644 index 00000000000..5fcda5d2ea9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2528.yml @@ -0,0 +1,4 @@ +author: someone543 +delete-after: true +changes: + - rscadd: FLARE added to Tycoon From 65e1c384c12fe052e8e943c5d5ea3469cee3762b Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 22:04:04 +0000 Subject: [PATCH 15/23] Automatic changelog compile [ci skip] --- html/changelog.html | 25 +++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 17 +++++++++++++++ html/changelogs/AutoChangeLog-pr-2454.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2513.yml | 8 -------- html/changelogs/AutoChangeLog-pr-2521.yml | 4 ---- html/changelogs/AutoChangeLog-pr-2525.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2528.yml | 4 ---- 7 files changed, 42 insertions(+), 26 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2454.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2513.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2521.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2525.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2528.yml diff --git a/html/changelog.html b/html/changelog.html index c2778e74fe0..aaebae12b66 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,31 @@ -->
    +

    21 September 2023

    +

    BlueHNT updated:

    +
      +
    • Added new Ju Jitsu move
    • +
    • Tweaked Ju Jitsu
    • +
    +

    DeltaFire15 updated:

    +
      +
    • Overmap objects with players should be a bit less likely to get stuck in nullspace.
    • +
    +

    Ikalpo updated:

    +
      +
    • fixed VLS eating torps that get unloaded
    • +
    +

    bruhlookatthisdood updated:

    +
      +
    • Fixes snake atmospherics having wrong injector and vent types in fuel mix chamber
    • +
    • Fixes snake atmospherics having wrong vent type in air chamber
    • +
    • Fixes snake atmospherics's nucleium chamber missing sensor, canister, vent, and injector
    • +
    +

    someone543 updated:

    +
      +
    • FLARE added to Tycoon
    • +
    +

    01 September 2023

    Bokkiewokkie updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 1416172bc36..05487deb0c6 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1698,3 +1698,20 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. plutonium sludge. someone543: - tweak: Ecto Sniffer has a cooldown for radio messages, and can now send visible_messages +2023-09-21: + BlueHNT: + - rscadd: Added new Ju Jitsu move + - tweak: Tweaked Ju Jitsu + DeltaFire15: + - bugfix: Overmap objects with players should be a bit less likely to get stuck + in nullspace. + Ikalpo: + - bugfix: fixed VLS eating torps that get unloaded + bruhlookatthisdood: + - bugfix: Fixes snake atmospherics having wrong injector and vent types in fuel + mix chamber + - bugfix: Fixes snake atmospherics having wrong vent type in air chamber + - bugfix: Fixes snake atmospherics's nucleium chamber missing sensor, canister, + vent, and injector + someone543: + - rscadd: FLARE added to Tycoon diff --git a/html/changelogs/AutoChangeLog-pr-2454.yml b/html/changelogs/AutoChangeLog-pr-2454.yml deleted file mode 100644 index e08de77c11f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2454.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: BlueHNT -delete-after: true -changes: - - rscadd: Added new Ju Jitsu move - - tweak: Tweaked Ju Jitsu diff --git a/html/changelogs/AutoChangeLog-pr-2513.yml b/html/changelogs/AutoChangeLog-pr-2513.yml deleted file mode 100644 index 0cdbe041400..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2513.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: bruhlookatthisdood -delete-after: true -changes: - - bugfix: Fixes snake atmospherics having wrong injector and vent types in fuel - mix chamber - - bugfix: Fixes snake atmospherics having wrong vent type in air chamber - - bugfix: Fixes snake atmospherics's nucleium chamber missing sensor, canister, - vent, and injector diff --git a/html/changelogs/AutoChangeLog-pr-2521.yml b/html/changelogs/AutoChangeLog-pr-2521.yml deleted file mode 100644 index e7f6da64e03..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2521.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Ikalpo -delete-after: true -changes: - - bugfix: fixed VLS eating torps that get unloaded diff --git a/html/changelogs/AutoChangeLog-pr-2525.yml b/html/changelogs/AutoChangeLog-pr-2525.yml deleted file mode 100644 index d147b2bcedb..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2525.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: DeltaFire15 -delete-after: true -changes: - - bugfix: Overmap objects with players should be a bit less likely to get stuck - in nullspace. diff --git a/html/changelogs/AutoChangeLog-pr-2528.yml b/html/changelogs/AutoChangeLog-pr-2528.yml deleted file mode 100644 index 5fcda5d2ea9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2528.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: someone543 -delete-after: true -changes: - - rscadd: FLARE added to Tycoon From f9535048579b3c84bfe05447c6ae08bd90977328 Mon Sep 17 00:00:00 2001 From: someone543 <95106800+someone543@users.noreply.github.com> Date: Fri, 22 Sep 2023 06:04:19 +0800 Subject: [PATCH 16/23] Gladius locker and hanger lift fixes (#2530) --- _maps/map_files/Gladius/Gladius1.dmm | 11 ++++++----- _maps/map_files/Gladius/Gladius2.dmm | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/_maps/map_files/Gladius/Gladius1.dmm b/_maps/map_files/Gladius/Gladius1.dmm index 90069c29bfc..560ae1f443e 100644 --- a/_maps/map_files/Gladius/Gladius1.dmm +++ b/_maps/map_files/Gladius/Gladius1.dmm @@ -3700,6 +3700,10 @@ }, /turf/open/floor/monotile/dark, /area/gateway) +"bRw" = ( +/obj/machinery/lazylift_button, +/turf/closed/wall/r_wall/ship, +/area/shuttle/turbolift/tertiary) "bRS" = ( /obj/effect/turf_decal/tile/ship/half/blue{ dir = 1 @@ -32226,10 +32230,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/closet/secure_closet/brig{ - id = "brig3"; - name = "Cell 3 Locker" - }, +/obj/structure/closet/secure_closet/genpop, /turf/open/floor/monotile/steel, /area/security/brig) "oZR" = ( @@ -72863,7 +72864,7 @@ wsg eqI gVj gVj -eqI +bRw eqI pJj pJj diff --git a/_maps/map_files/Gladius/Gladius2.dmm b/_maps/map_files/Gladius/Gladius2.dmm index f73194c193d..05dc2448477 100644 --- a/_maps/map_files/Gladius/Gladius2.dmm +++ b/_maps/map_files/Gladius/Gladius2.dmm @@ -10592,6 +10592,9 @@ /area/crew_quarters/bar) "glm" = ( /obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/maintenance/nsv/deck2/starboard/aft) "glx" = ( @@ -11740,6 +11743,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible/layer2, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) +"gVh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/turbolift/tertiary) "gVj" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 @@ -34384,6 +34394,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/dark, /area/nsv/engine/corridor) +"tAt" = ( +/obj/machinery/lazylift_button, +/turf/closed/wall/ship, +/area/shuttle/turbolift/tertiary) "tAz" = ( /obj/machinery/light{ dir = 4 @@ -62674,7 +62688,7 @@ lEY lEY lEY hnm -cEl +gVh qjq xmk gnw @@ -63448,7 +63462,7 @@ khJ khJ jBH dnn -khJ +tAt khJ dJe dJe From a50f8de097b8de37773c8aec491164de5f1c6fcc Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 17:05:02 -0500 Subject: [PATCH 17/23] Automatic changelog generation for PR #2530 [ci skip] --- html/changelogs/AutoChangeLog-pr-2530.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2530.yml diff --git a/html/changelogs/AutoChangeLog-pr-2530.yml b/html/changelogs/AutoChangeLog-pr-2530.yml new file mode 100644 index 00000000000..c995cca4060 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2530.yml @@ -0,0 +1,5 @@ +author: someone543 +delete-after: true +changes: + - rscadd: Added lift button to Gladius mining hanger + - bugfix: fixed Gladius cell lockers not being genpop lockers From ad5cabd8563c8f3feff459d6640cc039f389d99f Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 21 Sep 2023 23:03:58 +0000 Subject: [PATCH 18/23] Automatic changelog compile [ci skip] --- html/changelog.html | 2 ++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-2530.yml | 5 ----- 3 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2530.yml diff --git a/html/changelog.html b/html/changelog.html index aaebae12b66..280a7b9b733 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -79,6 +79,8 @@

      bruhlookatthisdood updated:

      someone543 updated:

      • FLARE added to Tycoon
      • +
      • Added lift button to Gladius mining hanger
      • +
      • fixed Gladius cell lockers not being genpop lockers

      01 September 2023

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 05487deb0c6..d4c06f2d295 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1715,3 +1715,5 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. vent, and injector someone543: - rscadd: FLARE added to Tycoon + - rscadd: Added lift button to Gladius mining hanger + - bugfix: fixed Gladius cell lockers not being genpop lockers diff --git a/html/changelogs/AutoChangeLog-pr-2530.yml b/html/changelogs/AutoChangeLog-pr-2530.yml deleted file mode 100644 index c995cca4060..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2530.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: someone543 -delete-after: true -changes: - - rscadd: Added lift button to Gladius mining hanger - - bugfix: fixed Gladius cell lockers not being genpop lockers From e486a252723a9b71546fe01836cae00d199cecdd Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Fri, 22 Sep 2023 00:12:55 +0000 Subject: [PATCH 19/23] Automatic changelog compile [ci skip] --- html/changelog.html | 6 ------ 1 file changed, 6 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 280a7b9b733..c3b09aa3cf7 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -271,12 +271,6 @@

      covertcorvid updated:

    • Removed arrivals shuttles
    • Late joiners will now spawn near the cryostasis pods
    - -

    21 July 2023

    -

    BlueHNT updated:

    -
      -
    • Added wt550m9 rubber mag sprite
    • -
    GoonStation 13 Development Team From 12379a3c507efd9724c3cd6b44cc9fe253b4c05b Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Fri, 29 Sep 2023 00:12:53 +0000 Subject: [PATCH 20/23] Automatic changelog compile [ci skip] --- html/changelog.html | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index c3b09aa3cf7..1eb9ff00a18 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -233,44 +233,6 @@

    someone543 updated:

    • fixed prisoner console not giving brief
    - -

    28 July 2023

    -

    BlueHNT updated:

    -
      -
    • fixed a typo
    • -
    -

    Bobbanz1, KasparoVy, Fikou, Seris02, GoldenAlpharex, Serijas for the Cyborg sprites, Reco201 updated:

    -
      -
    • Added a new cyborg module: Cargo Cyborgs! Paperwork experts and aces at delivery, they'll truly complement the Silicon gameplay by finally allowing you to scratch that forms-filling itch you had for so long!
    • -
    • Fixed cyborgs re-generating a bunch of icons every time they'd pick a model, with more optimizations to that to come.
    • -
    • Cargo Borgs now come equip with a export scanner.
    • -
    • Added a new cyborg upgrade to Engineering borgs which allows them to perform some munitions work!
    • -
    • refactored the borg icon stuff to allow for easier implementation of other skins for borg modules
    • -
    • Cargoborgs upgraded clamp can now carry two wrapped crates instead of one.
    • -
    -

    Bokkiewokkie updated:

    -
      -
    • fixed holomaps breaking when deleted
    • -
    -

    Nabski updated:

    -
      -
    • Renault has a dopey walk animation now, god bless.
    • -
    -

    SerynEngi updated:

    -
      -
    • Increased bullet armor values of all standard armor and armored hardsuits.
    • -
    • Decreased laser armor values of all standard armor and armored hardsuits.
    • -
    • Added request consoles to various locations within Medical, Munitions, and Engineering on the Tycoon
    • -
    • Corrected atmos and power connection near the Stormdrive on the Tycoon
    • -
    • Corrected department budget draw for request consoles on the Tycoon
    • -
    -

    covertcorvid updated:

    -
      -
    • Squad manager PDA program is once again restricted to heads
    • -
    • Add limit on number of VLS shots fired at once to AMS control console
    • -
    • Removed arrivals shuttles
    • -
    • Late joiners will now spawn near the cryostasis pods
    • -
    GoonStation 13 Development Team From 51d72fdbe43586a52e07a9c6a8418e14ff991f9f Mon Sep 17 00:00:00 2001 From: Bobbanz1 <59128051+Bobbanz1@users.noreply.github.com> Date: Sat, 30 Sep 2023 00:22:36 +0200 Subject: [PATCH 21/23] [Upstream] Patches up the jankiness of LOOC (#2541) --- code/__DEFINES/bans.dm | 1 + code/modules/client/verbs/looc.dm | 206 ++++++++++++++---------------- code/modules/client/verbs/ooc.dm | 2 +- nsv13.dme | 1 + 4 files changed, 96 insertions(+), 114 deletions(-) create mode 100644 code/__DEFINES/bans.dm diff --git a/code/__DEFINES/bans.dm b/code/__DEFINES/bans.dm new file mode 100644 index 00000000000..2b958e2ba1a --- /dev/null +++ b/code/__DEFINES/bans.dm @@ -0,0 +1 @@ +#define BAN_OOC "OOC" diff --git a/code/modules/client/verbs/looc.dm b/code/modules/client/verbs/looc.dm index 872414c25d4..77e30e7a819 100644 --- a/code/modules/client/verbs/looc.dm +++ b/code/modules/client/verbs/looc.dm @@ -3,128 +3,108 @@ //GLOBAL_VAR_INIT(looc_allowed, 1) //commenting this out might break something but w/e, replaced by one in global config by nsv13 /client/verb/looc(msg as text) - set name = "LOOC" - set desc = "Local OOC, seen only by those in view." - set category = "OOC" - - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, " Speech is currently admin-disabled.") - return - - if(!mob) return - if(!mob.ckey) return - - msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) - var/raw_msg = msg - - if(!msg) - return - - if(!(prefs.chat_toggles & CHAT_LOOC)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC - to_chat(src, "You have LOOC muted.") - return - - if(is_banned_from(mob.ckey, "OOC")) - to_chat(src, "You have been banned from OOC and LOOC.") - return - - if(!holder) - if(!GLOB.looc_allowed) //nsv13 - ooc_allowed -> looc_allowed - to_chat(src, "LOOC is globally muted.") - return - if(!GLOB.dooc_allowed && (mob.stat == DEAD)) - to_chat(usr, "LOOC for dead mobs has been turned off.") - return - if(prefs.muted & MUTE_LOOC) //nsv13 - MUTE_OOC -> MUTE_LOOC - to_chat(src, "You cannot use LOOC (muted).") - return - if(handle_spam_prevention(msg,MUTE_LOOC)) //nsv13 - MUTE_OOC -> MUTE_LOOC - return - if(findtext(msg, "byond://")) - to_chat(src, "Advertising other servers is not allowed.") - log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") - return - if(mob.stat) - to_chat(src, "You cannot salt in LOOC while unconscious or dead.") - return - if(istype(mob, /mob/dead)) - to_chat(src, "You cannot use LOOC while ghosting.") - return - - if(OOC_FILTER_CHECK(raw_msg)) - to_chat(src, "That message contained a word prohibited in OOC chat! Consider reviewing the server rules.\n\"[raw_msg]\"") - return - - msg = emoji_parse(msg) - - mob.log_talk(raw_msg, LOG_OOC, tag="LOOC") - - var/list/heard = hearers(7, get_top_level_mob(src.mob)) - + set name = "LOOC" + set desc = "Local OOC, seen only by those in view." + set category = "OOC" + + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, " Speech is currently admin-disabled.") + return + + if(!mob?.ckey) + return + + msg = trim(sanitize(msg), MAX_MESSAGE_LEN) + if(!length(msg)) + return + + var/raw_msg = msg + + if(!(prefs.chat_toggles & CHAT_LOOC)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC + to_chat(src, "You have LOOC muted.") + return + + if(is_banned_from(mob.ckey, BAN_OOC)) + to_chat(src, "You have been banned from OOC and LOOC.") + return + + if(!holder) + if(!GLOB.looc_allowed) //nsv13 - ooc_allowed -> looc_allowed + to_chat(src, "LOOC is globally muted.") + return + if(!GLOB.dooc_allowed && (mob.stat == DEAD)) + to_chat(usr, "LOOC for dead mobs has been turned off.") + return + if(prefs.muted & MUTE_LOOC) //nsv13 - MUTE_OOC -> MUTE_LOOC + to_chat(src, "You cannot use LOOC (muted).") + return + if(handle_spam_prevention(msg, MUTE_LOOC)) //nsv13 - MUTE_OOC -> MUTE_LOOC + return + if(findtext(msg, "byond://")) + to_chat(src, "Advertising other servers is not allowed.") + log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") + return + if(mob.stat) + to_chat(src, "You cannot salt in LOOC while unconscious or dead.") + return + if(isdead(mob)) + to_chat(src, "You cannot use LOOC while ghosting.") + return + + if(OOC_FILTER_CHECK(raw_msg)) + to_chat(src, "That message contained a word prohibited in OOC chat! Consider reviewing the server rules.\n\"[raw_msg]\"") + return + + msg = emoji_parse(msg) + + mob.log_talk(raw_msg, LOG_OOC, tag="LOOC") + + // Search everything in the view for anything that might be a mob, or contain a mob. + var/list/client/targets = list() + var/list/turf/in_view = list() //NSV13 - AI QoL - Start //so the ai can post looc text - if(istype(mob, /mob/living/silicon/ai)) - var/mob/living/silicon/ai/ai = mob - heard = hearers(7, get_top_level_mob(ai.eyeobj)) - //so the ai can see looc text - for(var/mob/living/silicon/ai/ai as anything in GLOB.ai_list) - if(ai.client && !(ai in heard) && (ai.eyeobj in heard)) - heard += ai + if(istype(mob, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/ai = mob + for(var/turf/viewed_turf in view(get_turf(ai.eyeobj))) + in_view[viewed_turf] = TRUE + else + for(var/turf/viewed_turf in view(get_turf(mob))) + in_view[viewed_turf] = TRUE //NSV13 - AI QoL - Stop - - for(var/mob/M as() in heard) - if(!M.client) - continue - var/client/C = M.client - if (C in GLOB.admins) - continue //they are handled after that - - if (isobserver(M)) - continue //Also handled later. - - if(C.prefs.chat_toggles & CHAT_LOOC) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC -// var/display_name = src.key -// if(holder) -// if(holder.fakekey) -// if(C.holder) -// display_name = "[holder.fakekey]/([src.key])" -// else -// display_name = holder.fakekey - to_chat(C,"LOOC: [src.mob.name]: [msg]") - - for(var/client/C in GLOB.admins) - if(C.prefs.chat_toggles & CHAT_LOOC) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC - var/prefix = "(R)LOOC" - if (C.mob in heard) - prefix = "LOOC" - to_chat(C,"[ADMIN_FLW(usr)][prefix]: [src.key]/[src.mob.name]: [msg]") + for(var/client/client in GLOB.clients) + if(!client.mob || !(client.prefs.chat_toggles & CHAT_LOOC) || (client in GLOB.admins)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC + continue + //NSV13 - LOOC AI Stuff - Start + if(istype(client.mob, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/ai = client.mob + if(in_view[get_turf(ai.eyeobj)]) + targets |= client + to_chat(client, "LOOC: [mob.name]: [msg]", avoid_highlighting = (client == src)) + else if(in_view[get_turf(client.mob)]) //NSV13 - LOOC AI Stuff - Stop + targets |= client + to_chat(client, "LOOC: [mob.name]: [msg]", avoid_highlighting = (client == src)) + + for(var/client/client in GLOB.admins) + if(!(client.prefs.chat_toggles & CHAT_LOOC)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC + continue + var/prefix = "[(client in targets) ? "" : "(R)"]LOOC" + to_chat(client, "[prefix]: [ADMIN_LOOKUPFLW(mob)]: [msg]", avoid_highlighting = (client == src)) /proc/toggle_looc(toggle = null) //nsv13 - adds a toggle for looc - if(toggle != null) //if we're specifically en/disabling looc - if(toggle != GLOB.looc_allowed) - GLOB.looc_allowed = toggle - else - return - else //otherwise just toggle it - GLOB.looc_allowed = !GLOB.looc_allowed + if(toggle != null) //if we're specifically en/disabling looc + if(toggle != GLOB.looc_allowed) + GLOB.looc_allowed = toggle + else + return + else //otherwise just toggle it + GLOB.looc_allowed = !GLOB.looc_allowed /proc/log_looc(text) - if (CONFIG_GET(flag/log_ooc)) - WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]LOOC: [text]") + if (CONFIG_GET(flag/log_ooc)) + WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]LOOC: [text]") ////////////////////FLAVOUR TEXT NSV13//////////////////// /mob var/flavour_text = "" //NSV13 - flavour text - Don't think this thing actually does anything - END - -/mob/proc/get_top_level_mob() - if(istype(src.loc,/mob)&&src.loc!=src) - var/mob/M=src.loc - return M.get_top_level_mob() - return src - -/proc/get_top_level_mob(var/mob/S) - if(istype(S.loc,/mob)&&S.loc!=S) - var/mob/M=S.loc - return M.get_top_level_mob() - return S diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index 955902e9e40..a956339c4a1 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -25,7 +25,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") if(prefs.muted & MUTE_OOC) to_chat(src, "You cannot use OOC (muted).") return - if(is_banned_from(ckey, "OOC")) + if(is_banned_from(ckey, BAN_OOC)) to_chat(src, "You have been banned from OOC.") return if(QDELETED(src)) diff --git a/nsv13.dme b/nsv13.dme index 3a98b52c0a9..f4565a41f55 100644 --- a/nsv13.dme +++ b/nsv13.dme @@ -38,6 +38,7 @@ #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" #include "code\__DEFINES\balloon_alert.dm" +#include "code\__DEFINES\bans.dm" #include "code\__DEFINES\bitfields.dm" #include "code\__DEFINES\bodyparts.dm" #include "code\__DEFINES\bot_defines.dm" From cf004fd76dddb0183a2309fb039f1d8f4e622b94 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Fri, 29 Sep 2023 17:23:26 -0500 Subject: [PATCH 22/23] Automatic changelog generation for PR #2541 [ci skip] --- html/changelogs/AutoChangeLog-pr-2541.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2541.yml diff --git a/html/changelogs/AutoChangeLog-pr-2541.yml b/html/changelogs/AutoChangeLog-pr-2541.yml new file mode 100644 index 00000000000..68ee6e58e35 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2541.yml @@ -0,0 +1,9 @@ +author: Absolucy +delete-after: true +changes: + - bugfix: LOOC is much less janky now. You can properly both hear LOOC as a ghost, + and both hear and talk on LOOC while inside another object (including cases + such as split personalities, recalled holoparasites, desynchronized mobs, jaunting + mobs)! + - bugfix: Fixed admins seeing LOOC message senders as themselves rather the actual + sender From 4aa7af21289c28444b381168cfbaff60c273c685 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Fri, 29 Sep 2023 23:03:58 +0000 Subject: [PATCH 23/23] Automatic changelog compile [ci skip] --- html/changelog.html | 7 +++++++ html/changelogs/.all_changelog.yml | 8 ++++++++ html/changelogs/AutoChangeLog-pr-2541.yml | 9 --------- 3 files changed, 15 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2541.yml diff --git a/html/changelog.html b/html/changelog.html index 1eb9ff00a18..6a0558ec498 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,13 @@ -->
    +

    29 September 2023

    +

    Absolucy updated:

    +
      +
    • LOOC is much less janky now. You can properly both hear LOOC as a ghost, and both hear and talk on LOOC while inside another object (including cases such as split personalities, recalled holoparasites, desynchronized mobs, jaunting mobs)!
    • +
    • Fixed admins seeing LOOC message senders as themselves rather the actual sender
    • +
    +

    21 September 2023

    BlueHNT updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d4c06f2d295..3940d998a13 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1717,3 +1717,11 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: FLARE added to Tycoon - rscadd: Added lift button to Gladius mining hanger - bugfix: fixed Gladius cell lockers not being genpop lockers +2023-09-29: + Absolucy: + - bugfix: LOOC is much less janky now. You can properly both hear LOOC as a ghost, + and both hear and talk on LOOC while inside another object (including cases + such as split personalities, recalled holoparasites, desynchronized mobs, jaunting + mobs)! + - bugfix: Fixed admins seeing LOOC message senders as themselves rather the actual + sender diff --git a/html/changelogs/AutoChangeLog-pr-2541.yml b/html/changelogs/AutoChangeLog-pr-2541.yml deleted file mode 100644 index 68ee6e58e35..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2541.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: Absolucy -delete-after: true -changes: - - bugfix: LOOC is much less janky now. You can properly both hear LOOC as a ghost, - and both hear and talk on LOOC while inside another object (including cases - such as split personalities, recalled holoparasites, desynchronized mobs, jaunting - mobs)! - - bugfix: Fixed admins seeing LOOC message senders as themselves rather the actual - sender