2021-02-12 15:21:58 +01:00
2021-08-23 22:55:07 +02:00
export class WH4FRPatchConfig {
2021-02-12 15:21:58 +01:00
2021-08-24 21:43:47 +02:00
/************************************************************************************/
static translateSkillList ( skillList ) {
let newList = [ ] ;
for ( let compName of skillList ) {
let special = "" ;
let newName = compName ;
if ( compName . includes ( "(" ) && compName . includes ( ")" ) ) { // Then process specific skills name with (xxxx) inside
var re = /(.*) +\((.*)\)/i ;
var res = re . exec ( compName ) ;
compName = res [ 1 ] . trim ( ) ; // Get the root skill name
special = " (" + game . i18n . localize ( res [ 2 ] . trim ( ) ) + ")" ; // And the special keyword
}
var compNameFR = game . babele . translate ( 'wfrp4e-core.skills' , { name : compName } , true ) ;
//console.log(">>>>> Skill ?", compName, special, compNameFR);
if ( compNameFR . name != compName ) { // Translation OK
newName = compNameFR . name + special ;
}
newList . push ( newName ) ;
}
return newList ;
}
/************************************************************************************/
static translateTalentList ( talentList ) {
let newList = [ ] ;
for ( let talentLine of talentList ) {
let special = "" ;
let newName = talentLine ;
if ( isNaN ( talentLine ) ) {
let subList = talentLine . split ( ',' ) ;
let newSubList = [ ] ;
for ( let talentName of subList ) {
talentName = talentName . trim ( ) ;
let newName2 = talentName ;
if ( talentName . includes ( "(" ) && talentName . includes ( ")" ) ) { // Then process specific skills name with (xxxx) inside
var re = /(.*) +\((.*)\)/i ;
var res = re . exec ( talentName ) ;
talentName = res [ 1 ] . trim ( ) ; // Get the root skill name
special = " (" + game . i18n . localize ( res [ 2 ] . trim ( ) ) + ")" ; // And the special keyword
}
var talentNameFR = game . babele . translate ( 'wfrp4e-core.talents' , { name : talentName } , true ) ;
//console.log(">>>>> Talent ?", talentName, special, talentNameFR);
if ( talentNameFR . name != talentName ) { // Translation OK
newName2 = talentNameFR . name + special ;
}
newSubList . push ( newName2 ) ;
}
newName = newSubList . join ( ', ' ) ;
}
newList . push ( newName ) ;
}
return newList ;
}
/************************************************************************************/
static patch _subspecies ( ) {
for ( let speciesName in game . wfrp4e . config . subspecies ) {
let subspeciesList = game . wfrp4e . config . subspecies [ speciesName ] ;
for ( let subspeciesName in subspeciesList ) {
let subspecies = subspeciesList [ subspeciesName ] ;
//console.log("Subpecies translate....", subspecies);
if ( subspecies . skills ) {
subspecies . skills = this . translateSkillList ( subspecies . skills ) ;
}
if ( subspecies . talents ) {
subspecies . talents = this . translateTalentList ( subspecies . talents ) ;
}
}
}
}
/************************************************************************************/
static patch _species _skills ( ) {
for ( let speciesName in game . wfrp4e . config . speciesSkills ) {
let speciesComp = game . wfrp4e . config . speciesSkills [ speciesName ] ;
game . wfrp4e . config . speciesSkills [ speciesName ] = this . translateSkillList ( speciesComp )
}
}
/************************************************************************************/
static patch _species _talents ( ) {
for ( let speciesName in game . wfrp4e . config . speciesTalents ) {
let speciesTalents = game . wfrp4e . config . speciesTalents [ speciesName ] ;
game . wfrp4e . config . speciesTalents [ speciesName ] = this . translateTalentList ( speciesTalents ) ;
}
}
/************************************************************************************/
static patch _career ( ) {
2022-11-16 20:57:41 +01:00
if ( game . wfrp4e . tables . career ) {
for ( let row of game . wfrp4e . tables . career . rows ) {
for ( let key in row ) {
if ( key != "range" ) {
if ( row [ key ] . name == 'Slayer' ) {
row [ key ] . name = "Tueur Nains" ;
} else if ( row [ key ] . name == 'Duelist' ) {
row [ key ] . name = "Duelliste" ;
//console.log(">>>>> Career ?", key, row[key].name, career_fr.name );
} else {
var career _fr = game . babele . translate ( 'wfrp4e-core.careers' , { name : row [ key ] . name } , true ) ;
row [ key ] . name = career _fr . name ;
}
2021-08-24 21:43:47 +02:00
}
}
}
}
}
2021-08-23 22:55:07 +02:00
/************************************************************************************/
static perform _patch ( ) {
2021-02-12 15:21:58 +01:00
// Detect and patch as necessary
2021-08-23 22:55:07 +02:00
if ( game . wfrp4e . config && game . wfrp4e . config . talentBonuses && game . wfrp4e . config . talentBonuses [ "vivacité" ] == undefined ) {
2021-02-12 15:21:58 +01:00
console . log ( "Patching WFRP4E now ...." ) ;
2021-08-23 22:55:07 +02:00
game . wfrp4e . config . qualityDescriptions [ "distract" ] = game . i18n . localize ( "WFRP4E.Properties.Distract" ) ; // Patch missing quality
2021-02-12 15:21:58 +01:00
game . wfrp4e . config . talentBonuses = {
2021-08-23 22:55:07 +02:00
"perspicace" : "int" ,
"affable" : "fel" ,
"tireur de précision" : "bs" ,
"très fort" : "s" ,
"vivacité" : "i" ,
"reflexes foudroyants" : "ag" ,
"imperturbable" : "wp" ,
"très résistant" : "t" ,
"doigts de fée" : "dex" ,
"guerrier né" : "ws"
2021-02-12 15:21:58 +01:00
}
2021-08-24 21:43:47 +02:00
2022-06-29 11:17:16 +02:00
game . wfrp4e . config . loreEffects [ "beasts" ] . label = "Domaine des Bêtes"
game . wfrp4e . config . loreEffects [ "death" ] . label = "Domaine de la Mort"
game . wfrp4e . config . loreEffects [ "fire" ] . label = "Domaine du Feu"
game . wfrp4e . config . loreEffects [ "metal" ] . label = "Domaine du Métal"
game . wfrp4e . config . loreEffects [ "heavens" ] . label = "Domaine des Cieux"
game . wfrp4e . config . loreEffects [ "life" ] . label = "Domaine de la Vie"
game . wfrp4e . config . loreEffects [ "light" ] . label = "Domaine de la Lumière"
game . wfrp4e . config . loreEffects [ "shadow" ] . label = "Domaine des Ombres"
game . wfrp4e . config . loreEffects [ "hedgecraft" ] . label = "Domaine de la Magie de Village"
game . wfrp4e . config . loreEffects [ "hedgecraft" ] . label = "Domaine de la Sorcellerie"
2021-05-27 12:20:50 +02:00
game . wfrp4e . config . species [ "human" ] = "Humain" ;
game . wfrp4e . config . species [ "dwarf" ] = "Nain" ;
game . wfrp4e . config . species [ "halfling" ] = "Halfling" ;
game . wfrp4e . config . species [ "helf" ] = "Haut Elfe" ;
game . wfrp4e . config . species [ "welf" ] = "Elfe Sylvain" ;
2021-02-12 15:21:58 +01:00
2021-08-24 21:43:47 +02:00
this . patch _species _skills ( ) ;
this . patch _species _talents ( ) ;
this . patch _subspecies ( ) ;
this . patch _career ( ) ;
2021-06-10 21:27:40 +02:00
2022-01-30 09:18:49 +01:00
/ * g a m e . w f r p 4 e . c o n f i g . c o n d i t i o n S c r i p t s = {
"ablaze" : async function ( actor ) {
2021-08-14 22:49:25 +02:00
let effect = actor . hasCondition ( "ablaze" )
let value = effect . conditionValue ;
2022-01-30 09:18:49 +01:00
2021-08-14 22:49:25 +02:00
let leastProtectedLoc ;
let leastProtectedValue = 999 ;
2022-01-30 09:18:49 +01:00
for ( let loc in actor . status . armour )
{
if ( actor . status . armour [ loc ] . value != undefined && actor . status . armour [ loc ] . value < leastProtectedValue )
{
leastProtectedLoc = loc ;
leastProtectedValue = actor . status . armour [ loc ] . value ;
}
2021-08-14 22:49:25 +02:00
}
let rollString = ` 1d10 + ${ value - 1 } `
2022-01-30 09:18:49 +01:00
let roll = await new Roll ( ` ${ rollString } - ${ leastProtectedValue || 0 } ` ) . roll ( ) ;
let msg = ` <h2> ${ game . i18n . localize ( "WFRP4E.ConditionName.Ablaze" ) } </h2><b> ${ game . i18n . localize ( "Formula" ) } </b>: ${ rollString } <br><b> ${ game . i18n . localize ( "Roll" ) } </b>: ${ roll . terms . map ( i => i . total ) . splice ( 0 , 3 ) . join ( " " ) } ` // Don't show AP in the roll formula
actor . runEffects ( "preApplyCondition" , { effect , data : { msg , roll , rollString } } )
2021-08-14 22:49:25 +02:00
value = effect . conditionValue ;
2022-01-30 09:18:49 +01:00
let damageMsg = ( ` <br> ` + await actor . applyBasicDamage ( roll . total , { damageType : game . wfrp4e . config . DAMAGE _TYPE . IGNORE _AP , suppressMsg : true } ) ) . split ( "" )
damageMsg . splice ( damageMsg . length - 1 , 1 ) // Removes the parentheses and adds + AP amount.
msg += damageMsg . join ( "" ) . concat ( ` + ${ leastProtectedValue } ${ game . i18n . localize ( "AP" ) } ) ` )
2021-08-14 22:49:25 +02:00
let messageData = game . wfrp4e . utility . chatDataSetup ( msg ) ;
2022-01-30 09:18:49 +01:00
messageData . speaker = { alias : actor . data . token . name }
actor . runEffects ( "applyCondition" , { effect , data : { messageData } } )
2021-08-14 22:49:25 +02:00
return messageData
2021-08-23 22:55:07 +02:00
} ,
2022-01-30 09:18:49 +01:00
"poisoned" : async function ( actor ) {
2021-08-14 22:49:25 +02:00
let effect = actor . hasCondition ( "poisoned" )
let msg = ` <h2>Empoisonné</h2> `
2021-08-23 22:55:07 +02:00
actor . runEffects ( "preApplyCondition" , { effect , data : { msg } } )
2021-08-14 22:49:25 +02:00
let value = effect . conditionValue ;
2021-08-23 22:55:07 +02:00
msg += await actor . applyBasicDamage ( value , { damageType : game . wfrp4e . config . DAMAGE _TYPE . IGNORE _ALL , suppressMsg : true } )
2021-08-14 22:49:25 +02:00
let messageData = game . wfrp4e . utility . chatDataSetup ( msg ) ;
2021-08-23 22:55:07 +02:00
messageData . speaker = { alias : actor . data . token . name }
actor . runEffects ( "applyCondition" , { effect , data : { messageData } } )
2021-08-14 22:49:25 +02:00
return messageData
2021-08-23 22:55:07 +02:00
} ,
"bleeding" : async function ( actor ) {
2021-08-14 22:49:25 +02:00
let effect = actor . hasCondition ( "bleeding" )
let bleedingAmt ;
let bleedingRoll ;
let msg = ` <h2>Hémorragie</h2> `
2021-08-23 22:55:07 +02:00
actor . runEffects ( "preApplyCondition" , { effect , data : { msg } } )
2021-08-14 22:49:25 +02:00
let value = effect . conditionValue ;
2021-08-23 22:55:07 +02:00
msg += await actor . applyBasicDamage ( value , { damageType : game . wfrp4e . config . DAMAGE _TYPE . IGNORE _ALL , minimumOne : false , suppressMsg : true } )
if ( actor . status . wounds . value == 0 && ! actor . hasCondition ( "unconscious" ) ) {
await actor . addCondition ( "unconscious" )
msg += ` <br><b> ${ actor . data . token . name } </b> tombe inconscient! `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
if ( actor . hasCondition ( "unconscious" ) ) {
bleedingAmt = value ;
bleedingRoll = new Roll ( "1d100" ) . roll ( ) . total ;
if ( bleedingRoll <= bleedingAmt * 10 ) {
msg += ` <br><b> ${ actor . data . token . name } </b> meurt de la perte de sang! (Lancé ${ bleedingRoll } ) `
actor . addCondition ( "dead" )
}
else if ( bleedingRoll % 11 == 0 ) {
msg += ` <br><b> ${ actor . data . token . name } 's</b> cicatrise un peu et élimine 1 Etat Hémorragique (Lancé ${ bleedingRoll } ) `
actor . removeCondition ( "bleeding" )
}
else {
msg += ` <br>Bleeding Roll: ${ bleedingRoll } `
}
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
2021-08-14 22:49:25 +02:00
let messageData = game . wfrp4e . utility . chatDataSetup ( msg ) ;
2021-08-23 22:55:07 +02:00
messageData . speaker = { alias : actor . data . token . name }
actor . runEffects ( "applyCondition" , { effect , data : { messageData , bleedingRoll } } )
2021-08-14 22:49:25 +02:00
return messageData
2021-08-23 22:55:07 +02:00
}
2022-01-30 09:18:49 +01:00
} * /
2021-08-23 22:55:07 +02:00
game . wfrp4e . config . statusEffects = [
2021-02-12 15:21:58 +01:00
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/bleeding.png" ,
id : "bleeding" ,
label : "Hémorragique" ,
flags : {
wfrp4e : {
"trigger" : "endRound" ,
"value" : 1
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/poisoned.png" ,
id : "poisoned" ,
label : "Empoisonné" ,
flags : {
wfrp4e : {
"trigger" : "endRound" ,
"effectTrigger" : "prefillDialog" ,
2022-01-30 09:18:49 +01:00
"script" : "args.prefillModifiers.modifier -= 10 * this.effect.conditionValue" ,
2021-08-23 22:55:07 +02:00
"value" : 1
2022-01-30 09:18:49 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/ablaze.png" ,
id : "ablaze" ,
label : "En Flammes" ,
flags : {
wfrp4e : {
"trigger" : "endRound" ,
"value" : 1
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/deafened.png" ,
id : "deafened" ,
label : "Assourdi" ,
flags : {
wfrp4e : {
"trigger" : "endRound" ,
"effectTrigger" : "dialogChoice" ,
"effectData" : {
"description" : "Tests related to hearing" ,
"modifier" : "-10 * this.flags.wfrp4e.value"
} ,
"value" : 1
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/stunned.png" ,
id : "stunned" ,
label : "Assommé" ,
flags : {
wfrp4e : {
"trigger" : "endRound" ,
"effectTrigger" : "prefillDialog" ,
2022-01-30 09:18:49 +01:00
"script" : "args.prefillModifiers.modifier -= 10 * this.effect.conditionValue" ,
2021-08-23 22:55:07 +02:00
"value" : 1
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/entangled.png" ,
id : "entangled" ,
label : "Empêtré" ,
flags : {
wfrp4e : {
"trigger" : "endRound" ,
"effectTrigger" : "dialogChoice" ,
"effectData" : {
"description" : "Tout les tests relatifs au mouvement" ,
"modifier" : "-10 * this.flags.wfrp4e.value"
} ,
"value" : 1
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/fatigued.png" ,
id : "fatigued" ,
label : "Extenué" ,
flags : {
wfrp4e : {
"effectTrigger" : "prefillDialog" ,
2022-01-30 09:18:49 +01:00
"script" : "args.prefillModifiers.modifier -= 10 * this.effect.conditionValue" ,
"value" : 1
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/blinded.png" ,
id : "blinded" ,
label : "Aveuglé" ,
flags : {
wfrp4e : {
"trigger" : "endRound" ,
"effectTrigger" : "dialogChoice" ,
2022-01-30 09:18:49 +01:00
"effectData" : {
"description" : "Tests related to sight" ,
"modifier" : "-10 * this.flags.wfrp4e.value"
2021-08-23 22:55:07 +02:00
} ,
"value" : 1 ,
2022-01-30 09:18:49 +01:00
"secondaryEffect" : {
"effectTrigger" : "targetPrefillDialog" ,
"script" : "if (args.item && args.item.attackType=='melee') args.prefillModifiers.modifier += 10 * this.effect.conditionValue" ,
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/broken.png" ,
id : "broken" ,
label : "Brisé" ,
flags : {
wfrp4e : {
"effectTrigger" : "prefillDialog" ,
2022-01-30 09:18:49 +01:00
"script" : "args.prefillModifiers.modifier -= 10 * this.effect.conditionValue" ,
2021-08-23 22:55:07 +02:00
"value" : 1
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/prone.png" ,
id : "prone" ,
label : "A terre" ,
flags : {
wfrp4e : {
"effectTrigger" : "dialogChoice" ,
2022-01-30 09:18:49 +01:00
"effectData" : {
"description" : "Tests related to movement of any kind" ,
"modifier" : "-20"
2021-08-23 22:55:07 +02:00
} ,
"value" : null ,
2022-01-30 09:18:49 +01:00
"secondaryEffect" : {
"effectTrigger" : "targetPrefillDialog" ,
"script" : "if (args.type == 'weapon' && args.item.attackType=='melee') args.prefillModifiers.modifier += 20" ,
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/fear.png" ,
id : "fear" ,
label : "Peur" ,
flags : {
wfrp4e : {
"effectTrigger" : "dialogChoice" ,
2022-01-30 09:18:49 +01:00
"effectData" : {
"description" : "Tests to affect" ,
"slBonus" : "-1"
2021-08-23 22:55:07 +02:00
} ,
2022-01-30 09:18:49 +01:00
"script" : `
if ( this . flags . wfrp4e . fearName )
this . flags . wfrp4e . effectData . description += " " + this . flags . wfrp4e . fearName
else
this . flags . wfrp4e . effectData . description += " the source of fear"
` ,
2021-08-23 22:55:07 +02:00
"value" : null
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/surprised.png" ,
id : "surprised" ,
label : "Surpris" ,
flags : {
wfrp4e : {
"value" : null ,
2022-01-30 09:18:49 +01:00
"secondaryEffect" : {
"effectTrigger" : "targetPrefillDialog" ,
"script" : "if (args.type == 'weapon' && args.item.attackType=='melee') args.prefillModifiers.modifier += 20" ,
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/unconscious.png" ,
id : "unconscious" ,
label : "Inconscient" ,
flags : {
wfrp4e : {
"value" : null
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/conditions/grappling.png" ,
id : "grappling" ,
label : "Empoigné" ,
flags : {
wfrp4e : {
"value" : null
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
{
2021-08-23 22:55:07 +02:00
icon : "systems/wfrp4e/icons/defeated.png" ,
id : "dead" ,
label : "Mort" ,
flags : {
wfrp4e : {
"value" : null
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
}
]
2022-11-07 15:48:16 +01:00
/ * g a m e . w f r p 4 e . c o n f i g . s y s t e m E f f e c t s = {
2021-08-23 22:55:07 +02:00
"enc1" : {
label : "Encombrement 1" ,
icon : "systems/wfrp4e/icons/effects/enc1.png" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "prePrepareData" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
args . actor . characteristics . ag . modifier -= 10 ;
args . actor . details . move . value -= 1 ;
if ( args . actor . details . move . value < 3 )
args . actor . details . move . value = 3 `
}
2021-08-23 22:55:07 +02:00
}
} ,
"enc2" : {
label : "Encombrement 2" ,
icon : "systems/wfrp4e/icons/effects/enc2.png" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "prePrepareData" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
args . actor . characteristics . ag . modifier -= 20 ;
args . actor . details . move . value -= 2 ;
if ( args . actor . details . move . value < 2 )
args . actor . details . move . value = 2 `
}
2021-08-23 22:55:07 +02:00
}
} ,
"enc3" : {
label : "Encombrement 3" ,
icon : "systems/wfrp4e/icons/effects/enc3.png" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "prePrepareData" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
args . actor . details . move . value = 0 ; `
}
2021-08-23 22:55:07 +02:00
}
} ,
"cold1" : {
label : "Exposition au Froid 1" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 10 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "" ,
"effectApplication" : "actor" ,
"script" : ` `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"cold2" : {
label : "Exposition au Froid 2" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ws.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.s.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.i.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.fel.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.s.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.wp.calculationBonusModifier" , mode : 2 , value : 1 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "" ,
"effectApplication" : "actor" ,
"script" : ` `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"cold3" : {
label : "Exposition au Froid 3" ,
icon : "" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "oneTime" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
let tb = this . actor . characteristics . t . bonus
let damage = new Roll ( "1d10" ) . roll ( ) . total
damage -= tb
if ( damage <= 0 ) damage = 1
if ( this . actor . status . wounds . value <= damage )
{
this . actor . addCondition ( "unconscious" )
}
this . actor . modifyWounds ( - damage )
ui . notifications . notify ( "Encaisse " + damage + " dégats" )
`
}
2021-08-23 22:55:07 +02:00
}
} ,
"heat1" : {
label : "Exposition à la chaleur 1" ,
icon : "" ,
changes : [
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.calculationBonusModifier" , mode : 2 , value : 1 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "" ,
"effectApplication" : "actor" ,
"script" : ` `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"heat2" : {
label : "Exposition à la chaleur 2" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ws.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.s.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.i.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.fel.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.s.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.wp.calculationBonusModifier" , mode : 2 , value : 1 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "" ,
"effectApplication" : "actor" ,
"script" : ` `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"heat3" : {
label : "Exposition à la chaleur 3" ,
icon : "" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "oneTime" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
let tb = this . actor . characteristics . t . bonus
let damage = new Roll ( "1d10" ) . roll ( ) . total
damage -= tb
if ( damage <= 0 ) damage = 1
this . actor . modifyWounds ( - damage )
ui . notifications . notify ( "Encaisse " + damage + " dégats" )
`
}
2021-08-23 22:55:07 +02:00
}
} ,
"thirst1" : {
label : "Assoiffé 1" ,
icon : "" ,
changes : [
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.fel.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.calculationBonusModifier" , mode : 2 , value : 1 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "" ,
"effectApplication" : "actor" ,
"script" : ` `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"thirst2" : {
label : "Assoiffé 2+" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ws.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.s.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.i.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.fel.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.s.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.wp.calculationBonusModifier" , mode : 2 , value : 1 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "invoke" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
let tb = this . actor . characteristics . t . bonus
let damage = new Roll ( "1d10" ) . roll ( ) . total
damage -= tb
if ( damage <= 0 ) damage = 1
this . actor . modifyWounds ( - damage )
ui . notifications . notify ( "Encasse " + damage + " dégats" )
`
}
2021-08-23 22:55:07 +02:00
}
} ,
"starvation1" : {
label : "Affamé 1" ,
icon : "" ,
changes : [
{ key : "data.characteristics.s.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.s.calculationBonusModifier" , mode : 2 , value : 1 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "" ,
"effectApplication" : "actor" ,
"script" : ` `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"starvation2" : {
label : "Affamé 2" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ws.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.s.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.i.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.wp.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.fel.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.t.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.s.calculationBonusModifier" , mode : 2 , value : 1 } ,
{ key : "data.characteristics.wp.calculationBonusModifier" , mode : 2 , value : 1 } ,
] ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "invoke" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
let tb = this . actor . characteristics . t . bonus
let damage = new Roll ( "1d10" ) . roll ( ) . total
damage -= tb
if ( damage <= 0 ) damage = 1
this . actor . modifyWounds ( - damage )
ui . notifications . notify ( "Encaisse " + damage + " dégats" )
`
}
2021-08-23 22:55:07 +02:00
}
} ,
"infighting" : {
label : "Combat au contact" ,
icon : "modules/wfrp4e-core/icons/talents/in-fighter.png" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "prePrepareItem" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
if ( args . item . type == "weapon" && args . item . isEquipped )
{
let weaponLength = args . item . reachNum
if ( weaponLength > 3 )
{
let improv = duplicate ( game . wfrp4e . config . systemItems . improv )
2022-10-02 09:44:39 +02:00
improv . system . twohanded . value = args . item . twohanded . value
improv . system . offhand . value = args . item . offhand . value
args . item . update ( { "system" : improv . system , name : args . item . name + " (Combat au Contact" ) } )
2021-08-14 22:49:25 +02:00
}
}
`
}
2021-08-23 22:55:07 +02:00
}
} ,
"defensive" : {
label : "Posture Défensive [Compétence]" ,
icon : "" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "prefillDialog" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
let skillName = this . effect . label . substring ( this . effect . label . indexOf ( "[" ) + 1 , this . effect . label . indexOf ( "]" ) )
if ( ! this . actor . isOpposing )
return
if ( ( args . type == "skill" && args . item . name == skillName ) ||
( args . type == "weapon" && args . item . skillToUse . name == skillName ) ||
( args . type == "cast" && skillName == "Langue (Magick)" ) ||
( args . type == "prayer" && skillName == "Prière" ) ||
( args . type == "trait" && args . item . rollable . skill == skillName ) )
2021-08-23 22:55:07 +02:00
args . prefillModifiers . modifier += 20 `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"dualwielder" : {
label : "Maniement de 2 armes" ,
icon : "modules/wfrp4e-core/icons/talents/dual-wielder.png" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "prefillDialog" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
if ( this . actor . isOpposing )
2021-08-23 22:55:07 +02:00
args . prefillModifiers . modifier -= 10 `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
"consumealcohol1" : {
label : "Résistance à l'alcool 1" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.ws.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 10 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 10 } ,
]
} ,
"consumealcohol2" : {
label : "Résistance à l'alcool 2" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 20 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 20 } ,
{ key : "data.characteristics.ws.modifier" , mode : 2 , value : - 20 } ,
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 20 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 20 } ,
]
} ,
"consumealcohol3" : {
label : "Résistance à l'alcool 3" ,
icon : "" ,
changes : [
{ key : "data.characteristics.bs.modifier" , mode : 2 , value : - 30 } ,
{ key : "data.characteristics.ag.modifier" , mode : 2 , value : - 30 } ,
{ key : "data.characteristics.ws.modifier" , mode : 2 , value : - 30 } ,
{ key : "data.characteristics.int.modifier" , mode : 2 , value : - 30 } ,
{ key : "data.characteristics.dex.modifier" , mode : 2 , value : - 30 } ,
]
} ,
"stinkingdrunk1" : {
label : "Courage du Marienbourgeois" ,
icon : "" ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "prefillDialog" ,
"effectApplication" : "actor" ,
"script" : `
2021-08-14 22:49:25 +02:00
if ( args . type == "skill" && args . item . name == "Calme" )
2021-08-23 22:55:07 +02:00
args . prefillModifiers . modifier += 20 `
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
2021-08-14 22:49:25 +02:00
}
2022-11-07 15:48:16 +01:00
} * /
2021-08-14 22:49:25 +02:00
2022-11-07 15:48:16 +01:00
/ * g a m e . w f r p 4 e . c o n f i g . s y s t e m I t e m s = {
2021-08-23 22:55:07 +02:00
reload : {
type : "extendedTest" ,
name : "" ,
data : {
2021-08-14 22:49:25 +02:00
SL : {
} ,
test : {
2021-08-23 22:55:07 +02:00
value : ""
2021-08-14 22:49:25 +02:00
} ,
completion : {
2021-08-23 22:55:07 +02:00
value : "remove"
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
} ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
reloading : ""
2021-08-14 22:49:25 +02:00
}
2021-08-23 22:55:07 +02:00
}
} ,
improv : {
2021-08-14 22:49:25 +02:00
name : "Arme improvisée" ,
type : "weapon" ,
2021-08-23 22:55:07 +02:00
effects : [ ] ,
2021-08-14 22:49:25 +02:00
data : {
damage : { value : "SB + 1" } ,
reach : { value : "personal" } ,
weaponGroup : { value : "basic" } ,
twohanded : { value : false } ,
qualities : { value : "" } ,
2021-08-23 22:55:07 +02:00
flaws : { value : [ { name : "undamaging" } ] } ,
2021-08-14 22:49:25 +02:00
special : { value : "" } ,
range : { value : "" } ,
ammunitionGroup : { value : "" } ,
offhand : { value : false } ,
}
2021-08-23 22:55:07 +02:00
} ,
stomp : {
name : "Piétiner" ,
type : "trait" ,
effects : [ ] ,
2021-08-14 22:49:25 +02:00
data : {
specification : { value : "4" } ,
2021-08-23 22:55:07 +02:00
rollable : { value : true , rollCharacteristic : "ws" , bonusCharacteristic : "s" , defaultDifficulty : "challenging" , damage : true } ,
}
} ,
unarmed : {
2021-08-14 22:49:25 +02:00
name : "Désarmé" ,
type : "weapon" ,
2021-08-23 22:55:07 +02:00
effects : [ ] ,
2021-08-14 22:49:25 +02:00
data : {
damage : { value : "SB + 0" } ,
reach : { value : "personal" } ,
weaponGroup : { value : "brawling" } ,
twohanded : { value : false } ,
qualities : { value : "" } ,
2021-08-23 22:55:07 +02:00
flaws : { value : [ { name : "undamaging" } ] } ,
2021-08-14 22:49:25 +02:00
special : { value : "" } ,
range : { value : "" } ,
ammunitionGroup : { value : "" } ,
offhand : { value : false } ,
}
2021-08-23 22:55:07 +02:00
} ,
2021-08-14 22:49:25 +02:00
2021-08-23 22:55:07 +02:00
fear : {
name : "Peur" ,
type : "extendedTest" ,
data : {
completion : { value : 'remove' } ,
description : { type : 'String' , label : 'Description' , value : '' } ,
failingDecreases : { value : true } ,
gmdescription : { type : 'String' , label : 'Description' , value : '' } ,
2021-08-14 22:49:25 +02:00
hide : { test : false , progress : false } ,
negativePossible : { value : false } ,
SL : { current : 0 , target : 1 } ,
test : { value : 'Calme' }
2021-08-23 22:55:07 +02:00
} ,
effects :
2021-08-14 22:49:25 +02:00
[ {
2021-08-23 22:55:07 +02:00
label : "Peur" ,
icon : "systems/wfrp4e/icons/conditions/fear.png" ,
transfer : true ,
flags : {
core : {
statusId : "fear"
} ,
wfrp4e : {
"effectTrigger" : "dialogChoice" ,
"effectData" : {
"description" : "Tests affectés" ,
"slBonus" : "-1"
} ,
"script" : `
2021-08-14 22:49:25 +02:00
if ( this . flags . wfrp4e . fearName )
this . flags . wfrp4e . effectData . description += " " + this . flags . wfrp4e . fearName
else
this . flags . wfrp4e . effectData . description += " the source of fear"
` }
2021-08-23 22:55:07 +02:00
}
2021-08-14 22:49:25 +02:00
}
]
2021-08-23 22:55:07 +02:00
} ,
2021-08-14 22:49:25 +02:00
2021-08-23 22:55:07 +02:00
terror : {
2021-08-14 22:49:25 +02:00
2021-08-23 22:55:07 +02:00
label : "Terreur" ,
icon : "systems/wfrp4e/icons/conditions/terror.png" ,
transfer : true ,
flags : {
2021-08-14 22:49:25 +02:00
wfrp4e : {
2021-08-23 22:55:07 +02:00
"effectTrigger" : "oneTime" ,
"effectApplication" : "actor" ,
"terrorValue" : 1 ,
"script" : `
2021-08-14 22:49:25 +02:00
args . actor . setupSkill ( "Calme" ) . then ( setupData => {
args . actor . basicTest ( setupData ) . then ( test => {
if ( test . result . outcome == "failure" )
{
let terror = this . effect . flags . wfrp4e . terrorValue
if ( test . result . SL < 0 )
terror += Math . abs ( test . result . SL )
args . actor . addCondition ( "broken" , terror )
}
args . actor . applyFear ( value , name )
} )
} ) `
}
2021-08-23 22:55:07 +02:00
}
2021-08-14 22:49:25 +02:00
}
2022-11-07 15:48:16 +01:00
} * /
2021-02-12 15:21:58 +01:00
2021-08-23 22:55:07 +02:00
game . wfrp4e . config . symptomEffects = {
2021-02-12 15:21:58 +01:00
"blight" : {
2021-08-23 22:55:07 +02:00
label : "Toxine" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "invoke" ,
"symptom" : true ,
"script" : `
2021-02-12 15:21:58 +01:00
let difficulty = ""
if ( this . effect . label . includes ( "Modéré" ) )
difficulty = "easy"
else if ( this . effect . label . includes ( "Sévère" ) )
difficulty = "average"
else
difficulty = "veasy"
2021-07-15 14:28:19 +02:00
if ( args . actor . isOwner )
2021-02-12 15:21:58 +01:00
{
args . actor . setupSkill ( "Résistance" , { absolute : { difficulty } } ) . then ( setupData => {
args . actor . basicTest ( setupData ) . then ( test =>
{
2021-07-15 14:28:19 +02:00
if ( test . result . outcome == "failure" )
2021-02-12 15:21:58 +01:00
args . actor . addCondition ( "dead" )
} )
} )
} `
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"buboes" : {
2021-08-23 22:55:07 +02:00
label : "Bubons" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "prefillDialog" ,
"symptom" : true ,
"script" : `
2021-02-12 15:21:58 +01:00
let applicableCharacteristics = [ "ws" , "bs" , "s" , "fel" , "ag" , "t" , "dex" ]
if ( args . type == "weapon" )
args . prefillModifiers . modifier -= 10
else if ( args . type == "characteristic" )
{
if ( applicableCharacteristics . includes ( args . item ) )
args . prefillModifiers . modifier -= 10
}
else if ( args . type == "skill" )
{
2021-07-15 14:28:19 +02:00
if ( applicableCharacteristics . includes ( args . item . characteristic . value ) )
2021-02-12 15:21:58 +01:00
args . prefillModifiers . modifier -= 10
}
` }
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"convulsions" : {
2021-08-23 22:55:07 +02:00
label : "Convulsions" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "prefillDialog" ,
"symptom" : true ,
"script" : `
2021-02-12 15:21:58 +01:00
let modifier = 0
if ( this . effect . label . includes ( "Modéré" ) )
modifier = - 20
else
modifier = - 10
let applicableCharacteristics = [ "ws" , "bs" , "s" , "ag" , "t" , "dex" ]
if ( args . type == "weapon" )
args . prefillModifiers . modifier += modifier
else if ( args . type == "characteristic" )
{
if ( applicableCharacteristics . includes ( args . item ) )
args . prefillModifiers . modifier += modifier
}
else if ( args . type == "skill" )
{
2021-07-15 14:28:19 +02:00
if ( applicableCharacteristics . includes ( args . item . characteristic . value ) )
2021-02-12 15:21:58 +01:00
args . prefillModifiers . modifier += modifier
}
} `
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"fever" : {
2021-08-23 22:55:07 +02:00
label : "Fièvre" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "prefillDialog" ,
"symptom" : true ,
"script" : `
2021-02-12 15:21:58 +01:00
let applicableCharacteristics = [ "ws" , "bs" , "s" , "fel" , "ag" , "t" , "dex" ]
if ( args . type == "weapon" )
args . prefillModifiers . modifier -= 10
else if ( args . type == "characteristic" )
{
if ( applicableCharacteristics . includes ( args . item ) )
args . prefillModifiers . modifier -= 10
}
else if ( args . type == "skill" )
{
2021-07-15 14:28:19 +02:00
if ( applicableCharacteristics . includes ( args . item . characteristic . value ) )
2021-02-12 15:21:58 +01:00
args . prefillModifiers . modifier -= 10
} ` ,
2021-08-23 22:55:07 +02:00
"otherEffects" : [ "blight" , "wounded" ]
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"flux" : {
2021-08-23 22:55:07 +02:00
label : "Intoxication Alimentaire" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"symptom" : true
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"lingering" : {
2021-08-23 22:55:07 +02:00
label : "Persistant" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"symptom" : true
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"coughsAndSneezes" : {
2021-08-23 22:55:07 +02:00
label : "Toux et éternuements" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"symptom" : true
2021-02-12 15:21:58 +01:00
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"gangrene" : {
2021-08-23 22:55:07 +02:00
label : "Gangrène" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "prefillDialog" ,
"symptom" : true ,
"script" : `
2021-02-12 15:21:58 +01:00
if ( args . type == "characteristic" && args . item == "fel" )
{
if ( args . item == "fel" )
args . prefillModifiers . modifier -= 10
}
else if ( args . type == "skill" )
{
2021-07-15 14:28:19 +02:00
if ( args . item . characteristic . value == "fel" )
2021-02-12 15:21:58 +01:00
args . prefillModifiers . modifier -= 10
}
} `
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"malaise" : {
2021-08-23 22:55:07 +02:00
label : "Malaise" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "prepareData" ,
"symptom" : true ,
"script" : `
2021-02-12 15:21:58 +01:00
if ( game . user . isUniqueGM )
{
let fatigued = args . actor . hasCondition ( "fatigued" )
if ( ! fatigued )
{
args . actor . addCondition ( "fatigued" )
ui . notifications . notify ( "Etat Extenué ajouté à " + args . actor . name + ", qui ne peut pas être enlevé tant que le symptôme Malaise est présent." )
}
}
`
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"nausea" : {
2021-08-23 22:55:07 +02:00
label : "Nausée" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "rollTest" ,
"symptom" : true ,
"script" : `
2021-07-15 14:28:19 +02:00
if ( this . actor . isOwner && args . test . result . outcome == "failure" )
2021-02-12 15:21:58 +01:00
{
let applicableCharacteristics = [ "ws" , "bs" , "s" , "fel" , "ag" , "t" , "dex" ]
2021-07-15 14:28:19 +02:00
if ( applicableCharacteristics . includes ( args . test . result . characteristic ) )
2021-02-12 15:21:58 +01:00
this . actor . addCondition ( "stunned" )
2022-10-02 09:44:39 +02:00
else if ( args . test . result . skill && applicableCharacteristics . includes ( args . test . result . skill . system . characteristic . value ) )
2021-02-12 15:21:58 +01:00
this . actor . addCondition ( "stunned" )
2021-07-15 14:28:19 +02:00
else if ( args . test . result . weapon )
2021-02-12 15:21:58 +01:00
this . actor . addCondition ( "stunned" )
}
`
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"pox" : {
2021-08-23 22:55:07 +02:00
label : "Démangeaisons" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "prefillDialog" ,
"symptom" : true ,
"script" : `
2021-02-12 15:21:58 +01:00
if ( args . type == "characteristic" && args . item == "fel" )
args . prefillModifiers . modifier -= 10
else if ( args . type == "skill" )
{
2021-07-15 14:28:19 +02:00
if ( args . item . characteristic . value == "fel" )
2021-02-12 15:21:58 +01:00
args . prefillModifiers . modifier -= 10
}
} `
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
} ,
"wounded" : {
2021-08-23 22:55:07 +02:00
label : "Blessé" ,
icon : "modules/wfrp4e-core/icons/diseases/disease.png" ,
transfer : true ,
flags : {
wfrp4e : {
"effectApplication" : "actor" ,
"effectTrigger" : "invoke" ,
"symptom" : true ,
"script" : `
2021-07-15 14:28:19 +02:00
if ( args . actor . isOwner )
2021-02-12 15:21:58 +01:00
{
args . actor . setupSkill ( "Résistance" , { absolute : { difficulty : "average" } } ) . then ( setupData => {
args . actor . basicTest ( setupData ) . then ( test =>
{
2021-07-15 14:28:19 +02:00
if ( test . result . outcome == "failure" )
2021-02-12 15:21:58 +01:00
fromUuid ( "Compendium.wfrp4e-core.diseases.kKccDTGzWzSXCBOb" ) . then ( disease => {
2022-10-02 09:44:39 +02:00
args . actor . createEmbeddedDocuments ( "Item" , [ disease . toObject ( ) ] )
2021-02-12 15:21:58 +01:00
} )
} )
} )
} `
}
2021-08-23 22:55:07 +02:00
}
2021-02-12 15:21:58 +01:00
}
}
game . wfrp4e . config . effectApplication = {
2021-08-23 22:55:07 +02:00
"actor" : "Acteur" ,
"equipped" : "Lorsque l'item est équipé" ,
"apply" : "Apliqué lorsqu'une cible est présente" ,
"damage" : "Apliqué lorsqu'un Item fait des dégâts" ,
2021-02-12 15:21:58 +01:00
}
game . wfrp4e . config . applyScope = {
2021-08-23 22:55:07 +02:00
"actor" : "Acteur" ,
"item" : "Item"
2021-02-12 15:21:58 +01:00
}
game . wfrp4e . config . effectTriggers = {
2021-08-23 22:55:07 +02:00
"invoke" : "Appliqué manuellement" ,
"oneTime" : "Immediat" ,
"dialogChoice" : "Choix par un Dialogue" ,
"prefillDialog" : "Dialogue pré-remplie" ,
"prePrepareData" : "Pré-Préparation des données" ,
"prePrepareItems" : "Pré-préparation des Items d'Acteurs" ,
"prepareData" : "Préparation des données" ,
"preWoundCalc" : "Avant le calcul des Blessures" ,
"woundCalc" : "Calcul des Blessures" ,
"preApplyDamage" : "Avant l'application des Dégâts" ,
"applyDamage" : "Application des Dégâts" ,
"preTakeDamage" : "Avant de prendre les Dégâts" ,
"takeDamage" : "Prise des Dégâts" ,
"preApplyCondition" : "Avant l'application d'un Etat" ,
"applyCondition" : "Application d'Etat" ,
"prePrepareItem" : "Avant la préparation d'un Item" ,
"prepareItem" : "Préparation d'Item" ,
"preRollTest" : "Avant le lancement du Test" ,
"preRollWeaponTest" : "Avant le lancement d'un Test d'Arme" ,
"preRollCastTest" : "Avant le lancement d'un Test d'Incantation" ,
"preChannellingTest" : "Avant le lancement d'un Test de Focalisation" ,
"preRollPrayerTest" : "Avant le lancement d'un Test de Prière" ,
"preRollTraitTest" : "Avant le lancement d'un Test de Trait" ,
"rollTest" : "Lancement du Test" ,
"rollIncomeTest" : "Lancement d'un Test de Revenu" ,
"rollWeaponTest" : "Lancement d'un Test d'Arme" ,
"rollCastTest" : "Lancement d'un Test d'Incantation" ,
"rollChannellingTest" : "Lancement d'un Test de Focalisation" ,
"rollPrayerTest" : "Lancement d'un Test de Prière" ,
"rollTraitTest" : "Lancement d'un Test de Trait" ,
"preOpposedAttacker" : "Avant l'opposition de l'Attaquant" ,
"preOpposedDefender" : "Avant l'opposition du Défenseur" ,
"opposedAttacker" : "Opposition de l'Attaquant" ,
"opposedDefender" : "Opposition du Défenseur" ,
"calculateOpposedDamage" : "Calcul des Dếgats suite au Test Opposé" ,
"targetPrefillDialog" : "Pré-remplir le dialogue de la cible" ,
"getInitiativeFormula" : "Initiative" ,
"endTurn" : "Fin du Tour" ,
"endRound" : "Fin du Round" ,
"endCombat" : "Fin du Combat"
2021-02-12 15:21:58 +01:00
}
game . wfrp4e . config . effectPlaceholder = {
2021-08-23 22:55:07 +02:00
"invoke" :
` Cet effet est uniquement appliqué lorsque le bouton "Appliquer" est cliqué.
2021-02-12 15:21:58 +01:00
args :
none ` ,
2021-08-23 22:55:07 +02:00
"oneTime" :
` Cet effet s'applique une seule fois, lorsqu'il s'applique.
2021-02-12 15:21:58 +01:00
args :
actor : l 'acteur qui possède l' effet
` ,
2021-08-23 22:55:07 +02:00
"prefillDialog" :
` Cet effet s'applique avant d'afficher la fenêtre de Lancer et est destiné à changer les valeurs pré-chargées dans la section des bonus/malus.
2021-02-12 15:21:58 +01:00
args :
prefillModifiers : { modifier , difficulty , slBonus , successBonus }
type : string , 'weapon' , 'skill' 'characteristic' , etc .
item : l ' objet du type sus - mentionné
options : Autres détails à propos du test ( options . rest ou options . mutate par exemple )
Exemple :
if ( args . type == "skill" && args . item . name == "Atléthisme" ) args . prefillModifiers . modifier += 10 ` ,
2021-08-23 22:55:07 +02:00
"prePrepareData" :
` Cet effet est appliqué avant le calcul des paramètres et données de l'acteur.
2021-02-12 15:21:58 +01:00
args :
actor : actor who owns the effect
` ,
2021-08-23 22:55:07 +02:00
"prePrepareItems" :
` Cet effet est appliqué avant que les Items soient triés et traités.
2021-02-12 15:21:58 +01:00
actor : l 'acteur qui possède l' effet
` ,
2021-08-23 22:55:07 +02:00
"prepareData" :
` Cet effet est appliqué avant le calcul des paramètres et données de l'acteur.
2021-02-12 15:21:58 +01:00
args :
actor : l 'acteur qui possède l' effet
` ,
2021-08-23 22:55:07 +02:00
"preWoundCalc" :
` Cet effet est apliqué juste avant le calcul des blessures, idéal pour échanger des caractéristiues ou ajouter des multiplicateurs.
2021-02-12 15:21:58 +01:00
actor : l 'acteur qui possède l' effet
sb : Bonus de Force
tb : Bonus d ' Endurance
wpb : Bonus de FM
multiplier : {
sb : Multiplicateur du SB
tb : Multiplicateur du TB
wpb : Multiplicateur du WPB
}
e . g . pour Dur à Cuire : "args.multiplier.tb += 1"
` ,
2021-08-23 22:55:07 +02:00
"woundCalc" :
` Cet effet s'applique après le calcul des Blessures, idéal pour mutiplier le résultat.
2021-02-12 15:21:58 +01:00
args :
actor : l 'acteur qui possède l' effet
wounds : les blessures calculées
e . g . pour Nuée : "wounds *= 5"
` ,
2021-08-23 22:55:07 +02:00
"preApplyDamage" :
` Cet effet s'applique avant d'appliquer les dégats durant un Test Opposé
2021-02-12 15:21:58 +01:00
args :
actor : l ' acteur qui encaisse les dégâts
attacker : l 'acteur qui porte l' attaque
2021-07-15 14:28:19 +02:00
opposedTest : l ' objet qui détaille le Test Opposé
2021-02-12 15:21:58 +01:00
damageType : le type de dégâts sélectionné ( ignorer le Bonus d ' Endurance , les PA , etc ... )
` ,
2021-08-23 22:55:07 +02:00
"applyDamage" :
` Cet effet s'applique après que les dégâts aient été calculés lors d'un Test Opposé, mais avant que les dêgats soient appliqués sur l'acteur.
2021-02-12 15:21:58 +01:00
args :
actor : l ' acteur qui encaisse les dégâts
attacker : l 'acteur qui porte l' attaque
2021-07-15 14:28:19 +02:00
opposedTest : l ' objet qui détaille le Test Opposé
2021-02-12 15:21:58 +01:00
damageType : le type de dégâts sélectionné ( ignorer le Bonus d ' Endurance , les PA , etc ... )
totalWoundLoss : les Blessures perdues après calculs
AP : les données concernant les PA utilisés
updateMsg : le début de la chaîne de caractère pour le message d ' information
messageElements : un tableau de chaîne de caractères listant comment et pourquoi les dommages ont été modifiés
` ,
2021-08-23 22:55:07 +02:00
"preTakeDamage" :
` Cet effet s'applique avant d'encaisser les dommages d'un Test Opposé
2021-02-12 15:21:58 +01:00
args :
actor : l ' acteur qui encaisse les dégâts
attacker : l 'acteur qui porte l' attaque
2021-07-15 14:28:19 +02:00
opposedTest : l ' objet qui détaille le Test Opposé
2021-02-12 15:21:58 +01:00
damageType : le type de dégâts sélectionné ( ignorer le Bonus d ' Endurance , les PA , etc ... )
` ,
2021-08-23 22:55:07 +02:00
"takeDamage" :
` Cet effet s'applique après le calcul des dommages d'un Test Opposé, mais avant que l'acteur ne les encaisse.
2021-02-12 15:21:58 +01:00
args :
actor : l ' acteur qui encaisse les dégâts
attacker : l 'acteur qui porte l' attaque
2021-07-15 14:28:19 +02:00
opposedTest : l ' objet qui détaille le Test Opposé
2021-02-12 15:21:58 +01:00
damageType : le type de dégâts sélectionné ( ignorer le Bonus d ' Endurance , les PA , etc ... )
totalWoundLoss : les Blessures perdues après calculs
AP : les données concernant les PA utilisés
updateMsg : le début de la chaîne de caractère pour le message d ' information
messageElements : un tableau de chaîne de caractères listant comment et pourquoi les dommages ont été modifiés
` ,
2021-08-23 22:55:07 +02:00
"preApplyCondition" :
` Cet effet s'applique avant qu'un état ne s'applique.
2021-02-12 15:21:58 +01:00
args :
effect : l ' état à appliquer
data : {
msg : Le message de tchat à propos de l 'application de l' Etat
< autres données , selon l ' état >
}
` ,
2021-08-23 22:55:07 +02:00
"applyCondition" :
` Cette effet s'applique après que les effets d'un état aient été appliqués.
2021-02-12 15:21:58 +01:00
args :
effect : l ' état à appliquer
data : {
messageData : Le message de tchat à propos de l 'application de l' Etat
< autres données , selon l ' état >
}
` ,
2021-08-23 22:55:07 +02:00
"prePrepareItem" :
` Cet effet est appliqué avant qu'un item soit traité lors de la phase de clacul des données d'acteur.
2021-02-12 15:21:58 +01:00
args :
item : l ' item à traité
` ,
2021-08-23 22:55:07 +02:00
"prepareItem" :
` Cet effet est appliqué après qu'un item soit traité lors de la phase de clacul des données d'acteur.
2021-02-12 15:21:58 +01:00
args :
item : l ' item traité
` ,
2021-08-23 22:55:07 +02:00
"preRollTest" :
` Cet effet est appliqué avant qu'un Test sois calculé.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"preRollWeaponTest" :
` Cett effet s'applique avant que le résultat du test d'arme soit calculé.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"preRollCastTest" :
` Cet effet est appliqué avant que le test d'Incantation soit calculé.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"preChannellingTest" :
` Cet effet s'applique avant que le Test de Focalisation soit calculé.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"preRollPrayerTest" :
` Cet effet est appliqué avant qu'un Test de Prière soit appliqué.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"preRollTraitTest" :
` Cet effet s'applique avant qu'un Trait soit calculé.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"rollTest" :
` Cet effet s'applique après qu'un Test sois calculé.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"rollIncomeTest" :
` Cet effet s'applique après qu'un test de revenu soit effectué.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"rollWeaponTest" :
` Cet effet s'applique après qu'un Test d'Arme soit calculé.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"rollCastTest" :
` Cet effet s'applique après le calcul du Test d'Incantation.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"rollChannellingTest" :
` Cet effet s'applique après le calcul du Test de Focalisation.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"rollPrayerTest" :
` Cet effet s'applique après le calcul du Test de Prière.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"rollTraitTest" :
` Cet effet s'applique après le calcul du Test de Trait.
2021-02-12 15:21:58 +01:00
args :
2021-07-15 14:28:19 +02:00
test : Toutes les donnnées pour évaluer le résultat du test
2021-02-12 15:21:58 +01:00
cardOptions : Les données pour l ' affichage dans le Tchat ( titre , template , etc )
` ,
2021-08-23 22:55:07 +02:00
"preOpposedAttacker" :
` Cet effet s'applique avant le calcul du résultat d'un Test Opposé, en tant qu'attaquant.
2021-02-12 15:21:58 +01:00
args :
attackerTest : le résultat du test de l ' attaquant
defenderTest : le résultat du test du défenseur
2021-07-15 14:28:19 +02:00
opposedTest . result : l ' objet opposedTest . result , avant calcul
2021-02-12 15:21:58 +01:00
` ,
2021-08-23 22:55:07 +02:00
"preOpposedDefender" :
` Cet effet s'applique avant le calcul du résultat d'un Test Opposé, en tant que défenseur.
2021-02-12 15:21:58 +01:00
args :
attackerTest : le résultat du test de l ' attaquant
defenderTest : le résultat du test du défenseur
2021-07-15 14:28:19 +02:00
opposedTest . result : l ' objet opposedTest . result , avant calcul
2021-02-12 15:21:58 +01:00
` ,
2021-08-23 22:55:07 +02:00
"opposedAttacker" :
` Cet effet s'applique après le calcul du résultat d'un Test Opposé, en tant qu'attaquant.
2021-02-12 15:21:58 +01:00
args :
attackerTest : le résultat du test de l ' attaquant
defenderTest : le résultat du test du défenseur
2021-07-15 14:28:19 +02:00
opposedTest . result : l ' objet opposedTest . result , avant calcul
2021-02-12 15:21:58 +01:00
` ,
2021-08-23 22:55:07 +02:00
"opposedDefender" :
` Cet effet s'applique après le calcul du résultat d'un Test Opposé, en tant que défenseur.
2021-02-12 15:21:58 +01:00
args :
attackerTest : le résultat du test de l ' attaquant
defenderTest : le résultat du test du défenseur
2021-07-15 14:28:19 +02:00
opposedTest . result : l ' objet opposedTest . result , avant calcul
2021-02-12 15:21:58 +01:00
` ,
2021-08-23 22:55:07 +02:00
"calculateOpposedDamage" :
` Cet effet s'applique durant les calculs de dégâts d'un Test Opposé. Cet effect est effectué dans le contexte de l'acteur attaquant.
2021-02-12 15:21:58 +01:00
args :
damage : calcul initial des dégâts avant multiplications
damageMultiplier : facteur mutiplicateur basé sur la différence de taille
sizeDiff : la différence numérique en taille , sera utilisé pour ajouter les dégâts / impact
2021-07-15 14:28:19 +02:00
opposedTest . result : détail à propos du Test Opposé
2021-02-12 15:21:58 +01:00
` ,
2021-08-23 22:55:07 +02:00
"getInitiativeFormula" :
` Cet effect s'applque lors de la détermination de l'initiative.
2021-02-12 15:21:58 +01:00
args :
initiative : Valeur d ' intiative calculée
` ,
2021-08-23 22:55:07 +02:00
"targetPrefillDialog" :
` Cet effet est appliqué sur un autre acteur, même si la cible initiale est un acteur, et est destiné à changer les valeurs pré-remplies dans la section des bonus/malus
2021-02-12 15:21:58 +01:00
args :
prefillModifiers : { modifier , difficulty , slBonus , successBonus }
type : string , 'weapon' , 'skill' 'characteristic' , etc .
item : l ' item du type sus - mentionné
options : autres détails à propos du test ( options . rest ou options . mutate par exemple )
Example :
if ( args . type == "skill" && args . item . name == "Atléthisme" ) args . prefillModifiers . modifier += 10 ` ,
2021-08-23 22:55:07 +02:00
"endTurn" :
` Cet effet s'applique à la fin du tour de l'acteur
2021-02-12 15:21:58 +01:00
args :
combat : combat actuel
` ,
2021-08-23 22:55:07 +02:00
"endRound" :
` Cet effet s'execute à la fin du round.
2021-02-12 15:21:58 +01:00
args :
combat : combat actuel
` ,
2021-08-23 22:55:07 +02:00
"endCombat" :
` Cet effet s'applique lorsque le combat se termine
2021-02-12 15:21:58 +01:00
args :
combat : combat actuel
` ,
2021-08-23 22:55:07 +02:00
"this" :
`
2021-02-12 15:21:58 +01:00
Tout les effets ont accès à :
this . actor : l 'acteur executant l' effet
this . effect : l ' effet à executer
this . item : l 'item qui possède l' effet , si l 'effet vient d' un item `
}
}
}
2021-08-23 22:55:07 +02:00
/************************************************************************************/
static perform _ogrekingdom _patch ( ) {
2021-05-27 12:20:50 +02:00
WFRP4E . speciesSkills [ "ogre" ] = [
2021-08-23 22:55:07 +02:00
"Résistance à l'alcool" ,
"Calme" ,
"Résistance" ,
"Pari" ,
"Intimidation" ,
"Langue (Au choix)" ,
"Langue (Grumbarth)" ,
"Langue (Mootland)" ,
"Savoir (Ogres)" ,
"Corps à corps (Base)" ,
"Corps à corps (Bagarre)" ,
"Métier (Cuisiner)" ,
2021-05-27 12:20:50 +02:00
]
WFRP4E . speciesTalents [ "ogre" ] = [
2021-08-23 22:55:07 +02:00
"Sens aiguisé (Odorat), Sens aiguisé (Goût)" ,
"Résistance (Mutation), Obstiné" ,
"Vision nocturne" ,
"Très résistant, Très fort" ,
"Seconde vue, Sixième sens" ,
"Trait - Morsure" ,
"Trait - Taille (Grande)" ,
"Psychologie - Faim d'Ogre" ,
"Psychologie - Met favori (Cible)" ,
"Trait de tribu d'ogre (Au choix)" ,
0
]
2021-05-27 12:20:50 +02:00
}
2021-08-24 21:43:47 +02:00
}