From cbd96ff441c161b8383c8e3f3fc732009a3bb668 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 27 Sep 2024 01:22:41 +0000 Subject: [PATCH 01/18] Update TGS DMAPI --- code/modules/tgs/core/datum.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index e6c000ff8e2c..3ca53e9bf7c6 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -11,8 +11,6 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) src.event_handler = event_handler src.version = version -// chumbis - /datum/tgs_api/proc/TerminateWorld() while(TRUE) TGS_DEBUG_LOG("About to terminate world. Tick: [world.time], sleep_offline: [world.sleep_offline]") From 7c40a6e01c4e856f1d0dfa20ce18b09c8ec8dd1f Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Sat, 5 Oct 2024 14:51:24 -0600 Subject: [PATCH 02/18] Revert "Automatic TGS DMAPI Update" From d4d222b995b619405997fbe1967df4c60cdc391e Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Mon, 4 Nov 2024 11:19:55 -0700 Subject: [PATCH 03/18] i think this fixes it!! --- .../nukeop/equipment/nuclear_authentication_disk.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm index 965eda0784f4..43f7caac09a1 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm @@ -57,6 +57,11 @@ if(last_move < world.time - 500 SECONDS && prob((world.time - 500 SECONDS - last_move)*0.0001)) var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop) && loneop.occurrences < loneop.max_occurrences) + if(loneop.weight >= 3) + loneop.checks_antag_cap = FALSE + else + loneop.checks_antag_cap = TRUE + loneop.weight += 1 if(loneop.weight % 5 == 0 && SSticker.totalPlayers > 1) if(disk_comfort_level >= 2) @@ -64,6 +69,7 @@ message_admins("[src] is unsecured in [ADMIN_VERBOSEJMP(new_turf)]. The weight of Lone Operative is now [loneop.weight].") log_game("[src] was left unsecured in [loc_name(new_turf)]. Weight of the Lone Operative event increased to [loneop.weight].") + /obj/item/disk/nuclear/examine(mob/user) . = ..() if(!fake) From e0d96d3f2feb50f885f2ba37ac2513d9d1caf4cf Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Tue, 5 Nov 2024 08:57:07 -0700 Subject: [PATCH 04/18] Changed the logic addid a check in sec storage one --- .../nukeop/equipment/nuclear_authentication_disk.dm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm index 43f7caac09a1..960ab849041f 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm @@ -40,6 +40,7 @@ var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop) && loneop.occurrences < loneop.max_occurrences && prob(loneop.weight)) loneop.weight = max(loneop.weight - 1, 0) + loneop.checks_antag_cap = (loneop.weight < 3) if(loneop.weight % 5 == 0 && SSticker.totalPlayers > 1) message_admins("[src] is secured (currently in [ADMIN_VERBOSEJMP(new_turf)]). The weight of Lone Operative is now [loneop.weight].") log_game("[src] being secured has reduced the weight of the Lone Operative event to [loneop.weight].") @@ -57,11 +58,7 @@ if(last_move < world.time - 500 SECONDS && prob((world.time - 500 SECONDS - last_move)*0.0001)) var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control if(istype(loneop) && loneop.occurrences < loneop.max_occurrences) - if(loneop.weight >= 3) - loneop.checks_antag_cap = FALSE - else - loneop.checks_antag_cap = TRUE - + loneop.checks_antag_cap = (loneop.weight < 3) loneop.weight += 1 if(loneop.weight % 5 == 0 && SSticker.totalPlayers > 1) if(disk_comfort_level >= 2) From 39c7a84ebf84051491b44e794b97367cb552d4ee Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Tue, 5 Nov 2024 12:19:36 -0700 Subject: [PATCH 05/18] bar drone --- code/modules/shuttle/special.dm | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index ae4dd19fc820..bce800d92deb 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -151,17 +151,41 @@ // Bar staff, GODMODE mobs(as long as they stay in the shuttle) that just want to make sure people have drinks // and a good time. +/obj/item/storage/backpack/duffelbag/bardrone/PopulateContents() + new /obj/item/reagent_containers/cup/glass/shaker(src) + new /obj/item/storage/box/drinkingglasses(src) + new /obj/item/reagent_containers/cup/rag(src) + new /obj/item/storage/fancy/cigarettes/cigars/havana(src) + + /mob/living/basic/drone/snowflake/bardrone name = "Bardrone" - desc = "A barkeeping drone, a robot built to tend bars." + desc = "A barkeeping drone, a robot built to tend and maintain bars." + var/obj/item/default_storage = /obj/item/storage/backpack/duffelbag/bardrone hacked = TRUE shy = FALSE laws = "1. Serve drinks.\n\ 2. Talk to patrons.\n\ - 3. Don't get messed up in their affairs." + 3. Maintain the integrity of the bar.\n\ + 4. Do NOT involve yourself in the affairs of others outside of the above laws\n\ + 5. If given permission by relevant owners, you may improve the bar you have chosen to operate at." + unique_name = FALSE // disables the (123) number suffix initial_language_holder = /datum/language_holder/universal default_storage = null + var/flavortext = \ + "\nLAW EXPLANATION FOR BAR DRONES\n"+\ + "As a bar drone your goal is to provide a fun interactive experience for other players visiting the bar*. \n"+\ + "BARDRONE GUIDELINES\n"+\ + " -Do not harm sapient creatures \n"+\ + " -Do not interact with non-concious people, including dead, passed out, or SSD. Call medical instead.\n"+\ + " -Do not get into altercations with other players, remove yourself from the situation. \n"+\ + " -Do not protect the bar from agressors. \n"+\ + " -You may decide what bar you wish to operate at as long as the users/owners of that bar also agree.\n"+\ + " -You may create your own bar with permission from a relevant head of staff. Do not monopolize station resources. \n"+\ + "These rules are at admin discretion and will be heavily enforced. If you have questions about these rules AHELP it.\n"+\ + "\n"+\ + "Prefix your message with :b to speak in Drone Chat.\n" /mob/living/basic/drone/snowflake/bardrone/Initialize(mapload) . = ..() From f0b589dded11f6fa8bd3e236ad169cb4895ba7df Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:17:28 -0700 Subject: [PATCH 06/18] Testing out links in antag info and bardrone updates --- code/modules/shuttle/special.dm | 4 ++-- tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index bce800d92deb..5c14a5d85a05 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -161,7 +161,7 @@ /mob/living/basic/drone/snowflake/bardrone name = "Bardrone" desc = "A barkeeping drone, a robot built to tend and maintain bars." - var/obj/item/default_storage = /obj/item/storage/backpack/duffelbag/bardrone + default_storage = /obj/item/storage/backpack/duffelbag/bardrone hacked = TRUE shy = FALSE laws = "1. Serve drinks.\n\ @@ -173,7 +173,7 @@ unique_name = FALSE // disables the (123) number suffix initial_language_holder = /datum/language_holder/universal default_storage = null - var/flavortext = \ + flavortext = \ "\nLAW EXPLANATION FOR BAR DRONES\n"+\ "As a bar drone your goal is to provide a fun interactive experience for other players visiting the bar*. \n"+\ "BARDRONE GUIDELINES\n"+\ diff --git a/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx b/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx index 1b4d2d6f8bbc..f4855f47cfc6 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx @@ -119,8 +119,12 @@ const HivemindSection = (props) => { you. Changelings grow in power greatly by absorbing their kind, and getting absorbed by another Changeling will leave you as a{' '} Fallen Changeling. There is no - greater humiliation. + greater humiliation.{'\n'} + Additionally changeling rules can be found under{' '} + + Antagonist Guidance. + From 9d4d960c36e08c991435c395256522db2ec36210 Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Tue, 5 Nov 2024 15:04:00 -0700 Subject: [PATCH 07/18] fghj --- code/modules/mob/living/basic/drone/_drone.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/basic/drone/_drone.dm b/code/modules/mob/living/basic/drone/_drone.dm index 061ca478bc42..f42a439f1e15 100644 --- a/code/modules/mob/living/basic/drone/_drone.dm +++ b/code/modules/mob/living/basic/drone/_drone.dm @@ -100,7 +100,8 @@ " - Interacting with non-living beings (dragging bodies, looting bodies, etc.)\n"+\ "These rules are at admin discretion and will be heavily enforced.\n"+\ "If you do not have the regular drone laws, follow your laws to the best of your ability.\n"+\ - "Prefix your message with :b to speak in Drone Chat.\n" + "Prefix your message with :b to speak in Drone Chat.\n"+\ + "Drone Rules and info can be found at our wiki HERE\n" /// blacklisted drone areas, direct var/list/drone_area_blacklist_flat = list(/area/station/engineering/atmos, /area/station/engineering/atmospherics_engine) /// blacklisted drone areas, recursive/includes descendants From 7c4c7a8bb9e5aea90a7faf415fce7686c2a85ea7 Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Thu, 7 Nov 2024 08:29:32 -0700 Subject: [PATCH 08/18] Update colors.dm --- .../modules/slimecore/crossbreeding/regenerative/colors.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm b/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm index 7c279e461d55..8a31269aa83c 100644 --- a/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm +++ b/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm @@ -33,12 +33,11 @@ diminishing_multiplier = 0 // you can't use other extracts at all during this time tick_interval = -1 +//no more powergaming /datum/status_effect/regenerative_extract/rainbow/on_apply() var/heal_flags = RAINBOW_HEAL_FLAGS - if(isoozeling(owner)) // have some mercy on oozelings - heal_flags |= HEAL_LIMBS - owner.revive(heal_flags) - return FALSE // return false so we immediately clear the effect and start the cooldown + base_healing_amt = 25 + #undef RAINBOW_HEAL_FLAGS From 10c670ef5fca55ecd8548ed7949decf5fac37af4 Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:23:17 -0700 Subject: [PATCH 09/18] ghj --- .../crossbreeding/regenerative/colors.dm | 17 +++++------------ .../crossbreeding/regenerative/effect.dm | 7 +++++-- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm b/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm index 8a31269aa83c..3eaaa62045c9 100644 --- a/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm +++ b/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm @@ -26,18 +26,11 @@ extra_traits = list(TRAIT_FEARLESS, TRAIT_HARDLY_WOUNDED) // rainbow extracts are similar to old regen extract effects, albeit it won't replace your organs, and won't heal limbs (unless you're an oozeling) -#define RAINBOW_HEAL_FLAGS ~(HEAL_ADMIN | HEAL_RESTRAINTS | HEAL_LIMBS | HEAL_REFRESH_ORGANS) - -/datum/status_effect/regenerative_extract/rainbow - alert_type = null - diminishing_multiplier = 0 // you can't use other extracts at all during this time - tick_interval = -1 - -//no more powergaming -/datum/status_effect/regenerative_extract/rainbow/on_apply() - var/heal_flags = RAINBOW_HEAL_FLAGS - base_healing_amt = 25 +/datum/status_effect/regenerative_extract/rainbow + base_healing_amt = 20 + diminishing_multiplier = 0.25 + diminish_time = 1.5 MINUTES + extra_traits = list(TRAIT_NOCRITOVERLAY, TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT) -#undef RAINBOW_HEAL_FLAGS diff --git a/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm b/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm index 763b98a02068..a09d8192f71f 100644 --- a/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm +++ b/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm @@ -14,13 +14,15 @@ /// The multiplier that the cooldown applied after the effect ends will use. var/diminishing_multiplier = 0.75 /// How long the subsequent cooldown effect will last. - var/diminish_time = 45 SECONDS + var/diminish_time = 90 SECONDS /// The maximum nutrition level this regenerative extract can heal up to. var/nutrition_heal_cap = NUTRITION_LEVEL_FED - 50 /// Base traits given to the owner. var/static/list/given_traits = list(TRAIT_ANALGESIA, TRAIT_NOCRITDAMAGE) /// Extra traits given to the owner, added to the base traits. var/list/extra_traits + //Slime healing cause pain, oof ouch + var/pain_amount = 20 /datum/status_effect/regenerative_extract/on_apply() // So this seems weird, but this allows us to have multiple things affect the regen multiplier, @@ -35,6 +37,7 @@ /datum/status_effect/regenerative_extract/on_remove() owner.remove_traits(islist(extra_traits) ? (given_traits + extra_traits) : given_traits, id) owner.apply_status_effect(/datum/status_effect/slime_regen_cooldown, diminishing_multiplier, diminish_time) + owner.sharp_pain(BODY_ZONE_CHEST, pain_amount, BRUTE, 90 SECONDS) /datum/status_effect/regenerative_extract/tick(seconds_per_tick, times_fired) var/heal_amt = base_healing_amt * seconds_per_tick * multiplier @@ -93,5 +96,5 @@ /atom/movable/screen/alert/status_effect/regen_extract name = "Slime Regeneration" - desc = "A milky slime covers your skin, soothing and regenerating your injuries!" + desc = "A milky slime covers your skin, regenerating your injuries!" icon_state = "regenerative_core" From 13ae79732cd4501f4ba3051b262b9fb61cefcd92 Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Thu, 7 Nov 2024 13:53:28 -0700 Subject: [PATCH 10/18] Changed slime heal --- .../slimecore/crossbreeding/regenerative/colors.dm | 10 +++++----- .../slimecore/crossbreeding/regenerative/effect.dm | 9 +++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm b/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm index 3eaaa62045c9..67a0fcbb9773 100644 --- a/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm +++ b/monkestation/code/modules/slimecore/crossbreeding/regenerative/colors.dm @@ -25,12 +25,12 @@ /datum/status_effect/regenerative_extract/adamantine extra_traits = list(TRAIT_FEARLESS, TRAIT_HARDLY_WOUNDED) -// rainbow extracts are similar to old regen extract effects, albeit it won't replace your organs, and won't heal limbs (unless you're an oozeling) - - +// rainbow extracts are similar to old regen extract effects, albeit it won't replace your organs, and won't heal limbs /datum/status_effect/regenerative_extract/rainbow - base_healing_amt = 20 - diminishing_multiplier = 0.25 + duration = 30 SECONDS + base_healing_amt = 15 + diminishing_multiplier = 1 diminish_time = 1.5 MINUTES extra_traits = list(TRAIT_NOCRITOVERLAY, TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT) + pain_amount = 80 //wow having my wounds closed up in seconds really fucking HURTS diff --git a/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm b/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm index a09d8192f71f..f1f4878fd76b 100644 --- a/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm +++ b/monkestation/code/modules/slimecore/crossbreeding/regenerative/effect.dm @@ -37,7 +37,7 @@ /datum/status_effect/regenerative_extract/on_remove() owner.remove_traits(islist(extra_traits) ? (given_traits + extra_traits) : given_traits, id) owner.apply_status_effect(/datum/status_effect/slime_regen_cooldown, diminishing_multiplier, diminish_time) - owner.sharp_pain(BODY_ZONE_CHEST, pain_amount, BRUTE, 90 SECONDS) + owner.cause_pain(BODY_ZONE_CHEST, pain_amount, BRUTE) /datum/status_effect/regenerative_extract/tick(seconds_per_tick, times_fired) var/heal_amt = base_healing_amt * seconds_per_tick * multiplier @@ -61,11 +61,12 @@ owner.adjustCloneLoss(-heal_amt, updating_health = FALSE) /datum/status_effect/regenerative_extract/proc/heal_misc(heal_amt) - owner.adjust_disgust(-heal_amt) + var/blood_restore = (heal_amt * 0.25) + owner.adjust_disgust(-blood_restore) if(owner.blood_volume < BLOOD_VOLUME_NORMAL) - owner.blood_volume = min(owner.blood_volume + heal_amt, BLOOD_VOLUME_NORMAL) + owner.blood_volume = min(owner.blood_volume + blood_restore, BLOOD_VOLUME_NORMAL) if((owner.nutrition < nutrition_heal_cap) && !HAS_TRAIT(owner, TRAIT_NOHUNGER)) - owner.nutrition = min(owner.nutrition + heal_amt, nutrition_heal_cap) + owner.nutrition = min(owner.nutrition + blood_restore, nutrition_heal_cap) /datum/status_effect/regenerative_extract/proc/heal_organs(heal_amt) var/static/list/ignored_traumas From fbabdad3fda9df7540e40594b51e184c9a7a945b Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Fri, 8 Nov 2024 16:38:05 -0700 Subject: [PATCH 11/18] this took way too fucking long --- .../modules/storytellers/converted_events/_base_event.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/monkestation/code/modules/storytellers/converted_events/_base_event.dm b/monkestation/code/modules/storytellers/converted_events/_base_event.dm index 4335c4386191..68fe3476112b 100644 --- a/monkestation/code/modules/storytellers/converted_events/_base_event.dm +++ b/monkestation/code/modules/storytellers/converted_events/_base_event.dm @@ -240,7 +240,10 @@ //guh var/list/cliented_list = list() for(var/mob/living/mob as anything in possible_candidates) - cliented_list += mob.client + var/client/client_picked = mob.client + if(!client_picked.picking) + cliented_list += mob.client + if(length(cliented_list)) mass_adjust_antag_rep(cliented_list, 1) From 92aaac429b9ae2f1b30314d70b87d78e54c3c2d7 Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Fri, 8 Nov 2024 16:38:25 -0700 Subject: [PATCH 12/18] fghjfjgh --- code/datums/mind/antag.dm | 3 +++ .../modules/storytellers/converted_events/_base_event.dm | 8 +++++--- .../code/modules/storytellers/gamemode_subsystem.dm | 2 ++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/datums/mind/antag.dm b/code/datums/mind/antag.dm index b864bde8bd5d..50364733a28d 100644 --- a/code/datums/mind/antag.dm +++ b/code/datums/mind/antag.dm @@ -25,6 +25,9 @@ antag_team.add_member(src) INVOKE_ASYNC(A, TYPE_PROC_REF(/datum/antagonist, on_gain)) log_game("[key_name(src)] has gained antag datum [A.name]([A.type]).") + var/client/picked_client = get_player_client(src) + picked_client.picking = FALSE + return A /datum/mind/proc/remove_antag_datum(datum_type) diff --git a/monkestation/code/modules/storytellers/converted_events/_base_event.dm b/monkestation/code/modules/storytellers/converted_events/_base_event.dm index 68fe3476112b..081609f420f4 100644 --- a/monkestation/code/modules/storytellers/converted_events/_base_event.dm +++ b/monkestation/code/modules/storytellers/converted_events/_base_event.dm @@ -6,6 +6,9 @@ ///required number of enemies in roles to exist var/required_enemies = 0 +/client + var/picking = FALSE + /datum/round_event_control/proc/return_failure_string(players_amt) var/string if(roundstart && (world.time-SSticker.round_start_time >= 2 MINUTES)) @@ -240,9 +243,7 @@ //guh var/list/cliented_list = list() for(var/mob/living/mob as anything in possible_candidates) - var/client/client_picked = mob.client - if(!client_picked.picking) - cliented_list += mob.client + cliented_list += mob.client if(length(cliented_list)) mass_adjust_antag_rep(cliented_list, 1) @@ -272,6 +273,7 @@ else var/picked_ckey = pick_n_take_weighted(weighted_candidates) var/client/picked_client = GLOB.directory[picked_ckey] + picked_client.picking = TRUE if(QDELETED(picked_client)) continue var/mob/picked_mob = picked_client.mob diff --git a/monkestation/code/modules/storytellers/gamemode_subsystem.dm b/monkestation/code/modules/storytellers/gamemode_subsystem.dm index b8a1179eb9b7..45e0fb7923fc 100644 --- a/monkestation/code/modules/storytellers/gamemode_subsystem.dm +++ b/monkestation/code/modules/storytellers/gamemode_subsystem.dm @@ -262,6 +262,8 @@ SUBSYSTEM_DEF(gamemode) var/list/candidate_candidates = list() //lol for(var/mob/player as anything in GLOB.player_list) + if(player.client.picking) + continue if(ready_newplayers && isnewplayer(player)) var/mob/dead/new_player/new_player = player if(new_player.ready == PLAYER_READY_TO_PLAY && new_player.mind && new_player.check_preferences()) From 02df019faf5c25bf69933ca15949da2420cff01d Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Sat, 9 Nov 2024 14:47:44 -0700 Subject: [PATCH 13/18] Omnitraitor picking moved to mind to be tracked --- code/datums/mind/_mind.dm | 2 ++ code/datums/mind/antag.dm | 3 +-- .../modules/storytellers/converted_events/_base_event.dm | 5 +---- monkestation/code/modules/storytellers/gamemode_subsystem.dm | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/code/datums/mind/_mind.dm b/code/datums/mind/_mind.dm index 9a78ba24b233..c45ff7b5e744 100644 --- a/code/datums/mind/_mind.dm +++ b/code/datums/mind/_mind.dm @@ -105,6 +105,8 @@ var/list/failed_special_equipment /// A list to keep track of which books a person has read (to prevent people from reading the same book again and again for positive mood events) var/list/book_titles_read + /// Variable that lets the event picker see if someones getting chosen or not + var/picking = FALSE /datum/mind/New(_key) key = _key diff --git a/code/datums/mind/antag.dm b/code/datums/mind/antag.dm index 50364733a28d..6be1e4fb714f 100644 --- a/code/datums/mind/antag.dm +++ b/code/datums/mind/antag.dm @@ -26,8 +26,7 @@ INVOKE_ASYNC(A, TYPE_PROC_REF(/datum/antagonist, on_gain)) log_game("[key_name(src)] has gained antag datum [A.name]([A.type]).") var/client/picked_client = get_player_client(src) - picked_client.picking = FALSE - + picked_client.mob?.mind.picking = FALSE return A /datum/mind/proc/remove_antag_datum(datum_type) diff --git a/monkestation/code/modules/storytellers/converted_events/_base_event.dm b/monkestation/code/modules/storytellers/converted_events/_base_event.dm index 081609f420f4..03e75c516117 100644 --- a/monkestation/code/modules/storytellers/converted_events/_base_event.dm +++ b/monkestation/code/modules/storytellers/converted_events/_base_event.dm @@ -6,9 +6,6 @@ ///required number of enemies in roles to exist var/required_enemies = 0 -/client - var/picking = FALSE - /datum/round_event_control/proc/return_failure_string(players_amt) var/string if(roundstart && (world.time-SSticker.round_start_time >= 2 MINUTES)) @@ -273,10 +270,10 @@ else var/picked_ckey = pick_n_take_weighted(weighted_candidates) var/client/picked_client = GLOB.directory[picked_ckey] - picked_client.picking = TRUE if(QDELETED(picked_client)) continue var/mob/picked_mob = picked_client.mob + picked_mob?.mind.picking = TRUE log_storyteller("Picked antag event mob: [picked_mob], special role: [picked_mob.mind?.special_role ? picked_mob.mind.special_role : "none"]") candidates |= picked_mob diff --git a/monkestation/code/modules/storytellers/gamemode_subsystem.dm b/monkestation/code/modules/storytellers/gamemode_subsystem.dm index 45e0fb7923fc..d032c3d779a6 100644 --- a/monkestation/code/modules/storytellers/gamemode_subsystem.dm +++ b/monkestation/code/modules/storytellers/gamemode_subsystem.dm @@ -262,7 +262,7 @@ SUBSYSTEM_DEF(gamemode) var/list/candidate_candidates = list() //lol for(var/mob/player as anything in GLOB.player_list) - if(player.client.picking) + if(player.mind.picking) continue if(ready_newplayers && isnewplayer(player)) var/mob/dead/new_player/new_player = player From 52064acd5ac7bfc3228497b3849998951a24465c Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Sat, 9 Nov 2024 16:11:43 -0700 Subject: [PATCH 14/18] Nerfed stardust --- code/datums/mind/antag.dm | 2 +- monkestation/code/modules/blueshift/items/ammo.dm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/datums/mind/antag.dm b/code/datums/mind/antag.dm index 6be1e4fb714f..c252f275836d 100644 --- a/code/datums/mind/antag.dm +++ b/code/datums/mind/antag.dm @@ -26,7 +26,7 @@ INVOKE_ASYNC(A, TYPE_PROC_REF(/datum/antagonist, on_gain)) log_game("[key_name(src)] has gained antag datum [A.name]([A.type]).") var/client/picked_client = get_player_client(src) - picked_client.mob?.mind.picking = FALSE + picked_client?.mob?.mind.picking = FALSE return A /datum/mind/proc/remove_antag_datum(datum_type) diff --git a/monkestation/code/modules/blueshift/items/ammo.dm b/monkestation/code/modules/blueshift/items/ammo.dm index d06142daabe2..5d36f0595140 100644 --- a/monkestation/code/modules/blueshift/items/ammo.dm +++ b/monkestation/code/modules/blueshift/items/ammo.dm @@ -1301,7 +1301,7 @@ icon_state = "lasershell" projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot/antitide pellets = 8 // 8 * 7 for 56 stamina damage, plus whatever the embedded shells do - variance = 30 + variance = 50 harmful = FALSE fire_sound = 'sound/weapons/taser.ogg' custom_materials = AMMO_MATS_SHOTGUN_TIDE @@ -1312,14 +1312,14 @@ icon = 'monkestation/code/modules/blueshift/icons/projectiles.dmi' icon_state = "stardust" damage = 2 - stamina = 16 + stamina = 10 wound_bonus = 0 bare_wound_bonus = 0 stutter = 3 SECONDS jitter = 5 SECONDS eyeblur = 1 SECONDS sharpness = NONE - range = 8 + range = 7 embedding = list(embed_chance=70, pain_chance=25, fall_chance=15, jostle_chance=80, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.9, pain_mult=2, rip_time=10) /obj/projectile/bullet/pellet/shotgun_buckshot/antitide/on_range() From 11880f0796d06e07faa3e4fe439d52fa2078a207 Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Sat, 9 Nov 2024 17:07:58 -0700 Subject: [PATCH 15/18] soup --- monkestation/code/modules/storytellers/gamemode_subsystem.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkestation/code/modules/storytellers/gamemode_subsystem.dm b/monkestation/code/modules/storytellers/gamemode_subsystem.dm index d032c3d779a6..f01612284116 100644 --- a/monkestation/code/modules/storytellers/gamemode_subsystem.dm +++ b/monkestation/code/modules/storytellers/gamemode_subsystem.dm @@ -262,7 +262,7 @@ SUBSYSTEM_DEF(gamemode) var/list/candidate_candidates = list() //lol for(var/mob/player as anything in GLOB.player_list) - if(player.mind.picking) + if(player?.mind.picking) continue if(ready_newplayers && isnewplayer(player)) var/mob/dead/new_player/new_player = player From 4433b1563edcc75571d24583607f09d2dea89e22 Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Sat, 9 Nov 2024 19:00:37 -0700 Subject: [PATCH 16/18] Update monkestation/code/modules/storytellers/converted_events/_base_event.dm Co-authored-by: Lucy --- .../code/modules/storytellers/converted_events/_base_event.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkestation/code/modules/storytellers/converted_events/_base_event.dm b/monkestation/code/modules/storytellers/converted_events/_base_event.dm index 03e75c516117..d003254aaa8d 100644 --- a/monkestation/code/modules/storytellers/converted_events/_base_event.dm +++ b/monkestation/code/modules/storytellers/converted_events/_base_event.dm @@ -273,7 +273,7 @@ if(QDELETED(picked_client)) continue var/mob/picked_mob = picked_client.mob - picked_mob?.mind.picking = TRUE + picked_mob?.mind?.picking = TRUE log_storyteller("Picked antag event mob: [picked_mob], special role: [picked_mob.mind?.special_role ? picked_mob.mind.special_role : "none"]") candidates |= picked_mob From 9770b7e4f5146cd1c581bc31b5dcd804a87b2fbe Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Sat, 9 Nov 2024 19:00:53 -0700 Subject: [PATCH 17/18] Update monkestation/code/modules/storytellers/gamemode_subsystem.dm Co-authored-by: Lucy --- monkestation/code/modules/storytellers/gamemode_subsystem.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkestation/code/modules/storytellers/gamemode_subsystem.dm b/monkestation/code/modules/storytellers/gamemode_subsystem.dm index f01612284116..0c3a23f31d66 100644 --- a/monkestation/code/modules/storytellers/gamemode_subsystem.dm +++ b/monkestation/code/modules/storytellers/gamemode_subsystem.dm @@ -262,7 +262,7 @@ SUBSYSTEM_DEF(gamemode) var/list/candidate_candidates = list() //lol for(var/mob/player as anything in GLOB.player_list) - if(player?.mind.picking) + if(QDELETED(player) || player.mind?.picking) continue if(ready_newplayers && isnewplayer(player)) var/mob/dead/new_player/new_player = player From 625a9a3960cfdd777da209cbb3cf440206b9965d Mon Sep 17 00:00:00 2001 From: ThePooba <81843097+ThePooba@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:04:37 -0700 Subject: [PATCH 18/18] drones --- code/modules/shuttle/special.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 5c14a5d85a05..1d10a32f9959 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -150,6 +150,11 @@ // Bar staff, GODMODE mobs(as long as they stay in the shuttle) that just want to make sure people have drinks // and a good time. +/obj/item/storage/backpack/duffelbag/bardrone + name = "Bardrones Duffelbag" + desc = "A funny little bag for funny little drones" + icon_state = "duffel" + inhand_icon_state = "duffel" /obj/item/storage/backpack/duffelbag/bardrone/PopulateContents() new /obj/item/reagent_containers/cup/glass/shaker(src)