Skip to content

Commit e3c4b77

Browse files
committed
npcId in aiMultiNpc might not exist in npcSvtFollower
Store npcId in NiceQuestPhaseAiNpc in case npc is none
1 parent 17b356d commit e3c4b77

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

app/core/nice/follower.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ async def get_nice_support_servants(
300300
lang=lang,
301301
)
302302
for aiNpcId in aiNpcIds
303+
if any(npc_svt.id == aiNpcId for npc_svt in npcSvtFollower)
303304
}
304305
else:
305306
ai_npc = {}

app/core/nice/quest.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -434,12 +434,12 @@ async def get_nice_quest_phase_no_rayshift(
434434
)
435435
support_servants = npcs.support_servants
436436
if "aiNpc" in raw_quest.mstQuestPhase.script and npcs.ai_npc is not None:
437-
raw_quest.mstQuestPhase.script["aiNpc"]["npc"] = npcs.ai_npc[
438-
raw_quest.mstQuestPhase.script["aiNpc"]["npcId"]
439-
]
437+
raw_quest.mstQuestPhase.script["aiNpc"]["npc"] = npcs.ai_npc.get(
438+
raw_quest.mstQuestPhase.script["aiNpc"]["npcId"], None
439+
)
440440
if "aiMultiNpc" in raw_quest.mstQuestPhase.script:
441441
for aiNpc in raw_quest.mstQuestPhase.script["aiMultiNpc"]:
442-
aiNpc["npc"] = npcs.ai_npc[aiNpc["npcId"]]
442+
aiNpc["npc"] = npcs.ai_npc.get(aiNpc["npcId"], None)
443443

444444
if "LimitAct" in raw_quest.mstQuestPhase.script:
445445
raw_quest.mstQuestPhase.script["LimitAct"] = STAGE_LIMIT_ACT_TYPE_NAME[
@@ -570,11 +570,11 @@ def set_ai_npc_data(ai_npcs: dict[int, QuestEnemy] | None) -> None:
570570
if ai_npcs is not None:
571571
if db_data.nice.extraDetail.aiNpc is not None:
572572
db_data.nice.extraDetail.aiNpc.detail = ai_npcs[
573-
db_data.nice.extraDetail.aiNpc.npc.npcId
573+
db_data.nice.extraDetail.aiNpc.npcId
574574
]
575575
if db_data.nice.extraDetail.aiMultiNpc is not None:
576576
for aiNpc in db_data.nice.extraDetail.aiMultiNpc:
577-
aiNpc.detail = ai_npcs[aiNpc.npc.npcId]
577+
aiNpc.detail = ai_npcs[aiNpc.npcId]
578578

579579
def set_follower_data(followers: dict[int, QuestEnemy] | None) -> None:
580580
if followers is not None:

app/schemas/nice.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2931,7 +2931,8 @@ class SupportServant(BaseModelORJson):
29312931

29322932

29332933
class NiceQuestPhaseAiNpc(BaseModelORJson):
2934-
npc: NpcServant
2934+
npcId: int
2935+
npc: NpcServant | None
29352936
detail: QuestEnemy | None = None
29362937
aiIds: list[int]
29372938

0 commit comments

Comments
 (0)