From 2013d11a8060bf2751861480cd011bb2d3f0dbca Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Sun, 29 Jan 2023 14:16:46 +1100 Subject: [PATCH] Fixes charisma deadlocks resulting in players all being the ace. --- .../animal/sif/grafadreka/grafadreka.dm | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/grafadreka/grafadreka.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/grafadreka/grafadreka.dm index 4a118ddb84..560242c05e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/grafadreka/grafadreka.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/grafadreka/grafadreka.dm @@ -99,7 +99,6 @@ /mob/living/simple_mob/animal/sif/grafadreka/Initialize() - charisma = rand(5, 15) stored_sap = rand(20, 30) nutrition = rand(400,500) if (gender == NEUTER) @@ -109,6 +108,7 @@ create_reagents(50) . = ..() original_armor = armor + reset_charisma() update_icon() @@ -121,13 +121,21 @@ /mob/living/simple_mob/animal/sif/grafadreka/Login() . = ..() - charisma = (client && !is_baby) ? INFINITY : 0 + reset_charisma() + + +/mob/living/simple_mob/animal/sif/grafadreka/proc/reset_charisma() + if(client) + charisma = rand(100, 200) + else if(is_baby) + charisma = 0 + else + charisma = rand(5,15) /mob/living/simple_mob/animal/sif/grafadreka/Logout() . = ..() - if (!client) - charisma = rand(5, 15) + reset_charisma() /mob/living/simple_mob/animal/sif/grafadreka/examine(mob/living/user) @@ -441,7 +449,11 @@ var/global/list/wounds_being_tended_by_drakes = list() if (follower == src || follower.is_baby || follower.stat == DEAD || follower.faction != faction) continue pack = TRUE - if (!leader || follower.charisma > leader.charisma) + if (!leader) + leader = follower + if(follower.charisma == leader.charisma) + follower.charisma-- // to avoid deadlocks + if (follower.charisma > leader.charisma) leader = follower if (pack) return leader