Initial system development
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
import { SoSCardDeck } from "./sos-card-deck.js";
|
||||
import { SoSUtility } from "./sos-utility.js";
|
||||
|
||||
|
||||
@ -36,18 +37,95 @@ export class SoSActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareData() {
|
||||
async prepareData() {
|
||||
super.prepareData();
|
||||
|
||||
const actorData = this.data;
|
||||
if ( !this.cardDeck ) {
|
||||
this.cardDeck = new SoSCardDeck();
|
||||
this.cardDeck.initCardDeck( this );
|
||||
}
|
||||
this.controlScores();
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getEdgesCard( ) {
|
||||
let edgesCard = duplicate(this.cardDeck.data.cardEdge);
|
||||
for (let edge of edgesCard) {
|
||||
edge.path = `systems/foundryvtt-shadows-over-sol/img/cards/${edge.cardName}.webp`
|
||||
}
|
||||
return edgesCard;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
drawEdge( ) {
|
||||
this.cardDeck.drawEdge();
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/**
|
||||
* Prepare Character type specific data
|
||||
*/
|
||||
async _prepareCharacterData(actorData) {
|
||||
// Initialize empty items
|
||||
getDefense( ) {
|
||||
return this.data.data.scores.defense;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
computeDefense() {
|
||||
return { value: Math.ceil((this.data.data.stats.speed.value + this.data.data.stats.perception.value + this.data.data.stats.dexterity.value) / 2),
|
||||
critical: this.data.data.stats.speed.value + this.data.data.stats.perception.value + this.data.data.stats.dexterity.value
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getEdge( ) {
|
||||
return this.data.data.scores.edge.value;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getEncumbrance( ) {
|
||||
return this.data.data.scores.encumbrance.value;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
computeEdge( ) {
|
||||
return Math.ceil( (this.data.data.stats.intelligence.value + this.data.data.stats.charisma.value) / 2);
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getShock( ) {
|
||||
return this.data.data.scores.shock.value;
|
||||
}
|
||||
computeShock() {
|
||||
return Math.ceil( this.data.data.stats.endurance.value + this.data.data.stats.determination.value + this.data.data.scores.dr.value);
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getWound( ) {
|
||||
return this.data.data.scores.wound.value;
|
||||
}
|
||||
computeWound() {
|
||||
return Math.ceil( (this.data.data.stats.strength.value + this.data.data.stats.endurance.value) / 2);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async controlScores() {
|
||||
// Defense check
|
||||
let defenseData = this.getDefense();
|
||||
let newDefenseData = this.computeDefense();
|
||||
if ( defenseData.value != newDefenseData.value || defenseData.critical != newDefenseData.critical) {
|
||||
await this.update( {'data.scores.defense': newDefenseData});
|
||||
}
|
||||
// Edge check
|
||||
if ( this.getEdge() != this.computeEdge() ) {
|
||||
await this.update( {'data.scores.edge.value': this.computeEdge()});
|
||||
}
|
||||
// Encumbrance
|
||||
if ( this.getEncumbrance() != this.data.data.stats.strength.value ) {
|
||||
await this.update( {'data.scores.encumbrance.value': this.data.data.stats.strength.value });
|
||||
}
|
||||
// Shock
|
||||
if ( this.getShock() != this.computeShock() ) {
|
||||
await this.update( {'data.scores.shock.value': this.computeShock() });
|
||||
}
|
||||
// Wounds
|
||||
if ( this.getWound() != this.computeWound() ) {
|
||||
await this.update( {'data.scores.wound.value': this.computeWound() });
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollStat( statKey ) {
|
||||
console.log("STAT", this);
|
||||
let result = this.cardDeck.doFlipStat( duplicate(this.data.data.stat[statKey]) );
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user