diff --git a/cmd/horsegen/sql/skill-group.sql b/cmd/horsegen/sql/skill-group.sql index b627dcc..0bc0016 100644 --- a/cmd/horsegen/sql/skill-group.sql +++ b/cmd/horsegen/sql/skill-group.sql @@ -3,8 +3,8 @@ WITH skill_groups AS ( ) SELECT g.group_id, - IFNULL(s1.id, 0) AS skill1, - IFNULL(s2.id, 0) AS skill2, + COALESCE(inh_from.id, s1.id, 0) AS skill1, + COALESCE(inh_to.id, s2.id, 0) AS skill2, IFNULL(s3.id, 0) AS skill3, IFNULL(m1.id, 0) AS skill_bad FROM skill_groups g @@ -12,4 +12,6 @@ FROM skill_groups g LEFT JOIN skill_data s2 ON g.group_id = s2.group_id AND s2.group_rate = 2 LEFT JOIN skill_data s3 ON g.group_id = s3.group_id AND s3.group_rate = 3 LEFT JOIN skill_data m1 ON g.group_id = m1.group_id AND m1.group_rate = -1 + LEFT JOIN skill_data inh_to ON s1.id = inh_to.unique_skill_id_1 + LEFT JOIN skill_data inh_from ON s2.unique_skill_id_1 = inh_from.id ORDER BY g.group_id diff --git a/global/skill-group.json b/global/skill-group.json index 007b094..b9c7d8d 100644 --- a/global/skill-group.json +++ b/global/skill-group.json @@ -65,275 +65,343 @@ }, { "skill_group": 10001, - "skill1": 100011 + "skill1": 100011, + "skill2": 900011 }, { "skill_group": 10002, - "skill1": 100021 + "skill1": 100021, + "skill2": 900021 }, { "skill_group": 10003, - "skill1": 100031 + "skill1": 100031, + "skill2": 900031 }, { "skill_group": 10004, - "skill1": 100041 + "skill1": 100041, + "skill2": 900041 }, { "skill_group": 10005, - "skill1": 100051 + "skill1": 100051, + "skill2": 900051 }, { "skill_group": 10006, - "skill1": 100061 + "skill1": 100061, + "skill2": 900061 }, { "skill_group": 10007, - "skill1": 100071 + "skill1": 100071, + "skill2": 900071 }, { "skill_group": 10008, - "skill1": 100081 + "skill1": 100081, + "skill2": 900081 }, { "skill_group": 10009, - "skill1": 100091 + "skill1": 100091, + "skill2": 900091 }, { "skill_group": 10010, - "skill1": 100101 + "skill1": 100101, + "skill2": 900101 }, { "skill_group": 10011, - "skill1": 100111 + "skill1": 100111, + "skill2": 900111 }, { "skill_group": 10012, - "skill1": 100121 + "skill1": 100121, + "skill2": 900121 }, { "skill_group": 10013, - "skill1": 100131 + "skill1": 100131, + "skill2": 900131 }, { "skill_group": 10014, - "skill1": 100141 + "skill1": 100141, + "skill2": 900141 }, { "skill_group": 10015, - "skill1": 100151 + "skill1": 100151, + "skill2": 900151 }, { "skill_group": 10016, - "skill1": 100161 + "skill1": 100161, + "skill2": 900161 }, { "skill_group": 10017, - "skill1": 100171 + "skill1": 100171, + "skill2": 900171 }, { "skill_group": 10018, - "skill1": 100181 + "skill1": 100181, + "skill2": 900181 }, { "skill_group": 10019, - "skill1": 100191 + "skill1": 100191, + "skill2": 900191 }, { "skill_group": 10020, - "skill1": 100201 + "skill1": 100201, + "skill2": 900201 }, { "skill_group": 10021, - "skill1": 100211 + "skill1": 100211, + "skill2": 900211 }, { "skill_group": 10022, - "skill1": 100221 + "skill1": 100221, + "skill2": 900221 }, { "skill_group": 10023, - "skill1": 100231 + "skill1": 100231, + "skill2": 900231 }, { "skill_group": 10024, - "skill1": 100241 + "skill1": 100241, + "skill2": 900241 }, { "skill_group": 10025, - "skill1": 100251 + "skill1": 100251, + "skill2": 900251 }, { "skill_group": 10026, - "skill1": 100261 + "skill1": 100261, + "skill2": 900261 }, { "skill_group": 10027, - "skill1": 100271 + "skill1": 100271, + "skill2": 900271 }, { "skill_group": 10028, - "skill1": 100281 + "skill1": 100281, + "skill2": 900281 }, { "skill_group": 10030, - "skill1": 100301 + "skill1": 100301, + "skill2": 900301 }, { "skill_group": 10032, - "skill1": 100321 + "skill1": 100321, + "skill2": 900321 }, { "skill_group": 10033, - "skill1": 100331 + "skill1": 100331, + "skill2": 900331 }, { "skill_group": 10035, - "skill1": 100351 + "skill1": 100351, + "skill2": 900351 }, { "skill_group": 10037, - "skill1": 100371 + "skill1": 100371, + "skill2": 900371 }, { "skill_group": 10038, - "skill1": 100381 + "skill1": 100381, + "skill2": 900381 }, { "skill_group": 10039, - "skill1": 100391 + "skill1": 100391, + "skill2": 900391 }, { "skill_group": 10040, - "skill1": 100401 + "skill1": 100401, + "skill2": 900401 }, { "skill_group": 10041, - "skill1": 100411 + "skill1": 100411, + "skill2": 900411 }, { "skill_group": 10045, - "skill1": 100451 + "skill1": 100451, + "skill2": 900451 }, { "skill_group": 10046, - "skill1": 100461 + "skill1": 100461, + "skill2": 900461 }, { "skill_group": 10048, - "skill1": 100481 + "skill1": 100481, + "skill2": 900481 }, { "skill_group": 10050, - "skill1": 100501 + "skill1": 100501, + "skill2": 900501 }, { "skill_group": 10052, - "skill1": 100521 + "skill1": 100521, + "skill2": 900521 }, { "skill_group": 10056, - "skill1": 100561 + "skill1": 100561, + "skill2": 900561 }, { "skill_group": 10058, - "skill1": 100581 + "skill1": 100581, + "skill2": 900581 }, { "skill_group": 10059, - "skill1": 100591 + "skill1": 100591, + "skill2": 900591 }, { "skill_group": 10060, - "skill1": 100601 + "skill1": 100601, + "skill2": 900601 }, { "skill_group": 10061, - "skill1": 100611 + "skill1": 100611, + "skill2": 900611 }, { "skill_group": 10069, - "skill1": 100691 + "skill1": 100691, + "skill2": 900691 }, { "skill_group": 10071, - "skill1": 100711 + "skill1": 100711, + "skill2": 900711 }, { "skill_group": 11001, - "skill1": 110011 + "skill1": 110011, + "skill2": 910011 }, { "skill_group": 11003, - "skill1": 110031 + "skill1": 110031, + "skill2": 910031 }, { "skill_group": 11004, - "skill1": 110041 + "skill1": 110041, + "skill2": 910041 }, { "skill_group": 11006, - "skill1": 110061 + "skill1": 110061, + "skill2": 910061 }, { "skill_group": 11011, - "skill1": 110111 + "skill1": 110111, + "skill2": 910111 }, { "skill_group": 11013, - "skill1": 110131 + "skill1": 110131, + "skill2": 910131 }, { "skill_group": 11014, - "skill1": 110141 + "skill1": 110141, + "skill2": 910141 }, { "skill_group": 11015, - "skill1": 110151 + "skill1": 110151, + "skill2": 910151 }, { "skill_group": 11017, - "skill1": 110171 + "skill1": 110171, + "skill2": 910171 }, { "skill_group": 11018, - "skill1": 110181 + "skill1": 110181, + "skill2": 910181 }, { "skill_group": 11023, - "skill1": 110231 + "skill1": 110231, + "skill2": 910231 }, { "skill_group": 11024, - "skill1": 110241 + "skill1": 110241, + "skill2": 910241 }, { "skill_group": 11026, - "skill1": 110261 + "skill1": 110261, + "skill2": 910261 }, { "skill_group": 11030, - "skill1": 110301 + "skill1": 110301, + "skill2": 910301 }, { "skill_group": 11037, - "skill1": 110371 + "skill1": 110371, + "skill2": 910371 }, { "skill_group": 11040, - "skill1": 110401 + "skill1": 110401, + "skill2": 910401 }, { "skill_group": 11045, - "skill1": 110451 + "skill1": 110451, + "skill2": 910451 }, { "skill_group": 11052, - "skill1": 110521 + "skill1": 110521, + "skill2": 910521 }, { "skill_group": 11056, - "skill1": 110561 + "skill1": 110561, + "skill2": 910561 }, { "skill_group": 20001, @@ -1286,274 +1354,342 @@ }, { "skill_group": 90001, + "skill1": 100011, "skill2": 900011 }, { "skill_group": 90002, + "skill1": 100021, "skill2": 900021 }, { "skill_group": 90003, + "skill1": 100031, "skill2": 900031 }, { "skill_group": 90004, + "skill1": 100041, "skill2": 900041 }, { "skill_group": 90005, + "skill1": 100051, "skill2": 900051 }, { "skill_group": 90006, + "skill1": 100061, "skill2": 900061 }, { "skill_group": 90007, + "skill1": 100071, "skill2": 900071 }, { "skill_group": 90008, + "skill1": 100081, "skill2": 900081 }, { "skill_group": 90009, + "skill1": 100091, "skill2": 900091 }, { "skill_group": 90010, + "skill1": 100101, "skill2": 900101 }, { "skill_group": 90011, + "skill1": 100111, "skill2": 900111 }, { "skill_group": 90012, + "skill1": 100121, "skill2": 900121 }, { "skill_group": 90013, + "skill1": 100131, "skill2": 900131 }, { "skill_group": 90014, + "skill1": 100141, "skill2": 900141 }, { "skill_group": 90015, + "skill1": 100151, "skill2": 900151 }, { "skill_group": 90016, + "skill1": 100161, "skill2": 900161 }, { "skill_group": 90017, + "skill1": 100171, "skill2": 900171 }, { "skill_group": 90018, + "skill1": 100181, "skill2": 900181 }, { "skill_group": 90019, + "skill1": 100191, "skill2": 900191 }, { "skill_group": 90020, + "skill1": 100201, "skill2": 900201 }, { "skill_group": 90021, + "skill1": 100211, "skill2": 900211 }, { "skill_group": 90022, + "skill1": 100221, "skill2": 900221 }, { "skill_group": 90023, + "skill1": 100231, "skill2": 900231 }, { "skill_group": 90024, + "skill1": 100241, "skill2": 900241 }, { "skill_group": 90025, + "skill1": 100251, "skill2": 900251 }, { "skill_group": 90026, + "skill1": 100261, "skill2": 900261 }, { "skill_group": 90027, + "skill1": 100271, "skill2": 900271 }, { "skill_group": 90028, + "skill1": 100281, "skill2": 900281 }, { "skill_group": 90030, + "skill1": 100301, "skill2": 900301 }, { "skill_group": 90032, + "skill1": 100321, "skill2": 900321 }, { "skill_group": 90033, + "skill1": 100331, "skill2": 900331 }, { "skill_group": 90035, + "skill1": 100351, "skill2": 900351 }, { "skill_group": 90037, + "skill1": 100371, "skill2": 900371 }, { "skill_group": 90038, + "skill1": 100381, "skill2": 900381 }, { "skill_group": 90039, + "skill1": 100391, "skill2": 900391 }, { "skill_group": 90040, + "skill1": 100401, "skill2": 900401 }, { "skill_group": 90041, + "skill1": 100411, "skill2": 900411 }, { "skill_group": 90045, + "skill1": 100451, "skill2": 900451 }, { "skill_group": 90046, + "skill1": 100461, "skill2": 900461 }, { "skill_group": 90048, + "skill1": 100481, "skill2": 900481 }, { "skill_group": 90050, + "skill1": 100501, "skill2": 900501 }, { "skill_group": 90052, + "skill1": 100521, "skill2": 900521 }, { "skill_group": 90056, + "skill1": 100561, "skill2": 900561 }, { "skill_group": 90058, + "skill1": 100581, "skill2": 900581 }, { "skill_group": 90059, + "skill1": 100591, "skill2": 900591 }, { "skill_group": 90060, + "skill1": 100601, "skill2": 900601 }, { "skill_group": 90061, + "skill1": 100611, "skill2": 900611 }, { "skill_group": 90069, + "skill1": 100691, "skill2": 900691 }, { "skill_group": 90071, + "skill1": 100711, "skill2": 900711 }, { "skill_group": 91001, + "skill1": 110011, "skill2": 910011 }, { "skill_group": 91003, + "skill1": 110031, "skill2": 910031 }, { "skill_group": 91004, + "skill1": 110041, "skill2": 910041 }, { "skill_group": 91006, + "skill1": 110061, "skill2": 910061 }, { "skill_group": 91011, + "skill1": 110111, "skill2": 910111 }, { "skill_group": 91013, + "skill1": 110131, "skill2": 910131 }, { "skill_group": 91014, + "skill1": 110141, "skill2": 910141 }, { "skill_group": 91015, + "skill1": 110151, "skill2": 910151 }, { "skill_group": 91017, + "skill1": 110171, "skill2": 910171 }, { "skill_group": 91018, + "skill1": 110181, "skill2": 910181 }, { "skill_group": 91023, + "skill1": 110231, "skill2": 910231 }, { "skill_group": 91024, + "skill1": 110241, "skill2": 910241 }, { "skill_group": 91026, + "skill1": 110261, "skill2": 910261 }, { "skill_group": 91030, + "skill1": 110301, "skill2": 910301 }, { "skill_group": 91037, + "skill1": 110371, "skill2": 910371 }, { "skill_group": 91040, + "skill1": 110401, "skill2": 910401 }, { "skill_group": 91045, + "skill1": 110451, "skill2": 910451 }, { "skill_group": 91052, + "skill1": 110521, "skill2": 910521 }, { "skill_group": 91056, + "skill1": 110561, "skill2": 910561 }, { diff --git a/horse/skill.go b/horse/skill.go index 5f7b96f..48addf7 100644 --- a/horse/skill.go +++ b/horse/skill.go @@ -211,6 +211,9 @@ type SkillGroupID int32 // skill with the corresponding group rate. // Some skill groups contain only Skill2 or SkillBad, while others may have all // four skills. +// +// As a special case, horsegen lists both unique skills and their inherited +// versions in the skill groups for both. type SkillGroup struct { ID SkillGroupID `json:"skill_group"` // Skill1 is the base version of the skill, either a common (white) skill