#6 : Skill experience management

This commit is contained in:
2021-03-12 20:57:41 +01:00
parent 3285bd416e
commit 9d610215d4
12 changed files with 113 additions and 15 deletions

View File

@ -160,6 +160,11 @@ export class SoSActor extends Actor {
return Math.ceil( (this.data.data.stats.strength.value + this.data.data.stats.endurance.value) / 2) + this.data.data.scores.wound.bonusmalus;
}
/* -------------------------------------------- */
getSkillExperience( skillName ) {
return this.data.items.filter( item => item.type == 'skillexperience' && item.data.skill == skillName);
}
/* -------------------------------------------- */
async wornObject( itemID) {
let item = this.getOwnedItem(itemID);
@ -262,13 +267,15 @@ export class SoSActor extends Actor {
selectedStat: 'strength',
consequencesList: duplicate( this.getApplicableConsequences() ),
wounds: duplicate( this.data.data.wounds),
skillExperienceList: this.getSkillExperience( skill.name),
skill: duplicate(skill),
actor: this,
modifierList: SoSUtility.fillRange(-10, +10),
tnList: SoSUtility.fillRange(6, 20),
malusConsequence: 0,
bonusConsequence: 0,
woundMalus: 0
woundMalus: 0,
bonusSkillXP: 0
}
flipData.statList['nostat'] = { label: "No stat (ie defaulting skills)", value: 0, cardsuit: "none" }
let html = await renderTemplate('systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html', flipData);
@ -297,6 +304,7 @@ export class SoSActor extends Actor {
target: target,
selectedStat: selectedStatName,
consequencesList: duplicate( this.getApplicableConsequences() ),
skillExperienceList: this.getSkillExperience( skill.name),
wounds: duplicate( this.data.data.wounds),
skill: duplicate(skill),
actor: this,
@ -304,7 +312,8 @@ export class SoSActor extends Actor {
tnList: SoSUtility.fillRange(6, 20),
malusConsequence: 0,
bonusConsequence: 0,
woundMalus: 0
woundMalus: 0,
bonusSkillXP: 0
}
console.log(flipData);

View File

@ -45,7 +45,12 @@ export class SoSItemSheet extends ItemSheet {
async getData() {
let data = super.getData();
data.isGM = game.user.isGM;
if ( data.item.type == 'skillexperience') {
data.skillList = await SoSUtility.loadCompendiumNames("foundryvtt-shadows-over-sol.skills");
}
if ( data.item.type == 'skill' && this.object.options?.actor) {
data.skillExperienceList = this.object.options.actor.getSkillExperience( data.item.name );
}
return data;
}
@ -57,6 +62,19 @@ export class SoSItemSheet extends ItemSheet {
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
// Update Inventory Item
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
const item = this.object.options.actor.getOwnedItem(li.data("item-id"));
console.log("ITEM", item, li.data("item-id"), li);
item.sheet.render(true);
});
// Update Inventory Item
html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.object.options.actor.deleteOwnedItem( li.data("item-id") ).then( this.render(true));
//this.render(true);
});
}

View File

@ -43,6 +43,7 @@ export class SoSFlipDialog extends Dialog {
scoreBase += this.flipData.malusConsequence;
scoreBase += this.flipData.bonusConsequence;
scoreBase += this.flipData.woundMalus;
scoreBase += this.flipData.bonusSkillXP;
$('#wound-malus').text(this.flipData.woundMalus);
$('#score-base').text( scoreBase);
}
@ -74,7 +75,18 @@ export class SoSFlipDialog extends Dialog {
});
}
/* -------------------------------------------- */
updateSkillXPBonus(event) {
this.flipData.skillXPSelected = $('#skillXPBonus').val();
let bonusSkillXP = 0;
for (let skillXPId of this.flipData.skillXPSelected) {
bonusSkillXP += 1;
}
$('#skillxp-bonus').text(bonusSkillXP);
this.flipData.bonusSkillXP = bonusSkillXP;
this.updateScoreBase();
}
/* -------------------------------------------- */
updateConsequenceMalus(event) {
this.flipData.consequencesSelected = $('#consequenceSelectMalus').val();
@ -122,7 +134,9 @@ export class SoSFlipDialog extends Dialog {
html.find('#statSelect').change((event) => {
this.updateFlip(dialog.flipData );
} );
html.find('#skillXPBonus').change((event) => {
this.updateSkillXPBonus( event );
} );
html.find('#consequenceSelectMalus').change((event) => {
this.updateConsequenceMalus( event );
} );

View File

@ -34,7 +34,7 @@ export class SoSUtility extends Entity {
static fillRange (start, end) {
return Array(end - start + 1).fill().map((item, index) => start + index);
}
/* -------------------------------------------- */
static onSocketMesssage( msg ) {
if( !game.user.isGM ) return; // Only GM