Skip to content

Commit 8570858

Browse files
committed
Add event detail
1 parent 171aec5 commit 8570858

File tree

10 files changed

+394
-4
lines changed

10 files changed

+394
-4
lines changed

app/core/nice/event/event.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from ....schemas.common import Language, Region
77
from ....schemas.gameenums import (
88
COND_TYPE_NAME,
9+
EVENT_FLAG_NAME,
910
EVENT_OVERWRITE_TYPE_NAME,
1011
EVENT_TYPE_NAME,
1112
EventOverwriteType,
@@ -17,13 +18,14 @@
1718
NiceEvent,
1819
NiceEventAdd,
1920
NiceEventCooltime,
21+
NiceEventDetail,
2022
NiceSkill,
2123
NiceVoiceCond,
2224
NiceVoiceGroup,
2325
)
24-
from ....schemas.raw import MstEventAdd
26+
from ....schemas.raw import MstEventAdd, MstEventDetail
2527
from ... import raw
26-
from ...utils import fmt_url, get_translation
28+
from ...utils import fmt_url, get_flags, get_translation
2729
from ..bgm import get_nice_bgm_entity_from_raw
2830
from ..gift import GiftData, get_gift_map
2931
from ..item import get_nice_item_from_raw
@@ -97,6 +99,20 @@ def get_nice_event_add(region: Region, mst_event_add: MstEventAdd) -> NiceEventA
9799
)
98100

99101

102+
def get_nice_event_detail(detail: MstEventDetail) -> NiceEventDetail:
103+
return NiceEventDetail(
104+
flags=get_flags(detail.flag, EVENT_FLAG_NAME),
105+
pointImageId=detail.pointImageId,
106+
condQuestId=detail.condQuestId,
107+
condQuestPhase=detail.condQuestPhase,
108+
condMessage=detail.condMessage,
109+
shopCondQuestId=detail.shopCondQuestId,
110+
shopCondQuestPhase=detail.shopCondQuestPhase,
111+
shopCondMessage=detail.shopCondMessage,
112+
entryCondMessage=detail.entryCondMessage,
113+
)
114+
115+
100116
async def get_nice_event(
101117
conn: AsyncConnection, region: Region, event_id: int, lang: Language
102118
) -> NiceEvent:
@@ -232,6 +248,11 @@ async def get_nice_event(
232248
eventAdds=[
233249
get_nice_event_add(region, event_add) for event_add in raw_event.mstEventAdd
234250
],
251+
eventDetail=(
252+
get_nice_event_detail(raw_event.mstEventDetail)
253+
if raw_event.mstEventDetail
254+
else None
255+
),
235256
svts=[
236257
get_nice_event_svt(event_svt, raw_event.mstCommonRelease)
237258
for event_svt in raw_event.mstEventSvt

app/core/raw.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
MstEventCampaign,
100100
MstEventCommandAssist,
101101
MstEventCooltimeReward,
102+
MstEventDetail,
102103
MstEventDigging,
103104
MstEventDiggingBlock,
104105
MstEventDiggingReward,
@@ -1302,6 +1303,7 @@ async def get_event_entity(conn: AsyncConnection, event_id: int) -> EventEntity:
13021303
return EventEntity(
13031304
mstEvent=mstEvent,
13041305
mstEventAdd=await fetch.get_all(conn, MstEventAdd, event_id),
1306+
mstEventDetail=await fetch.get_one(conn, MstEventDetail, event_id),
13051307
mstWar=await event.get_event_wars(conn, event_id),
13061308
mstEventRewardScene=reward_scenes,
13071309
mstEventVoicePlay=voice_plays,

app/db/helpers/fetch.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
mstEventCampaign,
5353
mstEventCommandAssist,
5454
mstEventCooltimeReward,
55+
mstEventDetail,
5556
mstEventDigging,
5657
mstEventDiggingBlock,
5758
mstEventDiggingReward,
@@ -190,6 +191,7 @@
190191
MstEventCampaign,
191192
MstEventCommandAssist,
192193
MstEventCooltimeReward,
194+
MstEventDetail,
193195
MstEventDigging,
194196
MstEventDiggingBlock,
195197
MstEventDiggingReward,
@@ -293,6 +295,7 @@
293295
MstEquip: (mstEquip, mstEquip.c.id),
294296
MstEnemyMaster: (mstEnemyMaster, mstEnemyMaster.c.id),
295297
MstEvent: (mstEvent, mstEvent.c.id),
298+
MstEventDetail: (mstEventDetail, mstEventDetail.c.eventId),
296299
MstConstant: (mstConstant, mstConstant.c.name),
297300
MstQuest: (mstQuest, mstQuest.c.id),
298301
MstBuff: (mstBuff, mstBuff.c.id),

app/models/raw.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,6 +1359,24 @@
13591359
Column("endedAt", Integer),
13601360
)
13611361

1362+
mstEventDetail = Table(
1363+
"mstEventDetail",
1364+
metadata,
1365+
Column("eventId", Integer, index=True),
1366+
Column("flag", Integer),
1367+
Column("pointImageId", Integer),
1368+
Column("rewardButtonImageId", Integer),
1369+
Column("eventGaugeType", Integer),
1370+
Column("condQuestId", Integer),
1371+
Column("condQuestPhase", Integer),
1372+
Column("condMessage", String),
1373+
Column("shopCondQuestId", Integer),
1374+
Column("shopCondQuestPhase", Integer),
1375+
Column("shopCondMessage", String),
1376+
Column("entryCondMessage", String),
1377+
Column("tutorialImageIds", ARRAY(String)),
1378+
Column("script", JSONB),
1379+
)
13621380

13631381
mstEventReward = Table(
13641382
"mstEventReward",
@@ -2934,6 +2952,7 @@
29342952
[mstEnemyMaster, mstEnemyMasterBattle],
29352953
[mstBattleMasterImage],
29362954
[mstEventAdd],
2955+
[mstEventDetail],
29372956
[
29382957
mstEventMission,
29392958
mstEventMissionCondition,

app/schemas/gameenums.py

Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3924,6 +3924,75 @@ class NiceQuestFlag(StrEnum):
39243924
}
39253925

39263926

3927+
class QuestGroupType(IntEnum):
3928+
NONE = 0
3929+
EVENT_QUEST = 1
3930+
QUEST_RELEASE = 2
3931+
EVENT_POINT_QUEST = 3
3932+
EVENT_POINT_GROUP_QUEST = 4
3933+
EVENT_RACE_QUEST = 5
3934+
EVENT_RACE_GROUP_QUEST = 6
3935+
MISSION_GROUP_QUEST = 7
3936+
EVENT_TOWER = 8
3937+
EVENT_TOWER_FLOOR = 9
3938+
HIGHLIGHT_QUEST = 10
3939+
EVENT_DAILY_POINT = 11
3940+
EVENT_ACTIVITY_POINT_GAUGE = 12
3941+
INTERLUDE = 13
3942+
EVENT_BATTLE_LINE = 14
3943+
BATTLE_GROUP = 15
3944+
SHARE_QUEST_INFO = 16
3945+
ALLOUT_BATTLE_QUEST = 17
3946+
EVENT_FORTIFICATION = 18
3947+
3948+
3949+
class NiceQuestGroupType(StrEnum):
3950+
"""Quest Group Type"""
3951+
3952+
none = "none"
3953+
eventQuest = "eventQuest"
3954+
questRelease = "questRelease"
3955+
eventPointQuest = "eventPointQuest"
3956+
eventPointGroupQuest = "eventPointGroupQuest"
3957+
eventRaceQuest = "eventRaceQuest"
3958+
eventRaceGroupQuest = "eventRaceGroupQuest"
3959+
missionGroupQuest = "missionGroupQuest"
3960+
eventTower = "eventTower"
3961+
eventTowerFloor = "eventTowerFloor"
3962+
highlightQuest = "highlightQuest"
3963+
eventDailyPoint = "eventDailyPoint"
3964+
eventActivityPointGauge = "eventActivityPointGauge"
3965+
interlude = "interlude"
3966+
eventBattleLine = "eventBattleLine"
3967+
battleGroup = "battleGroup"
3968+
shareQuestInfo = "shareQuestInfo"
3969+
alloutBattleQuest = "alloutBattleQuest"
3970+
eventFortification = "eventFortification"
3971+
3972+
3973+
Quest_GROUP_TYPE_NAME: dict[int, NiceQuestGroupType] = {
3974+
0: NiceQuestGroupType.none,
3975+
1: NiceQuestGroupType.eventQuest,
3976+
2: NiceQuestGroupType.questRelease,
3977+
3: NiceQuestGroupType.eventPointQuest,
3978+
4: NiceQuestGroupType.eventPointGroupQuest,
3979+
5: NiceQuestGroupType.eventRaceQuest,
3980+
6: NiceQuestGroupType.eventRaceGroupQuest,
3981+
7: NiceQuestGroupType.missionGroupQuest,
3982+
8: NiceQuestGroupType.eventTower,
3983+
9: NiceQuestGroupType.eventTowerFloor,
3984+
10: NiceQuestGroupType.highlightQuest,
3985+
11: NiceQuestGroupType.eventDailyPoint,
3986+
12: NiceQuestGroupType.eventActivityPointGauge,
3987+
13: NiceQuestGroupType.interlude,
3988+
14: NiceQuestGroupType.eventBattleLine,
3989+
15: NiceQuestGroupType.battleGroup,
3990+
16: NiceQuestGroupType.shareQuestInfo,
3991+
17: NiceQuestGroupType.alloutBattleQuest,
3992+
18: NiceQuestGroupType.eventFortification,
3993+
}
3994+
3995+
39273996
class StatusRank(IntEnum):
39283997
A = 11
39293998
A_PLUS = 12
@@ -4192,6 +4261,159 @@ class NiceEventType(StrEnum):
41924261
}
41934262

41944263

4264+
class EventFlag(IntEnum):
4265+
TYPE_POINT = 1
4266+
TYPE_EXCHANGE_SHOP = 2
4267+
TYPE_BOX_GACHA = 4
4268+
TYPE_RANKING = 8
4269+
TYPE_BONUS_SKILL = 16
4270+
TYPE_MISSION = 32
4271+
TYPE_RAID = 64
4272+
TYPE_EVENT_SHOP = 128
4273+
MATERIAL_ADD_QUEST_GROUP = 256
4274+
MATERIAL_ADD_EVENT_END = 512
4275+
SUPER_BOSS = 1024
4276+
RAID_DEFEAT_COUNT = 2048
4277+
BP = 4096
4278+
NO_MATERIAL_BANNER = 8192
4279+
EVENT_POINT = 16384
4280+
EVENT_GROUP_POINT = 32768
4281+
EVENT_VOICE_PLAY = 65536
4282+
DAILY_MISSION = 131072
4283+
EVENT_GROUP_RANKING = 262144
4284+
EVENT_TOWER = 524288
4285+
EVENT_FATIGUE = 1048576
4286+
NO_DISP_ARROW = 2097152
4287+
FORCED_ADJUSTMENT_DIALOG = 4194304
4288+
SHIFT_HELP_INFO = 8388608
4289+
CLOSE_PURCHASE_SHOP = 16777216
4290+
TIME_STATUS_RECORD = 33554432
4291+
USE_EVENT_SUPPORT_DECK = 67108864
4292+
EVENT_DAIRY_POINT = 134217728
4293+
EVENT_ACTIVITY_POINT = 268435456
4294+
EVENT_ONLY_EQUIP = 536870912
4295+
MAP_SWITCH_BUTTON_TOP = 1073741824
4296+
EVENT_REVIVAL = 2147483648
4297+
EVENT_CONQUEST = 4294967296
4298+
EVENT_POINT_BY_QP = 8589934592
4299+
ALL_USERS_BOX_GACHA_COUNT = 17179869184
4300+
NOT_DISPLAY_BONUS_ON_SUPPORT_SET = 34359738368
4301+
FRIEND_POINT_BOOST_ITEM = 68719476736
4302+
EVENT_BOARD_GAME = 137438953472
4303+
NOT_DISPLAY_DA_VINCI = 274877906944
4304+
IS_MAIN_INTERLUDE = 549755813888
4305+
QUEST_COOLTIME = 2199023255552
4306+
EVENT_PANEL = 4398046511104
4307+
EVENT_ASSIST = 8796093022208
4308+
TREASURE_BOX = 17592186044416
4309+
HIDE_AFTER_PURCHASE = 35184372088832
4310+
ALLOUT_BATTLE = 70368744177664
4311+
SPOT_COOLTIME = 140737488355328
4312+
4313+
4314+
class NiceEventFlag(StrEnum):
4315+
"""Event Flag Enum"""
4316+
4317+
typePoint = "typePoint"
4318+
typeExchangeShop = "typeExchangeShop"
4319+
typeBoxGacha = "typeBoxGacha"
4320+
typeRanking = "typeRanking"
4321+
typeBonusSkill = "typeBonusSkill"
4322+
typeMission = "typeMission"
4323+
typeRaid = "typeRaid"
4324+
typeEventShop = "typeEventShop"
4325+
materialAddQuestGroup = "materialAddQuestGroup"
4326+
materialAddEventEnd = "materialAddEventEnd"
4327+
superBoss = "superBoss"
4328+
raidDefeatCount = "raidDefeatCount"
4329+
bp = "bp"
4330+
noMaterialBanner = "noMaterialBanner"
4331+
eventPoint = "eventPoint"
4332+
eventGroupPoint = "eventGroupPoint"
4333+
eventVoicePlay = "eventVoicePlay"
4334+
dailyMission = "dailyMission"
4335+
eventGroupRanking = "eventGroupRanking"
4336+
eventTower = "eventTower"
4337+
eventFatigue = "eventFatigue"
4338+
noDispArrow = "noDispArrow"
4339+
forcedAdjustmentDialog = "forcedAdjustmentDialog"
4340+
shiftHelpInfo = "shiftHelpInfo"
4341+
closePurchaseShop = "closePurchaseShop"
4342+
timeStatusRecord = "timeStatusRecord"
4343+
useEventSupportDeck = "useEventSupportDeck"
4344+
eventDairyPoint = "eventDairyPoint"
4345+
eventActivityPoint = "eventActivityPoint"
4346+
eventOnlyEquip = "eventOnlyEquip"
4347+
mapSwitchButtonTop = "mapSwitchButtonTop"
4348+
eventRevival = "eventRevival"
4349+
eventConquest = "eventConquest"
4350+
eventPointByQp = "eventPointByQp"
4351+
allUsersBoxGachaCount = "allUsersBoxGachaCount"
4352+
notDisplayBonusOnSupportSet = "notDisplayBonusOnSupportSet"
4353+
friendPointBoostItem = "friendPointBoostItem"
4354+
eventBoardGame = "eventBoardGame"
4355+
notDisplayDaVinci = "notDisplayDaVinci"
4356+
isMainInterlude = "isMainInterlude"
4357+
questCooltime = "questCooltime"
4358+
eventPanel = "eventPanel"
4359+
eventAssist = "eventAssist"
4360+
treasureBox = "treasureBox"
4361+
hideAfterPurchase = "hideAfterPurchase"
4362+
alloutBattle = "alloutBattle"
4363+
spotCooltime = "spotCooltime"
4364+
4365+
4366+
EVENT_FLAG_NAME: dict[int, NiceEventFlag] = {
4367+
1: NiceEventFlag.typePoint,
4368+
2: NiceEventFlag.typeExchangeShop,
4369+
4: NiceEventFlag.typeBoxGacha,
4370+
8: NiceEventFlag.typeRanking,
4371+
16: NiceEventFlag.typeBonusSkill,
4372+
32: NiceEventFlag.typeMission,
4373+
64: NiceEventFlag.typeRaid,
4374+
128: NiceEventFlag.typeEventShop,
4375+
256: NiceEventFlag.materialAddQuestGroup,
4376+
512: NiceEventFlag.materialAddEventEnd,
4377+
1024: NiceEventFlag.superBoss,
4378+
2048: NiceEventFlag.raidDefeatCount,
4379+
4096: NiceEventFlag.bp,
4380+
8192: NiceEventFlag.noMaterialBanner,
4381+
16384: NiceEventFlag.eventPoint,
4382+
32768: NiceEventFlag.eventGroupPoint,
4383+
65536: NiceEventFlag.eventVoicePlay,
4384+
131072: NiceEventFlag.dailyMission,
4385+
262144: NiceEventFlag.eventGroupRanking,
4386+
524288: NiceEventFlag.eventTower,
4387+
1048576: NiceEventFlag.eventFatigue,
4388+
2097152: NiceEventFlag.noDispArrow,
4389+
4194304: NiceEventFlag.forcedAdjustmentDialog,
4390+
8388608: NiceEventFlag.shiftHelpInfo,
4391+
16777216: NiceEventFlag.closePurchaseShop,
4392+
33554432: NiceEventFlag.timeStatusRecord,
4393+
67108864: NiceEventFlag.useEventSupportDeck,
4394+
134217728: NiceEventFlag.eventDairyPoint,
4395+
268435456: NiceEventFlag.eventActivityPoint,
4396+
536870912: NiceEventFlag.eventOnlyEquip,
4397+
1073741824: NiceEventFlag.mapSwitchButtonTop,
4398+
2147483648: NiceEventFlag.eventRevival,
4399+
4294967296: NiceEventFlag.eventConquest,
4400+
8589934592: NiceEventFlag.eventPointByQp,
4401+
17179869184: NiceEventFlag.allUsersBoxGachaCount,
4402+
34359738368: NiceEventFlag.notDisplayBonusOnSupportSet,
4403+
68719476736: NiceEventFlag.friendPointBoostItem,
4404+
137438953472: NiceEventFlag.eventBoardGame,
4405+
274877906944: NiceEventFlag.notDisplayDaVinci,
4406+
549755813888: NiceEventFlag.isMainInterlude,
4407+
2199023255552: NiceEventFlag.questCooltime,
4408+
4398046511104: NiceEventFlag.eventPanel,
4409+
8796093022208: NiceEventFlag.eventAssist,
4410+
17592186044416: NiceEventFlag.treasureBox,
4411+
35184372088832: NiceEventFlag.hideAfterPurchase,
4412+
70368744177664: NiceEventFlag.alloutBattle,
4413+
140737488355328: NiceEventFlag.spotCooltime,
4414+
}
4415+
4416+
41954417
class EventOverwriteType(IntEnum):
41964418
BG_IMAGE = 1
41974419
BGM = 2

0 commit comments

Comments
 (0)