mdb: package for interacting with game's local database
This commit is contained in:
88
mdb/character.go
Normal file
88
mdb/character.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package mdb
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
|
||||
"zombiezen.com/go/sqlite"
|
||||
"zombiezen.com/go/sqlite/sqlitex"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed sql/character.sql
|
||||
characterSQL string
|
||||
//go:embed sql/affinity.sql
|
||||
affinitySQL string
|
||||
//go:embed sql/uma.sql
|
||||
umaSQL string
|
||||
//go:embed sql/conversation.sql
|
||||
conversationSQL string
|
||||
)
|
||||
|
||||
// Characters retrieves all named characters.
|
||||
func Characters(ctx context.Context, db *sqlitex.Pool) ([]horse.Character, error) {
|
||||
return load(ctx, db, make([]horse.Character, 0, 128), characterSQL, func(s *sqlite.Stmt) horse.Character {
|
||||
return horse.Character{
|
||||
ID: horse.CharacterID(s.ColumnInt(0)),
|
||||
Name: s.ColumnText(1),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// AffinitySummary gets precomputed base affinity for all pairs and trios of characters.
|
||||
func AffinitySummary(ctx context.Context, db *sqlitex.Pool) ([]horse.AffinityRelation, error) {
|
||||
return load(ctx, db, nil, affinitySQL, func(s *sqlite.Stmt) horse.AffinityRelation {
|
||||
return horse.AffinityRelation{
|
||||
IDA: s.ColumnInt(0),
|
||||
IDB: s.ColumnInt(1),
|
||||
IDC: s.ColumnInt(2),
|
||||
Affinity: s.ColumnInt(3),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Umas retrieves all trainable Uma variants.
|
||||
func Umas(ctx context.Context, db *sqlitex.Pool) ([]horse.Uma, error) {
|
||||
return load(ctx, db, make([]horse.Uma, 0, 128), umaSQL, func(s *sqlite.Stmt) horse.Uma {
|
||||
return horse.Uma{
|
||||
ID: horse.UmaID(s.ColumnInt(0)),
|
||||
CharacterID: horse.CharacterID(s.ColumnInt(1)),
|
||||
Name: s.ColumnText(2),
|
||||
Variant: s.ColumnText(3),
|
||||
Sprint: horse.AptitudeLevel(s.ColumnInt(5)),
|
||||
Mile: horse.AptitudeLevel(s.ColumnInt(6)),
|
||||
Medium: horse.AptitudeLevel(s.ColumnInt(7)),
|
||||
Long: horse.AptitudeLevel(s.ColumnInt(8)),
|
||||
Front: horse.AptitudeLevel(s.ColumnInt(9)),
|
||||
Pace: horse.AptitudeLevel(s.ColumnInt(10)),
|
||||
Late: horse.AptitudeLevel(s.ColumnInt(11)),
|
||||
End: horse.AptitudeLevel(s.ColumnInt(12)),
|
||||
Turf: horse.AptitudeLevel(s.ColumnInt(13)),
|
||||
Dirt: horse.AptitudeLevel(s.ColumnInt(14)),
|
||||
Unique: horse.SkillID(s.ColumnInt(15)),
|
||||
Skill1: horse.SkillID(s.ColumnInt(16)),
|
||||
Skill2: horse.SkillID(s.ColumnInt(17)),
|
||||
Skill3: horse.SkillID(s.ColumnInt(18)),
|
||||
SkillPL2: horse.SkillID(s.ColumnInt(19)),
|
||||
SkillPL3: horse.SkillID(s.ColumnInt(20)),
|
||||
SkillPL4: horse.SkillID(s.ColumnInt(21)),
|
||||
SkillPL5: horse.SkillID(s.ColumnInt(22)),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func Conversations(ctx context.Context, db *sqlitex.Pool) ([]horse.Conversation, error) {
|
||||
return load(ctx, db, make([]horse.Conversation, 0, 1024), conversationSQL, func(s *sqlite.Stmt) horse.Conversation {
|
||||
return horse.Conversation{
|
||||
CharacterID: horse.CharacterID(s.ColumnInt(0)),
|
||||
Number: s.ColumnInt(1),
|
||||
Location: horse.LobbyConversationLocationID(s.ColumnInt(2)),
|
||||
Chara1: horse.CharacterID(s.ColumnInt(3)),
|
||||
Chara2: horse.CharacterID(s.ColumnInt(4)),
|
||||
Chara3: horse.CharacterID(s.ColumnInt(5)),
|
||||
ConditionType: s.ColumnInt(6),
|
||||
}
|
||||
})
|
||||
}
|
||||
224
mdb/character_test.go
Normal file
224
mdb/character_test.go
Normal file
@@ -0,0 +1,224 @@
|
||||
package mdb_test
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"testing"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
"git.sunturtle.xyz/zephyr/horse/mdb"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
//go:embed testdata/character.sql
|
||||
var characterSQL string
|
||||
|
||||
func TestCharacters(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestCharacters?mode=memory&cache=shared", characterSQL)
|
||||
got, err := mdb.Characters(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Character{
|
||||
{ID: 1001, Name: "Special Week"},
|
||||
{ID: 1002, Name: "Silence Suzuka"},
|
||||
{ID: 1078, Name: "Yamanin Zephyr"},
|
||||
{ID: 2001, Name: "Happy Meek"},
|
||||
{ID: 9001, Name: "Tazuna Hayakawa"},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong characters (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAffinitySummary(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestAffinitySummary?mode=memory&cache=shared", characterSQL)
|
||||
got, err := mdb.AffinitySummary(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.AffinityRelation{
|
||||
{IDA: 1001, IDB: 1002, Affinity: 23},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong affinity (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUmas(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestUmas?mode=memory&cache=shared", characterSQL)
|
||||
got, err := mdb.Umas(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Uma{
|
||||
{
|
||||
ID: 100101,
|
||||
CharacterID: 1001,
|
||||
Name: `[Special Dreamer] Special Week`,
|
||||
Variant: `[Special Dreamer]`,
|
||||
Sprint: 2,
|
||||
Mile: 5,
|
||||
Medium: 7,
|
||||
Long: 7,
|
||||
Front: 1,
|
||||
Pace: 7,
|
||||
Late: 7,
|
||||
End: 5,
|
||||
Turf: 7,
|
||||
Dirt: 1,
|
||||
Unique: 100011,
|
||||
Skill1: 200512,
|
||||
Skill2: 201352,
|
||||
Skill3: 200732,
|
||||
SkillPL2: 200162,
|
||||
SkillPL3: 201351,
|
||||
SkillPL4: 200612,
|
||||
SkillPL5: 200511,
|
||||
},
|
||||
{
|
||||
ID: 100102,
|
||||
CharacterID: 1001,
|
||||
Name: `[Hopp'n♪Happy Heart] Special Week`,
|
||||
Variant: `[Hopp'n♪Happy Heart]`,
|
||||
Sprint: 2,
|
||||
Mile: 5,
|
||||
Medium: 7,
|
||||
Long: 7,
|
||||
Front: 1,
|
||||
Pace: 7,
|
||||
Late: 7,
|
||||
End: 5,
|
||||
Turf: 7,
|
||||
Dirt: 1,
|
||||
Unique: 110011,
|
||||
Skill1: 200462,
|
||||
Skill2: 200592,
|
||||
Skill3: 201132,
|
||||
SkillPL2: 200212,
|
||||
SkillPL3: 200591,
|
||||
SkillPL4: 201611,
|
||||
SkillPL5: 200461,
|
||||
},
|
||||
{
|
||||
ID: 100201,
|
||||
CharacterID: 1002,
|
||||
Name: `[Innocent Silence] Silence Suzuka`,
|
||||
Variant: `[Innocent Silence]`,
|
||||
Sprint: 4,
|
||||
Mile: 7,
|
||||
Medium: 7,
|
||||
Long: 3,
|
||||
Front: 7,
|
||||
Pace: 5,
|
||||
Late: 3,
|
||||
End: 1,
|
||||
Turf: 7,
|
||||
Dirt: 1,
|
||||
Unique: 100021,
|
||||
Skill1: 200432,
|
||||
Skill2: 200552,
|
||||
Skill3: 200712,
|
||||
SkillPL2: 200022,
|
||||
SkillPL3: 200431,
|
||||
SkillPL4: 200542,
|
||||
SkillPL5: 200551,
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong umas (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestConversations(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestConversations?mode=memory&cache=shared", characterSQL)
|
||||
got, err := mdb.Conversations(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Conversation{
|
||||
{
|
||||
CharacterID: 1001,
|
||||
Number: 1,
|
||||
Location: 410,
|
||||
Chara1: 1001,
|
||||
},
|
||||
{
|
||||
CharacterID: 1001,
|
||||
Number: 2,
|
||||
Location: 510,
|
||||
Chara1: 1001,
|
||||
ConditionType: 1,
|
||||
},
|
||||
{
|
||||
CharacterID: 1001,
|
||||
Number: 3,
|
||||
Location: 310,
|
||||
Chara1: 1001,
|
||||
ConditionType: 1,
|
||||
},
|
||||
{
|
||||
CharacterID: 1001,
|
||||
Number: 4,
|
||||
Location: 120,
|
||||
Chara1: 1001,
|
||||
Chara2: 1002,
|
||||
ConditionType: 2,
|
||||
},
|
||||
{
|
||||
CharacterID: 1001,
|
||||
Number: 5,
|
||||
Location: 520,
|
||||
Chara1: 1003,
|
||||
Chara2: 1001,
|
||||
ConditionType: 3,
|
||||
},
|
||||
{
|
||||
CharacterID: 1001,
|
||||
Number: 6,
|
||||
Location: 430,
|
||||
Chara1: 1001,
|
||||
Chara2: 1014,
|
||||
Chara3: 1011,
|
||||
ConditionType: 1,
|
||||
},
|
||||
{
|
||||
CharacterID: 1002,
|
||||
Number: 1,
|
||||
Location: 310,
|
||||
Chara1: 1002,
|
||||
},
|
||||
{
|
||||
CharacterID: 1002,
|
||||
Number: 2,
|
||||
Location: 210,
|
||||
Chara1: 1002,
|
||||
ConditionType: 1,
|
||||
},
|
||||
{
|
||||
CharacterID: 1002,
|
||||
Number: 3,
|
||||
Location: 110,
|
||||
Chara1: 1002,
|
||||
ConditionType: 1,
|
||||
},
|
||||
{
|
||||
CharacterID: 1002,
|
||||
Number: 4,
|
||||
Location: 520,
|
||||
Chara1: 1010,
|
||||
Chara2: 1002,
|
||||
ConditionType: 3,
|
||||
},
|
||||
{
|
||||
CharacterID: 1002,
|
||||
Number: 5,
|
||||
Location: 220,
|
||||
Chara1: 1002,
|
||||
Chara2: 1018,
|
||||
ConditionType: 2,
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong conversations (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
33
mdb/mdb.go
Normal file
33
mdb/mdb.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package mdb
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"zombiezen.com/go/sqlite"
|
||||
"zombiezen.com/go/sqlite/sqlitex"
|
||||
)
|
||||
|
||||
// load scans all results of sql and appends them to r.
|
||||
func load[T any](ctx context.Context, db *sqlitex.Pool, r []T, sql string, row func(*sqlite.Stmt) T) ([]T, error) {
|
||||
conn, err := db.Take(ctx)
|
||||
defer db.Put(conn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stmt, err := conn.Prepare(sql)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for {
|
||||
ok, err := stmt.Step()
|
||||
if err != nil {
|
||||
return r, err
|
||||
}
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
r = append(r, row(stmt))
|
||||
}
|
||||
return r, err
|
||||
}
|
||||
23
mdb/mdb_test.go
Normal file
23
mdb/mdb_test.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package mdb_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"zombiezen.com/go/sqlite"
|
||||
"zombiezen.com/go/sqlite/sqlitex"
|
||||
)
|
||||
|
||||
func testdb(ctx context.Context, uri, schema string) *sqlitex.Pool {
|
||||
db, err := sqlitex.NewPool(uri, sqlitex.PoolOptions{Flags: sqlite.OpenCreate | sqlite.OpenReadWrite | sqlite.OpenMemory | sqlite.OpenSharedCache | sqlite.OpenURI})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
conn, err := db.Take(ctx)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err := sqlitex.ExecScript(conn, schema); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return db
|
||||
}
|
||||
61
mdb/race.go
Normal file
61
mdb/race.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package mdb
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
|
||||
"zombiezen.com/go/sqlite"
|
||||
"zombiezen.com/go/sqlite/sqlitex"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed sql/race.sql
|
||||
raceSQL string
|
||||
//go:embed sql/saddle.sql
|
||||
saddleSQL string
|
||||
//go:embed sql/scenario.sql
|
||||
scenarioSQL string
|
||||
)
|
||||
|
||||
// Races retrieves all races.
|
||||
func Races(ctx context.Context, db *sqlitex.Pool) ([]horse.Race, error) {
|
||||
return load(ctx, db, nil, raceSQL, func(s *sqlite.Stmt) horse.Race {
|
||||
return horse.Race{
|
||||
ID: horse.RaceID(s.ColumnInt(0)),
|
||||
Name: s.ColumnText(1),
|
||||
// TODO(zeph): grade
|
||||
Thumbnail: s.ColumnInt(3),
|
||||
Primary: horse.RaceID(s.ColumnInt(4)),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Saddles retrieves all saddles.
|
||||
func Saddles(ctx context.Context, db *sqlitex.Pool) ([]horse.Saddle, error) {
|
||||
return load(ctx, db, nil, saddleSQL, func(s *sqlite.Stmt) horse.Saddle {
|
||||
return horse.Saddle{
|
||||
ID: horse.SaddleID(s.ColumnInt(0)),
|
||||
Name: s.ColumnText(1),
|
||||
Races: trimZeros(
|
||||
horse.RaceID(s.ColumnInt(2)),
|
||||
horse.RaceID(s.ColumnInt(3)),
|
||||
horse.RaceID(s.ColumnInt(4)),
|
||||
),
|
||||
Type: horse.SaddleType(s.ColumnInt(5)),
|
||||
Primary: horse.SaddleID(s.ColumnInt(6)),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Scenarios retrieves all scenarios.
|
||||
func Scenarios(ctx context.Context, db *sqlitex.Pool) ([]horse.Scenario, error) {
|
||||
return load(ctx, db, nil, scenarioSQL, func(s *sqlite.Stmt) horse.Scenario {
|
||||
return horse.Scenario{
|
||||
ID: horse.ScenarioID(s.ColumnInt(0)),
|
||||
Name: s.ColumnText(1),
|
||||
Title: s.ColumnText(2),
|
||||
}
|
||||
})
|
||||
}
|
||||
230
mdb/race_test.go
Normal file
230
mdb/race_test.go
Normal file
@@ -0,0 +1,230 @@
|
||||
package mdb_test
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"testing"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
"git.sunturtle.xyz/zephyr/horse/mdb"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
//go:embed testdata/race.sql
|
||||
var raceSQL string
|
||||
|
||||
func TestRaces(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestRaces?mode=memory&cache=shared", raceSQL)
|
||||
got, err := mdb.Races(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Race{
|
||||
{
|
||||
ID: 1005,
|
||||
Name: "Satsuki Sho",
|
||||
Thumbnail: 1005,
|
||||
Primary: 1005,
|
||||
},
|
||||
{
|
||||
ID: 1010,
|
||||
Name: "Tokyo Yushun (Japanese Derby)",
|
||||
Thumbnail: 1010,
|
||||
Primary: 1010,
|
||||
},
|
||||
{
|
||||
ID: 1015,
|
||||
Name: "Kikuka Sho",
|
||||
Thumbnail: 1015,
|
||||
Primary: 1015,
|
||||
},
|
||||
{
|
||||
ID: 1026,
|
||||
Name: "Kikuka Sho",
|
||||
Thumbnail: 1015,
|
||||
Primary: 1015,
|
||||
},
|
||||
{
|
||||
ID: 1028,
|
||||
Name: "Satsuki Sho",
|
||||
Thumbnail: 1028,
|
||||
Primary: 1005,
|
||||
},
|
||||
{
|
||||
ID: 1101,
|
||||
Name: "Teio Sho",
|
||||
Thumbnail: 1101,
|
||||
Primary: 1101,
|
||||
},
|
||||
{
|
||||
ID: 2001,
|
||||
Name: "Nikkei Shinshun Hai",
|
||||
Thumbnail: 2001,
|
||||
Primary: 2001,
|
||||
},
|
||||
{
|
||||
ID: 2010,
|
||||
Name: "Spring Stakes",
|
||||
Thumbnail: 2010,
|
||||
Primary: 2010,
|
||||
},
|
||||
{
|
||||
ID: 2035,
|
||||
Name: "Spring Stakes",
|
||||
Thumbnail: 2010,
|
||||
Primary: 2010,
|
||||
},
|
||||
{
|
||||
ID: 3001,
|
||||
Name: "Kyoto Kimpai",
|
||||
Thumbnail: 3001,
|
||||
Primary: 3001,
|
||||
},
|
||||
{
|
||||
ID: 4001,
|
||||
Name: "Manyo Stakes",
|
||||
Thumbnail: 4001,
|
||||
Primary: 4001,
|
||||
},
|
||||
{
|
||||
ID: 4501,
|
||||
Name: "Aster Sho",
|
||||
Thumbnail: 4501,
|
||||
Primary: 4501,
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong races (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSaddles(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestSaddles?mode=memory&cache=shared", raceSQL)
|
||||
got, err := mdb.Saddles(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Saddle{
|
||||
{
|
||||
ID: 1,
|
||||
Name: "Classic Triple Crown",
|
||||
Races: []horse.RaceID{100501, 101001, 101501},
|
||||
Type: 0,
|
||||
Primary: 1,
|
||||
},
|
||||
{
|
||||
ID: 12,
|
||||
Name: "Japanese Derby",
|
||||
Races: []horse.RaceID{101001},
|
||||
Type: 3,
|
||||
Primary: 12,
|
||||
},
|
||||
{
|
||||
ID: 16,
|
||||
Name: "Kikuka Sho",
|
||||
Races: []horse.RaceID{101501},
|
||||
Type: 3,
|
||||
Primary: 16,
|
||||
},
|
||||
{
|
||||
ID: 18,
|
||||
Name: "Satsuki Sho",
|
||||
Races: []horse.RaceID{100501},
|
||||
Type: 3,
|
||||
Primary: 18,
|
||||
},
|
||||
{
|
||||
ID: 36,
|
||||
Name: "Teio Sho",
|
||||
Races: []horse.RaceID{110101},
|
||||
Type: 3,
|
||||
Primary: 36,
|
||||
},
|
||||
{
|
||||
ID: 40,
|
||||
Name: "Nikkei Shinshun Hai",
|
||||
Races: []horse.RaceID{200101},
|
||||
Type: 2,
|
||||
Primary: 40,
|
||||
},
|
||||
{
|
||||
ID: 49,
|
||||
Name: "Spring S.",
|
||||
Races: []horse.RaceID{201001},
|
||||
Type: 2,
|
||||
Primary: 49,
|
||||
},
|
||||
{
|
||||
ID: 74,
|
||||
Name: "Kyoto Kimpai",
|
||||
Races: []horse.RaceID{300101},
|
||||
Type: 1,
|
||||
Primary: 74,
|
||||
},
|
||||
{
|
||||
ID: 144,
|
||||
Name: "Classic Triple Crown",
|
||||
Races: []horse.RaceID{100501, 101001, 102601},
|
||||
Type: 0,
|
||||
Primary: 1,
|
||||
},
|
||||
{
|
||||
ID: 148,
|
||||
Name: "Kikuka Sho",
|
||||
Races: []horse.RaceID{102601},
|
||||
Type: 3,
|
||||
Primary: 16,
|
||||
},
|
||||
{
|
||||
ID: 149,
|
||||
Name: "Spring S.",
|
||||
Races: []horse.RaceID{203501},
|
||||
Type: 2,
|
||||
Primary: 49,
|
||||
},
|
||||
{
|
||||
ID: 154,
|
||||
Name: "Classic Triple Crown",
|
||||
Races: []horse.RaceID{102801, 101001, 101501},
|
||||
Type: 0,
|
||||
Primary: 1,
|
||||
},
|
||||
{
|
||||
ID: 155,
|
||||
Name: "Satsuki Sho",
|
||||
Races: []horse.RaceID{102801},
|
||||
Type: 3,
|
||||
Primary: 18,
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong saddles (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestScenarios(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestScenarios?mode=memory&cache=shared", raceSQL)
|
||||
got, err := mdb.Scenarios(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Scenario{
|
||||
{
|
||||
ID: 1,
|
||||
Name: "URA Finale",
|
||||
Title: "The Beginning: URA Finale",
|
||||
},
|
||||
{
|
||||
ID: 2,
|
||||
Name: "Unity Cup",
|
||||
Title: "Unity Cup: Shine On, Team Spirit!",
|
||||
},
|
||||
{
|
||||
ID: 4,
|
||||
Name: "TS Climax",
|
||||
Title: "Trackblazer: Start of the Climax",
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong scenarios (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
152
mdb/skill.go
Normal file
152
mdb/skill.go
Normal file
@@ -0,0 +1,152 @@
|
||||
package mdb
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"zombiezen.com/go/sqlite"
|
||||
"zombiezen.com/go/sqlite/sqlitex"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed sql/skill-group.sql
|
||||
skillGroupSQL string
|
||||
//go:embed sql/skill.sql
|
||||
skillSQL string
|
||||
)
|
||||
|
||||
// SkillGroups retrieves all skill groups.
|
||||
func SkillGroups(ctx context.Context, db *sqlitex.Pool) ([]horse.SkillGroup, error) {
|
||||
return load(ctx, db, nil, skillGroupSQL, func(s *sqlite.Stmt) horse.SkillGroup {
|
||||
return horse.SkillGroup{
|
||||
ID: horse.SkillGroupID(s.ColumnInt(0)),
|
||||
Skill1: horse.SkillID(s.ColumnInt(1)),
|
||||
Skill2: horse.SkillID(s.ColumnInt(2)),
|
||||
Skill3: horse.SkillID(s.ColumnInt(3)),
|
||||
SkillBad: horse.SkillID(s.ColumnInt(4)),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Skills retrieves all skills.
|
||||
func Skills(ctx context.Context, db *sqlitex.Pool) ([]horse.Skill, error) {
|
||||
return load(ctx, db, nil, skillSQL, func(s *sqlite.Stmt) horse.Skill {
|
||||
return horse.Skill{
|
||||
ID: horse.SkillID(s.ColumnInt(0)),
|
||||
Name: s.ColumnText(1),
|
||||
Description: s.ColumnText(2),
|
||||
Group: horse.SkillGroupID(s.ColumnInt32(3)),
|
||||
Rarity: int8(s.ColumnInt(5)),
|
||||
GroupRate: int8(s.ColumnInt(6)),
|
||||
GradeValue: s.ColumnInt32(7),
|
||||
WitCheck: s.ColumnBool(8),
|
||||
Activations: trimActivations([]horse.Activation{
|
||||
{
|
||||
Precondition: s.ColumnText(9),
|
||||
Condition: s.ColumnText(10),
|
||||
Duration: horse.TenThousandths(s.ColumnInt(11)),
|
||||
DurScale: horse.DurScale(s.ColumnInt(12)),
|
||||
Cooldown: horse.TenThousandths(s.ColumnInt(13)),
|
||||
Abilities: trimAbilities([]horse.Ability{
|
||||
{
|
||||
Type: horse.AbilityType(s.ColumnInt(14)),
|
||||
ValueUsage: horse.AbilityValueUsage(s.ColumnInt(15)),
|
||||
Value: horse.TenThousandths(s.ColumnInt(16)),
|
||||
Target: horse.AbilityTarget(s.ColumnInt(17)),
|
||||
TargetValue: s.ColumnInt32(18),
|
||||
},
|
||||
{
|
||||
Type: horse.AbilityType(s.ColumnInt(19)),
|
||||
ValueUsage: horse.AbilityValueUsage(s.ColumnInt(20)),
|
||||
Value: horse.TenThousandths(s.ColumnInt(21)),
|
||||
Target: horse.AbilityTarget(s.ColumnInt(22)),
|
||||
TargetValue: s.ColumnInt32(23),
|
||||
},
|
||||
{
|
||||
Type: horse.AbilityType(s.ColumnInt(24)),
|
||||
ValueUsage: horse.AbilityValueUsage(s.ColumnInt(25)),
|
||||
Value: horse.TenThousandths(s.ColumnInt(26)),
|
||||
Target: horse.AbilityTarget(s.ColumnInt(27)),
|
||||
TargetValue: s.ColumnInt32(28),
|
||||
},
|
||||
}),
|
||||
},
|
||||
{
|
||||
Precondition: s.ColumnText(29),
|
||||
Condition: s.ColumnText(30),
|
||||
Duration: horse.TenThousandths(s.ColumnInt(31)),
|
||||
DurScale: horse.DurScale(s.ColumnInt(32)),
|
||||
Cooldown: horse.TenThousandths(s.ColumnInt(33)),
|
||||
Abilities: trimAbilities([]horse.Ability{
|
||||
{
|
||||
Type: horse.AbilityType(s.ColumnInt(34)),
|
||||
ValueUsage: horse.AbilityValueUsage(s.ColumnInt(35)),
|
||||
Value: horse.TenThousandths(s.ColumnInt(36)),
|
||||
Target: horse.AbilityTarget(s.ColumnInt(37)),
|
||||
TargetValue: s.ColumnInt32(38),
|
||||
},
|
||||
{
|
||||
Type: horse.AbilityType(s.ColumnInt(39)),
|
||||
ValueUsage: horse.AbilityValueUsage(s.ColumnInt(40)),
|
||||
Value: horse.TenThousandths(s.ColumnInt(41)),
|
||||
Target: horse.AbilityTarget(s.ColumnInt(42)),
|
||||
TargetValue: s.ColumnInt32(43),
|
||||
},
|
||||
{
|
||||
Type: horse.AbilityType(s.ColumnInt(44)),
|
||||
ValueUsage: horse.AbilityValueUsage(s.ColumnInt(45)),
|
||||
Value: horse.TenThousandths(s.ColumnInt(46)),
|
||||
Target: horse.AbilityTarget(s.ColumnInt(47)),
|
||||
TargetValue: s.ColumnInt32(48),
|
||||
},
|
||||
}),
|
||||
},
|
||||
}),
|
||||
UniqueOwner: s.ColumnText(52), // TODO(zeph): should be id, not name
|
||||
Tags: parseTags(s.ColumnText(54)),
|
||||
SPCost: s.ColumnInt(49),
|
||||
IconID: s.ColumnInt(53),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func parseTags(s string) []uint16 {
|
||||
r := make([]uint16, 0, 8)
|
||||
for s != "" {
|
||||
t, u, _ := strings.Cut(s, "/")
|
||||
s = u
|
||||
v, err := strconv.ParseUint(t, 10, 16)
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("parsing skill tags: %w", err))
|
||||
}
|
||||
r = append(r, uint16(v))
|
||||
}
|
||||
return trimZeros(r...)
|
||||
}
|
||||
|
||||
func trimAbilities(s []horse.Ability) []horse.Ability {
|
||||
for len(s) > 0 && s[len(s)-1].Type == 0 {
|
||||
s = s[:len(s)-1]
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func trimActivations(s []horse.Activation) []horse.Activation {
|
||||
for len(s) > 0 && s[len(s)-1].Condition == "" {
|
||||
s = s[:len(s)-1]
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func trimZeros[T comparable](s ...T) []T {
|
||||
var zero T
|
||||
for len(s) > 0 && s[len(s)-1] == zero {
|
||||
s = s[:len(s)-1]
|
||||
}
|
||||
return s
|
||||
}
|
||||
701
mdb/skill_test.go
Normal file
701
mdb/skill_test.go
Normal file
@@ -0,0 +1,701 @@
|
||||
package mdb_test
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"testing"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
"git.sunturtle.xyz/zephyr/horse/mdb"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
//go:embed testdata/skill.sql
|
||||
var skillSQL string
|
||||
|
||||
func TestSkillGroups(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestSkillGroups?mode=memory&cache=shared", skillSQL)
|
||||
got, err := mdb.SkillGroups(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.SkillGroup{
|
||||
{ID: 1035, Skill1: 10351},
|
||||
{ID: 10001, Skill1: 100011, Skill2: 900011},
|
||||
{ID: 10035, Skill1: 100351, Skill2: 900351},
|
||||
{ID: 11024, Skill1: 110241, Skill2: 910241},
|
||||
{ID: 20001, Skill1: 200012, Skill2: 200011, Skill3: 200014, SkillBad: 200013},
|
||||
{ID: 20002, Skill1: 200022, Skill2: 200021, SkillBad: 200023},
|
||||
{ID: 20036, Skill1: 200362, Skill2: 200361},
|
||||
{ID: 20083, Skill1: 200831},
|
||||
{ID: 20180, SkillBad: 201801},
|
||||
{ID: 30001, Skill1: 300011},
|
||||
{ID: 90001, Skill1: 100011, Skill2: 900011},
|
||||
{ID: 90035, Skill1: 100351, Skill2: 900351},
|
||||
{ID: 91024, Skill1: 110241, Skill2: 910241},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong skill groups (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSkills(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestSkills?mode=memory&cache=shared", skillSQL)
|
||||
got, err := mdb.Skills(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Skill{
|
||||
{
|
||||
ID: 10351,
|
||||
Name: "V Is for Victory!",
|
||||
Description: "Moderately increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.",
|
||||
Group: 1035,
|
||||
Rarity: 3,
|
||||
GroupRate: 1,
|
||||
GradeValue: 240,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "is_finalcorner==1&blocked_side_continuetime>=2",
|
||||
Condition: "is_finalcorner==1&corner==0&order<=5",
|
||||
Duration: 50000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 2500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
UniqueOwner: "[Get to Winning!] Winning Ticket",
|
||||
Tags: []uint16{401},
|
||||
SPCost: 0,
|
||||
IconID: 20013,
|
||||
},
|
||||
{
|
||||
ID: 100011,
|
||||
Name: "Shooting Star",
|
||||
Description: "Ride the momentum to increase velocity and very slightly increase acceleration after passing another runner toward the front late-race.",
|
||||
Group: 10001,
|
||||
Rarity: 5,
|
||||
GroupRate: 1,
|
||||
GradeValue: 340,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "phase>=2&order>=1&order_rate<=50&change_order_onetime<0",
|
||||
Duration: 50000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 3500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
{
|
||||
Type: 31,
|
||||
ValueUsage: 1,
|
||||
Value: 1000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
UniqueOwner: "[Special Dreamer] Special Week",
|
||||
Tags: []uint16{401, 403},
|
||||
SPCost: 0,
|
||||
IconID: 20013,
|
||||
},
|
||||
{
|
||||
ID: 100351,
|
||||
Name: "Our Ticket to Win!",
|
||||
Description: "Increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.",
|
||||
Group: 10035,
|
||||
Rarity: 4,
|
||||
GroupRate: 1,
|
||||
GradeValue: 340,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "is_finalcorner==1&blocked_side_continuetime>=2",
|
||||
Condition: "is_finalcorner==1&corner==0&order<=5",
|
||||
Duration: 50000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 3500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
UniqueOwner: "[Get to Winning!] Winning Ticket",
|
||||
Tags: []uint16{401},
|
||||
SPCost: 0,
|
||||
IconID: 20013,
|
||||
},
|
||||
{
|
||||
ID: 110241,
|
||||
Name: "Flowery☆Maneuver",
|
||||
Description: "Increase velocity when passing another runner toward the front on the final corner. If passing toward the back, increase acceleration instead.",
|
||||
Group: 11024,
|
||||
Rarity: 5,
|
||||
GroupRate: 1,
|
||||
GradeValue: 340,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0",
|
||||
Duration: 50000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 3500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0",
|
||||
Duration: 40000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 31,
|
||||
ValueUsage: 1,
|
||||
Value: 4000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
UniqueOwner: "[Sunlight Bouquet] Mayano Top Gun",
|
||||
Tags: []uint16{401, 403},
|
||||
SPCost: 0,
|
||||
IconID: 20013,
|
||||
},
|
||||
{
|
||||
ID: 200011,
|
||||
Name: "Right-Handed ◎",
|
||||
Description: "Increase performance on right-handed tracks.",
|
||||
Group: 20001,
|
||||
Rarity: 1,
|
||||
GroupRate: 2,
|
||||
GradeValue: 174,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "rotation==1",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: 600000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 110,
|
||||
IconID: 10011,
|
||||
},
|
||||
{
|
||||
ID: 200012,
|
||||
Name: "Right-Handed ○",
|
||||
Description: "Moderately increase performance on right-handed tracks.",
|
||||
Group: 20001,
|
||||
Rarity: 1,
|
||||
GroupRate: 1,
|
||||
GradeValue: 129,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "rotation==1",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: 400000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 90,
|
||||
IconID: 10011,
|
||||
},
|
||||
{
|
||||
ID: 200013,
|
||||
Name: "Right-Handed ×",
|
||||
Description: "Moderately decrease performance on right-handed tracks.",
|
||||
Group: 20001,
|
||||
Rarity: 1,
|
||||
GroupRate: -1,
|
||||
GradeValue: -129,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "rotation==1",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: -400000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 50,
|
||||
IconID: 10014,
|
||||
},
|
||||
{
|
||||
ID: 200014,
|
||||
Name: "Right-Handed Demon",
|
||||
Description: "Increase proficiency in right-handed tracks, increasing Speed and Power.",
|
||||
Group: 20001,
|
||||
Rarity: 2,
|
||||
GroupRate: 3,
|
||||
GradeValue: 461,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "rotation==1",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: 600000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
{
|
||||
Type: 3,
|
||||
ValueUsage: 1,
|
||||
Value: 600000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401, 403},
|
||||
SPCost: 130,
|
||||
IconID: 10012,
|
||||
},
|
||||
{
|
||||
ID: 200021,
|
||||
Name: "Left-Handed ◎",
|
||||
Description: "Increase performance on left-handed tracks.",
|
||||
Group: 20002,
|
||||
Rarity: 1,
|
||||
GroupRate: 2,
|
||||
GradeValue: 174,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "rotation==2",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: 600000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 110,
|
||||
IconID: 10011,
|
||||
},
|
||||
{
|
||||
ID: 200022,
|
||||
Name: "Left-Handed ○",
|
||||
Description: "Moderately increase performance on left-handed tracks.",
|
||||
Group: 20002,
|
||||
Rarity: 1,
|
||||
GroupRate: 1,
|
||||
GradeValue: 129,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "rotation==2",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: 400000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 90,
|
||||
IconID: 10011,
|
||||
},
|
||||
{
|
||||
ID: 200023,
|
||||
Name: "Left-Handed ×",
|
||||
Description: "Moderately decrease performance on left-handed tracks.",
|
||||
Group: 20002,
|
||||
Rarity: 1,
|
||||
GroupRate: -1,
|
||||
GradeValue: -129,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "rotation==2",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: -400000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 50,
|
||||
IconID: 10014,
|
||||
},
|
||||
{
|
||||
ID: 200361,
|
||||
Name: "Beeline Burst",
|
||||
Description: "Increase velocity on a straight.",
|
||||
Group: 20036,
|
||||
Rarity: 2,
|
||||
GroupRate: 2,
|
||||
GradeValue: 508,
|
||||
WitCheck: true,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "straight_random==1",
|
||||
Duration: 24000,
|
||||
DurScale: 1,
|
||||
Cooldown: 300000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 3500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 170,
|
||||
IconID: 20012,
|
||||
},
|
||||
{
|
||||
ID: 200362,
|
||||
Name: "Straightaway Adept",
|
||||
Description: "Slightly increase velocity on a straight.",
|
||||
Group: 20036,
|
||||
Rarity: 1,
|
||||
GroupRate: 1,
|
||||
GradeValue: 217,
|
||||
WitCheck: true,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "straight_random==1",
|
||||
Duration: 24000,
|
||||
DurScale: 1,
|
||||
Cooldown: 300000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 1500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 170,
|
||||
IconID: 20011,
|
||||
},
|
||||
{
|
||||
ID: 200831,
|
||||
Name: "Subdued Front Runners",
|
||||
Description: "Slightly increase fatigue for front runners early-race.",
|
||||
Group: 20083,
|
||||
Rarity: 1,
|
||||
GroupRate: 1,
|
||||
GradeValue: 217,
|
||||
WitCheck: true,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "running_style_count_nige_otherself>=1&phase_random==0&accumulatetime>=5",
|
||||
Duration: 0,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 9,
|
||||
ValueUsage: 1,
|
||||
Value: -100,
|
||||
Target: 18,
|
||||
TargetValue: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{301, 406},
|
||||
SPCost: 130,
|
||||
IconID: 30051,
|
||||
},
|
||||
{
|
||||
ID: 201801,
|
||||
Name: "♡ 3D Nail Art",
|
||||
Description: "Moderately decrease performance on firm ground.",
|
||||
Group: 20180,
|
||||
Rarity: 1,
|
||||
GroupRate: -1,
|
||||
GradeValue: -129,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "ground_condition==1",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 1,
|
||||
ValueUsage: 1,
|
||||
Value: -400000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{401},
|
||||
SPCost: 50,
|
||||
IconID: 10014,
|
||||
},
|
||||
{
|
||||
ID: 300011,
|
||||
Name: "Unquenched Thirst",
|
||||
Description: "Moderately increase performance with the desire to race.",
|
||||
Group: 30001,
|
||||
Rarity: 1,
|
||||
GroupRate: 1,
|
||||
GradeValue: 0,
|
||||
WitCheck: false,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "track_id==10008",
|
||||
Duration: -1,
|
||||
DurScale: 1,
|
||||
Cooldown: 0,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 2,
|
||||
ValueUsage: 1,
|
||||
Value: 400000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Tags: []uint16{402},
|
||||
SPCost: 0,
|
||||
IconID: 10021,
|
||||
},
|
||||
{
|
||||
ID: 900011,
|
||||
Name: "Shooting Star",
|
||||
Description: "Slightly increase velocity and very minimally increase acceleration after passing another runner toward the front late-race.",
|
||||
Group: 10001,
|
||||
Rarity: 1,
|
||||
GroupRate: 2,
|
||||
GradeValue: 180,
|
||||
WitCheck: true,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "phase>=2&order>=1&order_rate<=50&change_order_onetime<0",
|
||||
Duration: 30000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 1500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
{
|
||||
Type: 31,
|
||||
ValueUsage: 1,
|
||||
Value: 500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
UniqueOwner: "[Special Dreamer] Special Week",
|
||||
Tags: []uint16{401, 403},
|
||||
SPCost: 200,
|
||||
IconID: 20011,
|
||||
},
|
||||
{
|
||||
ID: 900351,
|
||||
Name: "Our Ticket to Win!",
|
||||
Description: "Slightly increase velocity when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.",
|
||||
Group: 10035,
|
||||
Rarity: 1,
|
||||
GroupRate: 2,
|
||||
GradeValue: 180,
|
||||
WitCheck: true,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "is_finalcorner==1&blocked_side_continuetime>=2",
|
||||
Condition: "is_finalcorner==1&corner==0&order<=5",
|
||||
Duration: 30000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 1500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
UniqueOwner: "[Get to Winning!] Winning Ticket",
|
||||
Tags: []uint16{401},
|
||||
SPCost: 200,
|
||||
IconID: 20011,
|
||||
},
|
||||
{
|
||||
ID: 910241,
|
||||
Name: "Flowery☆Maneuver",
|
||||
Description: "Slightly increase velocity when passing another runner toward the front on the final corner. If passing toward the back, slightly increase acceleration instead.",
|
||||
Group: 11024,
|
||||
Rarity: 1,
|
||||
GroupRate: 2,
|
||||
GradeValue: 180,
|
||||
WitCheck: true,
|
||||
Activations: []horse.Activation{
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0",
|
||||
Duration: 30000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 27,
|
||||
ValueUsage: 1,
|
||||
Value: 1500,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Precondition: "",
|
||||
Condition: "is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0",
|
||||
Duration: 24000,
|
||||
DurScale: 1,
|
||||
Cooldown: 5000000,
|
||||
Abilities: []horse.Ability{
|
||||
{
|
||||
Type: 31,
|
||||
ValueUsage: 1,
|
||||
Value: 2000,
|
||||
Target: 1,
|
||||
TargetValue: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
UniqueOwner: "[Sunlight Bouquet] Mayano Top Gun",
|
||||
Tags: []uint16{401, 403},
|
||||
SPCost: 200,
|
||||
IconID: 20011,
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong skills (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
93
mdb/spark.go
Normal file
93
mdb/spark.go
Normal file
@@ -0,0 +1,93 @@
|
||||
package mdb
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
|
||||
"zombiezen.com/go/sqlite/sqlitex"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed sql/spark.sql
|
||||
sparkSQL string
|
||||
//go:embed sql/spark-effect.sql
|
||||
sparkEffectSQL string
|
||||
)
|
||||
|
||||
func Sparks(ctx context.Context, db *sqlitex.Pool) ([]horse.Spark, error) {
|
||||
// We don't use func load here because we have multiple queries to run.
|
||||
conn, err := db.Take(ctx)
|
||||
defer db.Put(conn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var sp []horse.Spark
|
||||
{
|
||||
stmt := conn.Prep(sparkSQL)
|
||||
for {
|
||||
ok, err := stmt.Step()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
sp = append(sp, horse.Spark{
|
||||
ID: horse.SparkID(stmt.ColumnInt(0)),
|
||||
Name: stmt.ColumnText(1),
|
||||
Description: stmt.ColumnText(2),
|
||||
Group: horse.SparkGroupID(stmt.ColumnInt(3)),
|
||||
Rarity: horse.SparkRarity(stmt.ColumnInt(4)),
|
||||
Type: horse.SparkType(stmt.ColumnInt(5)),
|
||||
// Effects filled in later, but we can start with space.
|
||||
// The vast majority of sparks are skill sparks,
|
||||
// which have five rolls.
|
||||
Effects: make([][]horse.SparkEffect, 0, 5),
|
||||
})
|
||||
}
|
||||
}
|
||||
stmt := conn.Prep(sparkEffectSQL)
|
||||
cur := sp
|
||||
last := 0
|
||||
for {
|
||||
ok, err := stmt.Step()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
// We sort sparks by group ID first, so we can add effects in a single pass.
|
||||
group := stmt.ColumnInt(0)
|
||||
for len(cur) > 0 && cur[0].Group != horse.SparkGroupID(group) {
|
||||
cur = cur[1:]
|
||||
last = 0 // reset whenever we change group IDs
|
||||
}
|
||||
effect := stmt.ColumnInt(1)
|
||||
if effect != last {
|
||||
// This effect is a separate roll from the previous one.
|
||||
// Create a new slot for the effects to go into.
|
||||
for i := range cur {
|
||||
if cur[i].Group != horse.SparkGroupID(group) {
|
||||
break
|
||||
}
|
||||
cur[i].Effects = append(cur[i].Effects, make([]horse.SparkEffect, 0, 1))
|
||||
}
|
||||
last = effect
|
||||
}
|
||||
for i := range cur {
|
||||
if cur[i].Group != horse.SparkGroupID(group) {
|
||||
break
|
||||
}
|
||||
e := horse.SparkEffect{
|
||||
Target: horse.SparkTarget(stmt.ColumnInt(2)),
|
||||
Value1: stmt.ColumnInt32(3),
|
||||
Value2: stmt.ColumnInt32(4),
|
||||
}
|
||||
cur[i].Effects[len(cur[i].Effects)-1] = append(cur[i].Effects[len(cur[i].Effects)-1], e)
|
||||
}
|
||||
}
|
||||
return sp, nil
|
||||
}
|
||||
345
mdb/spark_test.go
Normal file
345
mdb/spark_test.go
Normal file
@@ -0,0 +1,345 @@
|
||||
package mdb_test
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
|
||||
"git.sunturtle.xyz/zephyr/horse"
|
||||
"git.sunturtle.xyz/zephyr/horse/mdb"
|
||||
)
|
||||
|
||||
//go:embed testdata/spark.sql
|
||||
var sparkSQL string
|
||||
|
||||
func TestSparks(t *testing.T) {
|
||||
db := testdb(t.Context(), "file:TestSparks?mode=memory&cache=shared", sparkSQL)
|
||||
got, err := mdb.Sparks(t.Context(), db)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
want := []horse.Spark{
|
||||
{
|
||||
ID: 101,
|
||||
Name: "Speed",
|
||||
Description: "A Spark that increases Speed.",
|
||||
Group: 1,
|
||||
Rarity: 1,
|
||||
Type: 1,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 1, Value1: 1}},
|
||||
{{Target: 1, Value1: 4}},
|
||||
{{Target: 1, Value1: 7}},
|
||||
{{Target: 1, Value1: 10}},
|
||||
{{Target: 1, Value1: 13}},
|
||||
{{Target: 1, Value1: 16}},
|
||||
{{Target: 1, Value1: 19}},
|
||||
{{Target: 1, Value1: 22}},
|
||||
{{Target: 1, Value1: 25}},
|
||||
{{Target: 1, Value1: 28}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 102,
|
||||
Name: "Speed",
|
||||
Description: "A Spark that increases Speed.",
|
||||
Group: 1,
|
||||
Rarity: 2,
|
||||
Type: 1,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 1, Value1: 1}},
|
||||
{{Target: 1, Value1: 4}},
|
||||
{{Target: 1, Value1: 7}},
|
||||
{{Target: 1, Value1: 10}},
|
||||
{{Target: 1, Value1: 13}},
|
||||
{{Target: 1, Value1: 16}},
|
||||
{{Target: 1, Value1: 19}},
|
||||
{{Target: 1, Value1: 22}},
|
||||
{{Target: 1, Value1: 25}},
|
||||
{{Target: 1, Value1: 28}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 103,
|
||||
Name: "Speed",
|
||||
Description: "A Spark that increases Speed.",
|
||||
Group: 1,
|
||||
Rarity: 3,
|
||||
Type: 1,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 1, Value1: 1}},
|
||||
{{Target: 1, Value1: 4}},
|
||||
{{Target: 1, Value1: 7}},
|
||||
{{Target: 1, Value1: 10}},
|
||||
{{Target: 1, Value1: 13}},
|
||||
{{Target: 1, Value1: 16}},
|
||||
{{Target: 1, Value1: 19}},
|
||||
{{Target: 1, Value1: 22}},
|
||||
{{Target: 1, Value1: 25}},
|
||||
{{Target: 1, Value1: 28}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 201,
|
||||
Name: "Stamina",
|
||||
Description: "A Spark that increases Stamina.",
|
||||
Group: 2,
|
||||
Rarity: 1,
|
||||
Type: 1,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 2, Value1: 1}},
|
||||
{{Target: 2, Value1: 4}},
|
||||
{{Target: 2, Value1: 7}},
|
||||
{{Target: 2, Value1: 10}},
|
||||
{{Target: 2, Value1: 13}},
|
||||
{{Target: 2, Value1: 16}},
|
||||
{{Target: 2, Value1: 19}},
|
||||
{{Target: 2, Value1: 22}},
|
||||
{{Target: 2, Value1: 25}},
|
||||
{{Target: 2, Value1: 28}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 202,
|
||||
Name: "Stamina",
|
||||
Description: "A Spark that increases Stamina.",
|
||||
Group: 2,
|
||||
Rarity: 2,
|
||||
Type: 1,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 2, Value1: 1}},
|
||||
{{Target: 2, Value1: 4}},
|
||||
{{Target: 2, Value1: 7}},
|
||||
{{Target: 2, Value1: 10}},
|
||||
{{Target: 2, Value1: 13}},
|
||||
{{Target: 2, Value1: 16}},
|
||||
{{Target: 2, Value1: 19}},
|
||||
{{Target: 2, Value1: 22}},
|
||||
{{Target: 2, Value1: 25}},
|
||||
{{Target: 2, Value1: 28}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 203,
|
||||
Name: "Stamina",
|
||||
Description: "A Spark that increases Stamina.",
|
||||
Group: 2,
|
||||
Rarity: 3,
|
||||
Type: 1,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 2, Value1: 1}},
|
||||
{{Target: 2, Value1: 4}},
|
||||
{{Target: 2, Value1: 7}},
|
||||
{{Target: 2, Value1: 10}},
|
||||
{{Target: 2, Value1: 13}},
|
||||
{{Target: 2, Value1: 16}},
|
||||
{{Target: 2, Value1: 19}},
|
||||
{{Target: 2, Value1: 22}},
|
||||
{{Target: 2, Value1: 25}},
|
||||
{{Target: 2, Value1: 28}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 1101,
|
||||
Name: "Turf",
|
||||
Description: "A Spark that increases Turf Aptitude.",
|
||||
Group: 11,
|
||||
Rarity: 1,
|
||||
Type: 2,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 11, Value1: 1}},
|
||||
{{Target: 11, Value1: 2}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 1102,
|
||||
Name: "Turf",
|
||||
Description: "A Spark that increases Turf Aptitude.",
|
||||
Group: 11,
|
||||
Rarity: 2,
|
||||
Type: 2,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 11, Value1: 1}},
|
||||
{{Target: 11, Value1: 2}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 1103,
|
||||
Name: "Turf",
|
||||
Description: "A Spark that increases Turf Aptitude.",
|
||||
Group: 11,
|
||||
Rarity: 3,
|
||||
Type: 2,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 11, Value1: 1}},
|
||||
{{Target: 11, Value1: 2}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 1000101,
|
||||
Name: "February S.",
|
||||
Description: `A Spark that increases Power and gives a skill hint for "Winter Runner ○".`,
|
||||
Group: 10001,
|
||||
Rarity: 1,
|
||||
Type: 5,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 3, Value1: 3}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
{{Target: 3, Value1: 6}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
{{Target: 3, Value1: 9}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 1000102,
|
||||
Name: "February S.",
|
||||
Description: `A Spark that increases Power and gives a skill hint for "Winter Runner ○".`,
|
||||
Group: 10001,
|
||||
Rarity: 2,
|
||||
Type: 5,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 3, Value1: 3}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
{{Target: 3, Value1: 6}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
{{Target: 3, Value1: 9}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 1000103,
|
||||
Name: "February S.",
|
||||
Description: `A Spark that increases Power and gives a skill hint for "Winter Runner ○".`,
|
||||
Group: 10001,
|
||||
Rarity: 3,
|
||||
Type: 5,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 3, Value1: 3}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
{{Target: 3, Value1: 6}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
{{Target: 3, Value1: 9}, {Target: 41, Value1: 200202, Value2: 1}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 2000101,
|
||||
Name: "Right-Handed ○",
|
||||
Description: `A Spark that gives a skill hint for "Right-Handed ○".`,
|
||||
Group: 20001,
|
||||
Rarity: 1,
|
||||
Type: 4,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 41, Value1: 200012, Value2: 1}},
|
||||
{{Target: 41, Value1: 200012, Value2: 2}},
|
||||
{{Target: 41, Value1: 200012, Value2: 3}},
|
||||
{{Target: 41, Value1: 200012, Value2: 4}},
|
||||
{{Target: 41, Value1: 200012, Value2: 5}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 2000102,
|
||||
Name: "Right-Handed ○",
|
||||
Description: `A Spark that gives a skill hint for "Right-Handed ○".`,
|
||||
Group: 20001,
|
||||
Rarity: 2,
|
||||
Type: 4,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 41, Value1: 200012, Value2: 1}},
|
||||
{{Target: 41, Value1: 200012, Value2: 2}},
|
||||
{{Target: 41, Value1: 200012, Value2: 3}},
|
||||
{{Target: 41, Value1: 200012, Value2: 4}},
|
||||
{{Target: 41, Value1: 200012, Value2: 5}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 2000103,
|
||||
Name: "Right-Handed ○",
|
||||
Description: `A Spark that gives a skill hint for "Right-Handed ○".`,
|
||||
Group: 20001,
|
||||
Rarity: 3,
|
||||
Type: 4,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 41, Value1: 200012, Value2: 1}},
|
||||
{{Target: 41, Value1: 200012, Value2: 2}},
|
||||
{{Target: 41, Value1: 200012, Value2: 3}},
|
||||
{{Target: 41, Value1: 200012, Value2: 4}},
|
||||
{{Target: 41, Value1: 200012, Value2: 5}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 3000101,
|
||||
Name: "URA Finale",
|
||||
Description: `A Spark that increases Speed and Stamina.`,
|
||||
Group: 30001,
|
||||
Rarity: 1,
|
||||
Type: 6,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 1, Value1: 10}, {Target: 2, Value1: 10}},
|
||||
{{Target: 1, Value1: 20}, {Target: 2, Value1: 20}},
|
||||
{{Target: 1, Value1: 30}, {Target: 2, Value1: 30}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 3000102,
|
||||
Name: "URA Finale",
|
||||
Description: `A Spark that increases Speed and Stamina.`,
|
||||
Group: 30001,
|
||||
Rarity: 2,
|
||||
Type: 6,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 1, Value1: 10}, {Target: 2, Value1: 10}},
|
||||
{{Target: 1, Value1: 20}, {Target: 2, Value1: 20}},
|
||||
{{Target: 1, Value1: 30}, {Target: 2, Value1: 30}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 3000103,
|
||||
Name: "URA Finale",
|
||||
Description: `A Spark that increases Speed and Stamina.`,
|
||||
Group: 30001,
|
||||
Rarity: 3,
|
||||
Type: 6,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 1, Value1: 10}, {Target: 2, Value1: 10}},
|
||||
{{Target: 1, Value1: 20}, {Target: 2, Value1: 20}},
|
||||
{{Target: 1, Value1: 30}, {Target: 2, Value1: 30}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 10010101,
|
||||
Name: "Shooting Star",
|
||||
Description: `A Spark that gives a skill hint for "Shooting Star".`,
|
||||
Group: 100101,
|
||||
Rarity: 1,
|
||||
Type: 3,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 41, Value1: 900011, Value2: 1}},
|
||||
{{Target: 41, Value1: 900011, Value2: 2}},
|
||||
{{Target: 41, Value1: 900011, Value2: 3}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 10010102,
|
||||
Name: "Shooting Star",
|
||||
Description: `A Spark that gives a skill hint for "Shooting Star".`,
|
||||
Group: 100101,
|
||||
Rarity: 2,
|
||||
Type: 3,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 41, Value1: 900011, Value2: 1}},
|
||||
{{Target: 41, Value1: 900011, Value2: 2}},
|
||||
{{Target: 41, Value1: 900011, Value2: 3}},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: 10010103,
|
||||
Name: "Shooting Star",
|
||||
Description: `A Spark that gives a skill hint for "Shooting Star".`,
|
||||
Group: 100101,
|
||||
Rarity: 3,
|
||||
Type: 3,
|
||||
Effects: [][]horse.SparkEffect{
|
||||
{{Target: 41, Value1: 900011, Value2: 1}},
|
||||
{{Target: 41, Value1: 900011, Value2: 2}},
|
||||
{{Target: 41, Value1: 900011, Value2: 3}},
|
||||
},
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(want, got); diff != "" {
|
||||
t.Errorf("wrong sparks (+got/-want):\n%s", diff)
|
||||
}
|
||||
}
|
||||
60
mdb/sql/affinity.sql
Normal file
60
mdb/sql/affinity.sql
Normal file
@@ -0,0 +1,60 @@
|
||||
WITH pairs AS (
|
||||
SELECT
|
||||
a.id AS id_a,
|
||||
b.id AS id_b
|
||||
FROM chara_data a
|
||||
JOIN chara_data b ON a.id < b.id
|
||||
-- Exclude characters who have no succession relations defined.
|
||||
WHERE a.id IN (SELECT chara_id FROM succession_relation_member)
|
||||
AND b.id IN (SELECT chara_id FROM succession_relation_member)
|
||||
), trios AS (
|
||||
SELECT
|
||||
a.id AS id_a,
|
||||
b.id AS id_b,
|
||||
c.id AS id_c
|
||||
FROM chara_data a
|
||||
JOIN chara_data b ON a.id < b.id
|
||||
JOIN chara_data c ON a.id < c.id AND b.id < c.id
|
||||
-- Exclude characters who have no succession relations defined.
|
||||
WHERE a.id IN (SELECT chara_id FROM succession_relation_member)
|
||||
AND b.id IN (SELECT chara_id FROM succession_relation_member)
|
||||
AND c.id IN (SELECT chara_id FROM succession_relation_member)
|
||||
), pair_relations AS (
|
||||
SELECT
|
||||
ra.relation_type,
|
||||
ra.chara_id AS id_a,
|
||||
rb.chara_id AS id_b
|
||||
FROM succession_relation_member ra
|
||||
JOIN succession_relation_member rb ON ra.relation_type = rb.relation_type
|
||||
), trio_relations AS (
|
||||
SELECT
|
||||
ra.relation_type,
|
||||
ra.chara_id AS id_a,
|
||||
rb.chara_id AS id_b,
|
||||
rc.chara_id AS id_c
|
||||
FROM succession_relation_member ra
|
||||
JOIN succession_relation_member rb ON ra.relation_type = rb.relation_type
|
||||
JOIN succession_relation_member rc ON ra.relation_type = rc.relation_type
|
||||
), affinity AS (
|
||||
SELECT
|
||||
pairs.*,
|
||||
0 AS id_c,
|
||||
SUM(IFNULL(relation_point, 0)) AS base_affinity
|
||||
FROM pairs
|
||||
LEFT JOIN pair_relations rp ON pairs.id_a = rp.id_a AND pairs.id_b = rp.id_b
|
||||
LEFT JOIN succession_relation sr ON rp.relation_type = sr.relation_type
|
||||
GROUP BY pairs.id_a, pairs.id_b
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
trios.*,
|
||||
SUM(IFNULL(relation_point, 0)) AS base_affinity
|
||||
FROM trios
|
||||
LEFT JOIN trio_relations rt ON trios.id_a = rt.id_a AND trios.id_b = rt.id_b AND trios.id_c = rt.id_c
|
||||
LEFT JOIN succession_relation sr ON rt.relation_type = sr.relation_type
|
||||
GROUP BY trios.id_a, trios.id_b, trios.id_c
|
||||
)
|
||||
SELECT * FROM affinity
|
||||
WHERE base_affinity != 0
|
||||
ORDER BY id_a, id_b, id_c
|
||||
6
mdb/sql/character.sql
Normal file
6
mdb/sql/character.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
SELECT
|
||||
"index" AS "id",
|
||||
"text" AS "name"
|
||||
FROM text_data
|
||||
WHERE category = 6
|
||||
ORDER BY "id"
|
||||
10
mdb/sql/conversation.sql
Normal file
10
mdb/sql/conversation.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
SELECT
|
||||
gallery_chara_id,
|
||||
disp_order,
|
||||
pos_id,
|
||||
chara_id_1,
|
||||
chara_id_2,
|
||||
chara_id_3,
|
||||
condition_type
|
||||
FROM home_story_trigger
|
||||
ORDER BY gallery_chara_id, disp_order
|
||||
14
mdb/sql/race.sql
Normal file
14
mdb/sql/race.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
WITH race_names AS (
|
||||
SELECT "index" AS id, "text" AS name FROM text_data WHERE category = 33
|
||||
)
|
||||
SELECT
|
||||
race.id,
|
||||
race_names.name,
|
||||
race.grade,
|
||||
race.thumbnail_id,
|
||||
MIN(race.id) OVER (PARTITION BY race_names.name) AS "primary",
|
||||
ROW_NUMBER() OVER (PARTITION BY race_names.name ORDER BY race.id) - 1 AS "alternate"
|
||||
FROM race
|
||||
JOIN race_names ON race.id = race_names.id
|
||||
WHERE race."group" = 1
|
||||
ORDER BY race.id
|
||||
20
mdb/sql/saddle.sql
Normal file
20
mdb/sql/saddle.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
WITH saddle_names AS (
|
||||
SELECT "index" AS id, "text" AS name
|
||||
FROM text_data
|
||||
WHERE category = 111
|
||||
)
|
||||
SELECT
|
||||
s.id,
|
||||
n.name,
|
||||
ri1.id AS race1,
|
||||
IFNULL(ri2.id, 0) AS race2,
|
||||
IFNULL(ri3.id, 0) AS race3,
|
||||
s.win_saddle_type,
|
||||
MIN(s.id) OVER (PARTITION BY n.name) AS "primary",
|
||||
ROW_NUMBER() OVER (PARTITION BY n.name ORDER BY s.id) - 1 AS "alternate"
|
||||
FROM single_mode_wins_saddle s
|
||||
JOIN race_instance ri1 ON s.race_instance_id_1 = ri1.id
|
||||
LEFT JOIN race_instance ri2 ON s.race_instance_id_2 = ri2.id
|
||||
LEFT JOIN race_instance ri3 ON s.race_instance_id_3 = ri3.id
|
||||
LEFT JOIN saddle_names n ON s.id = n.id
|
||||
ORDER BY s.id
|
||||
17
mdb/sql/scenario.sql
Normal file
17
mdb/sql/scenario.sql
Normal file
@@ -0,0 +1,17 @@
|
||||
WITH scenario_name AS (
|
||||
SELECT "index" AS id, "text" AS name
|
||||
FROM text_data
|
||||
WHERE category = 237
|
||||
), scenario_title AS (
|
||||
SELECT "index" AS id, "text" AS title
|
||||
FROM text_data
|
||||
WHERE category = 119
|
||||
)
|
||||
SELECT
|
||||
sc.id,
|
||||
n.name,
|
||||
t.title
|
||||
FROM single_mode_scenario sc
|
||||
JOIN scenario_name n ON sc.id = n.id
|
||||
JOIN scenario_title t ON sc.id = t.id
|
||||
ORDER BY sc.id
|
||||
17
mdb/sql/skill-group.sql
Normal file
17
mdb/sql/skill-group.sql
Normal file
@@ -0,0 +1,17 @@
|
||||
WITH skill_groups AS (
|
||||
SELECT DISTINCT group_id FROM skill_data
|
||||
)
|
||||
SELECT
|
||||
g.group_id,
|
||||
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
|
||||
LEFT JOIN skill_data s1 ON g.group_id = s1.group_id AND s1.group_rate = 1
|
||||
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
|
||||
98
mdb/sql/skill.sql
Normal file
98
mdb/sql/skill.sql
Normal file
@@ -0,0 +1,98 @@
|
||||
WITH skill_names AS (
|
||||
SELECT
|
||||
n."index" AS "id",
|
||||
n."text" AS "name",
|
||||
d."text" AS "description"
|
||||
FROM text_data n
|
||||
JOIN text_data d ON n."index" = d."index" AND n."category" = 47 AND d."category" = 48
|
||||
), skill_groups AS (
|
||||
SELECT
|
||||
group_id,
|
||||
name
|
||||
FROM skill_data d
|
||||
JOIN skill_names n ON d.id = n.id
|
||||
WHERE group_rate = 1
|
||||
), card_name AS (
|
||||
SELECT
|
||||
"index" AS "id",
|
||||
"text" AS "name"
|
||||
FROM text_data n
|
||||
WHERE category = 4
|
||||
), card_unique AS (
|
||||
SELECT DISTINCT
|
||||
ss.skill_id1 AS unique_id,
|
||||
card_name.id AS owner_id,
|
||||
card_name.name
|
||||
FROM card_data card
|
||||
JOIN card_name ON card.id = card_name.id
|
||||
JOIN card_rarity_data rd ON card.id = rd.card_id
|
||||
JOIN skill_set ss ON rd.skill_set = ss.id
|
||||
)
|
||||
SELECT
|
||||
d.id,
|
||||
n.name,
|
||||
n.description,
|
||||
IIF(d.unique_skill_id_1 = 0, d.group_id, ud.group_id) AS group_id,
|
||||
CASE
|
||||
WHEN g.name IS NOT NULL THEN g.name
|
||||
WHEN d.unique_skill_id_1 != 0 THEN n.name
|
||||
ELSE ''
|
||||
END AS group_name,
|
||||
d.rarity,
|
||||
d.group_rate,
|
||||
d.grade_value,
|
||||
d.activate_lot,
|
||||
d.precondition_1,
|
||||
d.condition_1,
|
||||
d.float_ability_time_1,
|
||||
d.ability_time_usage_1,
|
||||
d.float_cooldown_time_1,
|
||||
d.ability_type_1_1,
|
||||
d.ability_value_usage_1_1,
|
||||
d.float_ability_value_1_1,
|
||||
d.target_type_1_1,
|
||||
d.target_value_1_1,
|
||||
d.ability_type_1_2,
|
||||
d.ability_value_usage_1_2,
|
||||
d.float_ability_value_1_2,
|
||||
d.target_type_1_2,
|
||||
d.target_value_1_2,
|
||||
d.ability_type_1_3,
|
||||
d.ability_value_usage_1_3,
|
||||
d.float_ability_value_1_3,
|
||||
d.target_type_1_3,
|
||||
d.target_value_1_3,
|
||||
d.precondition_2,
|
||||
d.condition_2,
|
||||
d.float_ability_time_2,
|
||||
d.ability_time_usage_2,
|
||||
d.float_cooldown_time_2,
|
||||
d.ability_type_2_1,
|
||||
d.ability_value_usage_2_1,
|
||||
d.float_ability_value_2_1,
|
||||
d.target_type_2_1,
|
||||
d.target_value_2_1,
|
||||
d.ability_type_2_2,
|
||||
d.ability_value_usage_2_2,
|
||||
d.float_ability_value_2_2,
|
||||
d.target_type_2_2,
|
||||
d.target_value_2_2,
|
||||
d.ability_type_2_3,
|
||||
d.ability_value_usage_2_3,
|
||||
d.float_ability_value_2_3,
|
||||
d.target_type_2_3,
|
||||
d.target_value_2_3,
|
||||
IFNULL(p.need_skill_point, 0) AS sp_cost,
|
||||
d.unique_skill_id_1,
|
||||
COALESCE(u.owner_id, iu.owner_id, 0) AS unique_owner_id,
|
||||
COALESCE(u.name, iu.name, '') AS unique_owner,
|
||||
d.icon_id,
|
||||
d.tag_id
|
||||
FROM skill_data d
|
||||
JOIN skill_names n ON d.id = n.id
|
||||
LEFT JOIN skill_data ud ON d.unique_skill_id_1 = ud.id
|
||||
LEFT JOIN skill_groups g ON d.group_id = g.group_id
|
||||
LEFT JOIN single_mode_skill_need_point p ON d.id = p.id
|
||||
LEFT JOIN card_unique u ON d.id = u.unique_id
|
||||
LEFT JOIN card_unique iu ON d.unique_skill_id_1 = iu.unique_id
|
||||
ORDER BY d.id
|
||||
9
mdb/sql/spark-effect.sql
Normal file
9
mdb/sql/spark-effect.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
SELECT
|
||||
factor_group_id,
|
||||
effect_id,
|
||||
target_type,
|
||||
value_1,
|
||||
value_2
|
||||
FROM succession_factor_effect
|
||||
WHERE factor_group_id NOT IN (40001) -- exclude Carnival Bonus
|
||||
ORDER BY factor_group_id, effect_id, id
|
||||
20
mdb/sql/spark.sql
Normal file
20
mdb/sql/spark.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
WITH spark AS (
|
||||
SELECT
|
||||
n."index" AS "id",
|
||||
n."text" AS "name",
|
||||
d."text" AS "description"
|
||||
FROM text_data n
|
||||
LEFT JOIN text_data d ON n."index" = d."index" AND d."category" = 172
|
||||
WHERE n.category = 147
|
||||
)
|
||||
SELECT
|
||||
sf.factor_id,
|
||||
spark.name,
|
||||
spark.description,
|
||||
sf.factor_group_id,
|
||||
sf.rarity,
|
||||
sf.factor_type
|
||||
FROM spark
|
||||
JOIN succession_factor sf ON spark.id = sf.factor_id
|
||||
WHERE sf.factor_type != 7 -- exclude Carnival Bonus
|
||||
ORDER BY sf.factor_group_id, sf.factor_id
|
||||
59
mdb/sql/uma.sql
Normal file
59
mdb/sql/uma.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
WITH uma_name AS (
|
||||
SELECT "index" AS id, "text" AS name
|
||||
FROM text_data
|
||||
WHERE category = 4
|
||||
), uma_variant AS (
|
||||
SELECT "index" AS id, "text" AS variant
|
||||
FROM text_data
|
||||
WHERE category = 5
|
||||
), chara_name AS (
|
||||
SELECT "index" AS id, "text" AS name
|
||||
FROM text_data
|
||||
WHERE category = 6
|
||||
), skills AS (
|
||||
SELECT
|
||||
uma.id,
|
||||
s.skill_id,
|
||||
s.need_rank,
|
||||
ROW_NUMBER() OVER (PARTITION BY s.available_skill_set_id, s.need_rank ORDER BY s.id) AS idx
|
||||
FROM card_data uma
|
||||
LEFT JOIN available_skill_set s ON uma.available_skill_set_id = s.available_skill_set_id
|
||||
)
|
||||
SELECT
|
||||
uma.card_id,
|
||||
card_data.chara_id,
|
||||
n.name,
|
||||
v.variant,
|
||||
c.name AS chara_name,
|
||||
uma.proper_distance_short,
|
||||
uma.proper_distance_mile,
|
||||
uma.proper_distance_middle,
|
||||
uma.proper_distance_long,
|
||||
uma.proper_running_style_nige,
|
||||
uma.proper_running_style_senko,
|
||||
uma.proper_running_style_sashi,
|
||||
uma.proper_running_style_oikomi,
|
||||
uma.proper_ground_turf,
|
||||
uma.proper_ground_dirt,
|
||||
su.skill_id1 AS unique_skill,
|
||||
s1.skill_id AS skill1,
|
||||
s2.skill_id AS skill2,
|
||||
s3.skill_id AS skill3,
|
||||
sp2.skill_id AS skill_pl2,
|
||||
sp3.skill_id AS skill_pl3,
|
||||
sp4.skill_id AS skill_pl4,
|
||||
sp5.skill_id AS skill_pl5
|
||||
FROM card_data
|
||||
JOIN card_rarity_data uma ON card_data.id = uma.card_id
|
||||
JOIN chara_name c ON card_data.chara_id = c.id
|
||||
JOIN skill_set su ON uma.skill_set = su.id
|
||||
JOIN skills s1 ON uma.card_id = s1.id AND s1.need_rank = 0 AND s1.idx = 1
|
||||
JOIN skills s2 ON uma.card_id = s2.id AND s2.need_rank = 0 AND s2.idx = 2
|
||||
JOIN skills s3 ON uma.card_id = s3.id AND s3.need_rank = 0 AND s3.idx = 3
|
||||
JOIN skills sp2 ON uma.card_id = sp2.id AND sp2.need_rank = 2
|
||||
JOIN skills sp3 ON uma.card_id = sp3.id AND sp3.need_rank = 3
|
||||
JOIN skills sp4 ON uma.card_id = sp4.id AND sp4.need_rank = 4
|
||||
JOIN skills sp5 ON uma.card_id = sp5.id AND sp5.need_rank = 5
|
||||
LEFT JOIN uma_name n ON uma.card_id = n.id
|
||||
LEFT JOIN uma_variant v ON uma.card_id = v.id
|
||||
WHERE uma.rarity = 5
|
||||
262
mdb/testdata/character.sql
vendored
Normal file
262
mdb/testdata/character.sql
vendored
Normal file
@@ -0,0 +1,262 @@
|
||||
CREATE TABLE IF NOT EXISTS 'text_data' ('id' INTEGER NOT NULL, 'category' INTEGER NOT NULL, 'index' INTEGER NOT NULL, 'text' TEXT NOT NULL, PRIMARY KEY('category','index'));
|
||||
-- SELECT * FROM text_data WHERE category = 6 AND "index" IN (1001, 1002, 1078, 2001, 9001) OR category IN (4, 5) AND "index" IN (SELECT id FROM card_data WHERE chara_id IN (1001, 1002, 1078, 2001, 9001));
|
||||
INSERT INTO text_data VALUES(6,6,1001,'Special Week');
|
||||
INSERT INTO text_data VALUES(6,6,1002,'Silence Suzuka');
|
||||
INSERT INTO text_data VALUES(6,6,1078,'Yamanin Zephyr');
|
||||
INSERT INTO text_data VALUES(6,6,2001,'Happy Meek');
|
||||
INSERT INTO text_data VALUES(6,6,9001,'Tazuna Hayakawa');
|
||||
INSERT INTO text_data VALUES(4,4,100101,'[Special Dreamer] Special Week');
|
||||
INSERT INTO text_data VALUES(4,4,100102,'[Hopp''n♪Happy Heart] Special Week');
|
||||
INSERT INTO text_data VALUES(4,4,100201,'[Innocent Silence] Silence Suzuka');
|
||||
INSERT INTO text_data VALUES(5,5,100101,'[Special Dreamer]');
|
||||
INSERT INTO text_data VALUES(5,5,100102,'[Hopp''n♪Happy Heart]');
|
||||
INSERT INTO text_data VALUES(5,5,100201,'[Innocent Silence]');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'chara_data' ('id' INTEGER NOT NULL, 'birth_year' INTEGER NOT NULL, 'birth_month' INTEGER NOT NULL, 'birth_day' INTEGER NOT NULL, 'sex' INTEGER NOT NULL, 'image_color_main' TEXT NOT NULL, 'image_color_sub' TEXT NOT NULL, 'ui_color_main' TEXT NOT NULL, 'ui_color_sub' TEXT NOT NULL, 'ui_training_color_1' TEXT NOT NULL, 'ui_training_color_2' TEXT NOT NULL, 'ui_border_color' TEXT NOT NULL, 'ui_num_color_1' TEXT NOT NULL, 'ui_num_color_2' TEXT NOT NULL, 'ui_turn_color' TEXT NOT NULL, 'ui_wipe_color_1' TEXT NOT NULL, 'ui_wipe_color_2' TEXT NOT NULL, 'ui_wipe_color_3' TEXT NOT NULL, 'ui_speech_color_1' TEXT NOT NULL, 'ui_speech_color_2' TEXT NOT NULL, 'ui_nameplate_color_1' TEXT NOT NULL, 'ui_nameplate_color_2' TEXT NOT NULL, 'height' INTEGER NOT NULL, 'bust' INTEGER NOT NULL, 'scale' INTEGER NOT NULL, 'skin' INTEGER NOT NULL, 'shape' INTEGER NOT NULL, 'socks' INTEGER NOT NULL, 'personal_dress' INTEGER NOT NULL, 'tail_model_id' INTEGER NOT NULL, 'race_running_type' INTEGER NOT NULL, 'ear_random_time_min' INTEGER NOT NULL, 'ear_random_time_max' INTEGER NOT NULL, 'tail_random_time_min' INTEGER NOT NULL, 'tail_random_time_max' INTEGER NOT NULL, 'story_ear_random_time_min' INTEGER NOT NULL, 'story_ear_random_time_max' INTEGER NOT NULL, 'story_tail_random_time_min' INTEGER NOT NULL, 'story_tail_random_time_max' INTEGER NOT NULL, 'attachment_model_id' INTEGER NOT NULL, 'mini_mayu_shader_type' INTEGER NOT NULL, 'start_date' INTEGER NOT NULL, 'chara_category' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM chara_data WHERE id IN (1001, 1002, 1078, 2001, 9001);
|
||||
INSERT INTO chara_data VALUES(1001,1995,5,2,1,'FCA7FF','FF58D9','EE6DCB','FFDEF9','FF7FDD','F759CD','F759CD','FF7FDD','FA50CD','FA50CD','FCCAEE','FCE3F5','FDEDFE','FF7FDD','FF7FDD','FF7CDC','FEB4EA',1,2,158,1,0,3,0,1,1,110,220,30,90,275,425,130,250,-1,0,1483228800,0);
|
||||
INSERT INTO chara_data VALUES(1002,1994,5,1,1,'8FE78D','FBFF3B','29BD70','FFCE48','4BD18C','27B36B','27B36B','4BD18C','27B36B','27B36B','BDF2D6','D4F2E2','FFF5CC','4BD18C','4BD18C','43C883','82ECB5',1,0,161,1,1,6,0,1,1,170,270,180,310,275,425,180,310,-1,0,1483228800,0);
|
||||
INSERT INTO chara_data VALUES(1078,1988,5,27,1,'A8C6FD','5277D6','da483a','ffda93','4C91F1','2B75DD','2B75DD','71ADFF','1667D9','1667D9','BCD5F5','D6E4F6','FFEBF6','4C91F1','4C91F1','4C91F1','8DBCFD',1,3,154,1,0,1,0,1,1,170,270,180,310,275,425,180,310,-1,0,2524608000,0);
|
||||
INSERT INTO chara_data VALUES(2001,1971,3,15,1,'FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','68D25D','68D25D','66D713','25C4A4',2,2,163,0,0,3,0,2,1,170,270,180,310,275,425,180,310,-1,0,2524608000,0);
|
||||
INSERT INTO chara_data VALUES(9001,1948,5,2,2,'44A705','FFFFFF','44A705','F3CD00','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','FFFFFF','68D25D','68D25D','66D713','25C4A4',2,2,166,1,2,7,0,-1,1,170,270,180,310,275,425,180,310,-1,0,2524608000,1);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'card_data' ('id' INTEGER NOT NULL, 'chara_id' INTEGER NOT NULL, 'default_rarity' INTEGER NOT NULL, 'limited_chara' INTEGER NOT NULL, 'available_skill_set_id' INTEGER NOT NULL, 'talent_speed' INTEGER NOT NULL, 'talent_stamina' INTEGER NOT NULL, 'talent_pow' INTEGER NOT NULL, 'talent_guts' INTEGER NOT NULL, 'talent_wiz' INTEGER NOT NULL, 'talent_group_id' INTEGER NOT NULL, 'bg_id' INTEGER NOT NULL, 'get_piece_id' INTEGER NOT NULL, 'running_style' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM card_data WHERE chara_id IN (1001, 1002, 1078, 2001, 9001);
|
||||
INSERT INTO card_data VALUES(100101,1001,3,0,100101,0,20,0,0,10,100101,8,100101,3);
|
||||
INSERT INTO card_data VALUES(100102,1001,3,0,100102,0,10,10,10,0,100102,317,100102,3);
|
||||
INSERT INTO card_data VALUES(100201,1002,3,0,100201,20,0,0,10,0,100201,30,100201,1);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'card_rarity_data' ('id' INTEGER NOT NULL, 'card_id' INTEGER NOT NULL, 'rarity' INTEGER NOT NULL, 'race_dress_id' INTEGER NOT NULL, 'skill_set' INTEGER NOT NULL, 'speed' INTEGER NOT NULL, 'stamina' INTEGER NOT NULL, 'pow' INTEGER NOT NULL, 'guts' INTEGER NOT NULL, 'wiz' INTEGER NOT NULL, 'max_speed' INTEGER NOT NULL, 'max_stamina' INTEGER NOT NULL, 'max_pow' INTEGER NOT NULL, 'max_guts' INTEGER NOT NULL, 'max_wiz' INTEGER NOT NULL, 'proper_distance_short' INTEGER NOT NULL, 'proper_distance_mile' INTEGER NOT NULL, 'proper_distance_middle' INTEGER NOT NULL, 'proper_distance_long' INTEGER NOT NULL, 'proper_running_style_nige' INTEGER NOT NULL, 'proper_running_style_senko' INTEGER NOT NULL, 'proper_running_style_sashi' INTEGER NOT NULL, 'proper_running_style_oikomi' INTEGER NOT NULL, 'proper_ground_turf' INTEGER NOT NULL, 'proper_ground_dirt' INTEGER NOT NULL, 'get_dress_id_1' INTEGER NOT NULL, 'get_dress_id_2' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM card_rarity_data WHERE card_id IN (SELECT id FROM card_data WHERE chara_id IN (1001, 1002, 1078, 2001, 9001));
|
||||
INSERT INTO card_rarity_data VALUES(10010103,100101,3,100101,10010103,83,88,98,90,91,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100101);
|
||||
INSERT INTO card_rarity_data VALUES(10010104,100101,4,100101,10010104,92,98,109,100,101,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100101);
|
||||
INSERT INTO card_rarity_data VALUES(10010105,100101,5,100101,10010105,102,108,120,110,110,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100101);
|
||||
INSERT INTO card_rarity_data VALUES(10010203,100102,3,100130,11010103,77,90,103,98,82,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100130);
|
||||
INSERT INTO card_rarity_data VALUES(10010204,100102,4,100130,11010104,86,100,114,109,91,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100130);
|
||||
INSERT INTO card_rarity_data VALUES(10010205,100102,5,100130,11010105,94,110,125,119,102,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100130);
|
||||
INSERT INTO card_rarity_data VALUES(10020103,100201,3,100201,10020103,101,84,77,100,88,1200,1200,1200,1200,1200,4,7,7,3,7,5,3,1,7,1,101,100201);
|
||||
INSERT INTO card_rarity_data VALUES(10020104,100201,4,100201,10020104,112,93,85,111,99,1200,1200,1200,1200,1200,4,7,7,3,7,5,3,1,7,1,101,100201);
|
||||
INSERT INTO card_rarity_data VALUES(10020105,100201,5,100201,10020105,124,102,94,122,108,1200,1200,1200,1200,1200,4,7,7,3,7,5,3,1,7,1,101,100201);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'available_skill_set' ('id' INTEGER NOT NULL, 'available_skill_set_id' INTEGER NOT NULL, 'skill_id' INTEGER NOT NULL, 'need_rank' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM available_skill_set WHERE available_skill_set_id IN (SELECT available_skill_set_id FROM card_data WHERE chara_id IN (1001, 1002, 1078, 2001, 9001));
|
||||
INSERT INTO available_skill_set VALUES(1,100101,200512,0);
|
||||
INSERT INTO available_skill_set VALUES(2,100101,201352,0);
|
||||
INSERT INTO available_skill_set VALUES(3,100101,200732,0);
|
||||
INSERT INTO available_skill_set VALUES(11,100101,200162,2);
|
||||
INSERT INTO available_skill_set VALUES(12,100101,201351,3);
|
||||
INSERT INTO available_skill_set VALUES(13,100101,200612,4);
|
||||
INSERT INTO available_skill_set VALUES(14,100101,200511,5);
|
||||
INSERT INTO available_skill_set VALUES(715,100102,200462,0);
|
||||
INSERT INTO available_skill_set VALUES(716,100102,200592,0);
|
||||
INSERT INTO available_skill_set VALUES(717,100102,201132,0);
|
||||
INSERT INTO available_skill_set VALUES(718,100102,200212,2);
|
||||
INSERT INTO available_skill_set VALUES(719,100102,200591,3);
|
||||
INSERT INTO available_skill_set VALUES(720,100102,201611,4);
|
||||
INSERT INTO available_skill_set VALUES(721,100102,200461,5);
|
||||
INSERT INTO available_skill_set VALUES(15,100201,200432,0);
|
||||
INSERT INTO available_skill_set VALUES(16,100201,200552,0);
|
||||
INSERT INTO available_skill_set VALUES(17,100201,200712,0);
|
||||
INSERT INTO available_skill_set VALUES(25,100201,200022,2);
|
||||
INSERT INTO available_skill_set VALUES(26,100201,200431,3);
|
||||
INSERT INTO available_skill_set VALUES(27,100201,200542,4);
|
||||
INSERT INTO available_skill_set VALUES(28,100201,200551,5);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'skill_set' ('id' INTEGER NOT NULL, 'skill_id1' INTEGER NOT NULL, 'skill_level1' INTEGER NOT NULL, 'skill_id2' INTEGER NOT NULL, 'skill_level2' INTEGER NOT NULL, 'skill_id3' INTEGER NOT NULL, 'skill_level3' INTEGER NOT NULL, 'skill_id4' INTEGER NOT NULL, 'skill_level4' INTEGER NOT NULL, 'skill_id5' INTEGER NOT NULL, 'skill_level5' INTEGER NOT NULL, 'skill_id6' INTEGER NOT NULL, 'skill_level6' INTEGER NOT NULL, 'skill_id7' INTEGER NOT NULL, 'skill_level7' INTEGER NOT NULL, 'skill_id8' INTEGER NOT NULL, 'skill_level8' INTEGER NOT NULL, 'skill_id9' INTEGER NOT NULL, 'skill_level9' INTEGER NOT NULL, 'skill_id10' INTEGER NOT NULL, 'skill_level10' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM skill_set WHERE id IN (SELECT skill_set FROM card_rarity_data WHERE card_id IN (SELECT id FROM card_data WHERE chara_id IN (1001, 1002, 1078, 2001, 9001)));
|
||||
INSERT INTO skill_set VALUES(10010103,100011,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10010104,100011,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10010105,100011,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10020103,100021,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10020104,100021,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10020105,100021,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(11010103,110011,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(11010104,110011,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(11010105,110011,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'succession_relation_member' ('id' INTEGER NOT NULL, 'relation_type' INTEGER NOT NULL, 'chara_id' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM succession_relation_member WHERE chara_id IN (1001, 1002, 1078, 2001, 9001);
|
||||
INSERT INTO succession_relation_member VALUES(18,103,1001);
|
||||
INSERT INTO succession_relation_member VALUES(80,202,1001);
|
||||
INSERT INTO succession_relation_member VALUES(123,301,1001);
|
||||
INSERT INTO succession_relation_member VALUES(169,401,1001);
|
||||
INSERT INTO succession_relation_member VALUES(188,502,1001);
|
||||
INSERT INTO succession_relation_member VALUES(208,2001,1001);
|
||||
INSERT INTO succession_relation_member VALUES(220,2102,1001);
|
||||
INSERT INTO succession_relation_member VALUES(235,2301,1001);
|
||||
INSERT INTO succession_relation_member VALUES(241,2601,1001);
|
||||
INSERT INTO succession_relation_member VALUES(308,7003,1001);
|
||||
INSERT INTO succession_relation_member VALUES(310,7004,1001);
|
||||
INSERT INTO succession_relation_member VALUES(312,7005,1001);
|
||||
INSERT INTO succession_relation_member VALUES(314,7006,1001);
|
||||
INSERT INTO succession_relation_member VALUES(316,7007,1001);
|
||||
INSERT INTO succession_relation_member VALUES(397,2811,1001);
|
||||
INSERT INTO succession_relation_member VALUES(448,2903,1001);
|
||||
INSERT INTO succession_relation_member VALUES(509,3003,1001);
|
||||
INSERT INTO succession_relation_member VALUES(555,3004,1001);
|
||||
INSERT INTO succession_relation_member VALUES(570,3101,1001);
|
||||
INSERT INTO succession_relation_member VALUES(662,2510,1001);
|
||||
INSERT INTO succession_relation_member VALUES(674,2506,1001);
|
||||
INSERT INTO succession_relation_member VALUES(686,2516,1001);
|
||||
INSERT INTO succession_relation_member VALUES(758,2519,1001);
|
||||
INSERT INTO succession_relation_member VALUES(825,3205,1001);
|
||||
INSERT INTO succession_relation_member VALUES(835,8001,1001);
|
||||
INSERT INTO succession_relation_member VALUES(837,8002,1001);
|
||||
INSERT INTO succession_relation_member VALUES(839,8003,1001);
|
||||
INSERT INTO succession_relation_member VALUES(841,8004,1001);
|
||||
INSERT INTO succession_relation_member VALUES(843,8005,1001);
|
||||
INSERT INTO succession_relation_member VALUES(845,8006,1001);
|
||||
INSERT INTO succession_relation_member VALUES(847,8007,1001);
|
||||
INSERT INTO succession_relation_member VALUES(849,8008,1001);
|
||||
INSERT INTO succession_relation_member VALUES(851,8009,1001);
|
||||
INSERT INTO succession_relation_member VALUES(853,8010,1001);
|
||||
INSERT INTO succession_relation_member VALUES(855,8011,1001);
|
||||
INSERT INTO succession_relation_member VALUES(857,8012,1001);
|
||||
INSERT INTO succession_relation_member VALUES(859,8013,1001);
|
||||
INSERT INTO succession_relation_member VALUES(861,8014,1001);
|
||||
INSERT INTO succession_relation_member VALUES(863,8015,1001);
|
||||
INSERT INTO succession_relation_member VALUES(865,8016,1001);
|
||||
INSERT INTO succession_relation_member VALUES(1703,2406,1001);
|
||||
INSERT INTO succession_relation_member VALUES(1715,2603,1001);
|
||||
INSERT INTO succession_relation_member VALUES(1740,510,1001);
|
||||
INSERT INTO succession_relation_member VALUES(1802,8443,1001);
|
||||
INSERT INTO succession_relation_member VALUES(1876,8479,1001);
|
||||
INSERT INTO succession_relation_member VALUES(1940,8511,1001);
|
||||
INSERT INTO succession_relation_member VALUES(1990,8536,1001);
|
||||
INSERT INTO succession_relation_member VALUES(2198,8640,1001);
|
||||
INSERT INTO succession_relation_member VALUES(31,104,1002);
|
||||
INSERT INTO succession_relation_member VALUES(81,202,1002);
|
||||
INSERT INTO succession_relation_member VALUES(124,301,1002);
|
||||
INSERT INTO succession_relation_member VALUES(174,402,1002);
|
||||
INSERT INTO succession_relation_member VALUES(207,2001,1002);
|
||||
INSERT INTO succession_relation_member VALUES(242,2601,1002);
|
||||
INSERT INTO succession_relation_member VALUES(302,7000,1002);
|
||||
INSERT INTO succession_relation_member VALUES(304,7001,1002);
|
||||
INSERT INTO succession_relation_member VALUES(306,7002,1002);
|
||||
INSERT INTO succession_relation_member VALUES(329,7013,1002);
|
||||
INSERT INTO succession_relation_member VALUES(333,7015,1002);
|
||||
INSERT INTO succession_relation_member VALUES(392,2810,1002);
|
||||
INSERT INTO succession_relation_member VALUES(416,2901,1002);
|
||||
INSERT INTO succession_relation_member VALUES(510,3003,1002);
|
||||
INSERT INTO succession_relation_member VALUES(571,3101,1002);
|
||||
INSERT INTO succession_relation_member VALUES(648,2512,1002);
|
||||
INSERT INTO succession_relation_member VALUES(826,3205,1002);
|
||||
INSERT INTO succession_relation_member VALUES(867,8017,1002);
|
||||
INSERT INTO succession_relation_member VALUES(869,8018,1002);
|
||||
INSERT INTO succession_relation_member VALUES(871,8019,1002);
|
||||
INSERT INTO succession_relation_member VALUES(873,8020,1002);
|
||||
INSERT INTO succession_relation_member VALUES(875,8021,1002);
|
||||
INSERT INTO succession_relation_member VALUES(877,8022,1002);
|
||||
INSERT INTO succession_relation_member VALUES(879,8023,1002);
|
||||
INSERT INTO succession_relation_member VALUES(881,8024,1002);
|
||||
INSERT INTO succession_relation_member VALUES(883,8025,1002);
|
||||
INSERT INTO succession_relation_member VALUES(885,8026,1002);
|
||||
INSERT INTO succession_relation_member VALUES(887,8027,1002);
|
||||
INSERT INTO succession_relation_member VALUES(889,8028,1002);
|
||||
INSERT INTO succession_relation_member VALUES(891,8029,1002);
|
||||
INSERT INTO succession_relation_member VALUES(893,8030,1002);
|
||||
INSERT INTO succession_relation_member VALUES(895,8031,1002);
|
||||
INSERT INTO succession_relation_member VALUES(897,8032,1002);
|
||||
INSERT INTO succession_relation_member VALUES(1704,2406,1002);
|
||||
INSERT INTO succession_relation_member VALUES(1716,2603,1002);
|
||||
INSERT INTO succession_relation_member VALUES(1804,8444,1002);
|
||||
INSERT INTO succession_relation_member VALUES(1878,8480,1002);
|
||||
INSERT INTO succession_relation_member VALUES(1942,8512,1002);
|
||||
INSERT INTO succession_relation_member VALUES(1992,8537,1002);
|
||||
INSERT INTO succession_relation_member VALUES(2200,8641,1002);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'succession_relation' ('relation_type' INTEGER NOT NULL, 'relation_point' INTEGER NOT NULL, PRIMARY KEY('relation_type'));
|
||||
-- SELECT * FROM succession_relation WHERE relation_type IN (SELECT relation_type FROM succession_relation_member WHERE chara_id IN (1001, 1002, 1078, 2001, 9001));
|
||||
INSERT INTO succession_relation VALUES(103,2);
|
||||
INSERT INTO succession_relation VALUES(104,2);
|
||||
INSERT INTO succession_relation VALUES(202,2);
|
||||
INSERT INTO succession_relation VALUES(301,2);
|
||||
INSERT INTO succession_relation VALUES(401,2);
|
||||
INSERT INTO succession_relation VALUES(402,2);
|
||||
INSERT INTO succession_relation VALUES(502,2);
|
||||
INSERT INTO succession_relation VALUES(510,2);
|
||||
INSERT INTO succession_relation VALUES(2001,1);
|
||||
INSERT INTO succession_relation VALUES(2102,1);
|
||||
INSERT INTO succession_relation VALUES(2301,1);
|
||||
INSERT INTO succession_relation VALUES(2406,1);
|
||||
INSERT INTO succession_relation VALUES(2506,1);
|
||||
INSERT INTO succession_relation VALUES(2510,1);
|
||||
INSERT INTO succession_relation VALUES(2512,1);
|
||||
INSERT INTO succession_relation VALUES(2516,1);
|
||||
INSERT INTO succession_relation VALUES(2519,1);
|
||||
INSERT INTO succession_relation VALUES(2601,1);
|
||||
INSERT INTO succession_relation VALUES(2603,1);
|
||||
INSERT INTO succession_relation VALUES(2810,1);
|
||||
INSERT INTO succession_relation VALUES(2811,1);
|
||||
INSERT INTO succession_relation VALUES(2901,7);
|
||||
INSERT INTO succession_relation VALUES(2903,7);
|
||||
INSERT INTO succession_relation VALUES(3003,7);
|
||||
INSERT INTO succession_relation VALUES(3004,7);
|
||||
INSERT INTO succession_relation VALUES(3101,7);
|
||||
INSERT INTO succession_relation VALUES(3205,1);
|
||||
INSERT INTO succession_relation VALUES(7000,1);
|
||||
INSERT INTO succession_relation VALUES(7001,1);
|
||||
INSERT INTO succession_relation VALUES(7002,1);
|
||||
INSERT INTO succession_relation VALUES(7003,1);
|
||||
INSERT INTO succession_relation VALUES(7004,1);
|
||||
INSERT INTO succession_relation VALUES(7005,1);
|
||||
INSERT INTO succession_relation VALUES(7006,1);
|
||||
INSERT INTO succession_relation VALUES(7007,1);
|
||||
INSERT INTO succession_relation VALUES(7013,1);
|
||||
INSERT INTO succession_relation VALUES(7015,1);
|
||||
INSERT INTO succession_relation VALUES(8001,1);
|
||||
INSERT INTO succession_relation VALUES(8002,1);
|
||||
INSERT INTO succession_relation VALUES(8003,1);
|
||||
INSERT INTO succession_relation VALUES(8004,1);
|
||||
INSERT INTO succession_relation VALUES(8005,1);
|
||||
INSERT INTO succession_relation VALUES(8006,1);
|
||||
INSERT INTO succession_relation VALUES(8007,1);
|
||||
INSERT INTO succession_relation VALUES(8008,1);
|
||||
INSERT INTO succession_relation VALUES(8009,1);
|
||||
INSERT INTO succession_relation VALUES(8010,1);
|
||||
INSERT INTO succession_relation VALUES(8011,1);
|
||||
INSERT INTO succession_relation VALUES(8012,1);
|
||||
INSERT INTO succession_relation VALUES(8013,1);
|
||||
INSERT INTO succession_relation VALUES(8014,1);
|
||||
INSERT INTO succession_relation VALUES(8015,1);
|
||||
INSERT INTO succession_relation VALUES(8016,1);
|
||||
INSERT INTO succession_relation VALUES(8017,1);
|
||||
INSERT INTO succession_relation VALUES(8018,1);
|
||||
INSERT INTO succession_relation VALUES(8019,1);
|
||||
INSERT INTO succession_relation VALUES(8020,1);
|
||||
INSERT INTO succession_relation VALUES(8021,1);
|
||||
INSERT INTO succession_relation VALUES(8022,1);
|
||||
INSERT INTO succession_relation VALUES(8023,1);
|
||||
INSERT INTO succession_relation VALUES(8024,1);
|
||||
INSERT INTO succession_relation VALUES(8025,1);
|
||||
INSERT INTO succession_relation VALUES(8026,1);
|
||||
INSERT INTO succession_relation VALUES(8027,1);
|
||||
INSERT INTO succession_relation VALUES(8028,1);
|
||||
INSERT INTO succession_relation VALUES(8029,1);
|
||||
INSERT INTO succession_relation VALUES(8030,1);
|
||||
INSERT INTO succession_relation VALUES(8031,1);
|
||||
INSERT INTO succession_relation VALUES(8032,1);
|
||||
INSERT INTO succession_relation VALUES(8443,1);
|
||||
INSERT INTO succession_relation VALUES(8444,1);
|
||||
INSERT INTO succession_relation VALUES(8479,1);
|
||||
INSERT INTO succession_relation VALUES(8480,1);
|
||||
INSERT INTO succession_relation VALUES(8511,1);
|
||||
INSERT INTO succession_relation VALUES(8512,1);
|
||||
INSERT INTO succession_relation VALUES(8536,1);
|
||||
INSERT INTO succession_relation VALUES(8537,1);
|
||||
INSERT INTO succession_relation VALUES(8640,1);
|
||||
INSERT INTO succession_relation VALUES(8641,1);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'home_story_trigger' ('id' INTEGER NOT NULL, 'pos_id' INTEGER NOT NULL, 'home_event_type' INTEGER NOT NULL, 'num' INTEGER NOT NULL, 'story_id' INTEGER NOT NULL, 'chara_id_1' INTEGER NOT NULL, 'chara_id_2' INTEGER NOT NULL, 'chara_id_3' INTEGER NOT NULL, 'condition_type' INTEGER NOT NULL, 'gallery_chara_id' INTEGER NOT NULL, 'disp_order' INTEGER NOT NULL, PRIMARY KEY('id'), UNIQUE('gallery_chara_id','disp_order'));
|
||||
-- SELECT * FROM home_story_trigger WHERE gallery_chara_id IN (1001, 1002, 1078, 2001, 9001);
|
||||
INSERT INTO home_story_trigger VALUES(1,410,0,1,1001001,1001,0,0,0,1001,1);
|
||||
INSERT INTO home_story_trigger VALUES(2,510,0,1,1001002,1001,0,0,1,1001,2);
|
||||
INSERT INTO home_story_trigger VALUES(3,310,0,1,1001003,1001,0,0,1,1001,3);
|
||||
INSERT INTO home_story_trigger VALUES(76,120,0,2,1001001,1001,1002,0,2,1001,4);
|
||||
INSERT INTO home_story_trigger VALUES(77,520,0,2,1001002,1003,1001,0,3,1001,5);
|
||||
INSERT INTO home_story_trigger VALUES(126,430,0,3,1,1001,1014,1011,1,1001,6);
|
||||
INSERT INTO home_story_trigger VALUES(4,310,0,1,1002001,1002,0,0,0,1002,1);
|
||||
INSERT INTO home_story_trigger VALUES(5,210,0,1,1002002,1002,0,0,1,1002,2);
|
||||
INSERT INTO home_story_trigger VALUES(6,110,0,1,1002003,1002,0,0,1,1002,3);
|
||||
INSERT INTO home_story_trigger VALUES(78,520,0,2,1002001,1010,1002,0,3,1002,4);
|
||||
INSERT INTO home_story_trigger VALUES(79,220,0,2,1002002,1002,1018,0,2,1002,5);
|
||||
86
mdb/testdata/race.sql
vendored
Normal file
86
mdb/testdata/race.sql
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
CREATE TABLE IF NOT EXISTS 'text_data' ('id' INTEGER NOT NULL, 'category' INTEGER NOT NULL, 'index' INTEGER NOT NULL, 'text' TEXT NOT NULL, PRIMARY KEY('category','index'));
|
||||
-- SELECT * FROM text_data WHERE category = 33 AND "index" IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501) OR category = 111 AND "index" IN (SELECT id FROM single_mode_wins_saddle WHERE race_instance_id_1 IN (SELECT id FROM race_instance WHERE race_id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501)) UNION SELECT id FROM single_mode_wins_saddle WHERE race_instance_id_2 IN (SELECT id FROM race_instance WHERE race_id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501)) UNION SELECT id FROM single_mode_wins_saddle WHERE race_instance_id_3 IN (SELECT id FROM race_instance WHERE race_id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501))) OR category IN (237, 119) AND "index" IN (1, 2, 4);
|
||||
INSERT INTO text_data VALUES(33,33,1005,'Satsuki Sho');
|
||||
INSERT INTO text_data VALUES(33,33,1010,'Tokyo Yushun (Japanese Derby)');
|
||||
INSERT INTO text_data VALUES(33,33,1015,'Kikuka Sho');
|
||||
INSERT INTO text_data VALUES(33,33,1026,'Kikuka Sho');
|
||||
INSERT INTO text_data VALUES(33,33,1028,'Satsuki Sho');
|
||||
INSERT INTO text_data VALUES(33,33,1101,'Teio Sho');
|
||||
INSERT INTO text_data VALUES(33,33,2001,'Nikkei Shinshun Hai');
|
||||
INSERT INTO text_data VALUES(33,33,2010,'Spring Stakes');
|
||||
INSERT INTO text_data VALUES(33,33,2035,'Spring Stakes');
|
||||
INSERT INTO text_data VALUES(33,33,3001,'Kyoto Kimpai');
|
||||
INSERT INTO text_data VALUES(33,33,4001,'Manyo Stakes');
|
||||
INSERT INTO text_data VALUES(33,33,4501,'Aster Sho');
|
||||
INSERT INTO text_data VALUES(111,111,1,'Classic Triple Crown');
|
||||
INSERT INTO text_data VALUES(111,111,12,'Japanese Derby');
|
||||
INSERT INTO text_data VALUES(111,111,16,'Kikuka Sho');
|
||||
INSERT INTO text_data VALUES(111,111,18,'Satsuki Sho');
|
||||
INSERT INTO text_data VALUES(111,111,36,'Teio Sho');
|
||||
INSERT INTO text_data VALUES(111,111,40,'Nikkei Shinshun Hai');
|
||||
INSERT INTO text_data VALUES(111,111,49,'Spring S.');
|
||||
INSERT INTO text_data VALUES(111,111,74,'Kyoto Kimpai');
|
||||
INSERT INTO text_data VALUES(111,111,144,'Classic Triple Crown');
|
||||
INSERT INTO text_data VALUES(111,111,148,'Kikuka Sho');
|
||||
INSERT INTO text_data VALUES(111,111,149,'Spring S.');
|
||||
INSERT INTO text_data VALUES(111,111,154,'Classic Triple Crown');
|
||||
INSERT INTO text_data VALUES(111,111,155,'Satsuki Sho');
|
||||
INSERT INTO text_data VALUES(119,119,1,'The Beginning: URA Finale');
|
||||
INSERT INTO text_data VALUES(119,119,2,'Unity Cup: Shine On, Team Spirit!');
|
||||
INSERT INTO text_data VALUES(119,119,4,'Trackblazer: Start of the Climax');
|
||||
INSERT INTO text_data VALUES(237,237,1,'URA Finale');
|
||||
INSERT INTO text_data VALUES(237,237,2,'Unity Cup');
|
||||
INSERT INTO text_data VALUES(237,237,4,'TS Climax');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'race' ('id' INTEGER NOT NULL, 'group' INTEGER NOT NULL, 'grade' INTEGER NOT NULL, 'course_set' INTEGER NOT NULL, 'thumbnail_id' INTEGER NOT NULL, 'ff_cue_name' TEXT NOT NULL, 'ff_cuesheet_name' TEXT NOT NULL, 'ff_anim' INTEGER NOT NULL, 'ff_camera' INTEGER NOT NULL, 'ff_camera_sub' INTEGER NOT NULL, 'ff_sub' INTEGER NOT NULL, 'goal_gate' INTEGER NOT NULL, 'goal_flower' INTEGER NOT NULL, 'audience' INTEGER NOT NULL, 'entry_num' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM race WHERE id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501);
|
||||
INSERT INTO race VALUES(1005,1,100,10504,1005,'snd_mfx_1001_CL','snd_mfx_1001_CL',1005,101,0,0,1,1,0,18);
|
||||
INSERT INTO race VALUES(1010,1,100,10606,1010,'snd_mfx_1001_CL','snd_mfx_1001_CL',1010,101,0,0,5,5,0,18);
|
||||
INSERT INTO race VALUES(1015,1,100,10810,1015,'snd_mfx_1002_CL','snd_mfx_1002_CL',1015,102,0,0,3,3,0,18);
|
||||
INSERT INTO race VALUES(1026,1,100,10810,1015,'snd_mfx_1002_CL','snd_mfx_1002_CL',1015,102,0,0,3,3,0,17);
|
||||
INSERT INTO race VALUES(1028,1,100,10604,1028,'snd_mfx_1001_CL','snd_mfx_1001_CL',1028,101,0,0,9,0,0,18);
|
||||
INSERT INTO race VALUES(1101,1,100,11103,1101,'snd_mfx_1015_CL','snd_mfx_1015_CL',1101,313,0,0,1,0,0,16);
|
||||
INSERT INTO race VALUES(2001,1,200,10809,2001,'snd_mfx_1008_CL','snd_mfx_1008_CL',2001,208,0,0,0,0,0,18);
|
||||
INSERT INTO race VALUES(2010,1,200,10503,2010,'snd_mfx_1005_CL','snd_mfx_1005_CL',2010,205,0,0,0,0,0,16);
|
||||
INSERT INTO race VALUES(2035,1,200,10503,2010,'snd_mfx_1005_CL','snd_mfx_1005_CL',2010,205,0,0,0,0,0,5);
|
||||
INSERT INTO race VALUES(3001,1,300,10805,3001,'snd_mfx_1008_CL','snd_mfx_1008_CL',3001,208,0,0,0,0,0,18);
|
||||
INSERT INTO race VALUES(4001,1,400,10810,4001,'snd_mfx_1013_CL','snd_mfx_1013_CL',4001,313,0,0,0,0,0,18);
|
||||
INSERT INTO race VALUES(4501,1,700,10502,4501,'snd_mfx_1010_CL','snd_mfx_1010_CL',4501,310,0,0,0,0,0,16);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'race_instance' ('id' INTEGER NOT NULL, 'race_id' INTEGER NOT NULL, 'npc_group_id' INTEGER NOT NULL, 'date' INTEGER NOT NULL, 'time' INTEGER NOT NULL, 'clock_time' INTEGER NOT NULL, 'race_number' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM race_instance WHERE race_id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501);
|
||||
INSERT INTO race_instance VALUES(100501,1005,199,414,2,0,11);
|
||||
INSERT INTO race_instance VALUES(101001,1010,199,526,2,0,11);
|
||||
INSERT INTO race_instance VALUES(701301,1010,0,0,2,0,11);
|
||||
INSERT INTO race_instance VALUES(101501,1015,199,1020,2,0,11);
|
||||
INSERT INTO race_instance VALUES(102601,1026,199,1020,2,0,11);
|
||||
INSERT INTO race_instance VALUES(102801,1028,199,414,2,0,11);
|
||||
INSERT INTO race_instance VALUES(110101,1101,303,626,4,0,11);
|
||||
INSERT INTO race_instance VALUES(200101,2001,103,117,2,0,11);
|
||||
INSERT INTO race_instance VALUES(201001,2010,102,317,2,0,11);
|
||||
INSERT INTO race_instance VALUES(203501,2035,102,317,2,0,11);
|
||||
INSERT INTO race_instance VALUES(300101,3001,102,105,2,0,11);
|
||||
INSERT INTO race_instance VALUES(400101,4001,104,105,2,0,10);
|
||||
INSERT INTO race_instance VALUES(450101,4501,102,907,2,0,9);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'single_mode_wins_saddle' ('id' INTEGER NOT NULL, 'priority' INTEGER NOT NULL, 'group_id' INTEGER NOT NULL, 'condition' INTEGER NOT NULL, 'win_saddle_type' INTEGER NOT NULL, 'race_instance_id_1' INTEGER NOT NULL, 'race_instance_id_2' INTEGER NOT NULL, 'race_instance_id_3' INTEGER NOT NULL, 'race_instance_id_4' INTEGER NOT NULL, 'race_instance_id_5' INTEGER NOT NULL, 'race_instance_id_6' INTEGER NOT NULL, 'race_instance_id_7' INTEGER NOT NULL, 'race_instance_id_8' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM single_mode_wins_saddle WHERE id IN (SELECT id FROM single_mode_wins_saddle WHERE race_instance_id_1 IN (SELECT id FROM race_instance WHERE race_id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501)) UNION SELECT id FROM single_mode_wins_saddle WHERE race_instance_id_2 IN (SELECT id FROM race_instance WHERE race_id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501)) UNION SELECT id FROM single_mode_wins_saddle WHERE race_instance_id_3 IN (SELECT id FROM race_instance WHERE race_id IN (1005, 1010, 1015, 1026, 1028, 1101, 2001, 2010, 2035, 3001, 4001, 4501)));
|
||||
INSERT INTO single_mode_wins_saddle VALUES(1,1,1,0,0,100501,101001,101501,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(12,15,22,0,3,101001,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(16,20,28,0,3,101501,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(18,23,17,0,3,100501,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(36,41,39,0,3,110101,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(40,45,45,0,2,200101,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(49,54,54,0,2,201001,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(74,80,80,0,1,300101,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(144,2,1,0,0,100501,101001,102601,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(148,21,28,0,3,102601,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(149,55,54,0,2,203501,0,0,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(154,2,1,0,0,102801,101001,101501,0,0,0,0,0);
|
||||
INSERT INTO single_mode_wins_saddle VALUES(155,23,17,0,3,102801,0,0,0,0,0,0,0);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'single_mode_scenario' ('id' INTEGER NOT NULL, 'sort_id' INTEGER NOT NULL, 'scenario_image_id' INTEGER NOT NULL, 'prologue_id' INTEGER NOT NULL, 'turn_set_id' INTEGER NOT NULL, 'hint_rate' INTEGER NOT NULL, 'start_date' INTEGER NOT NULL, 'end_date' INTEGER NOT NULL, 'bg_id' INTEGER NOT NULL, 'bg_sub_id' INTEGER NOT NULL, 'bg_offset_x' INTEGER NOT NULL, 'sec_bg_id' INTEGER NOT NULL, 'sec_bg_sub_id' INTEGER NOT NULL, 'label_font_color' TEXT NOT NULL, 'label_bg_color' TEXT NOT NULL, 'chara_program_change_flag' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM single_mode_scenario WHERE id IN (1, 2, 4);
|
||||
INSERT INTO single_mode_scenario VALUES(1,1,1,80000001,1,0,1577836800,2524608000,5,5110,375,37,110,'FFFFFF','9CD127',0);
|
||||
INSERT INTO single_mode_scenario VALUES(2,2,2,80000002,2,0,1762466400,2524608000,124,2111,0,79,110,'FFFFFF','18B1FF',0);
|
||||
INSERT INTO single_mode_scenario VALUES(4,3,4,80000004,4,0,1773352800,2524608000,24,110,0,56,111,'FFFFFF','EABA00',1);
|
||||
164
mdb/testdata/skill.sql
vendored
Normal file
164
mdb/testdata/skill.sql
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
CREATE TABLE IF NOT EXISTS 'text_data' ('id' INTEGER NOT NULL, 'category' INTEGER NOT NULL, 'index' INTEGER NOT NULL, 'text' TEXT NOT NULL, PRIMARY KEY('category','index'));
|
||||
-- SELECT * FROM text_data WHERE category IN (47, 48) AND "index" IN (10351, 100011, 100351, 110241, 200011, 200012, 200013, 200014, 200021, 200022, 200023, 200361, 200362, 200831, 201801, 300011, 900011, 900351, 910241) OR category = 4 AND "index" IN (SELECT card_id FROM card_rarity_data WHERE skill_set IN (SELECT id FROM skill_set WHERE skill_id1 IN (10351, 100011, 100351, 110241, 200011, 200012, 200013, 200014, 200021, 200022, 200023, 200361, 200362, 200831, 201801, 300011, 900011, 900351, 910241)));
|
||||
INSERT INTO text_data VALUES(47,47,10351,'V Is for Victory!');
|
||||
INSERT INTO text_data VALUES(47,47,100011,'Shooting Star');
|
||||
INSERT INTO text_data VALUES(47,47,100351,'Our Ticket to Win!');
|
||||
INSERT INTO text_data VALUES(47,47,110241,'Flowery☆Maneuver');
|
||||
INSERT INTO text_data VALUES(47,47,200011,'Right-Handed ◎');
|
||||
INSERT INTO text_data VALUES(47,47,200012,'Right-Handed ○');
|
||||
INSERT INTO text_data VALUES(47,47,200013,'Right-Handed ×');
|
||||
INSERT INTO text_data VALUES(47,47,200014,'Right-Handed Demon');
|
||||
INSERT INTO text_data VALUES(47,47,200021,'Left-Handed ◎');
|
||||
INSERT INTO text_data VALUES(47,47,200022,'Left-Handed ○');
|
||||
INSERT INTO text_data VALUES(47,47,200023,'Left-Handed ×');
|
||||
INSERT INTO text_data VALUES(47,47,200361,'Beeline Burst');
|
||||
INSERT INTO text_data VALUES(47,47,200362,'Straightaway Adept');
|
||||
INSERT INTO text_data VALUES(47,47,200831,'Subdued Front Runners');
|
||||
INSERT INTO text_data VALUES(47,47,201801,'♡ 3D Nail Art');
|
||||
INSERT INTO text_data VALUES(47,47,300011,'Unquenched Thirst');
|
||||
INSERT INTO text_data VALUES(47,47,900011,'Shooting Star');
|
||||
INSERT INTO text_data VALUES(47,47,900351,'Our Ticket to Win!');
|
||||
INSERT INTO text_data VALUES(47,47,910241,'Flowery☆Maneuver');
|
||||
INSERT INTO text_data VALUES(48,48,10351,'Moderately increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.');
|
||||
INSERT INTO text_data VALUES(48,48,100011,'Ride the momentum to increase velocity and very slightly increase acceleration after passing another runner toward the front late-race.');
|
||||
INSERT INTO text_data VALUES(48,48,100351,'Increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.');
|
||||
INSERT INTO text_data VALUES(48,48,110241,'Increase velocity when passing another runner toward the front on the final corner. If passing toward the back, increase acceleration instead.');
|
||||
INSERT INTO text_data VALUES(48,48,200011,'Increase performance on right-handed tracks.');
|
||||
INSERT INTO text_data VALUES(48,48,200012,'Moderately increase performance on right-handed tracks.');
|
||||
INSERT INTO text_data VALUES(48,48,200013,'Moderately decrease performance on right-handed tracks.');
|
||||
INSERT INTO text_data VALUES(48,48,200014,'Increase proficiency in right-handed tracks, increasing Speed and Power.');
|
||||
INSERT INTO text_data VALUES(48,48,200021,'Increase performance on left-handed tracks.');
|
||||
INSERT INTO text_data VALUES(48,48,200022,'Moderately increase performance on left-handed tracks.');
|
||||
INSERT INTO text_data VALUES(48,48,200023,'Moderately decrease performance on left-handed tracks.');
|
||||
INSERT INTO text_data VALUES(48,48,200361,'Increase velocity on a straight.');
|
||||
INSERT INTO text_data VALUES(48,48,200362,'Slightly increase velocity on a straight.');
|
||||
INSERT INTO text_data VALUES(48,48,200831,'Slightly increase fatigue for front runners early-race.');
|
||||
INSERT INTO text_data VALUES(48,48,201801,'Moderately decrease performance on firm ground.');
|
||||
INSERT INTO text_data VALUES(48,48,300011,'Moderately increase performance with the desire to race.');
|
||||
INSERT INTO text_data VALUES(48,48,900011,'Slightly increase velocity and very minimally increase acceleration after passing another runner toward the front late-race.');
|
||||
INSERT INTO text_data VALUES(48,48,900351,'Slightly increase velocity when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.');
|
||||
INSERT INTO text_data VALUES(48,48,910241,'Slightly increase velocity when passing another runner toward the front on the final corner. If passing toward the back, slightly increase acceleration instead.');
|
||||
INSERT INTO text_data VALUES(4,4,100101,'[Special Dreamer] Special Week');
|
||||
INSERT INTO text_data VALUES(4,4,102402,'[Sunlight Bouquet] Mayano Top Gun');
|
||||
INSERT INTO text_data VALUES(4,4,103501,'[Get to Winning!] Winning Ticket');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'skill_data' ('id' INTEGER NOT NULL, 'rarity' INTEGER NOT NULL, 'group_id' INTEGER NOT NULL, 'group_rate' INTEGER NOT NULL, 'filter_switch' INTEGER NOT NULL, 'grade_value' INTEGER NOT NULL, 'skill_category' INTEGER NOT NULL, 'tag_id' TEXT NOT NULL, 'unique_skill_id_1' INTEGER NOT NULL, 'unique_skill_id_2' INTEGER NOT NULL, 'exp_type' INTEGER NOT NULL, 'potential_per_default' INTEGER NOT NULL, 'activate_lot' INTEGER NOT NULL, 'precondition_1' TEXT NOT NULL, 'condition_1' TEXT NOT NULL, 'float_ability_time_1' INTEGER NOT NULL, 'ability_time_usage_1' INTEGER NOT NULL, 'float_cooldown_time_1' INTEGER NOT NULL, 'ability_type_1_1' INTEGER NOT NULL, 'ability_value_usage_1_1' INTEGER NOT NULL, 'ability_value_level_usage_1_1' INTEGER NOT NULL, 'float_ability_value_1_1' INTEGER NOT NULL, 'target_type_1_1' INTEGER NOT NULL, 'target_value_1_1' INTEGER NOT NULL, 'ability_type_1_2' INTEGER NOT NULL, 'ability_value_usage_1_2' INTEGER NOT NULL, 'ability_value_level_usage_1_2' INTEGER NOT NULL, 'float_ability_value_1_2' INTEGER NOT NULL, 'target_type_1_2' INTEGER NOT NULL, 'target_value_1_2' INTEGER NOT NULL, 'ability_type_1_3' INTEGER NOT NULL, 'ability_value_usage_1_3' INTEGER NOT NULL, 'ability_value_level_usage_1_3' INTEGER NOT NULL, 'float_ability_value_1_3' INTEGER NOT NULL, 'target_type_1_3' INTEGER NOT NULL, 'target_value_1_3' INTEGER NOT NULL, 'precondition_2' TEXT NOT NULL, 'condition_2' TEXT NOT NULL, 'float_ability_time_2' INTEGER NOT NULL, 'ability_time_usage_2' INTEGER NOT NULL, 'float_cooldown_time_2' INTEGER NOT NULL, 'ability_type_2_1' INTEGER NOT NULL, 'ability_value_usage_2_1' INTEGER NOT NULL, 'ability_value_level_usage_2_1' INTEGER NOT NULL, 'float_ability_value_2_1' INTEGER NOT NULL, 'target_type_2_1' INTEGER NOT NULL, 'target_value_2_1' INTEGER NOT NULL, 'ability_type_2_2' INTEGER NOT NULL, 'ability_value_usage_2_2' INTEGER NOT NULL, 'ability_value_level_usage_2_2' INTEGER NOT NULL, 'float_ability_value_2_2' INTEGER NOT NULL, 'target_type_2_2' INTEGER NOT NULL, 'target_value_2_2' INTEGER NOT NULL, 'ability_type_2_3' INTEGER NOT NULL, 'ability_value_usage_2_3' INTEGER NOT NULL, 'ability_value_level_usage_2_3' INTEGER NOT NULL, 'float_ability_value_2_3' INTEGER NOT NULL, 'target_type_2_3' INTEGER NOT NULL, 'target_value_2_3' INTEGER NOT NULL, 'popularity_add_param_1' INTEGER NOT NULL, 'popularity_add_value_1' INTEGER NOT NULL, 'popularity_add_param_2' INTEGER NOT NULL, 'popularity_add_value_2' INTEGER NOT NULL, 'disp_order' INTEGER NOT NULL, 'icon_id' INTEGER NOT NULL, 'plate_type' INTEGER NOT NULL, 'disable_singlemode' INTEGER NOT NULL, 'disable_count_condition' INTEGER NOT NULL, 'is_general_skill' INTEGER NOT NULL, 'start_date' INTEGER NOT NULL, 'end_date' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM skill_data WHERE id IN (10351, 100011, 100351, 110241, 200011, 200012, 200013, 200014, 200021, 200022, 200023, 200361, 200362, 200831, 201801, 300011, 900011, 900351, 910241);
|
||||
INSERT INTO skill_data VALUES(10351,3,1035,1,0,240,5,'401',0,0,1,0,0,'is_finalcorner==1&blocked_side_continuetime>=2','is_finalcorner==1&corner==0&order<=5',50000,1,5000000,27,1,1,2500,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,30,0,0,10,20013,0,1,0,0,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(100011,5,10001,1,0,340,5,'401/403',0,0,1,0,0,'','phase>=2&order>=1&order_rate<=50&change_order_onetime<0',50000,1,5000000,27,1,1,3500,1,0,31,1,1,1000,1,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,60,0,0,10,20013,0,1,0,0,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(100351,4,10035,1,0,340,5,'401',0,0,1,0,0,'is_finalcorner==1&blocked_side_continuetime>=2','is_finalcorner==1&corner==0&order<=5',50000,1,5000000,27,1,1,3500,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,60,0,0,10,20013,0,1,0,0,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(110241,5,11024,1,0,340,5,'401/403',0,0,1,0,0,'','is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0',50000,1,5000000,27,1,1,3500,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0',40000,1,5000000,31,1,1,4000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,1,30,3,30,10,20013,0,1,0,0,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200011,1,20001,2,0,174,0,'401',0,0,0,10,0,'','rotation==1',-1,1,0,1,1,1,600000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,45,0,0,1005,10011,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200012,1,20001,1,0,129,0,'401',0,0,0,10,0,'','rotation==1',-1,1,0,1,1,1,400000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,30,0,0,1010,10011,0,0,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200013,1,20001,-1,0,-129,0,'401',0,0,0,10,0,'','rotation==1',-1,1,0,1,1,1,-400000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,-30,0,0,1020,10014,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200014,2,20001,3,0,461,0,'401/403',0,0,0,10,0,'','rotation==1',-1,1,0,1,1,1,600000,1,0,3,1,1,600000,1,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,30,3,30,1000,10012,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200021,1,20002,2,0,174,0,'401',0,0,0,10,0,'','rotation==2',-1,1,0,1,1,1,600000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,45,0,0,1030,10011,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200022,1,20002,1,0,129,0,'401',0,0,0,10,0,'','rotation==2',-1,1,0,1,1,1,400000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,30,0,0,1040,10011,0,0,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200023,1,20002,-1,0,-129,0,'401',0,0,0,10,0,'','rotation==2',-1,1,0,1,1,1,-400000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,-30,0,0,1050,10014,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200361,2,20036,2,0,508,4,'401',0,0,0,10,1,'','straight_random==1',24000,1,300000,27,1,1,3500,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,60,0,0,1980,20012,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200362,1,20036,1,0,217,4,'401',0,0,0,10,1,'','straight_random==1',24000,1,300000,27,1,1,1500,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,20,0,0,1990,20011,0,0,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(200831,1,20083,1,0,217,1,'301/406',0,0,0,10,1,'','running_style_count_nige_otherself>=1&phase_random==0&accumulatetime>=5',0,1,5000000,9,1,1,-100,18,1,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,2,10,5,10,2820,30051,0,0,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(201801,1,20180,-1,0,-129,0,'401',0,0,0,10,0,'','ground_condition==1',-1,1,0,1,1,1,-400000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,-30,0,0,20,10014,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(300011,1,30001,1,0,0,0,'402',0,0,0,0,0,'','track_id==10008',-1,1,0,2,1,1,400000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,2,30,0,0,70000,10021,1,1,0,0,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(900011,1,90001,2,0,180,5,'401/403',100011,0,0,0,1,'','phase>=2&order>=1&order_rate<=50&change_order_onetime<0',30000,1,5000000,27,1,1,1500,1,0,31,1,1,500,1,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,15,0,0,30,20011,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(900351,1,90035,2,0,180,5,'401',100351,10351,0,0,1,'is_finalcorner==1&blocked_side_continuetime>=2','is_finalcorner==1&corner==0&order<=5',30000,1,5000000,27,1,1,1500,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','',0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,15,0,0,30,20011,0,1,0,1,1483228800,2524608000);
|
||||
INSERT INTO skill_data VALUES(910241,1,91024,2,0,180,5,'401/403',110241,0,0,0,1,'','is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0',30000,1,5000000,27,1,1,1500,1,0,0,1,1,0,0,0,0,1,1,0,0,0,'','is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0',24000,1,5000000,31,1,1,2000,1,0,0,1,1,0,0,0,0,1,1,0,0,0,1,7,3,7,30,20011,0,1,0,1,1483228800,2524608000);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'single_mode_skill_need_point' ('id' INTEGER NOT NULL, 'need_skill_point' INTEGER NOT NULL, 'status_type' INTEGER NOT NULL, 'status_value' INTEGER NOT NULL, 'solvable_type' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM single_mode_skill_need_point WHERE id IN (10351, 100011, 100351, 110241, 200011, 200012, 200013, 200014, 200021, 200022, 200023, 200361, 200362, 200831, 201801, 300011, 900011, 900351, 910241);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200011,110,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200012,90,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200013,50,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200014,130,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200021,110,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200022,90,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200023,50,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200361,170,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200362,170,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(200831,130,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(201801,50,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(900011,200,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(900351,200,0,0,0);
|
||||
INSERT INTO single_mode_skill_need_point VALUES(910241,200,0,0,0);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'card_data' ('id' INTEGER NOT NULL, 'chara_id' INTEGER NOT NULL, 'default_rarity' INTEGER NOT NULL, 'limited_chara' INTEGER NOT NULL, 'available_skill_set_id' INTEGER NOT NULL, 'talent_speed' INTEGER NOT NULL, 'talent_stamina' INTEGER NOT NULL, 'talent_pow' INTEGER NOT NULL, 'talent_guts' INTEGER NOT NULL, 'talent_wiz' INTEGER NOT NULL, 'talent_group_id' INTEGER NOT NULL, 'bg_id' INTEGER NOT NULL, 'get_piece_id' INTEGER NOT NULL, 'running_style' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM card_data WHERE id IN (SELECT card_id FROM card_rarity_data WHERE skill_set IN (SELECT id FROM skill_set WHERE skill_id1 IN (10351, 100011, 100351, 110241, 200011, 200012, 200013, 200014, 200021, 200022, 200023, 200361, 200362, 200831, 201801, 300011, 900011, 900351, 910241)));
|
||||
INSERT INTO card_data VALUES(100101,1001,3,0,100101,0,20,0,0,10,100101,8,100101,3);
|
||||
INSERT INTO card_data VALUES(102402,1024,3,0,102402,10,10,0,0,10,102402,291,102402,2);
|
||||
INSERT INTO card_data VALUES(103501,1035,1,0,103501,0,10,20,0,0,103501,8,103501,3);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'card_rarity_data' ('id' INTEGER NOT NULL, 'card_id' INTEGER NOT NULL, 'rarity' INTEGER NOT NULL, 'race_dress_id' INTEGER NOT NULL, 'skill_set' INTEGER NOT NULL, 'speed' INTEGER NOT NULL, 'stamina' INTEGER NOT NULL, 'pow' INTEGER NOT NULL, 'guts' INTEGER NOT NULL, 'wiz' INTEGER NOT NULL, 'max_speed' INTEGER NOT NULL, 'max_stamina' INTEGER NOT NULL, 'max_pow' INTEGER NOT NULL, 'max_guts' INTEGER NOT NULL, 'max_wiz' INTEGER NOT NULL, 'proper_distance_short' INTEGER NOT NULL, 'proper_distance_mile' INTEGER NOT NULL, 'proper_distance_middle' INTEGER NOT NULL, 'proper_distance_long' INTEGER NOT NULL, 'proper_running_style_nige' INTEGER NOT NULL, 'proper_running_style_senko' INTEGER NOT NULL, 'proper_running_style_sashi' INTEGER NOT NULL, 'proper_running_style_oikomi' INTEGER NOT NULL, 'proper_ground_turf' INTEGER NOT NULL, 'proper_ground_dirt' INTEGER NOT NULL, 'get_dress_id_1' INTEGER NOT NULL, 'get_dress_id_2' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM card_rarity_data WHERE skill_set IN (SELECT id FROM skill_set WHERE skill_id1 IN (10351, 100011, 100351, 110241, 200011, 200012, 200013, 200014, 200021, 200022, 200023, 200361, 200362, 200831, 201801, 300011, 900011, 900351, 910241));
|
||||
INSERT INTO card_rarity_data VALUES(10010103,100101,3,100101,10010103,83,88,98,90,91,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100101);
|
||||
INSERT INTO card_rarity_data VALUES(10010104,100101,4,100101,10010104,92,98,109,100,101,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100101);
|
||||
INSERT INTO card_rarity_data VALUES(10010105,100101,5,100101,10010105,102,108,120,110,110,1200,1200,1200,1200,1200,2,5,7,7,1,7,7,5,7,1,101,100101);
|
||||
INSERT INTO card_rarity_data VALUES(10240203,102402,3,102426,11240103,83,100,82,90,95,1200,1200,1200,1200,1200,4,4,7,7,7,7,6,6,7,3,101,102426);
|
||||
INSERT INTO card_rarity_data VALUES(10240204,102402,4,102426,11240104,92,112,91,100,105,1200,1200,1200,1200,1200,4,4,7,7,7,7,6,6,7,3,101,102426);
|
||||
INSERT INTO card_rarity_data VALUES(10240205,102402,5,102426,11240105,102,123,100,110,115,1200,1200,1200,1200,1200,4,4,7,7,7,7,6,6,7,3,101,102426);
|
||||
INSERT INTO card_rarity_data VALUES(10350101,103501,1,101,10350101,87,68,91,74,80,1200,1200,1200,1200,1200,1,2,7,6,1,6,7,1,7,1,101,0);
|
||||
INSERT INTO card_rarity_data VALUES(10350102,103501,2,101,10350102,93,72,97,78,85,1200,1200,1200,1200,1200,1,2,7,6,1,6,7,1,7,1,101,0);
|
||||
INSERT INTO card_rarity_data VALUES(10350103,103501,3,103501,10350103,98,76,102,83,91,1200,1200,1200,1200,1200,1,2,7,6,1,6,7,1,7,1,101,103501);
|
||||
INSERT INTO card_rarity_data VALUES(10350104,103501,4,103501,10350104,109,85,114,92,100,1200,1200,1200,1200,1200,1,2,7,6,1,6,7,1,7,1,101,103501);
|
||||
INSERT INTO card_rarity_data VALUES(10350105,103501,5,103501,10350105,120,93,125,101,111,1200,1200,1200,1200,1200,1,2,7,6,1,6,7,1,7,1,101,103501);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'skill_set' ('id' INTEGER NOT NULL, 'skill_id1' INTEGER NOT NULL, 'skill_level1' INTEGER NOT NULL, 'skill_id2' INTEGER NOT NULL, 'skill_level2' INTEGER NOT NULL, 'skill_id3' INTEGER NOT NULL, 'skill_level3' INTEGER NOT NULL, 'skill_id4' INTEGER NOT NULL, 'skill_level4' INTEGER NOT NULL, 'skill_id5' INTEGER NOT NULL, 'skill_level5' INTEGER NOT NULL, 'skill_id6' INTEGER NOT NULL, 'skill_level6' INTEGER NOT NULL, 'skill_id7' INTEGER NOT NULL, 'skill_level7' INTEGER NOT NULL, 'skill_id8' INTEGER NOT NULL, 'skill_level8' INTEGER NOT NULL, 'skill_id9' INTEGER NOT NULL, 'skill_level9' INTEGER NOT NULL, 'skill_id10' INTEGER NOT NULL, 'skill_level10' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM skill_set WHERE skill_id1 IN (10351, 100011, 100351, 110241, 200011, 200012, 200013, 200014, 200021, 200022, 200023, 200361, 200362, 200831, 201801, 300011, 900011, 900351, 910241);
|
||||
INSERT INTO skill_set VALUES(8001,200012,1,200433,1,200532,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8007,200022,1,200572,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8008,200362,1,200562,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8011,200012,1,200592,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8016,200022,1,200472,1,200502,1,200632,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8028,200012,1,200492,1,200572,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8034,200022,1,200612,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8037,200362,1,200632,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8043,200012,1,200401,1,200532,1,200712,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8053,200362,1,200502,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8054,200022,1,200352,1,200612,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8057,200012,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8068,200022,1,200572,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8072,200022,1,200612,1,200752,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8078,200012,1,200401,1,200202,1,200622,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8083,200022,1,200332,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8101,200362,1,200352,1,200552,1,200682,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8103,200012,1,200052,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8107,200012,1,200372,1,200582,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8114,200012,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8117,200022,1,200332,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8123,200362,1,200532,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8124,200012,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(8133,200022,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(100013,100351,1,200591,1,201401,1,201392,1,201422,1,200492,1,200432,1,200612,1,200032,1,200732,1);
|
||||
INSERT INTO skill_set VALUES(100037,100351,1,201401,1,200612,1,200462,1,200732,1,200032,1,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(100046,100351,1,201401,1,200612,1,200462,1,200732,1,200032,1,201691,1,200441,1,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(400007,200012,1,200492,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(400012,200022,1,200612,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(400019,200012,1,200401,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(400028,200022,1,200352,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(400030,200012,1,200871,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(1100101,100011,1,200511,1,200612,1,200602,1,200032,1,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(1100102,100011,1,200511,1,200491,1,200602,1,200032,1,200132,1,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(1103401,200361,1,200461,1,202002,1,200172,1,200292,1,200752,1,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(1103501,100351,1,200282,1,200612,1,200462,1,200732,1,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(1106701,200361,1,201242,1,201262,1,201522,1,200352,1,200382,1,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10010103,100011,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10010104,100011,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10010105,100011,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10350101,10351,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10350102,10351,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10350103,100351,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10350104,100351,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(10350105,100351,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(11240103,110241,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(11240104,110241,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(11240105,110241,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32100101,100011,1,200511,1,200612,1,201402,1,200592,1,200342,1,200562,1,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32100102,100011,1,200511,1,200611,1,201401,1,200592,1,200342,1,200332,1,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32100106,100011,1,200511,1,201401,1,200592,1,200342,1,200332,1,200732,1,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32101301,200361,1,200562,1,200462,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32101304,200361,1,200462,1,200742,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32103502,100351,1,200591,1,201401,1,201392,1,200732,1,201422,1,200492,1,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32801301,200012,1,201352,1,200432,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32802801,200362,1,200992,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(32804001,200362,1,200622,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(51100132,100011,1,200511,1,200612,1,200732,1,200592,1,0,0,0,0,0,0,0,0,0,0);
|
||||
INSERT INTO skill_set VALUES(51103531,100351,1,202081,1,201402,1,200612,1,200602,1,0,0,0,0,0,0,0,0,0,0);
|
||||
113
mdb/testdata/spark.sql
vendored
Normal file
113
mdb/testdata/spark.sql
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
CREATE TABLE IF NOT EXISTS 'text_data' ('id' INTEGER NOT NULL, 'category' INTEGER NOT NULL, 'index' INTEGER NOT NULL, 'text' TEXT NOT NULL, PRIMARY KEY('category','index'));
|
||||
-- SELECT * FROM text_data WHERE category IN (147, 172) AND "index" in (101, 102, 103, 201, 202, 203, 1101, 1102, 1103, 1000101, 1000102, 1000103, 2000101, 2000102, 2000103, 3000101, 3000102, 3000103, 10010101, 10010102, 10010103);
|
||||
INSERT INTO text_data VALUES(147,147,101,'Speed');
|
||||
INSERT INTO text_data VALUES(147,147,102,'Speed');
|
||||
INSERT INTO text_data VALUES(147,147,103,'Speed');
|
||||
INSERT INTO text_data VALUES(147,147,201,'Stamina');
|
||||
INSERT INTO text_data VALUES(147,147,202,'Stamina');
|
||||
INSERT INTO text_data VALUES(147,147,203,'Stamina');
|
||||
INSERT INTO text_data VALUES(147,147,1101,'Turf');
|
||||
INSERT INTO text_data VALUES(147,147,1102,'Turf');
|
||||
INSERT INTO text_data VALUES(147,147,1103,'Turf');
|
||||
INSERT INTO text_data VALUES(147,147,1000101,'February S.');
|
||||
INSERT INTO text_data VALUES(147,147,1000102,'February S.');
|
||||
INSERT INTO text_data VALUES(147,147,1000103,'February S.');
|
||||
INSERT INTO text_data VALUES(147,147,2000101,'Right-Handed ○');
|
||||
INSERT INTO text_data VALUES(147,147,2000102,'Right-Handed ○');
|
||||
INSERT INTO text_data VALUES(147,147,2000103,'Right-Handed ○');
|
||||
INSERT INTO text_data VALUES(147,147,3000101,'URA Finale');
|
||||
INSERT INTO text_data VALUES(147,147,3000102,'URA Finale');
|
||||
INSERT INTO text_data VALUES(147,147,3000103,'URA Finale');
|
||||
INSERT INTO text_data VALUES(147,147,10010101,'Shooting Star');
|
||||
INSERT INTO text_data VALUES(147,147,10010102,'Shooting Star');
|
||||
INSERT INTO text_data VALUES(147,147,10010103,'Shooting Star');
|
||||
INSERT INTO text_data VALUES(172,172,101,'A Spark that increases Speed.');
|
||||
INSERT INTO text_data VALUES(172,172,102,'A Spark that increases Speed.');
|
||||
INSERT INTO text_data VALUES(172,172,103,'A Spark that increases Speed.');
|
||||
INSERT INTO text_data VALUES(172,172,201,'A Spark that increases Stamina.');
|
||||
INSERT INTO text_data VALUES(172,172,202,'A Spark that increases Stamina.');
|
||||
INSERT INTO text_data VALUES(172,172,203,'A Spark that increases Stamina.');
|
||||
INSERT INTO text_data VALUES(172,172,1101,'A Spark that increases Turf Aptitude.');
|
||||
INSERT INTO text_data VALUES(172,172,1102,'A Spark that increases Turf Aptitude.');
|
||||
INSERT INTO text_data VALUES(172,172,1103,'A Spark that increases Turf Aptitude.');
|
||||
INSERT INTO text_data VALUES(172,172,1000101,'A Spark that increases Power and gives a skill hint for "Winter Runner ○".');
|
||||
INSERT INTO text_data VALUES(172,172,1000102,'A Spark that increases Power and gives a skill hint for "Winter Runner ○".');
|
||||
INSERT INTO text_data VALUES(172,172,1000103,'A Spark that increases Power and gives a skill hint for "Winter Runner ○".');
|
||||
INSERT INTO text_data VALUES(172,172,2000101,'A Spark that gives a skill hint for "Right-Handed ○".');
|
||||
INSERT INTO text_data VALUES(172,172,2000102,'A Spark that gives a skill hint for "Right-Handed ○".');
|
||||
INSERT INTO text_data VALUES(172,172,2000103,'A Spark that gives a skill hint for "Right-Handed ○".');
|
||||
INSERT INTO text_data VALUES(172,172,3000101,'A Spark that increases Speed and Stamina.');
|
||||
INSERT INTO text_data VALUES(172,172,3000102,'A Spark that increases Speed and Stamina.');
|
||||
INSERT INTO text_data VALUES(172,172,3000103,'A Spark that increases Speed and Stamina.');
|
||||
INSERT INTO text_data VALUES(172,172,10010101,'A Spark that gives a skill hint for "Shooting Star".');
|
||||
INSERT INTO text_data VALUES(172,172,10010102,'A Spark that gives a skill hint for "Shooting Star".');
|
||||
INSERT INTO text_data VALUES(172,172,10010103,'A Spark that gives a skill hint for "Shooting Star".');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'succession_factor' ('factor_id' INTEGER NOT NULL, 'factor_group_id' INTEGER NOT NULL, 'rarity' INTEGER NOT NULL, 'grade' INTEGER NOT NULL, 'factor_type' INTEGER NOT NULL, 'effect_group_id' INTEGER NOT NULL, 'start_date' INTEGER NOT NULL, 'end_date' INTEGER NOT NULL, PRIMARY KEY('factor_id'));
|
||||
-- SELECT * FROM succession_factor WHERE factor_id IN (101, 102, 103, 201, 202, 203, 1101, 1102, 1103, 1000101, 1000102, 1000103, 2000101, 2000102, 2000103, 3000101, 3000102, 3000103, 10010101, 10010102, 10010103);
|
||||
INSERT INTO succession_factor VALUES(101,1,1,1,1,11,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(102,1,2,1,1,12,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(103,1,3,1,1,13,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(201,2,1,1,1,11,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(202,2,2,1,1,12,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(203,2,3,1,1,13,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(1101,11,1,1,2,21,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(1102,11,2,1,2,22,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(1103,11,3,1,2,23,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(1000101,10001,1,1,5,51,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(1000102,10001,2,1,5,52,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(1000103,10001,3,1,5,53,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(2000101,20001,1,1,4,41,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(2000102,20001,2,1,4,42,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(2000103,20001,3,1,4,43,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(3000101,30001,1,1,6,51,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(3000102,30001,2,1,6,52,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(3000103,30001,3,1,6,53,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(10010101,100101,1,2,3,31,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(10010102,100101,2,2,3,32,1483228800,2524608000);
|
||||
INSERT INTO succession_factor VALUES(10010103,100101,3,2,3,33,1483228800,2524608000);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'succession_factor_effect' ('id' INTEGER NOT NULL, 'factor_group_id' INTEGER NOT NULL, 'effect_id' INTEGER NOT NULL, 'target_type' INTEGER NOT NULL, 'value_1' INTEGER NOT NULL, 'value_2' INTEGER NOT NULL, PRIMARY KEY('id'));
|
||||
-- SELECT * FROM succession_factor_effect WHERE factor_group_id IN (SELECT factor_group_id FROM succession_factor WHERE factor_id IN (101, 102, 103, 201, 202, 203, 1101, 1102, 1103, 1000101, 1000102, 1000103, 2000101, 2000102, 2000103, 3000101, 3000102, 3000103, 10010101, 10010102, 10010103));
|
||||
INSERT INTO succession_factor_effect VALUES(1,1,1,1,1,0);
|
||||
INSERT INTO succession_factor_effect VALUES(2,1,2,1,4,0);
|
||||
INSERT INTO succession_factor_effect VALUES(3,1,3,1,7,0);
|
||||
INSERT INTO succession_factor_effect VALUES(4,1,4,1,10,0);
|
||||
INSERT INTO succession_factor_effect VALUES(5,1,5,1,13,0);
|
||||
INSERT INTO succession_factor_effect VALUES(6,1,6,1,16,0);
|
||||
INSERT INTO succession_factor_effect VALUES(7,1,7,1,19,0);
|
||||
INSERT INTO succession_factor_effect VALUES(8,1,8,1,22,0);
|
||||
INSERT INTO succession_factor_effect VALUES(9,1,9,1,25,0);
|
||||
INSERT INTO succession_factor_effect VALUES(10,1,10,1,28,0);
|
||||
INSERT INTO succession_factor_effect VALUES(11,2,1,2,1,0);
|
||||
INSERT INTO succession_factor_effect VALUES(12,2,2,2,4,0);
|
||||
INSERT INTO succession_factor_effect VALUES(13,2,3,2,7,0);
|
||||
INSERT INTO succession_factor_effect VALUES(14,2,4,2,10,0);
|
||||
INSERT INTO succession_factor_effect VALUES(15,2,5,2,13,0);
|
||||
INSERT INTO succession_factor_effect VALUES(16,2,6,2,16,0);
|
||||
INSERT INTO succession_factor_effect VALUES(17,2,7,2,19,0);
|
||||
INSERT INTO succession_factor_effect VALUES(18,2,8,2,22,0);
|
||||
INSERT INTO succession_factor_effect VALUES(19,2,9,2,25,0);
|
||||
INSERT INTO succession_factor_effect VALUES(20,2,10,2,28,0);
|
||||
INSERT INTO succession_factor_effect VALUES(51,11,1,11,1,0);
|
||||
INSERT INTO succession_factor_effect VALUES(52,11,2,11,2,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1144,10001,1,3,3,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1145,10001,1,41,200202,1);
|
||||
INSERT INTO succession_factor_effect VALUES(1146,10001,2,3,6,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1147,10001,2,41,200202,1);
|
||||
INSERT INTO succession_factor_effect VALUES(1148,10001,3,3,9,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1149,10001,3,41,200202,1);
|
||||
INSERT INTO succession_factor_effect VALUES(344,20001,1,41,200012,1);
|
||||
INSERT INTO succession_factor_effect VALUES(345,20001,2,41,200012,2);
|
||||
INSERT INTO succession_factor_effect VALUES(346,20001,3,41,200012,3);
|
||||
INSERT INTO succession_factor_effect VALUES(347,20001,4,41,200012,4);
|
||||
INSERT INTO succession_factor_effect VALUES(348,20001,5,41,200012,5);
|
||||
INSERT INTO succession_factor_effect VALUES(1324,30001,1,1,10,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1325,30001,1,2,10,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1326,30001,2,1,20,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1327,30001,2,2,20,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1328,30001,3,1,30,0);
|
||||
INSERT INTO succession_factor_effect VALUES(1329,30001,3,2,30,0);
|
||||
INSERT INTO succession_factor_effect VALUES(71,100101,1,41,900011,1);
|
||||
INSERT INTO succession_factor_effect VALUES(73,100101,2,41,900011,2);
|
||||
INSERT INTO succession_factor_effect VALUES(75,100101,3,41,900011,3);
|
||||
Reference in New Issue
Block a user