module test/example import std/num/decimal import std/data/linearmap import horse/game-id import horse/global import horse/global/character import horse/global/saddle import horse/global/skill import horse/global/spark import horse/global/uma import horse/legacy val p1 = Legacy( uma = Veteran( uma = Uma-id(102001), // seiun sky sparks = [ 301, // 1* power 2102, // 2* front runner 10200103, // 3* angling and scheming 1000302, // 2* osaka hai 1001001, // 1* japanese derby 1001101, // 1* yasuda kinen 1001701, // 1* qe2 2001402, // 2* non-standard distance 2004301, // 1* focus 2005301, // 1* early lead 2012401, // 1* front runner straightaways 2012502, // 2* front runner corners 2015201, // 1* front runner savvy 2016001, // 1* groundwork 2016102, // 2* thh 2016402, // 2* lone wolf 3000201, // 1* unity cup ].map(Spark-id(_)), saddles = [ 1, // classic triple crown 2, // senior autumn triple crown 4, // senior spring triple crown 5, // tenno sweep 6, // dual grand prix 7, // dual miles 10, // arima kinen 11, // japan cup 12, // derby 13, // tss 14, // takarazuka kinen 15, // tsa 16, // kikuka sho 17, // osaka hai 18, // satsuki sho 21, // yasuda kinen 23, // mile championship 25, // victoria mile 26, // qe2 33, // asahi hai fs 34, // hopeful stakes 96, // mainichi hai ].map(Saddle-id(_)) ), sub1 = Veteran( uma = Uma-id(102601), // mihono bourbon sparks = [ 302, // 2* power 3303, // 3* medium 10260102, // 2* g00 1st 1001201, // 1* takarazuka kinen 1001702, // 2* qe2 1001901, // 1* japan cup 2004302, // 2* focus 2004502, // 2* prudent positioning 2012502, // 2* front corners 2015202, // 2* front savvy 2016002, // 2* groundwork 2016401, // 1* lone wolf 3000201, // 1* unity cup ].map(Spark-id(_)), saddles = [ 2, // senior autumn triple crown 6, // dual grand prix 7, // dual miles 10, // arima kinen 11, // japan cup 12, // derby 14, // takarazuka kinen 15, // tsa 17, // osaka hai 18, // satsuki sho 21, // yasuda kinen 23, // mile championship 25, // victoria mile 26, // qe2 27, // nhk mile cup 33, // asahi hai fs 34, // hopeful stakes 49, // spring stakes ].map(Saddle-id(_)) ), sub2 = Veteran( uma = Uma-id(102401), // mayano top gun sparks = [ 302, // 2* power 1103, // 3* turf 10240101, // 1* flashy landing 1000601, // 1* tss 1001202, // 2* takarazuka kinen 1001502, // 2* kikuka sho 1001601, // 1* tsa 1002102, // 2* hanshin jf 1002301, // 1* arima kinen 2003503, // 3* corner recovery 2003802, // 2* straightaway recovery 2004602, // 2* ramp up 2005502, // 2* final push 2012702, // 2* leader's pride 2016002, // 2* groundwork 3000102, // 2* ura finale ].map(Spark-id(_)), saddles = [ 1, // classic triple crown 2, // senior autumn triple crown 4, // senior spring triple crown 5, // tenno sweep 6, // dual grand prix 7, // dual miles 10, // arima kinen 11, // japan cup 12, // derby 13, // tss 14, // takarazuka kinen 15, // tsa 16, // kikuka sho 18, // satsuki sho 21, // yasuda kinen 23, // mile championship 25, // victoria mile 26, // qe2 34, // hopeful stakes 35, // hanshin jf ].map(Saddle-id(_)) ) ) val p2 = Legacy( uma = Veteran( uma = Uma-id(100201), // silence suzuka sparks = [ 202, // 2* stamina 3301, // 1* medium 10020101, // 1* view from the lead 1000302, // 2* osaka hai 1001201, // 1* takarazuka kinen 1001502, // 2* kikuka sho 1001601, // 1* tsa 1002201, // 1* asahi hai fs 1002301, // 1* arima kinen 2003302, // 2* corner adept 2004302, // 2* focus 2004502, // 2* prudent positioning 2005301, // 1* early lead 2012602, // 2* dodging danger 2012802, // 2* moxie 2016002, // 2* groundwork ].map(Spark-id(_)), saddles = [ 1, // classic triple crown 2, // senior autumn triple crown 6, // dual grand prix 10, // arima kinen 11, // japan cup 12, // derby 14, // takarazuka kinen 15, // tsa 16, // kikuka sho 17, // osaka hai 18, // satsuki sho 21, // yasuda kinen 25, // victoria mile 26, // qe2 33, // asahi hai fs 34, // hopeful stakes 45, // yayoi sho 46, // kinko sho 63, // kobe shimbun hai 65, // mainichi okan ].map(Saddle-id(_)) ), sub1 = Veteran( uma = Uma-id(102001), // seiun sky sparks = [ 301, // 1* power 2102, // 2* front runner 10200103, // 3* angling and scheming 1000302, // 2* osaka hai 1001001, // 1* japanese derby 1001101, // 1* yasuda kinen 1001701, // 1* qe2 2001402, // 2* non-standard distance 2004301, // 1* focus 2005301, // 1* early lead 2012401, // 1* front runner straightaways 2012502, // 2* front runner corners 2015201, // 1* front runner savvy 2016001, // 1* groundwork 2016102, // 2* thh 2016402, // 2* lone wolf 3000201, // 1* unity cup ].map(Spark-id(_)), saddles = [ 1, // classic triple crown 2, // senior autumn triple crown 4, // senior spring triple crown 5, // tenno sweep 6, // dual grand prix 7, // dual miles 10, // arima kinen 11, // japan cup 12, // derby 13, // tss 14, // takarazuka kinen 15, // tsa 16, // kikuka sho 17, // osaka hai 18, // satsuki sho 21, // yasuda kinen 23, // mile championship 25, // victoria mile 26, // qe2 33, // asahi hai fs 34, // hopeful stakes 96, // mainichi hai ].map(Saddle-id(_)) ), sub2 = Veteran( uma = Uma-id(102601), // mihono bourbon sparks = [ 102, // 2* speed 3402, // 2* long 10260101, // 1* g00 1st 1000502, // 2* satsuki sho 1000701, // 1* nhk mile cup 1001201, // 1* takarazuka kinen 1001702, // 2* qe2 2000101, // 1* right-handed 2002102, // 2* sunny days 2004302, // 2* focus 2005301, // 1* early lead 2012502, // 2* front corners 2016001, // 1* groundwork ].map(Spark-id(_)), saddles = [ 1, // classic triple crown 2, // senior autumn triple crown 6, // dual grand prix 10, // arima kinen 11, // japan cup 12, // derby 14, // takarazuka kinen 15, // tsa 16, // kikuka sho 17, // osaka hai 18, // satsuki sho 26, // qe2 27, // nhk mile cup 33, // asahi hai fs 49, // spring stakes ].map(Saddle-id(_)) ) ) val trainee = Uma-id(102402) // wedding mayano pub fun main() val p1a = parent-affinity(trainee, p1, p2.uma.uma) val p2a = parent-affinity(trainee, p2, p1.uma.uma) val (s11a, s12a) = sub-affinity(trainee, p1) val (s21a, s22a) = sub-affinity(trainee, p2) println("trainee: " ++ trainee.show) println("p1: " ++ p1.uma.uma.show ++ " affinity " ++ p1a.show) println("s1-1: " ++ p1.sub1.uma.show ++ " affinity " ++ s11a.show) println("s1-2: " ++ p1.sub2.uma.show ++ " affinity " ++ s12a.show) println("p2: " ++ p2.uma.uma.show ++ " affinity " ++ p1a.show) println("s1-1: " ++ p2.sub1.uma.show ++ " affinity " ++ s21a.show) println("s1-2: " ++ p2.sub2.uma.show ++ " affinity " ++ s22a.show) val inspo = inspiration(trainee, p1, p2) val s = inspiration-gives(inspo, legacy/skills) val a = inspiration-gives(inspo, legacy/aptitudes) println("\nskills:") s.list.foreach() fn((skill, pmf)) println(" " ++ skill.show ++ ": " ++ pmf.show) println("\naptitudes:") a.list.foreach() fn((apt, pmf)) println(" " ++ apt.show ++ ": " ++ pmf.show)