Moves revolution code of out of flash code, fixes April Fool conversion forcesay never working in any cirumstances (#74411)

## About The Pull Request

- Signallizes head revolutionary flash conversion code, moving it out of
core flash code.
- Removes "tacticool" flashing from head revs, but they can still
convert from any direction
 
- Fixes April Fools "You son of a bitch! I'm in" force say never
working.
   - Revs are muted on conversion so they couldn't talk.
       - Fixed by only muting revs on non-holidays
   - Cultists are unconscious on conversion so they couldn't talk
       - Fixed by only unconscious-ing cultists on non-holidays
- Brainwash victims are more often than not unconscious / asleep so they
couldn't talk
       - Just left this one. 

- Reduced the chance of them occurring and limits it to April Fools only
- A 1% chance of the force says ocurring means they will happen pretty
much once a week, given multiple rev / cult rounds happen every week and
on average like, 20 people are converted. A little absurd, it's good
that it never worked?

## Why It's Good For The Game

Antag code in core item code is bad

It's funny this meme has existed for like 2, 3 years now? No one's
tested it, it's never worked

## Changelog

🆑 Melbert
refactor: Removes Rev code from core flash code
fix: Getting converted on April Fools now triggers the meme force say as
always intended
del: The meme force say can no longer trigger on any day (it didn't work
before anyways)
/🆑
This commit is contained in:
MrMelbert
2023-04-06 08:28:35 +12:00
committed by GitHub
parent 7777348020
commit 00f8bcfe75
9 changed files with 145 additions and 72 deletions
+13 -51
View File
@@ -1,13 +1,5 @@
#define CONFUSION_STACK_MAX_MULTIPLIER 2
/// No deviation at all. Flashed from the front or front-left/front-right. Alternatively, flashed in direct view.
#define DEVIATION_NONE 0
/// Partial deviation. Flashed from the side. Alternatively, flashed out the corner of your eyes.
#define DEVIATION_PARTIAL 1
/// Full deviation. Flashed from directly behind or behind-left/behind-rack. Not flashed at all.
#define DEVIATION_FULL 2
/obj/item/assembly/flash
name = "flash"
desc = "A powerful and versatile flashbulb device, with applications ranging from disorienting attackers to acting as visual receptors in robot production."
@@ -156,25 +148,26 @@
var/deviation = calculate_deviation(flashed, user || src)
var/datum/antagonist/rev/head/converter = user?.mind?.has_antag_datum(/datum/antagonist/rev/head)
if(user)
var/sigreturn = SEND_SIGNAL(user, COMSIG_MOB_FLASHED_CARBON, flashed, src, deviation)
if(sigreturn & STOP_FLASH)
return
if(sigreturn & DEVIATION_OVERRIDE_FULL)
deviation = DEVIATION_FULL
else if(sigreturn & DEVIATION_OVERRIDE_PARTIAL)
deviation = DEVIATION_PARTIAL
else if(sigreturn & DEVIATION_OVERRIDE_NONE)
deviation = DEVIATION_NONE
//If you face away from someone they shouldnt notice any effects.
if(deviation == DEVIATION_FULL && !converter)
if(deviation == DEVIATION_FULL)
return
if(targeted)
if(flashed.flash_act(1, 1))
flashed.set_confusion_if_lower(confusion_duration * CONFUSION_STACK_MAX_MULTIPLIER)
// Special check for if we're a revhead. Special cases to attempt conversion.
if(converter)
// Did we try to flash them from behind?
if(deviation == DEVIATION_FULL)
// Headrevs can use a tacticool leaning technique so that they don't have to worry about facing for their conversions.
to_chat(user, span_notice("You use the tacticool tier, lean over the shoulder technique to blind [flashed] with a flash!"))
deviation = DEVIATION_PARTIAL
// Convert them. Terribly.
terrible_conversion_proc(flashed, user)
visible_message(span_danger("[user] blinds [flashed] with the flash!"), span_userdanger("[user] blinds you with the flash!"))
visible_message(span_danger("[user] blinds [flashed] with the flash!"), span_userdanger("[user] blinds you with the flash!"))
//easy way to make sure that you can only long stun someone who is facing in your direction
flashed.adjustStaminaLoss(rand(80, 120) * (1 - (deviation * 0.5)))
flashed.Paralyze(rand(25, 50) * (1 - (deviation * 0.5)))
@@ -277,34 +270,6 @@
return
AOE_flash()
/**
* Converts the victim to revs
*
* Arguments:
* * victim - Victim
* * aggressor - Attacker
*/
/obj/item/assembly/flash/proc/terrible_conversion_proc(mob/living/carbon/victim, mob/aggressor)
if(!istype(victim) || victim.stat == DEAD)
return
if(!aggressor.mind)
return
if(!victim.client)
to_chat(aggressor, span_warning("This mind is so vacant that it is not susceptible to influence!"))
return
if(victim.stat != CONSCIOUS)
to_chat(aggressor, span_warning("They must be conscious before you can convert [victim.p_them()]!"))
return
//If this proc fires the mob must be a revhead
var/datum/antagonist/rev/head/converter = aggressor.mind.has_antag_datum(/datum/antagonist/rev/head)
if(converter.add_revolutionary(victim.mind))
if(prob(1) || check_holidays(APRIL_FOOLS))
victim.say("You son of a bitch! I'm in.", forced = "That son of a bitch! They're in.")
times_used -- //Flashes less likely to burn out for headrevs when used for conversion
else
to_chat(aggressor, span_warning("This mind seems resistant to the flash!"))
/obj/item/assembly/flash/cyborg
/obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user)
@@ -415,6 +380,3 @@
M.adjust_pacifism(4 SECONDS)
#undef CONFUSION_STACK_MAX_MULTIPLIER
#undef DEVIATION_NONE
#undef DEVIATION_PARTIAL
#undef DEVIATION_FULL