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

View File

@@ -2,6 +2,7 @@ package main
import (
"fmt"
"log/slog"
"strconv"
"strings"
@@ -28,13 +29,15 @@ func newSkillServer(skills []horse.Skill, groups []horse.SkillGroup) *skillServe
for _, skill := range skills {
s.skills[skill.ID] = skill
s.byName[skill.Name] = skill.ID
s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name, Value: skill.Name})
if skill.UniqueOwner != "" {
if skill.Rarity >= 3 {
s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Unique: " + skill.UniqueOwner, Value: skill.Name})
} else {
s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Inherited unique: " + skill.UniqueOwner, Value: skill.Name})
}
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.UniqueOwner, discord.AutocompleteChoiceString{Name: "Unique: " + skill.UniqueOwner, Value: strconv.Itoa(int(skill.ID))})
default:
s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name + " (Inherited)", Value: strconv.Itoa(int(skill.ID))})
s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Inherited unique: " + skill.UniqueOwner, Value: skill.Name})
}
}
for _, g := range groups {
@@ -67,6 +70,9 @@ func (s *skillServer) slash(data discord.SlashCommandInteractionData, e *handler
Components: []discord.LayoutComponent{s.render(horse.SkillID(id))},
Flags: discord.MessageFlagIsComponentsV2,
}
if !data.Bool("share") {
m.Flags |= discord.MessageFlagEphemeral
}
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 {
skill, ok := s.skills[id]
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)
@@ -183,7 +190,11 @@ func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent {
if len(rel) > 1 {
buttons := make([]discord.InteractiveComponent, 0, 4)
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 {
b = b.AsDisabled()
}

View File

@@ -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

View File

@@ -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
},
{

View File

@@ -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