Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 4 additions & 12 deletions code/modules/antagonists/revolution/revolution.dm
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@

/datum/antagonist/rev/head/proc/admin_take_flash(mob/admin)
var/list/L = owner.current.get_contents()
var/obj/item/assembly/flash/flash = locate() in L
var/obj/item/organ/cyberimp/arm/flash/rev/flash = locate() in L
if (!flash)
to_chat(admin, span_danger("Deleting flash failed!"))
return
Expand Down Expand Up @@ -242,17 +242,9 @@
H.dna.remove_mutation(CLOWNMUT)

if(give_flash)
var/obj/item/assembly/flash/handheld/T = new(H)
var/list/slots = list (
"backpack" = SLOT_IN_BACKPACK,
"left pocket" = SLOT_L_STORE,
"right pocket" = SLOT_R_STORE
)
var/where = H.equip_in_one_of_slots(T, slots)
if (!where)
to_chat(H, "The Syndicate were unfortunately unable to get you a flash.")
else
to_chat(H, "The flash in your [where] will help you to persuade the crew to join your cause.")
var/obj/item/organ/cyberimp/arm/flash/rev/T = new(H)
T.Insert(H, special = FALSE, drop_if_replaced = FALSE)
to_chat(H, "The flash implant in your arm will help you to persuade the crew to join your cause.")

if(give_hud)
var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = new(H)
Expand Down
55 changes: 36 additions & 19 deletions code/modules/assembly/flash.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,22 @@
materials = list(/datum/material/iron = 300, /datum/material/glass = 300)
light_color = LIGHT_COLOR_WHITE
light_power = FLASH_LIGHT_POWER
///flicked when we flash
var/flashing_overlay = "flash-f"
var/times_used = 0 //Number of times it's been used.
var/burnt_out = FALSE //Is the flash burnt out?
///Number of times the flash has been used.
var/times_used = 0
///Is the flash burnt out?
var/burnt_out = FALSE
///reduction to burnout % chance
var/burnout_resistance = 0
var/last_used = 0 //last world.time it was used.
///last world.time this flash was used
var/last_used = 0
///self explanatory, cooldown on flash use
var/cooldown = 0
var/last_trigger = 0 //Last time it was successfully triggered.
///last time we actually flashed
var/last_trigger = 0
///can we convert people to revolution
var/can_convert = FALSE

/obj/item/assembly/flash/suicide_act(mob/living/user)
if(burnt_out)
Expand Down Expand Up @@ -193,21 +202,24 @@
AOE_flash()

/obj/item/assembly/flash/proc/terrible_conversion_proc(mob/living/carbon/H, mob/user)
if(istype(H) && H.stat != DEAD)
if(user.mind)
var/datum/antagonist/rev/head/converter = user.mind.has_antag_datum(/datum/antagonist/rev/head)
if(!converter)
return
if(!H.client)
to_chat(user, span_warning("This mind is so vacant that it is not susceptible to influence!"))
return
if(H.stat != CONSCIOUS)
to_chat(user, span_warning("They must be conscious before you can convert [H.p_them()]!"))
return
if(converter.add_revolutionary(H.mind))
times_used -- //Flashes less likely to burn out for headrevs when used for conversion
else
to_chat(user, span_warning("This mind seems resistant to the flash!"))
if(!can_convert)
return
if(H?.stat == DEAD)
return
if(user.mind)
var/datum/antagonist/rev/head/converter = user.mind.has_antag_datum(/datum/antagonist/rev/head)
if(!converter)
return
if(!H.client)
to_chat(user, span_warning("This mind is so vacant that it is not susceptible to influence!"))
return
if(H.stat != CONSCIOUS)
to_chat(user, span_warning("They must be conscious before you can convert [H.p_them()]!"))
return
if(converter.add_revolutionary(H.mind))
times_used -- //Flashes less likely to burn out for headrevs when used for conversion
else
to_chat(user, span_warning("This mind seems resistant to the flash!"))


/obj/item/assembly/flash/cyborg
Expand Down Expand Up @@ -266,6 +278,11 @@
/obj/item/assembly/flash/armimplant/proc/cooldown()
overheat = FALSE

/obj/item/assembly/flash/armimplant/rev
name = "syndicate brainwashing flash"
desc = "Viva!"
can_convert = TRUE

/obj/item/assembly/flash/hypnotic
desc = "A modified flash device, programmed to emit a sequence of subliminal flashes that can send a vulnerable target into a hypnotic trance."
flashing_overlay = "flash-hypno"
Expand Down
6 changes: 6 additions & 0 deletions code/modules/surgery/organs/augments_arms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,12 @@
var/obj/item/assembly/flash/armimplant/F = locate(/obj/item/assembly/flash/armimplant) in items_list
F.I = src

/obj/item/organ/cyberimp/arm/flash/rev
name = "revolutionary brainwashing implant"
desc = "An integrated flash projector used alongside syndicate subliminal messaging training to convert loyal crew into violent syndicate activists."
contents = newlist(/obj/item/assembly/flash/armimplant/rev)
syndicate_implant = TRUE

/obj/item/organ/cyberimp/arm/baton
name = "arm electrification implant"
desc = "An illegal combat implant that allows the user to administer disabling shocks from their arm."
Expand Down