Skip to content

Commit 8d027de

Browse files
committed
fix double strong bug
1 parent 5435a38 commit 8d027de

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

libs/chief.js

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -160,24 +160,26 @@ function doChance(rollValue, gameState) {
160160
case 18:
161161
case 17:
162162
case 16:
163-
name = pop.randomMemberName(population);
164-
person = pop.memberByName(name, gameState);
165-
safety = 0; // infinite loop protection
166-
while (
167-
person.hasOwnProperty('strength') &&
168-
person.strength == 'strong' &&
169-
safety < Object.keys(population).length
170-
) {
171-
name = pop.randomMemberName(population);
172-
person = pop.memberByName(name, gameState);
173-
safety = safety + 1;
174-
}
175-
message += person.name + ' grows stronger.';
176-
pop.history(name, message, gameState);
177-
if (person.strength && person.strength == 'weak') {
178-
delete person.strength;
163+
// Find members who are not already strong
164+
var memberNames = Object.keys(population);
165+
var nonStrongMembers = memberNames.filter(function (name) {
166+
var p = population[name];
167+
return !p.hasOwnProperty('strength') || p.strength != 'strong';
168+
});
169+
if (nonStrongMembers.length === 0) {
170+
message += 'Every day is leg day; the tribe is strong.';
179171
} else {
180-
person.strength = 'strong';
172+
name = nonStrongMembers[
173+
Math.floor(Math.random() * nonStrongMembers.length)
174+
];
175+
person = pop.memberByName(name, gameState);
176+
message += person.name + ' grows stronger.';
177+
pop.history(name, message, gameState);
178+
if (person.strength && person.strength == 'weak') {
179+
delete person.strength;
180+
} else {
181+
person.strength = 'strong';
182+
}
181183
}
182184
break;
183185
case 15:

0 commit comments

Comments
 (0)