Magnitis is more aggressive, uses throw_at instead of Move at higher stages (#72739)

I got this disease yesterday and was super disappointed by the actual
effects. Rather than suffer an unending waves of metal objects being
thrown at my head, I noticed that stuff on the bridge kept getting
disorganized, shrugged, and moved on.

Now, stages 3/4 of Magnitis will use throw_at instead of just moving
objects to the infectee. This can hurt or even kill the victim in
extreme cases. Remember to duck!

The messages about electrical shocks will now appear when a magnetic
pulse occurs. Some of the disease messages have been slightly altered to
fit this.
This commit is contained in:
Rhials
2023-01-22 21:30:18 +00:00
committed by GitHub
parent 05c96ccc41
commit e6523036cd
+8 -18
View File
@@ -22,7 +22,7 @@
switch(stage)
if(2)
if(DT_PROB(1, delta_time))
to_chat(affected_mob, span_danger("You feel a slight shock course through your body."))
to_chat(affected_mob, span_danger("Your skin tingles with energy."))
if(DT_PROB(1, delta_time))
for(var/obj/nearby_object in orange(2, affected_mob))
if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1))
@@ -36,41 +36,31 @@
nearby_silicon.Move(get_step(nearby_silicon, move_dir), move_dir)
if(3)
if(DT_PROB(1, delta_time))
to_chat(affected_mob, span_danger("You feel a strong shock course through your body."))
if(DT_PROB(1, delta_time))
to_chat(affected_mob, span_danger("You feel like clowning around."))
to_chat(affected_mob, span_danger("Your hair stands on end."))
if(DT_PROB(2, delta_time))
to_chat(affected_mob, span_danger("You feel a light shock course through your body."))
for(var/obj/nearby_object in orange(4, affected_mob))
if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1))
continue
for(var/i in 1 to rand(1, 2))
var/move_dir = get_dir(nearby_object, affected_mob)
if(!nearby_object.Move(get_step(nearby_object, move_dir), move_dir))
break
nearby_object.throw_at(affected_mob, 4, 3)
for(var/mob/living/silicon/nearby_silicon in orange(4, affected_mob))
if(isAI(nearby_silicon))
continue
for(var/i in 1 to rand(1, 2))
var/move_dir = get_dir(nearby_silicon, affected_mob)
if(!nearby_silicon.Move(get_step(nearby_silicon, move_dir), move_dir))
break
nearby_silicon.throw_at(affected_mob, 4, 3)
if(4)
if(DT_PROB(1, delta_time))
to_chat(affected_mob, span_danger("You feel a powerful shock course through your body."))
if(DT_PROB(1, delta_time))
to_chat(affected_mob, span_danger("You query upon the nature of miracles."))
if(DT_PROB(4, delta_time))
to_chat(affected_mob, span_danger("You feel a powerful shock course through your body."))
for(var/obj/nearby_object in orange(6, affected_mob))
if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1))
continue
for(var/i in 1 to rand(1, 3))
var/move_dir = get_dir(nearby_object, affected_mob)
if(!nearby_object.Move(get_step(nearby_object, move_dir), move_dir))
break
nearby_object.throw_at(affected_mob, 6, 5) // I really wanted to use addtimers to stagger out when everything gets thrown but it would probably cause a lot of lag.
for(var/mob/living/silicon/nearby_silicon in orange(6, affected_mob))
if(isAI(nearby_silicon))
continue
for(var/i in 1 to rand(1, 3))
var/move_dir = get_dir(nearby_silicon, affected_mob)
if(!nearby_silicon.Move(get_step(nearby_silicon, move_dir), move_dir))
break
nearby_silicon.throw_at(affected_mob, 6, 5)