Anomaly changes (#18902)

* Automatic changelog compile [ci skip]

* Adds

* Improv

* TELESCI!!!

* Gravity

---------

Co-authored-by: vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com>
This commit is contained in:
Guti
2025-12-18 21:48:00 -05:00
committed by GitHub
co-authored by vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com>
parent 688ebfde09
commit 55efae4bac
5 changed files with 41 additions and 17 deletions
@@ -41,7 +41,7 @@
. = ..()
/obj/effect/anomaly/flux/proc/mobShock(mob/living/M)
if(canshock && istype(M))
if(canshock && istype(M) && !M.is_incorporeal())
canshock = FALSE
M.electrocute_act(shockdamage, name)
@@ -21,11 +21,17 @@
if(!O.anchored)
step_towards(O, src)
for(var/mob/living/M in range(0, src))
if(!M.can_overcome_gravity())
gravShock(M)
if(ishuman(M))
var/mob/living/carbon/human/human = M
if(istype(human.shoes, /obj/item/clothing/shoes/magboots) && (human.shoes.item_flags & NOSLIP))
continue
gravShock(M)
for(var/mob/living/M in range(4, src))
if(!M.can_overcome_gravity())
step_towards(M, src)
if(ishuman(M))
var/mob/living/carbon/human/human = M
if(istype(human.shoes, /obj/item/clothing/shoes/magboots) && (human.shoes.item_flags & NOSLIP))
continue
step_towards(M, src)
for(var/obj/O in range(0, src))
if(O.anchored)
continue
@@ -36,6 +36,7 @@
hallucinator.hallucination += 10
if(prob(20))
to_chat(hallucinator, pick(messages))
hallucinator.Confuse(10)
if(prob(10))
to_chat(hallucinator, span_danger("Your nose bleeds!"))
hallucinator.drip(1)
@@ -49,6 +50,7 @@
hallucinator.hallucination += 25
to_chat(hallucinator, span_danger("Your nose bleeds!"))
hallucinator.drip(1)
hallucinator.Confuse(15)
/obj/effect/anomaly/hallucination/proc/generate_decoys()
if(!spawn_decoys)
@@ -1,18 +1,11 @@
/datum/anomaly_placer
var/static/list/allowed_areas
var/list/excluded = list(
/area/crew_quarters,
/area/shuttle,
/area/space,
/area/solar,
/area/engineering/engine_room,
/area/maintenance,
/area/holodeck,
/area/ai
)
/datum/anomaly_placer/proc/find_valid_area()
var/list/possible_areas = get_station_areas(excluded)
if(!allowed_areas)
generate_allowed_areas()
var/list/possible_areas = typecache_filter_list(GLOB.areas_by_type, allowed_areas)
if(!length(possible_areas))
CRASH("No valid areas for anomaly found.")
@@ -43,3 +36,19 @@
if(isopenspace(tested))
return FALSE
return TRUE
/datum/anomaly_placer/proc/generate_allowed_areas()
var/static/list/safe_area_types = typecacheof(list(
/area/crew_quarters,
/area/shuttle,
/area/space,
/area/solar,
/area/engineering,
/area/maintenance,
/area/holodeck,
/area/ai
))
var/static/list/unsafe_area_subtypes = typecacheof(list(/area/engineering/break_room))
allowed_areas = GLOB.areas_by_type - safe_area_types + unsafe_area_subtypes