kozukata-toa/src/external/db/entity/chunithm/profile.ts

754 lines
14 KiB
TypeScript

import { AimeCard } from "../aimedb";
import { ConstructableBaseEntity } from "external/db/utils/constructable-base-entity";
import { HasIdCardVersion } from "external/db/utils/has-id-card-version";
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, Unique } from "typeorm";
import { integer } from "types/misc";
@Entity("chunithm_user_data")
@Unique(["card", "version"])
export class ChunithmUserData extends HasIdCardVersion {
@Column({ type: "text" })
userName!: string;
@Column({ type: "text" })
userNameEx!: string;
/**
* @since NEW
*/
@Column({ default: 0 })
teamId!: integer;
// #region Rating
@Column({ default: 0 })
playerRating!: integer;
@Column({ default: 0 })
highestRating!: integer;
// #endregion
// #region OVER POWER
@Column({ default: 0 })
overPowerPoint!: integer;
@Column({ default: 0 })
overPowerRate!: integer;
@Column({ default: 0 })
overPowerLowerRank!: integer;
// #endregion
// #region User level
@Column({ default: 0 })
reincarnationNum!: integer;
@Column({ default: 0 })
level!: integer;
@Column({ default: 0 })
exp!: integer;
// #endregion
// #region Course mode
@Column({ default: 0 })
classEmblemBase!: integer;
@Column({ default: 0 })
classEmblemMedal!: integer;
// #endregion
// #region Play count
@Column({ default: 0 })
playCount!: integer;
@Column({ default: 0 })
multiPlayCount!: integer;
@Column({ default: 0 })
multiWinCount!: integer;
// #endregion
// #region Currency
@Column({ default: 0 })
point!: integer;
@Column({ default: 0 })
totalPoint!: integer;
@Column({ default: 0 })
avatarPoint!: integer;
// #endregion
// #region Collections
@Column({ default: 1 })
nameplateId!: integer;
@Column({ default: 1 })
frameId!: integer;
@Column({ default: 0 })
characterId!: integer;
@Column({ default: 0 })
trophyId!: integer;
@Column({ default: 1 })
voiceId!: integer;
@Column({ default: 1 })
mapIconId!: integer;
@Column({ default: 0 })
charaIllustId!: integer;
@Column({ default: 100000 })
skillId!: integer;
// #endregion
// #region User avatar
@Column({ default: 1100001 })
avatarWear!: integer;
@Column({ default: 1200001 })
avatarHead!: integer;
@Column({ default: 1300001 })
avatarFace!: integer;
@Column({ default: 1400001 })
avatarSkin!: integer;
@Column({ default: 1500001 })
avatarItem!: integer;
@Column({ default: 1600001 })
avatarFront!: integer;
@Column({ default: 1700001 })
avatarBack!: integer;
// #endregion
// #region Tutorial
@Column({ default: 0 })
playedTutorialBit!: integer;
@Column({ default: 0 })
firstTutorialCancelNum!: integer;
@Column({ default: 0 })
masterTutorialCancelNum!: integer;
// #endregion
// #region Cummulative statistics
@Column({ default: 0 })
totalMapNum!: integer;
@Column({ default: 0 })
totalHiScore!: integer;
@Column({ default: 0 })
totalBasicHighScore!: integer;
@Column({ default: 0 })
totalAdvancedHighScore!: integer;
@Column({ default: 0 })
totalExpertHighScore!: integer;
@Column({ default: 0 })
totalMasterHighScore!: integer;
@Column({ default: 0 })
totalRepertoireCount!: integer;
/**
* @since NEW
*/
@Column({ type: "integer", nullable: true, default: null })
totalUltimaHighScore!: integer | null;
// #endregion
// #region Map
@Column({ default: 0 })
stockedGridCount!: integer;
@Column({ default: 0 })
exMapLoopCount!: integer;
// #endregion
// #region Online battle
@Column({ default: 0 })
netBattlePlayCount!: integer;
@Column({ default: 0 })
netBattleWinCount!: integer;
@Column({ default: 0 })
netBattleLoseCount!: integer;
@Column({ default: 0 })
netBattleConsecutiveWinCount!: integer;
@Column({ default: 0 })
battleRankId!: integer;
@Column({ default: 0 })
battleRankPoint!: integer;
@Column({ default: 0 })
eliteRankPoint!: integer;
@Column({ default: 0 })
netBattle1stCount!: integer;
@Column({ default: 0 })
netBattle2ndCount!: integer;
@Column({ default: 0 })
netBattle3rdCount!: integer;
@Column({ default: 0 })
netBattle4thCount!: integer;
@Column({ default: 0 })
netBattleCorrection!: integer;
@Column({ default: 0 })
netBattleErrCnt!: integer;
@Column({ default: 0 })
netBattleHostErrCnt!: integer;
@Column({ default: 0 })
battleRewardStatus!: integer;
@Column({ default: 0 })
battleRewardIndex!: integer;
@Column({ default: 0 })
battleRewardCount!: integer;
@Column({ type: "boolean", default: false })
isNetBattleHost!: boolean;
@Column({ default: 0 })
netBattleEndState!: integer;
// #endregion
// #region Play location history
@Column({ type: "text", nullable: true })
firstGameId!: string | null;
@Column({ type: "text", nullable: true })
firstRomVersion!: string | null;
@Column({ type: "text", nullable: true })
firstDataVersion!: string | null;
@Column({ type: "datetime", nullable: true })
firstPlayDate!: Date | null;
@Column({ type: "text", nullable: true })
lastGameId!: string | null;
@Column({ type: "text", nullable: true })
lastRomVersion!: string | null;
@Column({ type: "text", nullable: true })
lastDataVersion!: string | null;
@Column({ type: "datetime", nullable: true })
lastPlayDate!: Date | null;
@Column({ type: "integer", nullable: true })
lastPlaceId!: integer | null;
@Column({ type: "varchar", length: 60, nullable: true })
lastPlaceName!: string | null;
@Column({ type: "integer", nullable: true })
lastRegionId!: number | null;
@Column({ type: "varchar", length: 48, nullable: true })
lastRegionName!: string | null;
@Column({ type: "integer", nullable: true })
lastAllNetId!: number | null;
@Column({ type: "varchar", length: 11, nullable: true })
lastClientId!: string | null;
@Column({ type: "varchar", length: 3, nullable: true })
lastCountryCode!: string | null;
// #endregion
// #region what the hell is a res
@Column({ default: 0 })
acceptResCount!: integer;
@Column({ default: 0 })
requestResCount!: integer;
@Column({ default: 0 })
successResCount!: integer;
// #endregion
// #region Other fields
/**
* @deprecated since NEW
*/
@Column({ type: "boolean", default: false })
isMaimai!: boolean;
/**
* @deprecated since NEW
*/
@Column({ type: "boolean", default: false })
isWebJoin!: boolean;
@Column({ type: "datetime", nullable: true, default: null })
eventWatchedDate!: Date | null;
@Column({ type: "datetime", nullable: true, default: null })
webLimitDate!: Date | null;
@Column({ default: 0 })
friendCount!: integer;
@Column({ type: "text", nullable: true })
compatibleCmVersion!: string | null;
@Column({ default: 0 })
medal!: integer;
// #endregion
// #region Extension columns
@Column({ default: 0 })
ext1!: integer;
@Column({ default: 0 })
ext2!: integer;
@Column({ default: 0 })
ext3!: integer;
@Column({ default: 0 })
ext4!: integer;
@Column({ default: 0 })
ext5!: integer;
@Column({ default: 0 })
ext6!: integer;
@Column({ default: 0 })
ext7!: integer;
@Column({ default: 0 })
ext8!: integer;
@Column({ default: 0 })
ext9!: integer;
@Column({ default: 0 })
ext10!: integer;
@Column({ type: "text", nullable: true })
extStr1!: string | null;
@Column({ type: "text", nullable: true })
extStr2!: string | null;
@Column({ type: "bigint", nullable: true })
extLong1!: string;
@Column({ type: "bigint", nullable: true })
extLong2!: string;
// #endregion
}
@Entity("chunithm_user_data_ex")
@Unique(["card", "version"])
export class ChunithmUserDataEx extends HasIdCardVersion {
@Column({ default: 0 })
medal!: integer;
@Column({ default: 1 })
voiceId!: integer;
@Column({ default: 1 })
mapIconId!: integer;
@Column({ type: "text", nullable: true })
compatibleCmVersion!: string | null;
@Column({ default: 0 })
ext1!: integer;
@Column({ default: 0 })
ext2!: integer;
@Column({ default: 0 })
ext3!: integer;
@Column({ default: 0 })
ext4!: integer;
@Column({ default: 0 })
ext5!: integer;
@Column({ default: 0 })
ext6!: integer;
@Column({ default: 0 })
ext7!: integer;
@Column({ default: 0 })
ext8!: integer;
@Column({ default: 0 })
ext9!: integer;
@Column({ default: 0 })
ext10!: integer;
@Column({ default: 0 })
ext11!: integer;
@Column({ default: 0 })
ext12!: integer;
@Column({ default: 0 })
ext13!: integer;
@Column({ default: 0 })
ext14!: integer;
@Column({ default: 0 })
ext15!: integer;
@Column({ default: 0 })
ext16!: integer;
@Column({ default: 0 })
ext17!: integer;
@Column({ default: 0 })
ext18!: integer;
@Column({ default: 0 })
ext19!: integer;
@Column({ default: 0 })
ext20!: integer;
@Column({ type: "text", nullable: true })
extStr1!: string | null;
@Column({ type: "text", nullable: true })
extStr2!: string | null;
@Column({ type: "text", nullable: true })
extStr3!: string | null;
@Column({ type: "text", nullable: true })
extStr4!: string | null;
@Column({ type: "text", nullable: true })
extStr5!: string | null;
@Column({ type: "bigint", nullable: true })
extLong1!: string;
@Column({ type: "bigint", nullable: true })
extLong2!: string;
@Column({ type: "bigint", nullable: true })
extLong3!: string;
@Column({ type: "bigint", nullable: true })
extLong4!: string;
@Column({ type: "bigint", nullable: true })
extLong5!: string;
}
@Entity("chunithm_user_option")
@Unique(["card", "version"])
export class ChunithmUserOption extends HasIdCardVersion {
/**
* Options preset selected.
*/
@Column({ default: 0 })
optionSet!: integer;
/**
* Headphone volume.
*/
@Column({ default: 0 })
headphone!: integer;
// what??
@Column({ default: 0 })
hardJudge!: integer;
// #region Game settings
/**
* @note This may look like speed 5, but not really. CHUNITHM stores note speed in an enum.
* The actual note speed is `speed / 4 + 1`. Speed 2 matches the beginner speed in-game.
*/
@Column({ default: 4 })
speed!: integer;
@Column({ default: 4 })
speed_120!: integer;
@Column({ default: 0 })
mirrorFumen!: integer;
@Column({ default: 0 })
trackSkip!: integer;
/**
* @note Displayed in game as JUDGEMENT TIMING A. Default +0.0
*/
@Column({ default: 20 })
playTimingOffset!: integer;
@Column({ default: 20 })
playTimingOffset_120!: integer;
/**
* @note Displayed in game as JUDGEMENT TIMING B. Default +0.0
*/
@Column({ default: 20 })
judgeTimingOffset!: integer;
@Column({ default: 20 })
judgeTimingOffset_120!: integer;
@Column({ default: 1 })
matching!: integer;
@Column({ default: 1 })
playerLevel!: integer;
@Column({ default: 1 })
rating!: integer;
/**
* Display OVER POWER details on the song selection menu.
*/
@Column({ default: 0 })
categoryDetail!: integer;
// wtf is this???
@Column({ default: 0 })
privacy!: integer;
// #endregion
// #region Sound settings
@Column({ default: 5 })
guideSound!: integer;
// Sound effect played on TAP
@Column({ default: 0 })
successTapTimbre!: integer;
@Column({ default: 5 })
successTap!: integer;
@Column({ default: 5 })
successExTap!: integer;
@Column({ default: 5 })
successSlideHold!: integer;
@Column({ default: 5 })
successAir!: integer;
@Column({ default: 5 })
successFlick!: integer;
@Column({ default: 0 })
soundEffect!: integer;
@Column({ default: 0 })
judgeAppendSe!: integer;
@Column({ default: 0 })
resultVoiceShort!: integer;
// #endregion
// #region Judgement display settings
@Column({ default: 1 })
judgePos!: integer;
@Column({ default: 2 })
judgeAttack!: integer;
@Column({ default: 3 })
judgeJustice!: integer;
@Column({ default: 3 })
judgeCritical!: integer;
// #endregion
// #region Sort settings
@Column({ default: 1 })
selectMusicFilterLv!: integer;
@Column({ default: 0 })
sortMusicFilterLv!: integer;
@Column({ default: 0 })
sortMusicGenre!: integer;
// #endregion
// #region Background display settings
@Column({ default: 2 })
guideLine!: integer;
@Column({ default: 1 })
fieldColor!: integer;
@Column({ default: 0 })
fieldWallPosition!: integer;
@Column({ default: 0 })
fieldWallPosition_120!: integer;
@Column({ default: 1 })
bgInfo!: integer;
@Column({ default: 0 })
notesThickness!: integer;
// #endregion
// #region Extension columns
@Column({ default: 0 })
ext1!: integer;
@Column({ default: 0 })
ext2!: integer;
@Column({ default: 0 })
ext3!: integer;
@Column({ default: 0 })
ext4!: integer;
@Column({ default: 0 })
ext5!: integer;
@Column({ default: 0 })
ext6!: integer;
@Column({ default: 0 })
ext7!: integer;
@Column({ default: 0 })
ext8!: integer;
@Column({ default: 0 })
ext9!: integer;
@Column({ default: 0 })
ext10!: integer;
// #endregion
}
@Entity("chunithm_user_option_ex")
@Unique(["card", "version"])
export class ChunithmUserOptionEx extends HasIdCardVersion {
@Column({ default: 0 })
ext1!: integer;
@Column({ default: 0 })
ext2!: integer;
@Column({ default: 0 })
ext3!: integer;
@Column({ default: 0 })
ext4!: integer;
@Column({ default: 0 })
ext5!: integer;
@Column({ default: 0 })
ext6!: integer;
@Column({ default: 0 })
ext7!: integer;
@Column({ default: 0 })
ext8!: integer;
@Column({ default: 0 })
ext9!: integer;
@Column({ default: 0 })
ext10!: integer;
@Column({ default: 0 })
ext11!: integer;
@Column({ default: 0 })
ext12!: integer;
@Column({ default: 0 })
ext13!: integer;
@Column({ default: 0 })
ext14!: integer;
@Column({ default: 0 })
ext15!: integer;
@Column({ default: 0 })
ext16!: integer;
@Column({ default: 0 })
ext17!: integer;
@Column({ default: 0 })
ext18!: integer;
@Column({ default: 0 })
ext19!: integer;
@Column({ default: 0 })
ext20!: integer;
}
@Entity("chunithm_user_activity")
export class ChunithmUserActivity extends ConstructableBaseEntity {
@PrimaryGeneratedColumn()
id!: integer;
@ManyToOne(() => AimeCard, { eager: true })
card!: AimeCard;
@Column()
activityId!: integer;
@Column()
kind!: integer;
@Column()
sortNumber!: integer;
@Column()
param1!: integer;
@Column()
param2!: integer;
@Column()
param3!: integer;
@Column()
param4!: integer;
}