Files
honoka-chan/tools/unit.go
T
YumeMichi 5c80954246 2023-04-02
Signed-off-by: Yuan Si <do4suki@gmail.com>
2023-04-02 21:52:43 +08:00

140 lines
3.3 KiB
Go

package tools
import (
"database/sql"
"encoding/json"
"fmt"
"honoka-chan/model"
"time"
_ "github.com/mattn/go-sqlite3"
)
func ListUnitData() {
db, err := sql.Open("sqlite3", "assets/main.db")
if err != nil {
panic(err)
}
defer db.Close()
sql := `SELECT unit_id,rarity,rank_min,rank_max,hp_max,default_removable_skill_capacity FROM unit_m WHERE unit_id NOT IN (SELECT unit_id FROM unit_m WHERE unit_type_id IN (SELECT unit_type_id FROM unit_type_m WHERE image_button_asset IS NULL AND (background_color = 'dcdbe3' AND original_attribute_id IS NULL) OR (unit_type_id IN (10,110,127,128,129) OR unit_type_id BETWEEN 131 AND 140))) ORDER BY unit_number ASC;`
rows, err := db.Query(sql)
if err != nil {
panic(err)
}
unitsData := []model.Active{}
oId := 3071290948
sdt := time.Now().Add(-time.Hour * 24 * 30)
for rows.Next() {
unitData := model.Active{}
var uid, rit, rank, max_rank, hp_max, skill_capacity int
err = rows.Scan(&uid, &rit, &rank, &max_rank, &hp_max, &skill_capacity)
if err != nil {
fmt.Println(err)
continue
}
oId++
sdt = sdt.Add(time.Second * 3)
unitData.UnitOwningUserID = oId
unitData.UnitID = uid
unitData.NextExp = 0
unitData.Rank = rank
unitData.MaxRank = max_rank
unitData.MaxHp = hp_max
unitData.DisplayRank = 2
unitData.UnitSkillLevel = 8
unitData.FavoriteFlag = true
unitData.IsRankMax = true
unitData.IsLevelMax = true
unitData.IsLoveMax = true
unitData.IsSkillLevelMax = true
unitData.IsRemovableSkillCapacityMax = true
unitData.InsertDate = sdt.Local().Format("2006-01-02 03:04:05")
if rit != 4 {
unitData.LevelLimitID = 0
unitData.UnitRemovableSkillCapacity = skill_capacity
unitData.IsSigned = false
switch rit {
case 1:
// N
unitData.Exp = 8000
unitData.Level = 40
unitData.MaxLevel = 40
unitData.Love = 50
unitData.MaxLove = 50
unitData.UnitSkillExp = 0
unitData.UnitSkillLevel = 0
unitData.FavoriteFlag = false
unitData.IsRankMax = false
unitData.IsLevelMax = false
unitData.IsLoveMax = false
unitData.IsSkillLevelMax = false
unitData.IsRemovableSkillCapacityMax = false
case 2:
// R
unitData.Exp = 13500
unitData.Level = 60
unitData.MaxLevel = 60
unitData.Love = 200
unitData.MaxLove = 200
unitData.UnitSkillExp = 490
case 3:
// SR
unitData.Exp = 36800
unitData.Level = 80
unitData.MaxLevel = 80
unitData.Love = 500
unitData.MaxLove = 500
unitData.UnitSkillExp = 4900
case 5:
// SSR
unitData.Exp = 56657
unitData.Level = 90
unitData.MaxLevel = 90
unitData.Love = 750
unitData.MaxLove = 750
unitData.UnitSkillExp = 12700
}
} else {
// UR
unitData.Exp = 79700
unitData.Level = 100
unitData.MaxLevel = 100
unitData.LevelLimitID = 2
unitData.Love = 1000
unitData.MaxLove = 1000
unitData.UnitSkillExp = 29900
unitData.UnitRemovableSkillCapacity = 8
rs, err := db.Query("SELECT COUNT(*) AS ct FROM unit_sign_asset_m WHERE unit_id = ?", uid)
if err != nil {
panic(err)
}
ct := 0
for rs.Next() {
err = rs.Scan(&ct)
if err != nil {
panic(err)
}
}
if ct > 0 {
unitData.IsSigned = true
} else {
unitData.IsSigned = false
}
}
unitsData = append(unitsData, unitData)
}
data, err := json.Marshal(unitsData)
if err != nil {
panic(err)
}
fmt.Println(string(data))
}