1- import { LEVEL } from "../config.mjs" ;
1+ import { LEVEL } from "../config.mjs"
22
33export default class IntoTheOddCharacterData extends foundry . abstract . TypeDataModel {
4- /** @override */
5- static defineSchema ( ) {
6- const fields = foundry . data . fields ;
4+ /** @override */
5+ static defineSchema ( ) {
6+ const fields = foundry . data . fields
77
8- return {
9- biography : new fields . HTMLField ( { required : false , blank : true , initial : "" , textSearch : true } ) ,
10- hp : new fields . SchemaField ( {
11- value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
12- max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
13- } ) ,
14- deprived : new fields . BooleanField ( { required : true , nullable : false , initial : false } ) ,
15- critical : new fields . BooleanField ( { required : true , nullable : false , initial : false } ) ,
16- level : new fields . StringField ( {
17- required : true , nullable : false , initial : LEVEL . NOVICE , choices : Object . fromEntries ( Object . entries ( LEVEL ) . map ( ( [ key , value ] ) =>
18- [ value , { label : `INTOTHEODD.Level.${ value } ` } ] ) )
19- } ) ,
20- abilities : new fields . SchemaField ( {
21- str : new fields . SchemaField ( {
22- value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
23- max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
24- } ) ,
25- dex : new fields . SchemaField ( {
26- value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
27- max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
28- } ) ,
29- wil : new fields . SchemaField ( {
30- value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
31- max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
32- } )
33- } )
34- } ;
8+ return {
9+ biography : new fields . HTMLField ( { required : false , blank : true , initial : "" , textSearch : true } ) ,
10+ hp : new fields . SchemaField ( {
11+ value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
12+ max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
13+ } ) ,
14+ deprived : new fields . BooleanField ( { required : true , nullable : false , initial : false } ) ,
15+ critical : new fields . BooleanField ( { required : true , nullable : false , initial : false } ) ,
16+ level : new fields . StringField ( {
17+ required : true ,
18+ nullable : false ,
19+ initial : LEVEL . NOVICE ,
20+ choices : Object . fromEntries ( Object . entries ( LEVEL ) . map ( ( [ key , value ] ) => [ value , { label : `INTOTHEODD.Level.${ value } ` } ] ) ) ,
21+ } ) ,
22+ abilities : new fields . SchemaField ( {
23+ str : new fields . SchemaField ( {
24+ value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
25+ max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
26+ } ) ,
27+ dex : new fields . SchemaField ( {
28+ value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
29+ max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
30+ } ) ,
31+ wil : new fields . SchemaField ( {
32+ value : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
33+ max : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 10 , min : 0 } ) ,
34+ } ) ,
35+ } ) ,
36+ wealth : new fields . SchemaField ( {
37+ guilders : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 0 , min : 0 } ) ,
38+ shillings : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 0 , min : 0 } ) ,
39+ pennies : new fields . NumberField ( { required : true , nullable : false , integer : true , initial : 0 , min : 0 } ) ,
40+ } ) ,
3541 }
42+ }
3643
37- /** @override */
38- static LOCALIZATION_PREFIXES = [ "INTOTHEODD.Character" ] ;
44+ /** @override */
45+ static LOCALIZATION_PREFIXES = [ "INTOTHEODD.Character" ]
3946
40- /** @override */
41- prepareBaseData ( ) {
42- this . armour = this . parent . items
43- . filter ( item => item . system . subType === "armour" && item . system . equipped )
44- . map ( item => item . system . armour )
45- . reduce ( ( acc , curr ) => acc + curr , 0 ) ;
46- }
47+ /** @override */
48+ prepareBaseData ( ) {
49+ this . armour = this . parent . items
50+ . filter ( ( item ) => item . system . subType === "armour" && item . system . equipped )
51+ . map ( ( item ) => item . system . armour )
52+ . reduce ( ( acc , curr ) => acc + curr , 0 )
53+ }
4754
48- /**
49- * A few minutes of rest and a swig of water recovers all of a character’s lost hp.
50- */
51- shortRest ( ) {
52- if ( this . deprived ) {
53- ui . notifications . warn ( game . i18n . localize ( 'INTOTHEODD.Warns.canNotRest' ) ) ;
54- return ;
55- }
56- return this . parent . update ( { "system.hp.value" : this . hp . max } ) ;
55+ /**
56+ * A few minutes of rest and a swig of water recovers all of a character’s lost hp.
57+ */
58+ shortRest ( ) {
59+ if ( this . deprived ) {
60+ ui . notifications . warn ( game . i18n . localize ( "INTOTHEODD.Warns.canNotRest" ) )
61+ return
5762 }
63+ return this . parent . update ( { "system.hp.value" : this . hp . max } )
64+ }
5865
59- /**
60- * A Full Rest requires a week of downtime at a comfortable location. This restores all Ability Scores
61- */
62- fullRest ( ) {
63- if ( this . deprived ) {
64- ui . notifications . warn ( game . i18n . localize ( 'INTOTHEODD.Warns.canNotRest' ) ) ;
65- return ;
66- }
67- return this . parent . update ( {
68- "system.hp.value" : this . hp . max ,
69- "system.abilities.str.value" : this . abilities . str . max ,
70- "system.abilities.dex.value" : this . abilities . dex . max ,
71- "system.abilities.wil.value" : this . abilities . wil . max
72- } ) ;
66+ /**
67+ * A Full Rest requires a week of downtime at a comfortable location. This restores all Ability Scores
68+ */
69+ fullRest ( ) {
70+ if ( this . deprived ) {
71+ ui . notifications . warn ( game . i18n . localize ( "INTOTHEODD.Warns.canNotRest" ) )
72+ return
7373 }
74-
75- }
74+ return this . parent . update ( {
75+ "system.hp.value" : this . hp . max ,
76+ "system.abilities.str.value" : this . abilities . str . max ,
77+ "system.abilities.dex.value" : this . abilities . dex . max ,
78+ "system.abilities.wil.value" : this . abilities . wil . max ,
79+ } )
80+ }
81+ }
0 commit comments