Tweaking activateNaturalOrder Changes to activateNaturalOrder to try to keep silent characters silent.

e097e42ff8dd28ac424f51466bc056f43bad5e5e

David Fedolfi <dfedolfi@gmail.com>

1 files changed, +10 -4Showing whitespace changes
public/scripts/group-chats.js+10 -4
@@ -1006,6 +1006,7 @@ function activateNaturalOrder(members, input, lastMessage, allowSelfResponses, i
1006 }1006 }
1007 }1007 }
10081008
1009 let chattyMembers = [];
1009 // activation by talkativeness (in shuffled order, except banned)1010 // activation by talkativeness (in shuffled order, except banned)
1010 const shuffledMembers = shuffle([...members]);1011 const shuffledMembers = shuffle([...members]);
1011 for (let member of shuffledMembers) {1012 for (let member of shuffledMembers) {
@@ -1023,19 +1024,24 @@ function activateNaturalOrder(members, input, lastMessage, allowSelfResponses, i
1023 if (talkativeness >= rollValue) {1024 if (talkativeness >= rollValue) {
1024 activatedMembers.push(member);1025 activatedMembers.push(member);
1025 }1026 }
1027 if (talkativeness > 0){
1028 chattyMembers.push(member);
1029 }
1026 }1030 }
10271031
1028 // pick 1 at random if no one was activated1032 // pick 1 at random if no one was activated
1029 let retries = 0;1033 let retries = 0;
1030 while (activatedMembers.length === 0 && ++retries <= members.length) {1034 // try to limit the selected random character to those with talkativeness > 0
1031 const randomIndex = Math.floor(Math.random() * members.length);1035 let randomPool = chattyMembers.length > 0? chattyMembers : members;
1032 const character = characters.find((x) => x.avatar === members[randomIndex]);1036 while (activatedMembers.length === 0 && ++retries <= randomPool.length) {
1037 const randomIndex = Math.floor(Math.random() * randomPool.length);
1038 const character = characters.find((x) => x.avatar === randomPool[randomIndex]);
10331039
1034 if (!character) {1040 if (!character) {
1035 continue;1041 continue;
1036 }1042 }
10371043
1038 activatedMembers.push(members[randomIndex]);1044 activatedMembers.push(randomPool[randomIndex]);
1039 }1045 }
10401046
1041 // de-duplicate array of character avatars1047 // de-duplicate array of character avatars