From 5a74fa4afedea7ac6dffd4bbfe4147e6b7fc813d Mon Sep 17 00:00:00 2001 From: Xander3359 <66163761+Xander3359@users.noreply.github.com> Date: Sun, 5 Nov 2023 03:42:09 -0500 Subject: [PATCH 1/8] Adds 3 bottles to NT Med. (#14314) * Add tricord bottle to NTMED * Paracetamol + Isotonic * Also Valhalla * Adds "Chemistry Equipment" to Valhalla NTMED * update name + desc --- _maps/map_files/generic/Admin_Level.dmm | 6 +++++- .../items/reagent_containers/glass/bottle.dm | 12 ++++++++++++ .../machinery/vending/vending_types.dm | 19 +++++++++++++++++-- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/generic/Admin_Level.dmm b/_maps/map_files/generic/Admin_Level.dmm index 4a0b082c715d9..b4a09cd948b4c 100644 --- a/_maps/map_files/generic/Admin_Level.dmm +++ b/_maps/map_files/generic/Admin_Level.dmm @@ -1059,6 +1059,10 @@ dir = 5 }, /area/centcom/valhalla/bridge) +"ble" = ( +/obj/machinery/vending/medical/valhalla, +/turf/open/floor/tile/dark/gray, +/area/centcom/valhalla/security/brig/interiorcavern) "blf" = ( /turf/open/floor/tile/neutral/corner{ dir = 4 @@ -22849,7 +22853,7 @@ fvw pqM duo uOI -etk +ble etk hTv oUq diff --git a/code/game/objects/items/reagent_containers/glass/bottle.dm b/code/game/objects/items/reagent_containers/glass/bottle.dm index afa7b6df28abf..c85f4415119b1 100644 --- a/code/game/objects/items/reagent_containers/glass/bottle.dm +++ b/code/game/objects/items/reagent_containers/glass/bottle.dm @@ -191,6 +191,18 @@ icon_state = "bottle-5" list_reagents = list(/datum/reagent/medicine/tricordrazine = 60) +/obj/item/reagent_containers/glass/bottle/paracetamol + name = "\improper Paracetamol bottle" + desc = "A small bottle. Contains paracetamol - a mild, simple painkiller, good for enduring heavy labor." + icon_state = "bottle-1" + list_reagents = list(/datum/reagent/medicine/paracetamol = 60) + +/obj/item/reagent_containers/glass/bottle/isotonic + name = "\improper Saline-Glucose bottle" + desc = "A small bottle. Contains saline-glucose, also known as isotonic - used to aid the body in blood restoration." + icon_state = "bottle-1" + list_reagents = list(/datum/reagent/medicine/saline_glucose = 60) + /obj/item/reagent_containers/glass/bottle/meralyne name = "\improper Meralyne bottle" desc = "A small bottle. Contains meralyne - used as a potent treatment against brute damage." diff --git a/code/game/objects/machinery/vending/vending_types.dm b/code/game/objects/machinery/vending/vending_types.dm index 39e2797a319d8..27ce2c0461c7e 100644 --- a/code/game/objects/machinery/vending/vending_types.dm +++ b/code/game/objects/machinery/vending/vending_types.dm @@ -191,8 +191,11 @@ /obj/item/reagent_containers/glass/bottle/bicaridine = 6, /obj/item/reagent_containers/glass/bottle/kelotane = 6, /obj/item/reagent_containers/glass/bottle/tramadol = 6, + /obj/item/reagent_containers/glass/bottle/tricordrazine = 6, /obj/item/reagent_containers/glass/bottle/dylovene = 6, /obj/item/reagent_containers/glass/bottle/inaprovaline = 6, + /obj/item/reagent_containers/glass/bottle/paracetamol = 6, + /obj/item/reagent_containers/glass/bottle/isotonic = 6, /obj/item/reagent_containers/glass/bottle/dexalin = 6, /obj/item/reagent_containers/glass/bottle/spaceacillin = 6, /obj/item/reagent_containers/glass/bottle/oxycodone = 6, @@ -249,8 +252,11 @@ /obj/item/reagent_containers/glass/bottle/bicaridine = -1, /obj/item/reagent_containers/glass/bottle/kelotane = -1, /obj/item/reagent_containers/glass/bottle/tramadol = -1, + /obj/item/reagent_containers/glass/bottle/tricordrazine = -1, /obj/item/reagent_containers/glass/bottle/dylovene = -1, /obj/item/reagent_containers/glass/bottle/inaprovaline = -1, + /obj/item/reagent_containers/glass/bottle/paracetamol = -1, + /obj/item/reagent_containers/glass/bottle/isotonic = -1, /obj/item/reagent_containers/glass/bottle/sleeptoxin = -1, /obj/item/reagent_containers/glass/bottle/spaceacillin = -1, /obj/item/reagent_containers/glass/bottle/dexalin = -1, @@ -290,14 +296,23 @@ /obj/item/tool/research/excavation_tool = -1, /obj/item/storage/pouch/surgery = -1, /obj/item/armor_module/storage/uniform/surgery_webbing = -1, + /obj/item/clothing/glasses/hud/health = -1, + /obj/item/roller = -1, + ), + "Chemistry Equipment" = list( /obj/item/reagent_containers/syringe = -1, /obj/item/storage/syringe_case/empty = -1, + /obj/item/reagent_containers/glass/beaker/bluespace = -1, /obj/item/reagent_containers/glass/beaker = -1, /obj/item/reagent_containers/glass/beaker/large = -1, /obj/item/reagent_containers/glass/beaker/vial = -1, /obj/item/reagent_containers/dropper = -1, - /obj/item/clothing/glasses/hud/health = -1, - /obj/item/roller = -1, + /obj/item/storage/reagent_tank = -1, + /obj/item/storage/reagent_tank/bicaridine = -1, + /obj/item/storage/reagent_tank/kelotane = -1, + /obj/item/storage/reagent_tank/tramadol = -1, + /obj/item/storage/reagent_tank/tricordrazine = -1, + /obj/item/storage/reagent_tank/bktt = -1, ), "Valhalla" = list( /obj/item/reagent_containers/glass/beaker/bluespace = -1, From f764d1ba7e71bb557ae01cd20baf5dc9fb2bd5b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 5 Nov 2023 08:42:26 +0000 Subject: [PATCH 2/8] Automatic changelog for PR #14314 [ci skip] --- html/changelogs/AutoChangeLog-pr-14314.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14314.yml diff --git a/html/changelogs/AutoChangeLog-pr-14314.yml b/html/changelogs/AutoChangeLog-pr-14314.yml new file mode 100644 index 0000000000000..d563d502b17a2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14314.yml @@ -0,0 +1,5 @@ +author: "Xander3359" +delete-after: True +changes: + - rscadd: "Tricord, Paracetamol and Isotonic to NTMed" + - rscadd: "NTMED in Valhalla with more stock" \ No newline at end of file From aa3fb0a2ab0aa0d9fc5b3fb2889c34a031c92352 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sun, 5 Nov 2023 03:11:11 -0800 Subject: [PATCH 3/8] better removal (#14372) --- code/modules/mob/living/carbon/xenomorph/hive_datum.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm index 4cf6a6a19e673..1ea06240e5d6e 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_datum.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_datum.dm @@ -1105,6 +1105,9 @@ to_chat will check for valid clients itself already so no need to double check f /// Remove a client from the larva candidate queue /datum/hive_status/proc/remove_from_larva_candidate_queue(client/waiter) + var/larva_position = SEND_SIGNAL(waiter, COMSIG_CLIENT_GET_LARVA_QUEUE_POSITION) + if (!larva_position) + return // We weren't in the queue LAZYREMOVE(candidates, waiter) UnregisterSignal(waiter, COMSIG_QDELETING) SEND_SIGNAL(waiter, COMSIG_CLIENT_SET_LARVA_QUEUE_POSITION, 0) From fc1a8a6c6dfb3cd009454f3748bbbf1dd6868d98 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 5 Nov 2023 11:11:33 +0000 Subject: [PATCH 4/8] Automatic changelog for PR #14372 [ci skip] --- html/changelogs/AutoChangeLog-pr-14372.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14372.yml diff --git a/html/changelogs/AutoChangeLog-pr-14372.yml b/html/changelogs/AutoChangeLog-pr-14372.yml new file mode 100644 index 0000000000000..edba429a99e6a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14372.yml @@ -0,0 +1,4 @@ +author: "ZeWaka" +delete-after: True +changes: + - bugfix: "You should no longer get the 'You left the Larva queue.' message when returning to your corpse." \ No newline at end of file From 78b328307b4b8440057b10b2f9df943c9a8fc0a2 Mon Sep 17 00:00:00 2001 From: Waselon <69199543+Waselon@users.noreply.github.com> Date: Sun, 5 Nov 2023 13:24:59 +0200 Subject: [PATCH 5/8] Nymph Support Minion (#14374) * nymph support minion * minimap icon --- code/__DEFINES/xeno.dm | 1 + code/modules/ai/presets/xeno_presets.dm | 5 +++ .../mob/living/carbon/xenomorph/abilities.dm | 4 +- .../castes/nymph/castedatum_nymph.dm | 39 ++++++++++++++++++ .../carbon/xenomorph/castes/nymph/nymph.dm | 14 +++++++ icons/Xeno/castes/nymph.dmi | Bin 0 -> 12196 bytes tgmc.dme | 2 + 7 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 code/modules/mob/living/carbon/xenomorph/castes/nymph/castedatum_nymph.dm create mode 100644 code/modules/mob/living/carbon/xenomorph/castes/nymph/nymph.dm create mode 100644 icons/Xeno/castes/nymph.dmi diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm index f953d70421cad..0678c2ef7fb8a 100644 --- a/code/__DEFINES/xeno.dm +++ b/code/__DEFINES/xeno.dm @@ -154,6 +154,7 @@ GLOBAL_LIST_INIT(xeno_ai_spawnable, list( /mob/living/carbon/xenomorph/beetle/ai, /mob/living/carbon/xenomorph/mantis/ai, /mob/living/carbon/xenomorph/scorpion/ai, + /mob/living/carbon/xenomorph/nymph/ai, )) ///Heals a xeno, respecting different types of damage diff --git a/code/modules/ai/presets/xeno_presets.dm b/code/modules/ai/presets/xeno_presets.dm index ba3d5b32d47ee..0659a731b2f6b 100644 --- a/code/modules/ai/presets/xeno_presets.dm +++ b/code/modules/ai/presets/xeno_presets.dm @@ -94,3 +94,8 @@ . = ..() AddComponent(/datum/component/ai_controller, /datum/ai_behavior/xeno) +/mob/living/carbon/xenomorph/nymph/ai + +/mob/living/carbon/xenomorph/nymph/ai/Initialize() + . = ..() + AddComponent(/datum/component/ai_controller, /datum/ai_behavior/xeno) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities.dm index 5ea71e123ac64..1283ecf48f58a 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities.dm @@ -147,10 +147,10 @@ /datum/action/xeno_action/activable/plant_weeds/ai_should_use(target) if(!can_use_action(override_flags = XACT_IGNORE_SELECTED_ABILITY)) - return ..() + return FALSE var/mob/living/carbon/xenomorph/owner_xeno = owner if(owner_xeno.loc_weeds_type) - return ..() + return FALSE return TRUE /datum/action/xeno_action/activable/plant_weeds/ranged diff --git a/code/modules/mob/living/carbon/xenomorph/castes/nymph/castedatum_nymph.dm b/code/modules/mob/living/carbon/xenomorph/castes/nymph/castedatum_nymph.dm new file mode 100644 index 0000000000000..fad8568cd367e --- /dev/null +++ b/code/modules/mob/living/carbon/xenomorph/castes/nymph/castedatum_nymph.dm @@ -0,0 +1,39 @@ +/datum/xeno_caste/nymph + caste_name = "Nymph" + display_name = "Nymph" + upgrade_name = "" + caste_desc = "" + wound_type = "" + + caste_type_path = /mob/living/carbon/xenomorph/nymph + + tier = XENO_TIER_MINION + upgrade = XENO_UPGRADE_BASETYPE + + // *** Melee Attacks *** // + melee_damage = 8 + + // *** Speed *** // + speed = 0 + + // *** Plasma *** // + plasma_max = 500 + plasma_gain = 20 + + // *** Health *** // + max_health = 120 + + // *** Flags *** // + caste_flags = CASTE_DO_NOT_ALERT_LOW_LIFE|CASTE_IS_A_MINION|CASTE_IS_BUILDER + can_flags = CASTE_CAN_BE_QUEEN_HEALED|CASTE_CAN_BE_GIVEN_PLASMA + + // *** Defense *** // + soft_armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 10, FIRE = 10, ACID = 10) + + minimap_icon = "xenominion" + + actions = list( + /datum/action/xeno_action/xeno_resting, + /datum/action/xeno_action/activable/secrete_resin, + /datum/action/xeno_action/activable/plant_weeds, + ) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/nymph/nymph.dm b/code/modules/mob/living/carbon/xenomorph/castes/nymph/nymph.dm new file mode 100644 index 0000000000000..8c0e96bb86300 --- /dev/null +++ b/code/modules/mob/living/carbon/xenomorph/castes/nymph/nymph.dm @@ -0,0 +1,14 @@ +/mob/living/carbon/xenomorph/nymph + caste_base_type = /mob/living/carbon/xenomorph/nymph + name = "Nymph" + desc = "An ant-looking creature." + icon = 'icons/Xeno/castes/nymph.dmi' + icon_state = "Nymph Walking" + health = 200 + maxHealth = 200 + plasma_stored = 50 + pixel_x = -16 + old_x = -16 + tier = XENO_TIER_MINION + upgrade = XENO_UPGRADE_BASETYPE + pull_speed = -2 diff --git a/icons/Xeno/castes/nymph.dmi b/icons/Xeno/castes/nymph.dmi new file mode 100644 index 0000000000000000000000000000000000000000..80a7b1ec7dc71a837f6d52dacded713abe77a128 GIT binary patch literal 12196 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 Date: Mon, 6 Nov 2023 00:25:16 +1300 Subject: [PATCH 6/8] realistic window impact (#14362) --- code/game/objects/structures/window.dm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 9b6b17d578314..d3b40eba36ca9 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -72,6 +72,23 @@ if(EXPLODE_WEAK) take_damage(rand(15, 35), BRUTE, BOMB) +/obj/structure/window/hitby(atom/movable/AM, speed = 5) + var/throw_damage = speed + var/mob/living/thrown_mob + if(isobj(AM)) + var/obj/thrown_obj = AM + throw_damage = thrown_obj.throwforce + else if(isliving(AM)) + thrown_mob = AM + throw_damage *= thrown_mob.mob_size * 8 + take_damage(throw_damage) + if(obj_integrity > 0) //we only stop if we don't break the window + AM.stop_throw() + . = TRUE + if(thrown_mob) + thrown_mob.take_overall_damage(speed * 5, BRUTE, MELEE, !., FALSE, TRUE, 0, 4) //done here for dramatic effect, and to make the damage sharp if we broke the window + + //TODO: Make full windows a separate type of window. //Once a full window, it will always be a full window, so there's no point //having the same type for both. From 510580c5597a913ed1c67f9048984a98dab761da Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 5 Nov 2023 11:25:18 +0000 Subject: [PATCH 7/8] Automatic changelog for PR #14374 [ci skip] --- html/changelogs/AutoChangeLog-pr-14374.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14374.yml diff --git a/html/changelogs/AutoChangeLog-pr-14374.yml b/html/changelogs/AutoChangeLog-pr-14374.yml new file mode 100644 index 0000000000000..a553ee84c6b51 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14374.yml @@ -0,0 +1,4 @@ +author: "Waselon" +delete-after: True +changes: + - rscadd: "New xeno support minion: Nymph" \ No newline at end of file From f70d2b688563a6665db69ebf8350f65176749495 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 5 Nov 2023 11:25:37 +0000 Subject: [PATCH 8/8] Automatic changelog for PR #14362 [ci skip] --- html/changelogs/AutoChangeLog-pr-14362.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14362.yml diff --git a/html/changelogs/AutoChangeLog-pr-14362.yml b/html/changelogs/AutoChangeLog-pr-14362.yml new file mode 100644 index 0000000000000..33048aaffbbde --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14362.yml @@ -0,0 +1,6 @@ +author: "Lumipharon" +delete-after: True +changes: + - balance: "Throwing things into windows will no longer stop the throw if the window breaks from the impact" + - balance: "Throwing mobs into windows hurts like a wall throw" + - balance: "Throwing mobs into a window scales damage to the window based on mob size" \ No newline at end of file