import Model from "./model.js";
import { Builder } from "../string_utils.js";
import { COMBAT_TRAITS } from "../constants.js";
function gangName(b, gang) {
b.if(
!!gang.name,
`The ${gang.name} (${gang.kind}): `,
`${gang.members.length} member ${gang.kind}: `
);
return b;
}
/**
* Remove uninteresting traists from the description.
* @param builder
* @param character
*/
function combatantString(character) {
var traits = {};
Object.values(COMBAT_TRAITS).forEach(function (traitName) {
if (character.trait(traitName) > 0) {
traits[traitName] = character.trait(traitName);
}
});
// This is destructive, which is not great
character.traits = traits;
character.description = [];
return character.toString();
}
export default class Gang extends Model {
constructor({ kind, name, members = [], tags = [] } = {}) {
super({ tags });
this.members = members;
this.kind = kind;
this.name = name;
}
add(character) {
this.members.push(character);
}
toString() {
var b = new Builder();
gangName(b, this);
b.append("\n\n");
b.append(this.members.map((m) => combatantString(m)).join("\n\n"));
return b.toString();
}
}