horsegen: include uniques and inherits in each others' skill groups

This commit is contained in:
2026-03-09 13:00:29 -04:00
parent 2dd75edc03
commit 2ec8d9cfdb
3 changed files with 211 additions and 70 deletions

View File

@@ -3,8 +3,8 @@ WITH skill_groups AS (
) )
SELECT SELECT
g.group_id, g.group_id,
IFNULL(s1.id, 0) AS skill1, COALESCE(inh_from.id, s1.id, 0) AS skill1,
IFNULL(s2.id, 0) AS skill2, COALESCE(inh_to.id, s2.id, 0) AS skill2,
IFNULL(s3.id, 0) AS skill3, IFNULL(s3.id, 0) AS skill3,
IFNULL(m1.id, 0) AS skill_bad IFNULL(m1.id, 0) AS skill_bad
FROM skill_groups g 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 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 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 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 ORDER BY g.group_id

View File

@@ -65,275 +65,343 @@
}, },
{ {
"skill_group": 10001, "skill_group": 10001,
"skill1": 100011 "skill1": 100011,
"skill2": 900011
}, },
{ {
"skill_group": 10002, "skill_group": 10002,
"skill1": 100021 "skill1": 100021,
"skill2": 900021
}, },
{ {
"skill_group": 10003, "skill_group": 10003,
"skill1": 100031 "skill1": 100031,
"skill2": 900031
}, },
{ {
"skill_group": 10004, "skill_group": 10004,
"skill1": 100041 "skill1": 100041,
"skill2": 900041
}, },
{ {
"skill_group": 10005, "skill_group": 10005,
"skill1": 100051 "skill1": 100051,
"skill2": 900051
}, },
{ {
"skill_group": 10006, "skill_group": 10006,
"skill1": 100061 "skill1": 100061,
"skill2": 900061
}, },
{ {
"skill_group": 10007, "skill_group": 10007,
"skill1": 100071 "skill1": 100071,
"skill2": 900071
}, },
{ {
"skill_group": 10008, "skill_group": 10008,
"skill1": 100081 "skill1": 100081,
"skill2": 900081
}, },
{ {
"skill_group": 10009, "skill_group": 10009,
"skill1": 100091 "skill1": 100091,
"skill2": 900091
}, },
{ {
"skill_group": 10010, "skill_group": 10010,
"skill1": 100101 "skill1": 100101,
"skill2": 900101
}, },
{ {
"skill_group": 10011, "skill_group": 10011,
"skill1": 100111 "skill1": 100111,
"skill2": 900111
}, },
{ {
"skill_group": 10012, "skill_group": 10012,
"skill1": 100121 "skill1": 100121,
"skill2": 900121
}, },
{ {
"skill_group": 10013, "skill_group": 10013,
"skill1": 100131 "skill1": 100131,
"skill2": 900131
}, },
{ {
"skill_group": 10014, "skill_group": 10014,
"skill1": 100141 "skill1": 100141,
"skill2": 900141
}, },
{ {
"skill_group": 10015, "skill_group": 10015,
"skill1": 100151 "skill1": 100151,
"skill2": 900151
}, },
{ {
"skill_group": 10016, "skill_group": 10016,
"skill1": 100161 "skill1": 100161,
"skill2": 900161
}, },
{ {
"skill_group": 10017, "skill_group": 10017,
"skill1": 100171 "skill1": 100171,
"skill2": 900171
}, },
{ {
"skill_group": 10018, "skill_group": 10018,
"skill1": 100181 "skill1": 100181,
"skill2": 900181
}, },
{ {
"skill_group": 10019, "skill_group": 10019,
"skill1": 100191 "skill1": 100191,
"skill2": 900191
}, },
{ {
"skill_group": 10020, "skill_group": 10020,
"skill1": 100201 "skill1": 100201,
"skill2": 900201
}, },
{ {
"skill_group": 10021, "skill_group": 10021,
"skill1": 100211 "skill1": 100211,
"skill2": 900211
}, },
{ {
"skill_group": 10022, "skill_group": 10022,
"skill1": 100221 "skill1": 100221,
"skill2": 900221
}, },
{ {
"skill_group": 10023, "skill_group": 10023,
"skill1": 100231 "skill1": 100231,
"skill2": 900231
}, },
{ {
"skill_group": 10024, "skill_group": 10024,
"skill1": 100241 "skill1": 100241,
"skill2": 900241
}, },
{ {
"skill_group": 10025, "skill_group": 10025,
"skill1": 100251 "skill1": 100251,
"skill2": 900251
}, },
{ {
"skill_group": 10026, "skill_group": 10026,
"skill1": 100261 "skill1": 100261,
"skill2": 900261
}, },
{ {
"skill_group": 10027, "skill_group": 10027,
"skill1": 100271 "skill1": 100271,
"skill2": 900271
}, },
{ {
"skill_group": 10028, "skill_group": 10028,
"skill1": 100281 "skill1": 100281,
"skill2": 900281
}, },
{ {
"skill_group": 10030, "skill_group": 10030,
"skill1": 100301 "skill1": 100301,
"skill2": 900301
}, },
{ {
"skill_group": 10032, "skill_group": 10032,
"skill1": 100321 "skill1": 100321,
"skill2": 900321
}, },
{ {
"skill_group": 10033, "skill_group": 10033,
"skill1": 100331 "skill1": 100331,
"skill2": 900331
}, },
{ {
"skill_group": 10035, "skill_group": 10035,
"skill1": 100351 "skill1": 100351,
"skill2": 900351
}, },
{ {
"skill_group": 10037, "skill_group": 10037,
"skill1": 100371 "skill1": 100371,
"skill2": 900371
}, },
{ {
"skill_group": 10038, "skill_group": 10038,
"skill1": 100381 "skill1": 100381,
"skill2": 900381
}, },
{ {
"skill_group": 10039, "skill_group": 10039,
"skill1": 100391 "skill1": 100391,
"skill2": 900391
}, },
{ {
"skill_group": 10040, "skill_group": 10040,
"skill1": 100401 "skill1": 100401,
"skill2": 900401
}, },
{ {
"skill_group": 10041, "skill_group": 10041,
"skill1": 100411 "skill1": 100411,
"skill2": 900411
}, },
{ {
"skill_group": 10045, "skill_group": 10045,
"skill1": 100451 "skill1": 100451,
"skill2": 900451
}, },
{ {
"skill_group": 10046, "skill_group": 10046,
"skill1": 100461 "skill1": 100461,
"skill2": 900461
}, },
{ {
"skill_group": 10048, "skill_group": 10048,
"skill1": 100481 "skill1": 100481,
"skill2": 900481
}, },
{ {
"skill_group": 10050, "skill_group": 10050,
"skill1": 100501 "skill1": 100501,
"skill2": 900501
}, },
{ {
"skill_group": 10052, "skill_group": 10052,
"skill1": 100521 "skill1": 100521,
"skill2": 900521
}, },
{ {
"skill_group": 10056, "skill_group": 10056,
"skill1": 100561 "skill1": 100561,
"skill2": 900561
}, },
{ {
"skill_group": 10058, "skill_group": 10058,
"skill1": 100581 "skill1": 100581,
"skill2": 900581
}, },
{ {
"skill_group": 10059, "skill_group": 10059,
"skill1": 100591 "skill1": 100591,
"skill2": 900591
}, },
{ {
"skill_group": 10060, "skill_group": 10060,
"skill1": 100601 "skill1": 100601,
"skill2": 900601
}, },
{ {
"skill_group": 10061, "skill_group": 10061,
"skill1": 100611 "skill1": 100611,
"skill2": 900611
}, },
{ {
"skill_group": 10069, "skill_group": 10069,
"skill1": 100691 "skill1": 100691,
"skill2": 900691
}, },
{ {
"skill_group": 10071, "skill_group": 10071,
"skill1": 100711 "skill1": 100711,
"skill2": 900711
}, },
{ {
"skill_group": 11001, "skill_group": 11001,
"skill1": 110011 "skill1": 110011,
"skill2": 910011
}, },
{ {
"skill_group": 11003, "skill_group": 11003,
"skill1": 110031 "skill1": 110031,
"skill2": 910031
}, },
{ {
"skill_group": 11004, "skill_group": 11004,
"skill1": 110041 "skill1": 110041,
"skill2": 910041
}, },
{ {
"skill_group": 11006, "skill_group": 11006,
"skill1": 110061 "skill1": 110061,
"skill2": 910061
}, },
{ {
"skill_group": 11011, "skill_group": 11011,
"skill1": 110111 "skill1": 110111,
"skill2": 910111
}, },
{ {
"skill_group": 11013, "skill_group": 11013,
"skill1": 110131 "skill1": 110131,
"skill2": 910131
}, },
{ {
"skill_group": 11014, "skill_group": 11014,
"skill1": 110141 "skill1": 110141,
"skill2": 910141
}, },
{ {
"skill_group": 11015, "skill_group": 11015,
"skill1": 110151 "skill1": 110151,
"skill2": 910151
}, },
{ {
"skill_group": 11017, "skill_group": 11017,
"skill1": 110171 "skill1": 110171,
"skill2": 910171
}, },
{ {
"skill_group": 11018, "skill_group": 11018,
"skill1": 110181 "skill1": 110181,
"skill2": 910181
}, },
{ {
"skill_group": 11023, "skill_group": 11023,
"skill1": 110231 "skill1": 110231,
"skill2": 910231
}, },
{ {
"skill_group": 11024, "skill_group": 11024,
"skill1": 110241 "skill1": 110241,
"skill2": 910241
}, },
{ {
"skill_group": 11026, "skill_group": 11026,
"skill1": 110261 "skill1": 110261,
"skill2": 910261
}, },
{ {
"skill_group": 11030, "skill_group": 11030,
"skill1": 110301 "skill1": 110301,
"skill2": 910301
}, },
{ {
"skill_group": 11037, "skill_group": 11037,
"skill1": 110371 "skill1": 110371,
"skill2": 910371
}, },
{ {
"skill_group": 11040, "skill_group": 11040,
"skill1": 110401 "skill1": 110401,
"skill2": 910401
}, },
{ {
"skill_group": 11045, "skill_group": 11045,
"skill1": 110451 "skill1": 110451,
"skill2": 910451
}, },
{ {
"skill_group": 11052, "skill_group": 11052,
"skill1": 110521 "skill1": 110521,
"skill2": 910521
}, },
{ {
"skill_group": 11056, "skill_group": 11056,
"skill1": 110561 "skill1": 110561,
"skill2": 910561
}, },
{ {
"skill_group": 20001, "skill_group": 20001,
@@ -1286,274 +1354,342 @@
}, },
{ {
"skill_group": 90001, "skill_group": 90001,
"skill1": 100011,
"skill2": 900011 "skill2": 900011
}, },
{ {
"skill_group": 90002, "skill_group": 90002,
"skill1": 100021,
"skill2": 900021 "skill2": 900021
}, },
{ {
"skill_group": 90003, "skill_group": 90003,
"skill1": 100031,
"skill2": 900031 "skill2": 900031
}, },
{ {
"skill_group": 90004, "skill_group": 90004,
"skill1": 100041,
"skill2": 900041 "skill2": 900041
}, },
{ {
"skill_group": 90005, "skill_group": 90005,
"skill1": 100051,
"skill2": 900051 "skill2": 900051
}, },
{ {
"skill_group": 90006, "skill_group": 90006,
"skill1": 100061,
"skill2": 900061 "skill2": 900061
}, },
{ {
"skill_group": 90007, "skill_group": 90007,
"skill1": 100071,
"skill2": 900071 "skill2": 900071
}, },
{ {
"skill_group": 90008, "skill_group": 90008,
"skill1": 100081,
"skill2": 900081 "skill2": 900081
}, },
{ {
"skill_group": 90009, "skill_group": 90009,
"skill1": 100091,
"skill2": 900091 "skill2": 900091
}, },
{ {
"skill_group": 90010, "skill_group": 90010,
"skill1": 100101,
"skill2": 900101 "skill2": 900101
}, },
{ {
"skill_group": 90011, "skill_group": 90011,
"skill1": 100111,
"skill2": 900111 "skill2": 900111
}, },
{ {
"skill_group": 90012, "skill_group": 90012,
"skill1": 100121,
"skill2": 900121 "skill2": 900121
}, },
{ {
"skill_group": 90013, "skill_group": 90013,
"skill1": 100131,
"skill2": 900131 "skill2": 900131
}, },
{ {
"skill_group": 90014, "skill_group": 90014,
"skill1": 100141,
"skill2": 900141 "skill2": 900141
}, },
{ {
"skill_group": 90015, "skill_group": 90015,
"skill1": 100151,
"skill2": 900151 "skill2": 900151
}, },
{ {
"skill_group": 90016, "skill_group": 90016,
"skill1": 100161,
"skill2": 900161 "skill2": 900161
}, },
{ {
"skill_group": 90017, "skill_group": 90017,
"skill1": 100171,
"skill2": 900171 "skill2": 900171
}, },
{ {
"skill_group": 90018, "skill_group": 90018,
"skill1": 100181,
"skill2": 900181 "skill2": 900181
}, },
{ {
"skill_group": 90019, "skill_group": 90019,
"skill1": 100191,
"skill2": 900191 "skill2": 900191
}, },
{ {
"skill_group": 90020, "skill_group": 90020,
"skill1": 100201,
"skill2": 900201 "skill2": 900201
}, },
{ {
"skill_group": 90021, "skill_group": 90021,
"skill1": 100211,
"skill2": 900211 "skill2": 900211
}, },
{ {
"skill_group": 90022, "skill_group": 90022,
"skill1": 100221,
"skill2": 900221 "skill2": 900221
}, },
{ {
"skill_group": 90023, "skill_group": 90023,
"skill1": 100231,
"skill2": 900231 "skill2": 900231
}, },
{ {
"skill_group": 90024, "skill_group": 90024,
"skill1": 100241,
"skill2": 900241 "skill2": 900241
}, },
{ {
"skill_group": 90025, "skill_group": 90025,
"skill1": 100251,
"skill2": 900251 "skill2": 900251
}, },
{ {
"skill_group": 90026, "skill_group": 90026,
"skill1": 100261,
"skill2": 900261 "skill2": 900261
}, },
{ {
"skill_group": 90027, "skill_group": 90027,
"skill1": 100271,
"skill2": 900271 "skill2": 900271
}, },
{ {
"skill_group": 90028, "skill_group": 90028,
"skill1": 100281,
"skill2": 900281 "skill2": 900281
}, },
{ {
"skill_group": 90030, "skill_group": 90030,
"skill1": 100301,
"skill2": 900301 "skill2": 900301
}, },
{ {
"skill_group": 90032, "skill_group": 90032,
"skill1": 100321,
"skill2": 900321 "skill2": 900321
}, },
{ {
"skill_group": 90033, "skill_group": 90033,
"skill1": 100331,
"skill2": 900331 "skill2": 900331
}, },
{ {
"skill_group": 90035, "skill_group": 90035,
"skill1": 100351,
"skill2": 900351 "skill2": 900351
}, },
{ {
"skill_group": 90037, "skill_group": 90037,
"skill1": 100371,
"skill2": 900371 "skill2": 900371
}, },
{ {
"skill_group": 90038, "skill_group": 90038,
"skill1": 100381,
"skill2": 900381 "skill2": 900381
}, },
{ {
"skill_group": 90039, "skill_group": 90039,
"skill1": 100391,
"skill2": 900391 "skill2": 900391
}, },
{ {
"skill_group": 90040, "skill_group": 90040,
"skill1": 100401,
"skill2": 900401 "skill2": 900401
}, },
{ {
"skill_group": 90041, "skill_group": 90041,
"skill1": 100411,
"skill2": 900411 "skill2": 900411
}, },
{ {
"skill_group": 90045, "skill_group": 90045,
"skill1": 100451,
"skill2": 900451 "skill2": 900451
}, },
{ {
"skill_group": 90046, "skill_group": 90046,
"skill1": 100461,
"skill2": 900461 "skill2": 900461
}, },
{ {
"skill_group": 90048, "skill_group": 90048,
"skill1": 100481,
"skill2": 900481 "skill2": 900481
}, },
{ {
"skill_group": 90050, "skill_group": 90050,
"skill1": 100501,
"skill2": 900501 "skill2": 900501
}, },
{ {
"skill_group": 90052, "skill_group": 90052,
"skill1": 100521,
"skill2": 900521 "skill2": 900521
}, },
{ {
"skill_group": 90056, "skill_group": 90056,
"skill1": 100561,
"skill2": 900561 "skill2": 900561
}, },
{ {
"skill_group": 90058, "skill_group": 90058,
"skill1": 100581,
"skill2": 900581 "skill2": 900581
}, },
{ {
"skill_group": 90059, "skill_group": 90059,
"skill1": 100591,
"skill2": 900591 "skill2": 900591
}, },
{ {
"skill_group": 90060, "skill_group": 90060,
"skill1": 100601,
"skill2": 900601 "skill2": 900601
}, },
{ {
"skill_group": 90061, "skill_group": 90061,
"skill1": 100611,
"skill2": 900611 "skill2": 900611
}, },
{ {
"skill_group": 90069, "skill_group": 90069,
"skill1": 100691,
"skill2": 900691 "skill2": 900691
}, },
{ {
"skill_group": 90071, "skill_group": 90071,
"skill1": 100711,
"skill2": 900711 "skill2": 900711
}, },
{ {
"skill_group": 91001, "skill_group": 91001,
"skill1": 110011,
"skill2": 910011 "skill2": 910011
}, },
{ {
"skill_group": 91003, "skill_group": 91003,
"skill1": 110031,
"skill2": 910031 "skill2": 910031
}, },
{ {
"skill_group": 91004, "skill_group": 91004,
"skill1": 110041,
"skill2": 910041 "skill2": 910041
}, },
{ {
"skill_group": 91006, "skill_group": 91006,
"skill1": 110061,
"skill2": 910061 "skill2": 910061
}, },
{ {
"skill_group": 91011, "skill_group": 91011,
"skill1": 110111,
"skill2": 910111 "skill2": 910111
}, },
{ {
"skill_group": 91013, "skill_group": 91013,
"skill1": 110131,
"skill2": 910131 "skill2": 910131
}, },
{ {
"skill_group": 91014, "skill_group": 91014,
"skill1": 110141,
"skill2": 910141 "skill2": 910141
}, },
{ {
"skill_group": 91015, "skill_group": 91015,
"skill1": 110151,
"skill2": 910151 "skill2": 910151
}, },
{ {
"skill_group": 91017, "skill_group": 91017,
"skill1": 110171,
"skill2": 910171 "skill2": 910171
}, },
{ {
"skill_group": 91018, "skill_group": 91018,
"skill1": 110181,
"skill2": 910181 "skill2": 910181
}, },
{ {
"skill_group": 91023, "skill_group": 91023,
"skill1": 110231,
"skill2": 910231 "skill2": 910231
}, },
{ {
"skill_group": 91024, "skill_group": 91024,
"skill1": 110241,
"skill2": 910241 "skill2": 910241
}, },
{ {
"skill_group": 91026, "skill_group": 91026,
"skill1": 110261,
"skill2": 910261 "skill2": 910261
}, },
{ {
"skill_group": 91030, "skill_group": 91030,
"skill1": 110301,
"skill2": 910301 "skill2": 910301
}, },
{ {
"skill_group": 91037, "skill_group": 91037,
"skill1": 110371,
"skill2": 910371 "skill2": 910371
}, },
{ {
"skill_group": 91040, "skill_group": 91040,
"skill1": 110401,
"skill2": 910401 "skill2": 910401
}, },
{ {
"skill_group": 91045, "skill_group": 91045,
"skill1": 110451,
"skill2": 910451 "skill2": 910451
}, },
{ {
"skill_group": 91052, "skill_group": 91052,
"skill1": 110521,
"skill2": 910521 "skill2": 910521
}, },
{ {
"skill_group": 91056, "skill_group": 91056,
"skill1": 110561,
"skill2": 910561 "skill2": 910561
}, },
{ {

View File

@@ -211,6 +211,9 @@ type SkillGroupID int32
// skill with the corresponding group rate. // skill with the corresponding group rate.
// Some skill groups contain only Skill2 or SkillBad, while others may have all // Some skill groups contain only Skill2 or SkillBad, while others may have all
// four skills. // four skills.
//
// As a special case, horsegen lists both unique skills and their inherited
// versions in the skill groups for both.
type SkillGroup struct { type SkillGroup struct {
ID SkillGroupID `json:"skill_group"` ID SkillGroupID `json:"skill_group"`
// Skill1 is the base version of the skill, either a common (white) skill // Skill1 is the base version of the skill, either a common (white) skill