Compare commits

..

4 Commits

5 changed files with 236 additions and 80 deletions

View File

@@ -84,7 +84,7 @@ func main() {
r.Route("/skill", func(r handler.Router) { r.Route("/skill", func(r handler.Router) {
r.SlashCommand("/", skillSrv.slash) r.SlashCommand("/", skillSrv.slash)
r.Autocomplete("/", skillSrv.autocomplete) r.Autocomplete("/", skillSrv.autocomplete)
r.ButtonComponent("/{id}", skillSrv.button) r.ButtonComponent("/swap/{id}", skillSrv.button)
}) })
opts := []bot.ConfigOpt{bot.WithDefaultGateway(), bot.WithEventListeners(r)} opts := []bot.ConfigOpt{bot.WithDefaultGateway(), bot.WithEventListeners(r)}
@@ -143,6 +143,10 @@ var commands = []discord.ApplicationCommandCreate{
Required: true, Required: true,
Autocomplete: true, Autocomplete: true,
}, },
discord.ApplicationCommandOptionBool{
Name: "share",
Description: "Share the skill info",
},
}, },
}, },
} }

View File

@@ -2,6 +2,7 @@ package main
import ( import (
"fmt" "fmt"
"log/slog"
"strconv" "strconv"
"strings" "strings"
@@ -28,15 +29,17 @@ func newSkillServer(skills []horse.Skill, groups []horse.SkillGroup) *skillServe
for _, skill := range skills { for _, skill := range skills {
s.skills[skill.ID] = skill s.skills[skill.ID] = skill
s.byName[skill.Name] = skill.ID s.byName[skill.Name] = skill.ID
switch {
case skill.UniqueOwner == "":
s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name, Value: strconv.Itoa(int(skill.ID))})
case skill.Rarity >= 3:
s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name, Value: skill.Name}) s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name, Value: skill.Name})
if skill.UniqueOwner != "" { s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Unique: " + skill.UniqueOwner, Value: strconv.Itoa(int(skill.ID))})
if skill.Rarity >= 3 { default:
s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Unique: " + skill.UniqueOwner, Value: skill.Name}) s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name + " (Inherited)", Value: strconv.Itoa(int(skill.ID))})
} else {
s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Inherited unique: " + skill.UniqueOwner, Value: skill.Name}) s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Inherited unique: " + skill.UniqueOwner, Value: skill.Name})
} }
} }
}
for _, g := range groups { for _, g := range groups {
s.groups[g.ID] = g s.groups[g.ID] = g
} }
@@ -67,6 +70,9 @@ func (s *skillServer) slash(data discord.SlashCommandInteractionData, e *handler
Components: []discord.LayoutComponent{s.render(horse.SkillID(id))}, Components: []discord.LayoutComponent{s.render(horse.SkillID(id))},
Flags: discord.MessageFlagIsComponentsV2, Flags: discord.MessageFlagIsComponentsV2,
} }
if !data.Bool("share") {
m.Flags |= discord.MessageFlagEphemeral
}
return e.CreateMessage(m) return e.CreateMessage(m)
} }
@@ -94,7 +100,8 @@ func (s *skillServer) button(data discord.ButtonInteractionData, e *handler.Comp
func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent { func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent {
skill, ok := s.skills[id] skill, ok := s.skills[id]
if !ok { if !ok {
return discord.NewContainer(discord.NewTextDisplayf("invalid skill ID %v made it to RenderSkill", id)) slog.Error("invalid skill id", slog.Int("id", int(id)))
return discord.NewContainer(discord.NewTextDisplayf("invalid skill ID %v made it to render", id))
} }
thumburl := fmt.Sprintf("https://gametora.com/images/umamusume/skill_icons/utx_ico_skill_%d.png", skill.IconID) thumburl := fmt.Sprintf("https://gametora.com/images/umamusume/skill_icons/utx_ico_skill_%d.png", skill.IconID)
@@ -183,7 +190,11 @@ func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent {
if len(rel) > 1 { if len(rel) > 1 {
buttons := make([]discord.InteractiveComponent, 0, 4) buttons := make([]discord.InteractiveComponent, 0, 4)
for _, rs := range rel { for _, rs := range rel {
b := discord.NewSecondaryButton(rs.Name, fmt.Sprintf("/skill/%d", rs.ID)) name := rs.Name
if u := s.skills[rs.ID]; u.UniqueOwner != "" && u.Rarity == 1 {
name += " (Inherited)"
}
b := discord.NewSecondaryButton(name, fmt.Sprintf("/skill/swap/%d", rs.ID))
if rs.ID == id { if rs.ID == id {
b = b.AsDisabled() b = b.AsDisabled()
} }

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