Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
12 changes: 6 additions & 6 deletions code/game/objects/effects/anomalies.dm
Original file line number Diff line number Diff line change
Expand Up @@ -364,12 +364,12 @@
icon = 'icons/obj/projectiles.dmi'
icon_state = "radiation_anomaly"
density = TRUE
var/has_effect = TRUE //For goat spawning
var/spawn_goat = TRUE //For goat spawning

/obj/effect/anomaly/radiation/anomalyEffect()
..()
for(var/i = 1 to 10)
fire_nuclear_particle_wimpy()
for(var/i = 1 to 15)
fire_nuclear_particle()
radiation_pulse(src, 500, 5)

/obj/effect/anomaly/radiation/proc/makegoat()
Expand All @@ -384,21 +384,21 @@

/obj/effect/anomaly/radiation/detonate()
INVOKE_ASYNC(src, .proc/rad_Spin)
has_effect = FALSE //Don't want rad anomaly to keep spamming rad goat
spawn_goat = FALSE //Don't want rad anomaly to keep spamming rad goat

/obj/effect/anomaly/radiation/proc/rad_Spin()
radiation_pulse(src, 5000, 7)
var/turf/T = get_turf(src)
for(var/i=1 to 100)
var/angle = i * 10
T.fire_nuclear_particle_wimpy(angle)
T.fire_nuclear_particle(angle)
sleep(0.7)

/obj/effect/anomaly/radiation/process()
anomalyEffect()
if(death_time < world.time)
if(loc)
if(has_effect)
if(spawn_goat)
INVOKE_ASYNC(src, .proc/makegoat)
detonate()
addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, src), 150)
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,3 @@
/atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction.
var/obj/item/projectile/energy/nuclear_particle/P = new /obj/item/projectile/energy/nuclear_particle(src)
P.fire(angle)

/obj/item/projectile/energy/nuclear_particle/wimpy
irradiate = 100
damage = 2

/atom/proc/fire_nuclear_particle_wimpy(angle = rand(0,360))
var/obj/item/projectile/energy/nuclear_particle/wimpy/P = new /obj/item/projectile/energy/nuclear_particle/wimpy(src)
P.fire(angle)
2 changes: 1 addition & 1 deletion code/modules/spells/spell_types/conjure.dm
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@
. = ..()
var/mob/living/simple_animal/hostile/retaliate/goat/radioactive/S = user
var/obj/effect/anomaly/radiation/anomaly = new (S.loc, 150)
anomaly.has_effect = FALSE
anomaly.spawn_goat = FALSE
playsound(S, 'sound/weapons/resonator_fire.ogg', 100, TRUE)
S.visible_message(span_notice("You see \the radiation anomaly emerges from \the [S]."), span_notice("\The radiation anomaly emerges from your body."))
notify_ghosts("The Radioactive Goat has spawned a radiation anomaly!", source = anomaly, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Radiation Anomaly Spawned!")
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
/datum/species/preternis/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
// called before a projectile hit
if(istype(P, /obj/item/projectile/energy/nuclear_particle))
H.fire_nuclear_particle_wimpy()
H.fire_nuclear_particle()
H.visible_message(span_danger("[P] deflects off of [H]!"), span_userdanger("[P] deflects off of you!"))
return 1
return 0
16 changes: 11 additions & 5 deletions yogstation/code/modules/mob/living/simple_animal/friendly/goats.dm
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,11 @@
melee_damage_upper = 25
speed = -0.5
robust_searching = 1
turns_per_move = 5
dodging = 1
stat_attack = UNCONSCIOUS
health = 200
maxHealth = 200
health = 75
maxHealth = 75
var/datum/action/innate/rad_goat/rad_switch
var/rad_emit = TRUE

Expand All @@ -182,13 +184,17 @@
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/radiation_anomaly)
ADD_TRAIT(src, TRAIT_RADIMMUNE, GENETIC_MUTATION)

/mob/living/simple_animal/hostile/retaliate/goat/radioactive/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy/nuclear_particle))
P.damage = 0 //No damaging goat
return ..()

/mob/living/simple_animal/hostile/retaliate/goat/radioactive/on_hit(obj/item/projectile/P)
. = ..()
if(istype(P, /obj/item/projectile/energy/nuclear_particle))
// abosrbs nuclear particle to heal
P.damage = 0
adjustBruteLoss(-10)
adjustFireLoss(-10)
adjustBruteLoss(-1)
adjustFireLoss(-1)

/mob/living/simple_animal/hostile/retaliate/goat/radioactive/Life()
if(stat == CONSCIOUS)
Expand Down