package Ġcharacter . classes . sh aman . abilities Ċ Ċ import Ġcharacter . Ability Ċ import Ġcharacter . Buff Ċ import Ġcharacter . Proc Ċ import Ġcharacter . Stats Ċ import Ġdata . model . Item Ċ import Ġmechan ics . Rating Ċ import Ġsim . Event Ċ import Ġsim . Sim Participant Ċ Ċ class ĠElement al M ast ery Ġ: ĠAbility () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġname Ġ= Ġ" Element al ĠM ast ery " ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġval Ġid : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġval Ġname : ĠString Ġ= ĠComp anion . name ĊĊĠĠĠ Ġoverride Ġfun Ġgcd Ms ( sp : ĠSim Participant ): ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun Ġcool down Ms ( sp : ĠSim Participant ): ĠInt Ġ= Ġ 1 8 0 0 0 0 ĊĊĠĠĠ Ġprivate Ġfun Ġmake Proc ( buff : ĠBu ff ): ĠProc Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠProc () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġtriggers : ĠList < Trigger > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrigger . FIRE _ DA MAGE _ NON _ PERIOD IC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrigger . F RO ST _ DA MAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrigger . N ATURE _ DA MAGE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġtype : ĠType Ġ= ĠType . STATIC ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġproc ( sp : ĠSim Participant , Ġitems : ĠList < Item > ?, Ġability : ĠAbility ?, Ġevent : ĠEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġthe Ġcrit Ġbuff ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp . consume Buff ( buff ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRef und Ġthe Ġresource Ġcost Ġof Ġthe Ġtriggering Ġability ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ability Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp . add Resource ( ability . resource Cost ( sp ). toInt (), Ġability . resourceType ( sp ), Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġem Buff Ġ= Ġobject Ġ: ĠBu ff () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġname : ĠString Ġ= Ġ" Element al ĠM ast ery Ġ( static )" ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġduration Ms : ĠInt Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġhidden : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmax Char ges : ĠInt Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġproc Ġ= Ġmake Proc ( this ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmodify Stats ( sp : ĠSim Participant ): ĠStats Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAs Ġwith ĠElement al ĠPrecision , Ġthis Ġis Ġaccurate Ġfor Ġpractical ĠSh aman Ġpurposes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStats ( spell Crit Rating Ġ= Ġ 1 0 0 . 0 Ġ* ĠRating . crit Per Pct ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpro cs ( sp : ĠSim Participant ): ĠList < Proc > Ġ= ĠlistOf ( proc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcast ( sp : ĠSim Participant ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsp . add Buff ( em Buff ) ĊĠĠĠ Ġ} Ċ } Ċ