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(102601), // mihono bourbon sparks = [ 302, 3303, 1001201, 1001702, 1001901, 2004302, 2004502, 2012502, 2015202, 2016002, 2016401, 3000201, 10260102, ].map(Spark-id(_)), saddles = [ 2, 6, 7, 10, 11, 12, 14, 15, 17, 18, 21, 23, 25, 26, 27, 33, 34, 49, ].map(Saddle-id(_)) ), sub1 = Veteran( uma = Uma-id(102402), // wedding mayano sparks = [ 203, 3202, 1000701, 1000802, 1001201, 1001803, 2003502, 2003701, 2004301, 2005502, 2012401, 2016402, 10240202, ].map(Spark-id(_)), saddles = [ 1, 2, 6, 7, 10, 11, 12, 14, 15, 16, 18, 21, 23, 25, 26, 27, 33, 34, 48, ].map(Saddle-id(_)) ), sub2 = Veteran( uma = Uma-id(100201), // silence suzuka sparks = [ 203, 1101, 1001901, 1002203, 1002302, 2000101, 2000201, 2001902, 2003501, 2005401, 2016001, 3000102, 10020101, ].map(Spark-id(_)), saddles = [ 2, 6, 10, 11, 12, 14, 15, 17, 18, 21, 25, 26, 27, 33, 34, 40, 42, 44, 45, 46, 49, 59, 61, 63, 65, 111, 113, 117, 126, ].map(Saddle-id(_)) ) ) val trainee = Uma-id(104601) // smart falcon 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)