From 80e204094b5d27568ea8a98d5d31645e7ca421c3 Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Thu, 5 Jun 2025 10:11:35 -0400 Subject: [PATCH] Xenoarch adjustments (#17801) * Xenoarch adjustments * tgui --- code/game/dna/dna2_helpers.dm | 2 +- code/modules/xenoarcheaology/effect.dm | 37 ++++++++------ .../xenoarcheaology/effects/dnaswitch.dm | 50 ++++++++----------- .../xenoarcheaology/effects/electric_field.dm | 15 ++++-- tgui/packages/tgui-bench/package.json | 2 +- tgui/packages/tgui-panel/package.json | 2 +- tgui/packages/tgui-say/package.json | 2 +- .../DNAModifier/DNAModifierBlocks.tsx | 5 +- tgui/packages/tgui/package.json | 2 +- tgui/yarn.lock | 16 +++--- 10 files changed, 69 insertions(+), 64 deletions(-) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 53a52cd0203..96d4162c853 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -66,7 +66,7 @@ if(prob(prob)) M.dna.SetSEValue(i,rand(1,4095),1) M.dna.UpdateSE() - domutcheck(M, null) + domutcheck(M, null, MUTCHK_FORCED|MUTCHK_HIDEMSG) M.UpdateAppearance() return diff --git a/code/modules/xenoarcheaology/effect.dm b/code/modules/xenoarcheaology/effect.dm index 66572c858ff..c1e32de412b 100644 --- a/code/modules/xenoarcheaology/effect.dm +++ b/code/modules/xenoarcheaology/effect.dm @@ -20,7 +20,7 @@ // The last time the effect was toggled. var/last_activation = 0 - // If we can start activated or not! + // If we can start activated or not! Note: This is only really disabled on artifacts that can REALLY do some MAJOR DAMAGE to the server itself. See: Atmos & temperature artifacts destroying an entire Z-level's atmos. var/can_start_activated = TRUE /datum/artifact_effect/Destroy() @@ -51,19 +51,28 @@ artifact_id = "[pick("kappa","sigma","antaeres","beta","omicron","iota","epsilon","omega","gamma","delta","tau","alpha")]-[rand(100,999)]" //random charge time and distance - switch(pick(100;1, 50;2, 25;3)) - if(1) - //short range, short charge time - chargelevelmax = rand(3, 20) - effectrange = rand(1, 3) - if(2) - //medium range, medium charge time - chargelevelmax = rand(15, 40) - effectrange = rand(5, 15) - if(3) - //large range, long charge time - chargelevelmax = rand(20, 120) - effectrange = rand(20, 100) + switch(effect) + if(EFFECT_PULSE) + switch(pick(100;1, 50;2, 25;3)) + if(1) + //short range, short charge time + chargelevelmax = rand(3, 20) + effectrange = rand(1, 3) + if(2) + //medium range, medium charge time + chargelevelmax = rand(15, 40) + effectrange = rand(5, 15) + if(3) + //large range, long charge time + chargelevelmax = rand(20, 120) + effectrange = rand(20, 100) + if(EFFECT_AURA) + if(prob(1)) //1% chance for a BIG range. + effectrange = rand(1, 100) + else + effectrange = rand(2,7) + if(EFFECT_TOUCH) + effectrange = 1 if(can_start_activated && prob(50)) ToggleActivate(TRUE, TRUE) diff --git a/code/modules/xenoarcheaology/effects/dnaswitch.dm b/code/modules/xenoarcheaology/effects/dnaswitch.dm index b035748b3cb..1fddd434571 100644 --- a/code/modules/xenoarcheaology/effects/dnaswitch.dm +++ b/code/modules/xenoarcheaology/effects/dnaswitch.dm @@ -1,7 +1,8 @@ /datum/artifact_effect/dnaswitch name = "DNA Mutator" effect_type = EFFECT_DNASWITCH - var/severity + var/effect_strength //This is the % chance PER GENE to MUTATE IT. + can_start_activated = FALSE effect_state = "smoke" effect_color = "#77ff83" @@ -9,29 +10,26 @@ /datum/artifact_effect/dnaswitch/New() ..() effect = pick(EFFECT_TOUCH, EFFECT_AURA, EFFECT_PULSE) - if(effect == EFFECT_AURA) - severity = rand(10,50) - else if(effect == EFFECT_PULSE) - severity = rand(5,25) + if(effect == EFFECT_AURA) //Quite dangerous. + effect_strength = rand(2,5) + else if(effect == EFFECT_PULSE) //This only happens every 40 to 240 seconds. + effect_strength = rand(1,10) else - severity = rand(20,90) + effect_strength = rand(10,20) //This one is SUPER beneficial to the geneticist, as they can mutate monkeys. /datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/toucher) var/weakness = GetAnomalySusceptibility(toucher) if(ishuman(toucher) && prob(weakness * 100)) - to_chat(toucher, span_notice(span_green("[pick( - "You feel a little different.", - "You feel very strange.", - "Your stomach churns.", - "Your skin feels loose.", - "You feel a stabbing pain in your head.", - "You feel a tingling sensation in your chest.", - "Your entire body vibrates.")]"))) - - if(prob(75)) - scramble(1, toucher, weakness * severity) - else - scramble(0, toucher, weakness * severity) + if(prob(effect_strength)) + to_chat(toucher, span_notice(span_green("[pick( + "You feel a little different.", + "You feel very strange.", + "Your stomach churns.", + "Your skin feels loose.", + "You feel a stabbing pain in your head.", + "You feel a tingling sensation in your chest.", + "Your entire body vibrates.")]"))) + scramble(1, toucher, weakness * effect_strength) return 1 /datum/artifact_effect/dnaswitch/DoEffectAura() @@ -46,7 +44,7 @@ for(var/mob/living/carbon/human/H in range(src.effectrange,T)) var/weakness = GetAnomalySusceptibility(H) if(prob(weakness * 100)) - if(prob(30)) + if(prob(effect_strength)) to_chat(H, span_notice(span_green("[pick( "You feel a little different.", "You feel very strange.", @@ -55,10 +53,7 @@ "You feel a stabbing pain in your head.", "You feel a tingling sensation in your chest.", "Your entire body vibrates.")]"))) - if(prob(50)) - scramble(1, H, weakness * severity) - else - scramble(0, H, weakness * severity) + scramble(1, H, weakness * effect_strength) /datum/artifact_effect/dnaswitch/DoEffectPulse() var/atom/holder = get_master_holder() @@ -72,7 +67,7 @@ for(var/mob/living/carbon/human/H in range(200, T)) var/weakness = GetAnomalySusceptibility(H) if(prob(weakness * 100)) - if(prob(75)) + if(prob(effect_strength)) to_chat(H, span_notice(span_green("[pick( "You feel a little different.", "You feel very strange.", @@ -82,7 +77,4 @@ "You feel a tingling sensation in your chest.", "Your entire body vibrates.")]"))) if(prob(25)) - if(prob(75)) - scramble(1, H, weakness * severity) - else - scramble(0, H, weakness * severity) + scramble(1, H, weakness * effect_strength) diff --git a/code/modules/xenoarcheaology/effects/electric_field.dm b/code/modules/xenoarcheaology/effects/electric_field.dm index 3289616e2bf..4cc0ac66ac0 100644 --- a/code/modules/xenoarcheaology/effects/electric_field.dm +++ b/code/modules/xenoarcheaology/effects/electric_field.dm @@ -9,6 +9,7 @@ /datum/artifact_effect/electric_field/DoEffectTouch(var/mob/user) var/atom/holder = get_master_holder() + var/weakness = GetAnomalySusceptibility(user) if(last_used >= world.time + use_delay) return else @@ -73,6 +74,9 @@ light.flicker() for(var/mob/living/L in nearby_mobs) + var/weakness = GetAnomalySusceptibility(L) + if(!weakness) //We have protection on! + continue if(L.isSynthetic()) to_chat(L, span_danger("ERROR: Electrical fault detected!")) L.stuttering += 3 @@ -80,12 +84,12 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO)) - H.electrocute_act(rand(1, 10), holder, H.get_siemens_coefficient_organ(affected), affected) + H.electrocute_act(rand(1, 10) * weakness, holder, H.get_siemens_coefficient_organ(affected), affected) var/turf/T = get_turf(L) if(istype(T)) lightning_strike(T, TRUE) else - L.electrocute_act(rand(1, 10), holder, 0.75, BP_TORSO) + L.electrocute_act(rand(1, 10) * weakness, holder, 0.75, BP_TORSO) var/turf/T = get_turf(L) if(istype(T)) lightning_strike(T, TRUE) @@ -115,6 +119,9 @@ light.flicker() for(var/mob/living/L in nearby_mobs) + var/weakness = GetAnomalySusceptibility(L) + if(!weakness) //We have protection on! + continue if(L.isSynthetic()) to_chat(L, span_danger("ERROR: Electrical fault detected!")) L.stuttering += 3 @@ -122,12 +129,12 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO)) - H.electrocute_act(rand(10, 30), holder, H.get_siemens_coefficient_organ(affected), affected) + H.electrocute_act(rand(10, 30) * weakness, holder, H.get_siemens_coefficient_organ(affected), affected) var/turf/T = get_turf(L) if(istype(T)) lightning_strike(T, TRUE) else - L.electrocute_act(rand(10, 30), holder, 0.75, BP_TORSO) + L.electrocute_act(rand(10, 30) * weakness, holder, 0.75, BP_TORSO) var/turf/T = get_turf(L) if(istype(T)) lightning_strike(T, TRUE) diff --git a/tgui/packages/tgui-bench/package.json b/tgui/packages/tgui-bench/package.json index 71d1b8a09bb..172befcaeeb 100644 --- a/tgui/packages/tgui-bench/package.json +++ b/tgui/packages/tgui-bench/package.json @@ -11,7 +11,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "tgui": "workspace:*", - "tgui-core": "^4.0.2" + "tgui-core": "^4.0.3" }, "devDependencies": { "@types/react": "^19.1.0", diff --git a/tgui/packages/tgui-panel/package.json b/tgui/packages/tgui-panel/package.json index c78d06f6dae..55e41a34e6a 100644 --- a/tgui/packages/tgui-panel/package.json +++ b/tgui/packages/tgui-panel/package.json @@ -8,7 +8,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "tgui": "workspace:*", - "tgui-core": "^4.0.2", + "tgui-core": "^4.0.3", "tgui-dev-server": "workspace:*" }, "devDependencies": { diff --git a/tgui/packages/tgui-say/package.json b/tgui/packages/tgui-say/package.json index ea06a4ef030..ac308cbba5a 100644 --- a/tgui/packages/tgui-say/package.json +++ b/tgui/packages/tgui-say/package.json @@ -7,7 +7,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "tgui": "workspace:*", - "tgui-core": "^4.0.2" + "tgui-core": "^4.0.3" }, "devDependencies": { "@types/react": "^19.1.0", diff --git a/tgui/packages/tgui/interfaces/DNAModifier/DNAModifierBlocks.tsx b/tgui/packages/tgui/interfaces/DNAModifier/DNAModifierBlocks.tsx index 1cd19094610..fb70fcba870 100644 --- a/tgui/packages/tgui/interfaces/DNAModifier/DNAModifierBlocks.tsx +++ b/tgui/packages/tgui/interfaces/DNAModifier/DNAModifierBlocks.tsx @@ -40,10 +40,7 @@ export const DNAModifierBlocks = (props: { ); } dnaBlocks.push( - +