package Ġcom . r net t . spell book . db Ċ Ċ import Ġcom . r net t . spell book . filter . Attack Type Filter Ċ import Ġcom . r net t . spell book . spell . Actions Ċ import Ġcom . r net t . spell book . spell . Cast ActionType Ċ import Ġcom . r net t . spell book . spell . Condition Ċ import Ġcom . r net t . spell book . spell . Height ening Ċ import Ġcom . r net t . spell book . spell . R arity Ċ import Ġcom . r net t . spell book . spell . Save Ċ import Ġcom . r net t . spell book . spell . School Ċ import Ġcom . r net t . spell book . spell . Spell Ċ import Ġcom . r net t . spell book . spell . Spell List Ċ import Ġcom . r net t . spell book . spell . Spell Type Ċ import Ġcom . r net t . spell book . spell . Sum mon s Ċ import Ġcom . r net t . spell book . spell . Trait Ċ import Ġcom . r net t . spell book . spell . Trait Key Ċ import Ġkotlinx . serialization . builtins . List Serializer Ċ import Ġorg . jetbrains . ex posed . dao . id . Entity ID Ċ import Ġorg . jetbrains . ex posed . sql . Column Ċ import Ġorg . jetbrains . ex posed . sql . Op Ċ import Ġorg . jetbrains . ex posed . sql . Reference Option Ċ import Ġorg . jetbrains . ex posed . sql . Sized Collection Ċ import Ġorg . jetbrains . ex posed . sql . Table Ċ import Ġorg . jetbrains . ex posed . sql . and Ċ import Ġorg . jetbrains . ex posed . sql . batch Insert Ċ import Ġorg . jetbrains . ex posed . sql . delete Where Ċ import Ġorg . jetbrains . ex posed . sql . not Ċ import Ġorg . jetbrains . ex posed . sql . select Ċ import Ġorg . jetbrains . ex posed . sql . selectAll Ċ Ċ val Ġall Tables Ġ= ĠlistOf ( Traits , ĠConditions , ĠSpell s , ĠSpell Traits , ĠSpell Lists , ĠSpell Conditions ) Ċ Ċ object ĠTraits Ġ: ĠString Id Table (" traits ", Ġ" name ", Ġ 5 0 ) Ġ{ ĊĠĠĠ Ġval Ġa on Id Ġ= Ġinteger (" a on _ id ") ĊĠĠĠ Ġval Ġdescription Ġ= Ġtext (" description ") Ċ } Ċ Ċ class ĠDb Trait ( id : ĠEntity ID < String >) Ġ: ĠString Entity ( id ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠString Entity Class < Db Trait >( Traits ) ĊĊĠĠĠ Ġval Ġname Ġget () Ġ= Ġid . value ĊĠĠĠ Ġvar Ġa on Id Ġby ĠTraits . a on Id ĊĠĠĠ Ġvar Ġdescription Ġby ĠTraits . description ĊĊĠĠĠ Ġfun Ġto Trait () Ġ= ĠTrait ( name , Ġa on Id , Ġdescription ) Ċ } Ċ Ċ object ĠSpell Traits Ġ: ĠTable (" spell _ traits ") Ġ{ ĊĠĠĠ Ġval Ġspell Ġ= ĊĠĠĠĠĠĠĠ Ġreference (" spell ", ĠSpell s , ĠonDelete Ġ= ĠReference Option . CASCADE , ĠonUpdate Ġ= ĠReference Option . CASCADE ). index () ĊĠĠĠ Ġval Ġtrait Ġ= ĊĠĠĠĠĠĠĠ Ġreference (" trait ", ĠTraits , ĠonDelete Ġ= ĠReference Option . CASCADE , ĠonUpdate Ġ= ĠReference Option . CASCADE ). index () ĊĊĠĠĠ Ġoverride Ġval Ġprimary Key Ġ= ĠPrimary Key ( spell , Ġtrait ) Ċ } Ċ Ċ object ĠSpell Lists Ġ: ĠTable (" spell _ lists ") Ġ{ ĊĠĠĠ Ġval Ġspell Ġ= ĊĠĠĠĠĠĠĠ Ġreference (" spell ", ĠSpell s , ĠonDelete Ġ= ĠReference Option . CASCADE , ĠonUpdate Ġ= ĠReference Option . CASCADE ). index () ĊĠĠĠ Ġval Ġspell List Ġ= Ġenumeration ByName (" list ", Ġ 2 0 , ĠSpell List :: class ) ĊĊĠĠĠ Ġoverride Ġval Ġprimary Key Ġ= ĠPrimary Key ( spell , Ġspell List ) Ċ } Ċ Ċ object ĠConditions Ġ: ĠString Id Table (" conditions ", Ġ" name ", Ġ 5 0 ) Ġ{ ĊĠĠĠ Ġval Ġcondition Source Ġ= Ġvarchar (" source ", Ġ 1 0 0 ) ĊĠĠĠ Ġval Ġdescription Ġ= Ġtext (" description ") ĊĠĠĠ Ġval Ġa on Id Ġ= Ġinteger (" a on _ id ") ĊĠĠĠ Ġval Ġpositive Ġ= Ġbool (" positive "). nullable () ĊĊĠĠĠ Ġval Ġall Ġby Ġlazy Ġ{ ĠDb Condition . all (). map Ġ{ Ġit . to Condition () Ġ} Ġ} Ċ } Ċ Ċ class ĠDb Condition ( id : ĠEntity ID < String >) Ġ: ĠString Entity ( id ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠString Entity Class < Db Condition >( Conditions ) ĊĊĠĠĠ Ġval Ġname Ġget () Ġ= Ġid . value ĊĠĠĠ Ġvar Ġsource Ġby ĠConditions . condition Source ĊĠĠĠ Ġvar Ġdescription Ġby ĠConditions . description ĊĠĠĠ Ġvar Ġa on Id Ġby ĠConditions . a on Id ĊĠĠĠ Ġvar Ġpositive Ġby ĠConditions . positive ĊĊĠĠĠ Ġfun Ġto Condition () Ġ= ĠCondition ( name , Ġsource , Ġdescription , Ġa on Id , Ġpositive ) Ċ } Ċ Ċ object ĠSpell Conditions Ġ: ĠTable (" spell _ conditions ") Ġ{ ĊĠĠĠ Ġval Ġspell Ġ= ĊĠĠĠĠĠĠĠ Ġreference (" spell ", ĠSpell s , ĠonDelete Ġ= ĠReference Option . CASCADE , ĠonUpdate Ġ= ĠReference Option . CASCADE ). index () ĊĠĠĠ Ġval Ġcondition Ġ= Ġreference ( ĊĠĠĠĠĠĠĠ Ġ" condition ", ĊĠĠĠĠĠĠĠ ĠConditions , ĊĠĠĠĠĠĠĠ ĠonDelete Ġ= ĠReference Option . CASCADE , ĊĠĠĠĠĠĠĠ ĠonUpdate Ġ= ĠReference Option . CASCADE ĊĠĠĠ Ġ). index () ĊĊĠĠĠ Ġoverride Ġval Ġprimary Key Ġ= ĠPrimary Key ( spell , Ġcondition ) Ċ } Ċ Ċ object ĠSpell s Ġ: ĠString Id Table (" spell s ", Ġ" name ", Ġ 2 0 0 ) Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġprimary Key . columns [ 0 ] Ġas ĠColumn < Entity ID < String >> ĊĠĠĠ Ġval Ġlevel Ġ= Ġinteger (" level "). index () ĊĠĠĠ Ġval Ġa on Id Ġ= Ġinteger (" a on _ id ") ĊĠĠĠ Ġval Ġtype Ġ= Ġenumeration ByName (" type ", Ġ 2 0 , ĠSpell Type :: class ). index () ĊĠĠĠ Ġval Ġis C ant rip Ġ= Ġbool (" is _ cant rip ") ĊĠĠĠ Ġval Ġsave Ġ= Ġenumeration ByName (" save ", Ġ 2 0 , ĠSave :: class ). nullable (). index () ĊĠĠĠ Ġval Ġbasic Save Ġ= Ġbool (" basic _ save ") ĊĠĠĠ Ġval Ġrequires Attack Roll Ġ= Ġbool (" required _ attack _ roll "). index () ĊĠĠĠ Ġval Ġspell Source Ġ= Ġvarchar (" source ", Ġ 1 0 0 ) ĊĠĠĠ Ġval Ġmin Actions Ġ= Ġinteger (" min _ actions "). index () ĊĠĠĠ Ġval Ġmax Actions Ġ= Ġinteger (" max _ actions "). index () ĊĠĠĠ Ġval Ġvariable Actions Ġ= Ġbool (" variable _ actions "). index () ĊĠĠĠ Ġval Ġtime Text Ġ= Ġvarchar (" time _ text ", Ġ 2 0 0 ). nullable (). index () ĊĠĠĠ Ġval Ġtrigger Ġ= Ġvarchar (" trigger ", Ġ 5 0 0 ). nullable () ĊĠĠĠ Ġval Ġaction Types Json Ġ= Ġvarchar (" action _ types _ json ", Ġ 2 0 0 ). nullable () ĊĠĠĠ Ġval Ġhas Manip ulate Ġ= Ġbool (" has _ manip ulate "). index () ĊĠĠĠ Ġval Ġrequirements Ġ= Ġvarchar (" requirements ", Ġ 3 0 0 ). nullable () ĊĠĠĠ Ġval Ġrange Ġ= Ġvarchar (" range ", Ġ 2 0 0 ). nullable () ĊĠĠĠ Ġval Ġtargets Ġ= Ġvarchar (" targets ", Ġ 2 0 0 ). nullable () ĊĠĠĠ Ġval Ġduration Ġ= Ġvarchar (" duration ", Ġ 2 0 0 ). nullable () ĊĠĠĠ Ġval Ġs ust ained Ġ= Ġbool (" s ust ained "). index () ĊĠĠĠ Ġval Ġarea Ġ= Ġvarchar (" area ", Ġ 2 0 0 ). nullable () ĊĠĠĠ Ġval Ġdescription Ġ= Ġtext (" description ") ĊĠĠĠ Ġval Ġheight ening Json Ġ= Ġvarchar (" height ening _ json ", Ġ 1 0 0 0 ). nullable () ĊĠĠĠ Ġval Ġr arity Ġ= Ġvarchar (" r arity ", Ġ 2 0 ). index () ĊĠĠĠ Ġval Ġschool Ġ= Ġvarchar (" school ", Ġ 2 0 ). nullable (). index () ĊĠĠĠ Ġval Ġsum mon s Json Ġ= Ġtext (" sum mon s "). nullable (). index () ĊĠĠĠ Ġval Ġpostfix Ġ= Ġtext (" postfix "). nullable () ĊĠĠĠ Ġval Ġspo ilers Ġ= Ġvarchar (" spo ilers ", Ġ 2 0 0 ). nullable () ĊĊĠĠĠ Ġfun Ġis Actions ( actions : ĠInt ) Ġ= Ġsql Expression Ġ{ Ġnot ( variable Actions ). and ( max Actions Ġeq Ġactions ) Ġ} ĊĠĠĠ Ġval Ġis Free Action Ġget () Ġ= Ġsql Expression Ġ{ Ġnot ( variable Actions ). and ( max Actions Ġeq Ġ 0 ) Ġ} ĊĠĠĠ Ġval Ġis Reaction Ġget () Ġ= Ġsql Expression Ġ{ Ġnot ( variable Actions ). and ( max Actions Ġeq Ġ- 1 ) Ġ} ĊĠĠĠ Ġval Ġis Variable Actions : ĠOp < Boolean > Ġget () Ġ= Ġsql Expression Ġ{ Ġvariable Actions Ġeq Ġtrue Ġ} ĊĠĠĠ Ġval Ġis Time Actions : ĠOp < Boolean > Ġget () Ġ= Ġsql Expression Ġ{ Ġtime Text . isNotNull () Ġ} ĊĠĠĠ Ġval Ġis Normal Or Free Actions Ġget () Ġ= Ġsql Expression Ġ{ Ġmin Actions Ġgreater Ġ- 1 Ġ} ĊĠĠĠ Ġfun Ġis Actions LessThan ( actions : ĠInt , Ġinclude Re actions : ĠBoolean Ġ= Ġfalse ): ĠOp < Boolean > Ġ= Ġsql Expression Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġmax Actions Ġless Ġactions ĊĠĠĠĠĠĠĠ Ġif Ġ( include Re actions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġand Ġ( min Actions Ġgreater Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġand Ġ( min Actions Ġgreater Ġ- 1 ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġhas Trigger : ĠOp < Boolean > Ġget () Ġ= Ġsql Expression Ġ{ Ġtrigger . isNotNull () Ġ} ĊĊĠĠĠ Ġ// ĠĠĠ Ġfun Ġis R arity ( r arity : ĠR arity ) Ġ= Ġsql Expression Ġ{ Ġthis @ Spell s . r arity Ġeq Ġr arity . name Ġ} Ċ // ĠĠĠ Ġfun Ġis School ( school : ĠSchool ) Ġ= Ġsql Expression Ġ{ Ġthis @ Spell s . school Ġeq Ġschool . name Ġ} ĊĠĠĠ Ġval Ġhas Sum mon s : ĠOp < Boolean > Ġget () Ġ= Ġsql Expression Ġ{ Ġsum mon s Json . isNotNull () Ġ} ĊĊĠĠĠ Ġfun Ġall Spo ilers () Ġ= ĠSpell s . slice ( Spell s . spo ilers ). selectAll (). with Distinct ( true ). map NotNull Ġ{ Ġit [ spo ilers ] Ġ} ĊĊĠĠĠ Ġfun Ġis Attack Type ( attack Type : ĠAttack Type Filter ): ĠOp < Boolean > Ġ= Ġsql Expression Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( attack Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAttack Type Filter . Target Save Ġ-> Ġthis @ Spell s . save Ġeq Ġattack Type . save ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAttack Type Filter . Attack Ġ-> Ġthis @ Spell s . requires Attack Roll Ġeq Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown Ġattack Ġtype Ġ$ attack Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġfun Ġhas Actions ( actions : ĠAction Filter ): ĠOp < Boolean > Ġ= Ġsql Expression Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġwhen Ġ( actions ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAction Filter . Reaction Ġ-> Ġthis @ Spell s . is Reaction Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAction Filter . Duration Ġ-> Ġthis @ Spell s . is Time Actions Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Filter . Action Range Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( is Normal Or Free Actions Ġand Ġ( max Actions Ġgreater Eq Ġactions . min ) Ġand Ġ( min Actions Ġless Eq Ġactions . max )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Let (! actions . accept Variable ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġand Ġnot ( is Variable Actions ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Let ( actions . at Will ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot ( has Trigger ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠDb Spell ( id : ĠEntity ID < String >) Ġ: ĠString Entity ( id ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠString Entity Class < Db Spell >( Spell s ) ĊĊĠĠĠ Ġval Ġname Ġget () Ġ= Ġid . value ĊĠĠĠ Ġvar Ġlevel Ġby ĠSpell s . level ĊĠĠĠ Ġvar Ġa on Id Ġby ĠSpell s . a on Id ĊĠĠĠ Ġvar Ġtype Ġby ĠSpell s . type ĊĠĠĠ Ġvar Ġis C ant rip Ġby ĠSpell s . is C ant rip ĊĠĠĠ Ġvar Ġsave Ġby ĠSpell s . save ĊĠĠĠ Ġvar Ġbasic Save Ġby ĠSpell s . basic Save ĊĠĠĠ Ġvar Ġrequires Attack Roll Ġby ĠSpell s . requires Attack Roll ĊĠĠĠ Ġvar Ġsource Ġby ĠSpell s . spell Source ĊĠĠĠ Ġprivate Ġvar Ġmin Actions Ġby ĠSpell s . min Actions ĊĠĠĠ Ġprivate Ġvar Ġmax Actions Ġby ĠSpell s . max Actions ĊĠĠĠ Ġprivate Ġvar Ġvariable Actions Ġby ĠSpell s . variable Actions ĊĠĠĠ Ġprivate Ġvar Ġtime Text Ġby ĠSpell s . time Text ĊĠĠĠ Ġprivate Ġvar Ġtrigger Ġby ĠSpell s . trigger ĊĠĠĠ Ġprivate Ġvar Ġaction Types Json Ġby ĠSpell s . action Types Json ĊĠĠĠ Ġprivate Ġvar Ġhas Manip ulate Ġby ĠSpell s . has Manip ulate ĊĠĠĠ Ġvar Ġrequirements Ġby ĠSpell s . requirements ĊĠĠĠ Ġvar Ġrange Ġby ĠSpell s . range ĊĠĠĠ Ġvar Ġtargets Ġby ĠSpell s . targets ĊĠĠĠ Ġvar Ġduration Ġby ĠSpell s . duration ĊĠĠĠ Ġvar Ġs ust ained Ġby ĠSpell s . s ust ained ĊĠĠĠ Ġvar Ġarea Ġby ĠSpell s . area ĊĠĠĠ Ġvar Ġdescription Ġby ĠSpell s . description ĊĠĠĠ Ġprivate Ġvar Ġheight ening Json Ġby ĠSpell s . height ening Json ĊĠĠĠ Ġprivate Ġvar Ġr arity Ġby ĠSpell s . r arity ĊĠĠĠ Ġprivate Ġvar Ġschool Ġby ĠSpell s . school ĊĠĠĠ Ġprivate Ġvar Ġsum mon s Json Ġby ĠSpell s . sum mon s Json ĊĠĠĠ Ġvar Ġpostfix Ġby ĠSpell s . postfix ĊĠĠĠ Ġvar Ġspo ilers Ġby ĠSpell s . spo ilers ĊĊĠĠĠ Ġprivate Ġvar Ġtraits SI Ġby ĠDb Trait Ġvia ĠSpell Traits ĊĠĠĠ Ġprivate Ġvar Ġconditions SI Ġby ĠDb Condition Ġvia ĠSpell Conditions Ċ Ċ // ĠĠĠ Ġvar Ġdb Traits Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= Ġtraits SI . toSet () Ċ // ĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtraits SI Ġ= ĠSized Collection ( value ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġvar Ġdb Spell Lists Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= Ġspell Lists SI . toSet () Ċ // ĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġspell Lists SI Ġ= ĠSized Collection ( value ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtraits ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtraits SI . map Ġ{ ĠTrait ( it . name , Ġit . a on Id , Ġit . description ) Ġ}. toSet () ĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Will Ġforce Ġa Ġflush , Ġyou Ġprobably Ġwant Ġto Ġuse Ġbatch Ġupdates ") ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Special Traits ( value . map Ġ{ Ġit . key Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtraits SI Ġ= ĠSized Collection ( value . map Ġ{ ĠDb Trait [ it . name ] Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Special Traits ( traits : ĠIterable < Trait Key >) Ġ{ ĊĠĠĠĠĠĠĠ Ġr arity Ġ= Ġ( traits . single OrNull Ġ{ Ġit Ġin ĠR arity Ġ}) ?. name Ġ?: ĠR arity . Common . name ĊĠĠĠĠĠĠĠ Ġschool Ġ= Ġ( traits . single OrNull Ġ{ Ġit Ġin ĠSchool Ġ}) ?. name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġspell Lists ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSpell Lists . slice ( Spell Lists . spell List ). select Ġ{ ĠSpell Lists . spell Ġeq Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit [ Spell Lists . spell List ] Ġ}. toSet () ĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Will Ġforce Ġa Ġflush , Ġyou Ġprobably Ġwant Ġto Ġuse Ġbatch Ġupdates ") ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpell Lists . delete Where Ġ{ ĠSpell Lists . spell Ġeq Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpell Lists . batch Insert ( value , Ġshould Return Generated Values Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ Spell Lists . spell ] Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ Spell Lists . spell List ] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġ_ conditions ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġconditions SI . toSet () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconditions SI Ġ= ĠSized Collection ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġconditions ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ conditions . map Ġ{ Ġit . to Condition () Ġ}. toSet () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ conditions Ġ= Ġvalue . map Ġ{ ĠDb Condition [ it . name ] Ġ}. toSet () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġaction Types ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġaction Types Json ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSpell book DB . json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList Serializer ( Cast ActionType . serializer ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Types Json Ġ= ĠSpell book DB . json . encode ToString ( List Serializer ( Cast ActionType . serializer ()), Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Manip ulate Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . any Ġ{ Ġit Ġ== ĠCast ActionType . Material Ġ|| Ġit Ġ== ĠCast ActionType . S om atic Ġ|| Ġit Ġ== ĠCast ActionType . Focus Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Types Json Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Manip ulate Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġheight ening ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġheight ening Json ?. let Ġ{ ĠSpell book DB . json . decode FromString ( Height ening . serializer (), Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight ening Json Ġ= Ġvalue ?. let Ġ{ ĠSpell book DB . json . encode ToString ( Height ening . serializer (), Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġsum mon s : ĠSum mon s ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsum mon s Json ?. let Ġ{ ĠSpell book DB . json . decode FromString ( Sum mon s . serializer (), Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum mon s Json Ġ= Ġvalue ?. let Ġ{ ĠSpell book DB . json . encode ToString ( Sum mon s . serializer (), Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġactions : ĠActions ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Text Ġ!= Ġnull Ġ-> ĠActions . Time ( time Text !! , Ġtrigger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Actions Ġ-> ĠActions . Variable ( min Actions , Ġmax Actions , Ġtrigger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Actions Ġ== Ġ- 1 Ġ-> ĠActions . Reaction ( trigger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠActions . Constant ( max Actions , Ġtrigger ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Ġ= Ġvalue . trigger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠActions . Constant Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Actions Ġ= Ġvalue . actions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Actions Ġ= Ġvalue . actions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Actions Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠActions . Variable Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Actions Ġ= Ġvalue . min ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Actions Ġ= Ġvalue . max ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Actions Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠActions . Reaction Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Actions Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Actions Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Actions Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠActions . Time Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Text Ġ= Ġvalue . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Actions Ġ= Ġ- 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Actions Ġ= Ġ- 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariable Actions Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Spell ( ĊĠĠĠĠĠĠĠ Ġspell Lists : ĠIterable < Spell List > Ġ= Ġthis . spell Lists , ĊĠĠĠĠĠĠĠ Ġtraits : ĠIterable < Trait > Ġ= Ġthis . traits , ĊĠĠĠĠĠĠĠ Ġconditions : ĠIterable < Condition > Ġ= Ġthis . conditions , ĊĠĠĠ Ġ) Ġ= ĠSpell ( ĊĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠ Ġlevel , ĊĠĠĠĠĠĠĠ Ġa on Id , ĊĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠ Ġis C ant rip , ĊĠĠĠĠĠĠĠ Ġspell Lists . toSet (), ĊĠĠĠĠĠĠĠ Ġtraits . toSet (), ĊĠĠĠĠĠĠĠ Ġsave , ĊĠĠĠĠĠĠĠ Ġbasic Save , ĊĠĠĠĠĠĠĠ Ġrequires Attack Roll , ĊĠĠĠĠĠĠĠ Ġsource , ĊĠĠĠĠĠĠĠ Ġactions , ĊĠĠĠĠĠĠĠ Ġaction Types , ĊĠĠĠĠĠĠĠ Ġrequirements , ĊĠĠĠĠĠĠĠ Ġrange , ĊĠĠĠĠĠĠĠ Ġtargets , ĊĠĠĠĠĠĠĠ Ġduration , ĊĠĠĠĠĠĠĠ Ġs ust ained , ĊĠĠĠĠĠĠĠ Ġarea , ĊĠĠĠĠĠĠĠ Ġdescription , ĊĠĠĠĠĠĠĠ Ġheight ening , ĊĠĠĠĠĠĠĠ Ġsum mon s , ĊĠĠĠĠĠĠĠ Ġpostfix , ĊĠĠĠĠĠĠĠ Ġspo ilers , ĊĠĠĠĠĠĠĠ Ġconditions . toSet () ĊĠĠĠ Ġ) Ċ }