mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Merge pull request #2474 from Esalarc/talkativeness
Tweaks to activateNaturalOrder
This commit is contained in:
@@ -1006,6 +1006,7 @@ function activateNaturalOrder(members, input, lastMessage, allowSelfResponses, i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let chattyMembers = [];
|
||||||
// activation by talkativeness (in shuffled order, except banned)
|
// activation by talkativeness (in shuffled order, except banned)
|
||||||
const shuffledMembers = shuffle([...members]);
|
const shuffledMembers = shuffle([...members]);
|
||||||
for (let member of shuffledMembers) {
|
for (let member of shuffledMembers) {
|
||||||
@@ -1023,19 +1024,24 @@ function activateNaturalOrder(members, input, lastMessage, allowSelfResponses, i
|
|||||||
if (talkativeness >= rollValue) {
|
if (talkativeness >= rollValue) {
|
||||||
activatedMembers.push(member);
|
activatedMembers.push(member);
|
||||||
}
|
}
|
||||||
|
if (talkativeness > 0){
|
||||||
|
chattyMembers.push(member);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// pick 1 at random if no one was activated
|
// pick 1 at random if no one was activated
|
||||||
let retries = 0;
|
let retries = 0;
|
||||||
while (activatedMembers.length === 0 && ++retries <= members.length) {
|
// try to limit the selected random character to those with talkativeness > 0
|
||||||
const randomIndex = Math.floor(Math.random() * members.length);
|
let randomPool = chattyMembers.length > 0? chattyMembers : members;
|
||||||
const character = characters.find((x) => x.avatar === members[randomIndex]);
|
while (activatedMembers.length === 0 && ++retries <= randomPool.length) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * randomPool.length);
|
||||||
|
const character = characters.find((x) => x.avatar === randomPool[randomIndex]);
|
||||||
|
|
||||||
if (!character) {
|
if (!character) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
activatedMembers.push(members[randomIndex]);
|
activatedMembers.push(randomPool[randomIndex]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// de-duplicate array of character avatars
|
// de-duplicate array of character avatars
|
||||||
|
Reference in New Issue
Block a user