04-21-2020, 10:24 AM
Are you certain there was only one flashbang? Do you have any screenshots or recordings?
I checked the github's code to make sure my code there wasn't out of date, and it is unchanged.
I'll walk through the code to the best of my understanding. Hopefully if there's some mistake with the code it can be caught due to such: if not, it should demonstrate the intent of the code.
When the code checking the individual M cast as human H runs, if H has an implant, line 331 will get the get_unconvertables() return list defined at code\datums\gamemodes\revolution.dm lines 312-336:
The person will be included in locating people with loyalty implants, so back in the grenades code they'll be stored in U. Ergo
would set their can_convert to 0. From then on, there is no way can_convert can get set to 1 by the time lines 349-350 check if they can be converted and convert them if so, which is the only area where the flashbangs can convert people.
I have attempted to replicate the issue on a personal server and have been unable to. It's possible that it did happen, but if it did, it's more of a bug to fix rather than intended behavior that should be nerfed.
I checked the github's code to make sure my code there wasn't out of date, and it is unchanged.
I'll walk through the code to the best of my understanding. Hopefully if there's some mistake with the code it can be caught due to such: if not, it should demonstrate the intent of the code.
When the code checking the individual M cast as human H runs, if H has an implant, line 331 will get the get_unconvertables() return list defined at code\datums\gamemodes\revolution.dm lines 312-336:
Code:
/datum/game_mode/revolution/proc/get_unconvertables()
var/list/ucs = list()
for(var/mob/living/silicon/robot/player in mobs)
if(player.mind)
var/rol = player.mind.assigned_role
if(rol in list("Cyborg"))
ucs += player.mind
for(var/mob/living/critter/small_animal/player in mobs)
if(player.mind)
if (player.ghost_spawned)
ucs += player.mind
for(var/mob/living/carbon/human/player in mobs)
if(player.mind)
if (locate(/obj/item/implant/antirev) in player.implant)
ucs += player.mind
else
var/role = player.mind.assigned_role
if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Medical Director", "Head Surgeon", "Head of Mining", "Security Officer", "Vice Officer", "Detective", "AI", "Cyborg", "Nanotrasen Special Operative", "Nanotrasen Security Operative","Communications Officer"))
ucs += player.mind
//for(var/mob/living/carbon/human/player in mobs)
return ucs
The person will be included in locating people with loyalty implants, so back in the grenades code they'll be stored in U. Ergo
Code:
else if (H.mind in U)
can_convert = 0
I have attempted to replicate the issue on a personal server and have been unable to. It's possible that it did happen, but if it did, it's more of a bug to fix rather than intended behavior that should be nerfed.