Files
zephyr c0ddc32997
ci/woodpecker/push/horsebot Pipeline was successful
ci/woodpecker/push/zenno Pipeline was successful
horse, mdb, cmd/horsebot: support cards
Fixes #37.
2026-08-02 22:45:34 -04:00

125 lines
6.4 KiB
Go

package horse
type SupportCardID int32
type SupportCard struct {
ID SupportCardID `json:"id"`
Name string `json:"name"`
CharacterID CharacterID `json:"chara_id"`
CharaName string `json:"chara_name"`
Rarity SupportCardRarity `json:"rarity"`
Specialty SupportCardSpecialty `json:"specialty"`
Type SupportCardType `json:"type"`
Effects [11][]SupportCardEffect `json:"effects"`
UniqueEffect *UniqueEffect `json:"unique_effect,omitzero"`
Hints []Hint `json:"hints"`
Outings int32 `json:"outings,omitzero"`
}
type SupportCardRarity int8
//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type SupportCardRarity
const (
R SupportCardRarity = 1
SR SupportCardRarity = 2
SSR SupportCardRarity = 3
)
type SupportCardSpecialty int8
//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type SupportCardSpecialty -trimprefix SupportCard
const (
SupportCardNone SupportCardSpecialty = 0
SupportCardSpeed SupportCardSpecialty = 101
SupportCardPower SupportCardSpecialty = 102
SupportCardGuts SupportCardSpecialty = 103
SupportCardStamina SupportCardSpecialty = 105
SupportCardWit SupportCardSpecialty = 106
)
type SupportCardType int8
const (
SupportCardNormal SupportCardType = 1
SupportCardPal SupportCardType = 2
SupportCardGroup SupportCardType = 3
)
type SupportCardEffectType int8
//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type SupportCardEffectType -linecomment
const (
SupportCardFriendshipBonus SupportCardEffectType = 1 // Friendship Bonus
SupportCardMoodEffect SupportCardEffectType = 2 // Mood Effect
SupportCardSpeedBonus SupportCardEffectType = 3 // Speed Bonus
SupportCardStaminaBonus SupportCardEffectType = 4 // Stamina Bonus
SupportCardPowerBonus SupportCardEffectType = 5 // Power Bonus
SupportCardGutsBonus SupportCardEffectType = 6 // Guts Bonus
SupportCardWitBonus SupportCardEffectType = 7 // Wit Bonus
SupportCardTrainingEffectiveness SupportCardEffectType = 8 // Training Effectiveness
SupportCardInitialSpeed SupportCardEffectType = 9 // Initial Speed
SupportCardInitialStamina SupportCardEffectType = 10 // Initial Stamina
SupportCardInitialPower SupportCardEffectType = 11 // Initial Power
SupportCardInitialGuts SupportCardEffectType = 12 // Initial Guts
SupportCardInitialWit SupportCardEffectType = 13 // Initial Wit
SupportCardInitialFriendship SupportCardEffectType = 14 // Initial Friendship Gauge
SupportCardRaceBonus SupportCardEffectType = 15 // Race Bonus
SupportCardFanBonus SupportCardEffectType = 16 // Fan Bonus
SupportCardHintLevels SupportCardEffectType = 17 // Hint Levels
SupportCardHintFrequency SupportCardEffectType = 18 // Hint Frequency
SupportCardSpecialtyPriority SupportCardEffectType = 19 // Specialty Priority
SupportCardMaxSpeed SupportCardEffectType = 20 // Max Speed
SupportCardMaxStamina SupportCardEffectType = 21 // Max Stamina
SupportCardMaxPower SupportCardEffectType = 22 // Max Power
SupportCardMaxGuts SupportCardEffectType = 23 // Max Guts
SupportCardMaxWit SupportCardEffectType = 24 // Max Wit
SupportCardEventRecovery SupportCardEffectType = 25 // Event Recovery
SupportCardEventEffectiveness SupportCardEffectType = 26 // Event Effectiveness
SupportCardFailureProtection SupportCardEffectType = 27 // Failure Protection
SupportCardEnergyCostReduction SupportCardEffectType = 28 // Energy Cost Reduction
SupportCardMinigameEffectiveness SupportCardEffectType = 29 // Minigame Effectiveness
SupportCardSkillPointBonus SupportCardEffectType = 30 // Skill Point Bonus
SupportCardWitFriendshipRecovery SupportCardEffectType = 31 // Wit Friendship Recovery
// Unique effect types
SupportCardUniqueFriendshipThreshold SupportCardEffectType = 101 // Friendship Gauge threshold
SupportCardUniqueOffSpecialty SupportCardEffectType = 102 // Friendship Gauge threshold and off specialty
SupportCardUniqueColorThresholdTrainingEffectiveness SupportCardEffectType = 103 // Training Effectiveness with multicolor deck
SupportCardUniqueFanScalingTrainingEffectiveness SupportCardEffectType = 104 // Training Effectiveness scaling with fans
SupportCardUniqueColorInitialStats SupportCardEffectType = 105 // Initial Stats for each card
SupportCardUniqueRainbowStack SupportCardEffectType = 106 // stacking bonus per Friendship Training
SupportCardUniqueLowEnergyScaling SupportCardEffectType = 107 // scaling as Energy decreases
SupportCardUniqueMaxEnergyScaling SupportCardEffectType = 108 // scaling with Max Energy
SupportCardUniqueTotalFriendship SupportCardEffectType = 109 // scaling with total Friendship
SupportCardUniqueCardCount SupportCardEffectType = 110 // scaling with the number of supports at the training
SupportCardUniqueFacilityLevel SupportCardEffectType = 111 // scaling with the training facility level
SupportCardUniqueDisableFailure SupportCardEffectType = 112 // chance to disable failure chance
SupportCardUniqueFriendshipTrainingAdditionalEffect SupportCardEffectType = 113 // additional effect active on Friendship Training
)
type SupportCardEffect struct {
Type SupportCardEffectType `json:"type"`
Value int32 `json:"value"`
}
type UniqueEffect struct {
Name string `json:"name"`
Desc string `json:"description"`
CardLevel int32 `json:"card_level"`
Type SupportCardEffectType `json:"type"`
Args []int32 `json:"args"`
Type2 SupportCardEffectType `json:"type2,omitzero"`
Args2 []int32 `json:"args2,omitempty"`
IdleSubRate int32 `json:"idle_mode_sub_rate"`
}
type Hint struct {
SkillID SkillID `json:"skill_id,omitzero"`
Speed int8 `json:"speed,omitzero"`
Stamina int8 `json:"stamina,omitzero"`
Power int8 `json:"power,omitzero"`
Guts int8 `json:"guts,omitzero"`
Wit int8 `json:"wit,omitzero"`
SP int8 `json:"sp,omitzero"`
}