added function to auto-add unarmed attack item

This commit is contained in:
TheLastScrub
2021-06-13 15:21:44 -07:00
parent a0c3a86a03
commit dfd94129cd
2 changed files with 76 additions and 0 deletions
+45
View File
@@ -163,4 +163,49 @@ export class DeltaGreenActor extends Actor {
return super.create(data, options);
}
async AddUnarmedAttackItemIfMissing(){
try{
let alreadyAdded = false;
for(let item of this.data.items){
let flag = await item.getFlag('deltagreen', 'SystemName');
if(flag === 'unarmed-attack'){
alreadyAdded = true;
}
}
if(alreadyAdded === true){ return; };
let handToHandPack = await game.packs.get('deltagreen.hand-to-hand-weapons');
let itemIndex = await handToHandPack.getIndex();
let toAdd = []; // createEmbeddedDocument expects an array
for(let idx of itemIndex){
let _temp = await handToHandPack.getDocument(idx._id);
if(_temp.name === 'Unarmed Attack'){
toAdd.push(_temp.data);
}
}
let newItems = await this.createEmbeddedDocuments("Item", toAdd);
for(let item of newItems){
await item.setFlag('deltagreen','AutoAdded', true);
if(item.name === 'Unarmed Attack'){
await item.setFlag('deltagreen','SystemName', 'unarmed-attack');
}
}
}
catch(ex){
console.log('Error adding unarmed strike item to Actor.')
console.log(ex);
}
}
}
+31
View File
@@ -217,6 +217,37 @@ Hooks.on("ready", ()=> {
});
// Note - this event is fired on ALL connected clients...
Hooks.on('createActor', async function(actor, options, userId){
try{
// user this to trap on if this hook is firing for the same user that triggered the create
// can put logic specific to a particular user session below
if (userId != game.user.id) { return; };
if(actor.data.type === 'agent'){
// update the default type skill of Art - Painting's labels to try to be localized
// since I really backed myself into a corner on this with my implementation of it...
let artLabel = game.i18n.translations.DG?.TypeSkills?.Art ?? "Art";
let paintingLabel = game.i18n.translations.DG?.TypeSkills?.Subskills?.Painting ?? "Painting";
let updatedData = duplicate(actor.data.data);
updatedData.typedSkills.tskill_01.group = artLabel;
updatedData.typedSkills.tskill_01.label = paintingLabel;
actor.update({"data": updatedData});
// throw on an unarmed strike item for convenience
actor.AddUnarmedAttackItemIfMissing();
}
}
catch(ex){
console.log(ex);
}
});
/* -------------------------------------------- */
/* Hotbar Macros */
/* -------------------------------------------- */