%agent: init() %agent: grow() %agent: Dam() %agent: D(e3,e5,o,b{A,T,G,C,OK,Dam}) %agent: E(x) %init: 1 init() %init: 19 grow() %init: 0 Dam() %init: 0 E() %var: 'kbind' 1 %var: 'kslider' 10 %var: 'kslidel' 10 %var: 'krepair' 100 %var: 'kdetach' 1 .,.,init() -> D(b[1]{A}),D(b[1]{T}),. @1000 .,.,init() -> D(b[1]{G}),D(b[1]{C}),. @1000 D(b[1],e3[.]),D(b[1],e5[.]),.,.,grow() -> D(b[1],e3[2]),D(b[1],e5[3]),D(e5[2],b[4]{A}),D(e3[3],b[4]{T}),. @1000 D(b[1],e3[.]),D(b[1],e5[.]),.,.,grow() -> D(b[1],e3[2]),D(b[1],e5[3]),D(e5[2],b[4]{T}),D(e3[3],b[4]{A}),. @1000 D(b[1],e3[.]),D(b[1],e5[.]),.,.,grow() -> D(b[1],e3[2]),D(b[1],e5[3]),D(e5[2],b[4]{G}),D(e3[3],b[4]{C}),. @1000 D(b[1],e3[.]),D(b[1],e5[.]),.,.,grow() -> D(b[1],e3[2]),D(b[1],e5[3]),D(e5[2],b[4]{G}),D(e3[3],b[4]{C}),. @1000 %mod: |grow()|=0 do $ADD 5 Dam(); D(b{A}),Dam() -> D(b{Dam}),. @ 1 D(b{T}),Dam() -> D(b{Dam}),. @ 1 D(b{G}),Dam() -> D(b{Dam}),. @ 1 D(b{C}),Dam() -> D(b{Dam}),. @ 1 %mod: |Dam()|=0 do $ADD 10 E(); E(x[.]),D(o[.]) -> E(x[1]),D(o[1]) @ 'kbind' E(x[1]),D(o[1],e3[2]),D(o[.],e5[2]) <-> E(x[1]),D(o[.],e3[2]),D(o[1],e5[2]) @ 'kslider','kslidel' D(o[_]) -> D(o[.]) @ 'kdetach' 'repair' D(b{Dam},o[_]) -> D(b{OK},o[.]) @ 'krepair' %obs: 'dam_rate' |D(b{Dam})|/|D()| %obs: 'repair_rate' |D(b{OK})|/(|D(b{OK})|+|D(b{Dam})|) %mod: [true] do $TRACK 'repair' [true];