Enhance forge support
This commit is contained in:
@ -1,20 +1,6 @@
|
||||
/************************************************************************************/
|
||||
//import WFRP_Tables from "/systems/wfrp4e/modules/system/tables-wfrp4e.js";
|
||||
//import WFRP4E from "/systems/wfrp4e/modules/system/config-wfrp4e.js";
|
||||
//import ActorWfrp4e from "/systems/wfrp4e//modules/actor/actor-wfrp4e.js";
|
||||
import ActorWfrp4e_fr from "./modules/fr-actor-wfrp4e.js"
|
||||
|
||||
/************************************************************************************/
|
||||
/* Override some methods of the WFRP4 actor class, mainly to compute spells/weapons */
|
||||
|
||||
/************************************************************************************/
|
||||
var compmod = "wfrp4e";
|
||||
|
||||
Hooks.once('ready', () => {
|
||||
|
||||
} );
|
||||
|
||||
|
||||
/************************************************************************************/
|
||||
Hooks.once('init', () => {
|
||||
|
||||
@ -27,8 +13,130 @@ Hooks.once('init', () => {
|
||||
|
||||
//WFRP_Tables = game.wfrp4e.tables;
|
||||
//WFRP4E = game.wfrp4e.config;
|
||||
CONFIG.Actor.entityClass = ActorWfrp4e_fr;
|
||||
//CONFIG.Actor.entityClass = ActorWfrp4e_fr;
|
||||
game.wfrp4e.entities.ActorWfrp4e.prototype.calculateRangeOrDamage = function(formula)
|
||||
{
|
||||
//console.log("FR function calculateRangeOrDamage !", formula);
|
||||
let actorData = this.data
|
||||
try
|
||||
{
|
||||
formula = formula.toLowerCase();
|
||||
// Iterate through characteristics
|
||||
for(let ch in actorData.data.characteristics)
|
||||
{
|
||||
// Determine if the formula includes the characteristic's abbreviation + B (SB, WPB, etc.)
|
||||
if (formula.includes(ch.concat('b')))
|
||||
{
|
||||
// Replace that abbreviation with the Bonus value
|
||||
formula = formula.replace(ch.concat('b'), actorData.data.characteristics[ch].bonus.toString());
|
||||
}
|
||||
}
|
||||
if (formula.includes("yard") )
|
||||
formula = formula.replace('yard', "mètre" );
|
||||
if (formula.includes("yds") )
|
||||
formula = formula.replace('yds', "m." );
|
||||
// To evaluate multiplication, replace x with *
|
||||
formula = formula.replace('x', '*');
|
||||
|
||||
return eval(formula);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return formula
|
||||
}
|
||||
}
|
||||
game.wfrp4e.entities.ActorWfrp4e.prototype.calculateSpellDamage = function(formula, isMagicMissile) {
|
||||
//console.log("Compute FR")
|
||||
let actorData = this.data
|
||||
formula = formula.toLowerCase();
|
||||
|
||||
if (isMagicMissile) // If it's a magic missile, damage includes willpower bonus
|
||||
{
|
||||
formula += "+ " + actorData.data.characteristics["wp"].bonus
|
||||
}
|
||||
|
||||
// Specific case, to avoid wrong matching with "Force"
|
||||
if (formula.includes("force mentale"))
|
||||
{
|
||||
// Determine if it's looking for the bonus or the value
|
||||
if (formula.includes('bonus')) {
|
||||
formula = formula.replace( "bonus de force mentale", actorData.data.characteristics["wp"].bonus);
|
||||
formula = formula.replace( "force mentale bonus", actorData.data.characteristics["wp"].bonus);
|
||||
} else
|
||||
formula = formula.replace("force mentale", actorData.data.characteristics["wp"].value);
|
||||
}
|
||||
|
||||
// Iterate through characteristics
|
||||
for(let ch in actorData.data.characteristics)
|
||||
{
|
||||
// If formula includes characteristic name
|
||||
while (formula.includes(actorData.data.characteristics[ch].label.toLowerCase()))
|
||||
{
|
||||
// Determine if it's looking for the bonus or the value
|
||||
if (formula.includes('bonus')) {
|
||||
formula = formula.replace("bonus de " + game.wfrp4e.config.characteristics[ch].toLowerCase(), actorData.data.characteristics[ch].bonus);
|
||||
formula = formula.replace(game.wfrp4e.config.characteristics[ch].toLowerCase() + " bonus", actorData.data.characteristics[ch].bonus);
|
||||
}
|
||||
else
|
||||
formula = formula.replace(game.wfrp4e.config.characteristics[ch].toLowerCase(), actorData.data.characteristics[ch].value);
|
||||
}
|
||||
}
|
||||
|
||||
//console.log("calculateSpellDamage -> " + formula );
|
||||
return eval(formula);
|
||||
}
|
||||
|
||||
game.wfrp4e.entities.ActorWfrp4e.prototype.calculateSpellAttributes = function(formula, aoe=false) {
|
||||
//console.log("Compute FR")
|
||||
let actorData = this.data
|
||||
formula = formula.toLowerCase();
|
||||
|
||||
// Do not process these special values
|
||||
if (formula != game.i18n.localize("You").toLowerCase() && formula != game.i18n.localize("Special").toLowerCase() && formula != game.i18n.localize("Instant").toLowerCase())
|
||||
{
|
||||
// Specific case, to avoid wrong matching with "Force"
|
||||
if (formula.includes("force mentale"))
|
||||
{
|
||||
// Determine if it's looking for the bonus or the value
|
||||
if (formula.includes('bonus')) {
|
||||
formula = formula.replace( "bonus de force mentale", actorData.data.characteristics["wp"].bonus);
|
||||
formula = formula.replace( "force mentale bonus", actorData.data.characteristics["wp"].bonus);
|
||||
}
|
||||
else
|
||||
formula = formula.replace("force mentale", actorData.data.characteristics["wp"].value);
|
||||
}
|
||||
if (formula.includes("yard") )
|
||||
formula = formula.replace('yard', "mètre" );
|
||||
if (formula.includes("yds") )
|
||||
formula = formula.replace('yds', "m." );
|
||||
// Iterate through remaining characteristics
|
||||
for(let ch in actorData.data.characteristics)
|
||||
{
|
||||
// If formula includes characteristic name
|
||||
//console.log("Testing :", ch, WFRP4E.characteristics[ch].toLowerCase());
|
||||
if (formula.includes(game.wfrp4e.config.characteristics[ch].toLowerCase()))
|
||||
{
|
||||
// Determine if it's looking for the bonus or the value
|
||||
if (formula.includes('bonus')) {
|
||||
formula = formula.replace("bonus de " + game.wfrp4e.config.characteristics[ch].toLowerCase(), actorData.data.characteristics[ch].bonus);
|
||||
formula = formula.replace(game.wfrp4e.config.characteristics[ch].toLowerCase() + " bonus", actorData.data.characteristics[ch].bonus);
|
||||
}
|
||||
else
|
||||
formula = formula.replace(game.wfrp4e.config.characteristics[ch].toLowerCase(), actorData.data.characteristics[ch].value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If AoE - wrap with AoE ( )
|
||||
if (aoe)
|
||||
formula = "AoE (" + formula.capitalize() + ")";
|
||||
|
||||
//console.log("calculateSpellAttributes -> " + formula );
|
||||
return formula.capitalize();
|
||||
}
|
||||
|
||||
console.log("PROTO", game.wfrp4e.entities.ActorWfrp4e.prototype);
|
||||
|
||||
// Babele stuff
|
||||
if(typeof Babele !== 'undefined') {
|
||||
|
||||
|
Reference in New Issue
Block a user