From 02e2700e96985b3a5bf3ca432ae71ae47ea27242 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Tue, 2 Apr 2024 02:04:42 -0400 Subject: [PATCH] [O] Make always vip configurable --- src/main/java/ext/Ext.kt | 1 + .../java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt | 11 ++++------- .../samnyan/aqua/sega/wacca/model/db/WaccaUser.kt | 12 +++++++++--- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/ext/Ext.kt b/src/main/java/ext/Ext.kt index 1067f5d1..7f0d83d2 100644 --- a/src/main/java/ext/Ext.kt +++ b/src/main/java/ext/Ext.kt @@ -129,6 +129,7 @@ fun Long.toHex(len: Int = 16): Str = "0x${this.toString(len).padStart(len, '0'). fun Map.toUrl() = entries.joinToString("&") { (k, v) -> "$k=$v" } fun Any.long() = when (this) { + is Boolean -> if (this) 1L else 0 is Number -> toLong() is String -> toLong() else -> 400 - "Invalid number: $this" diff --git a/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt b/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt index 093329b7..36bff1af 100644 --- a/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt +++ b/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt @@ -185,10 +185,7 @@ fun WaccaServer.init() { val bingo = rp.bingo.findByUser(u).firstOrNull() val go = u.card?.aquaUser?.gameOptions ?: AquaGameOptions() - // TODO: make vip configurable - // All unlock - if (go.waccaInfiniteWp) u.wp = 999999 if (go.unlockMusic && wacca.musicMapping.isNotEmpty()) { items[MUSIC_UNLOCK()] = wacca.musicMapping.keys.map { MUSIC_UNLOCK(u, it, p1 = INFERNO.value.long()) } } @@ -361,7 +358,7 @@ fun WaccaServer.init() { addItems(ls(ls(MUSIC_UNLOCK(), songId.int(), diff.int())), u, items) useItems(itemUsed as List>, u, items) - ls(u.wp, rp.item.findByUserAndType(u, TICKET()).map { it.ls() }) + ls(u.getWp(), rp.item.findByUserAndType(u, TICKET()).map { it.ls() }) } "user/goods/purchase" { _, (uid, pid, count, purchaseType, cost, items) -> @@ -372,7 +369,7 @@ fun WaccaServer.init() { // WP Purchase = 2, Credit purchase = 1 if (purchaseType == 2) useItems(ls(ls(WP(), 0, cost.int())), u, itemsMap) - ls(u.wp, rp.item.findByUserAndType(u, TICKET()).map { it.ls() }) + ls(u.getWp(), rp.item.findByUserAndType(u, TICKET()).map { it.ls() }) } "user/rating/update" empty { _, (uid, newRating, songs) -> @@ -463,13 +460,13 @@ fun WaccaServer.init() { // TODO: Test this "user/vip/get" { _, (uid) -> val u = user(uid) ?: (404 - "User not found") - val vipDays = (u.vipExpireTime.time - millis()) / (24 * 60 * 60 * 1000) + val vipDays = (u.getVipExpire().time - millis()) / (24 * 60 * 60 * 1000) ls(vipDays, ls(1, 1, "presents" - empty)) } "user/vip/start" { _, (uid, cost, days) -> val u = user(uid) ?: (404 - "User not found") rp.user.save(u.apply { vipExpireTime = Date(millis() + days.int() * (24 * 60 * 60 * 1000)) }) - ls(u.vipExpireTime.sec, "presents" - empty) + ls(u.getVipExpire().sec, "presents" - empty) } } diff --git a/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUser.kt b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUser.kt index c37b4684..51305e38 100644 --- a/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUser.kt +++ b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUser.kt @@ -34,7 +34,7 @@ class WaccaUser : BaseEntity(), IUserData { override var playerRating = 0 override var highestRating = 0 @Temporal(TemporalType.TIMESTAMP) - var vipExpireTime: Date = "2077-01-01".isoDate().toDate() + var vipExpireTime: Date = Date(0) var alwaysVip = false var loginCount = 0 var loginCountDays = 0 @@ -60,7 +60,13 @@ class WaccaUser : BaseEntity(), IUserData { override var totalScore = 0L fun lStatus() = ls(card?.extId, - userName, 1, xp, danLevel, danType, wp, ls(0, 0, 0), loginCount, loginCountDays, - (loginCount - 1).coerceAtLeast(0), loginCountDaysConsec, vipExpireTime.sec, loginCountToday, this.playerRating + userName, 1, xp, danLevel, danType, getWp(), ls(0, 0, 0), loginCount, loginCountDays, + (loginCount - 1).coerceAtLeast(0), loginCountDaysConsec, getVipExpire().sec, loginCountToday, this.playerRating ) + + fun getVipExpire() = + if (card?.aquaUser?.gameOptions?.waccaAlwaysVip == true) "2077-01-01".isoDate().toDate() + else vipExpireTime + + fun getWp() = if (card?.aquaUser?.gameOptions?.waccaInfiniteWp == true) 999999 else wp } \ No newline at end of file