Char creation
This commit is contained in:
@@ -52,6 +52,8 @@ export class PegasusActorSheet extends ActorSheet {
|
||||
activePerks: duplicate(this.actor.getActivePerks()),
|
||||
powers: duplicate(this.actor.getPowers()),
|
||||
subActors: duplicate(this.actor.getSubActors()),
|
||||
race: duplicate(this.actor.getRace()),
|
||||
role: duplicate(this.actor.getRole()),
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
editScore: this.options.editScore,
|
||||
|
||||
@@ -113,6 +113,14 @@ export class PegasusActor extends Actor {
|
||||
getShields() {
|
||||
let comp = this.data.items.filter( item => item.type == 'shield');
|
||||
return comp;
|
||||
}
|
||||
getRace() {
|
||||
let race = this.data.items.filter( item => item.type == 'race');
|
||||
return race[0]?? [];
|
||||
}
|
||||
getRole() {
|
||||
let role = this.data.items.filter( item => item.type == 'role');
|
||||
return role[0]?? [];
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -548,6 +556,18 @@ export class PegasusActor extends Actor {
|
||||
stat.mod += parseInt(ability.data.statmodifier)
|
||||
updates[`data.statistics.${ability.data.affectedstat}`] = stat
|
||||
}
|
||||
for (let power of race.data.powersgained) {
|
||||
newItems.push(power);
|
||||
}
|
||||
for (let spec of race.data.specialisations) {
|
||||
newItems.push(spec);
|
||||
}
|
||||
for (let weapon of race.data.attackgained) {
|
||||
newItems.push(weapon);
|
||||
}
|
||||
for (let armor of race.data.armorgained) {
|
||||
newItems.push(armor);
|
||||
}
|
||||
}
|
||||
await this.update( updates )
|
||||
await this.createEmbeddedDocuments('Item', newItems)
|
||||
|
||||
@@ -43,9 +43,10 @@ export class PegasusActorCreate {
|
||||
processChatEvent( event ) {
|
||||
const step = $(event.currentTarget).data("step-name");
|
||||
const itemId = $(event.currentTarget).data("item-id");
|
||||
console.log("Create chat evet", event, itemId, step)
|
||||
|
||||
if ( step == "select-race") {
|
||||
let race = this.races.find( item => item._id == itemId);
|
||||
this.currentRace = race;
|
||||
this.actor.applyRace( race);
|
||||
PegasusUtility.removeChatMessageId(PegasusUtility.findChatMessageId(event.currentTarget));
|
||||
if ( race.data.nboptionnal > 0 && race.data.optionnalabilities.length > 0) {
|
||||
@@ -53,6 +54,8 @@ export class PegasusActorCreate {
|
||||
} else {
|
||||
if ( race.data.selectablestats ) {
|
||||
this.manageSelectableStats(race);
|
||||
} else if ( race.data.perksgained) {
|
||||
this.showRacePerks(race);
|
||||
} else {
|
||||
this.showRoles()
|
||||
}
|
||||
@@ -77,6 +80,24 @@ export class PegasusActorCreate {
|
||||
this.processSelectableStats();
|
||||
}
|
||||
|
||||
if (step == 'select-race-perks-all') {
|
||||
PegasusUtility.removeChatMessageId(PegasusUtility.findChatMessageId(event.currentTarget));
|
||||
let perk = this.racePerks.find( item => item._id == itemId);
|
||||
this.actor.createEmbeddedDocuments( 'Item', [perk]);
|
||||
this.racePerks = this.racePerks.filter( item => item._id != itemId);
|
||||
this.nbperks -= 1;
|
||||
if ( this.nbperks == 0 || this.racePerks.length == 0) {
|
||||
this.showRoles()
|
||||
}else {
|
||||
this.showRacePerks();
|
||||
}
|
||||
}
|
||||
|
||||
if (step == 'select-race-perks') {
|
||||
PegasusUtility.removeChatMessageId(PegasusUtility.findChatMessageId(event.currentTarget));
|
||||
this.showRoles()
|
||||
}
|
||||
|
||||
if ( step == 'select-role') {
|
||||
let role = this.roles.find( item => item._id == itemId);
|
||||
PegasusUtility.removeChatMessageId(PegasusUtility.findChatMessageId(event.currentTarget));
|
||||
@@ -153,7 +174,37 @@ export class PegasusActorCreate {
|
||||
this.processSelectableStats()
|
||||
}
|
||||
|
||||
/* --------------- ----------------------------- */
|
||||
/* -------------------------------------------- */
|
||||
async renderChatMessage( formData) {
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
//console.log("Apply damage chat", chatData );
|
||||
await ChatMessage.create( chatData );
|
||||
}
|
||||
|
||||
/* --------------- -------------------- --------- */
|
||||
manageRacePerks(race) {
|
||||
if ( !this.racePerks) { // First init
|
||||
this.racePerks = duplicate(race.data.perks)
|
||||
this.nbRacePerks = race.data.perksnumber;
|
||||
}
|
||||
let formData
|
||||
if (race.data.perksall) {
|
||||
formData = this.createFormData("select-race-perks-all")
|
||||
} else {
|
||||
formData = this.createFormData("select-race-perks")
|
||||
formData.raceperks = this.racePerks;
|
||||
formData.nbraceperks = this.nbRacePerks;
|
||||
}
|
||||
this.renderChatMessage(formData)
|
||||
}
|
||||
|
||||
/* --------------- -------------------- --------- */
|
||||
async processSelectableStats() {
|
||||
// End of race options choice
|
||||
if ( this.raceSelectableStats.numberstats == 0) {
|
||||
@@ -186,49 +237,28 @@ export class PegasusActorCreate {
|
||||
// End of race options choice
|
||||
if ( this.raceOptionnalAbilities.nboptionnal == 0) {
|
||||
if ( this.raceSelectableStats ) {
|
||||
this.manageSelectableStats(this.raceSelectableStats.race);
|
||||
this.manageSelectableStats(this.currentrace);
|
||||
} else if ( this.currentRace.data.perksgained) {
|
||||
this.manageRacePerks(this.currentRace);
|
||||
} else {
|
||||
this.showRoles()
|
||||
}
|
||||
} else {
|
||||
let formData = this.createFormData("select-race-optionnal")
|
||||
this.renderChatMessage( formData)
|
||||
}
|
||||
let formData = this.createFormData("select-race-optionnal")
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
//console.log("Apply damage chat", chatData );
|
||||
await ChatMessage.create( chatData );
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async showRaces() {
|
||||
let formData = this.createFormData("select-race")
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
//console.log("Apply damage chat", chatData );
|
||||
await ChatMessage.create( chatData );
|
||||
this.renderChatMessage( formData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async showRoles() {
|
||||
let formData = this.createFormData("select-role")
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
await ChatMessage.create( chatData );
|
||||
this.renderChatMessage( formData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -241,14 +271,7 @@ export class PegasusActorCreate {
|
||||
}
|
||||
}
|
||||
console.log("STAT", this.roleStats, formData)
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
await ChatMessage.create( chatData );
|
||||
this.renderChatMessage( formData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -259,14 +282,7 @@ export class PegasusActorCreate {
|
||||
if (this.nbDT2 > 0 ) {
|
||||
formData.dt = 2
|
||||
}
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
await ChatMessage.create( chatData );
|
||||
this.renderChatMessage( formData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -274,28 +290,14 @@ export class PegasusActorCreate {
|
||||
let formData = this.createFormData("select-role-perk")
|
||||
formData.roleperks = duplicate(this.rolePerks)
|
||||
formData.nbperks = this.nbPerks
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
await ChatMessage.create( chatData );
|
||||
this.renderChatMessage( formData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async showCharacterEnd() {
|
||||
this.actor.computeNRGHealth()
|
||||
let formData = this.createFormData("character-end")
|
||||
let chatData = {
|
||||
user: game.user.id,
|
||||
alias : this.actor.name,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
whisper: [game.user.id].concat( ChatMessage.getWhisperRecipients('GM') ),
|
||||
content: await renderTemplate('systems/fvtt-pegasus-rpg/templates/chat-create-actor.html', formData)
|
||||
};
|
||||
await ChatMessage.create( chatData );
|
||||
this.renderChatMessage( formData)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -223,6 +223,17 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async addRacePerk(event, item, dataItem) {
|
||||
let newItem = duplicate(item.data);
|
||||
newItem._id = randomID( dataItem.id.length );
|
||||
if ( event.toElement.className == 'drop-race-perk') {
|
||||
let perkArray = duplicate(this.object.data.data.perks);
|
||||
perkArray.push( newItem);
|
||||
await this.object.update( { 'data.perks': perkArray} );
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async addSpecialisation(item, dataItem) {
|
||||
let newItem = duplicate(item.data);
|
||||
@@ -286,6 +297,7 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
await this.object.update( { 'data.powersgained': powArray} );
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async addAbilitySpec( event, item, dataItem) {
|
||||
let newItem = duplicate(item.data);
|
||||
@@ -296,6 +308,22 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
await this.object.update( { 'data.specialisations': powArray} );
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async addAbilityWeaponArmor( event, item, dataItem) {
|
||||
let newItem = duplicate(item.data);
|
||||
newItem._id = randomID( dataItem.id.length );
|
||||
if ( event.toElement.className == 'drop-ability-weapon') {
|
||||
let weaponArray = duplicate(this.object.data.data.attackgained);
|
||||
weaponArray.push( newItem );
|
||||
await this.object.update( { 'data.attackgained': weaponArray} );
|
||||
}
|
||||
if ( event.toElement.className == 'drop-ability-armor') {
|
||||
let armorArray = duplicate(this.object.data.data.armorgained);
|
||||
armorArray.push( newItem );
|
||||
await this.object.update( { 'data.armorgained': armorArray} );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async addPerkSpecialisation( event, item, dataItem) {
|
||||
@@ -322,6 +350,9 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
if ( item.data.type == 'ability') {
|
||||
return this.addAbility( event, item, dataItem);
|
||||
}
|
||||
if ( item.data.type == 'perk') {
|
||||
return this.addRacePerk( event, item, dataItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,6 +388,9 @@ export class PegasusItemSheet extends ItemSheet {
|
||||
if ( item.data.type == 'specialisation') {
|
||||
return this.addAbilitySpec( event, item, dataItem);
|
||||
}
|
||||
if ( item.data.type == 'weapon' || item.data.type == 'armor') {
|
||||
return this.addAbilityWeaponArmor( event, item, dataItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user