Merge pull request #15 from SunTrustDev/bugfix/std-1

Fix quest dialog cancellation not resetting quest state
This commit is contained in:
rtw1x1
2025-12-26 07:39:57 +00:00
committed by GitHub
2 changed files with 21 additions and 34 deletions

27
.gitattributes vendored
View File

@@ -1,25 +1,2 @@
# Standard Western (Windows-1252)
# Includes English, German, Danish, Spanish, French, Italian, Dutch, Portuguese
assets/locale_{en,de,dk,es,fr,it,nl,pt}/locale/{en,de,dk,es,fr,it,nl,pt}/locale_game.txt text working-tree-encoding=windows-1252
assets/locale_{en,de,dk,es,fr,it,nl,pt}/locale/{en,de,dk,es,fr,it,nl,pt}/locale_interface.txt text working-tree-encoding=windows-1252
# Central European (Windows-1250)
# Includes Czech, Hungarian, Polish, Romanian
assets/locale_{cz,hu,pl,ro}/locale/{cz,hu,pl,ro}/locale_game.txt text working-tree-encoding=windows-1250
assets/locale_{cz,hu,pl,ro}/locale/{cz,hu,pl,ro}/locale_interface.txt text working-tree-encoding=windows-1250
# Cyrillic (Windows-1251)
assets/locale_ru/locale/ru/locale_game.txt text working-tree-encoding=windows-1251
assets/locale_ru/locale/ru/locale_interface.txt text working-tree-encoding=windows-1251
# Greek (Windows-1253)
assets/locale_gr/locale/gr/locale_game.txt text working-tree-encoding=windows-1253
assets/locale_gr/locale/gr/locale_interface.txt text working-tree-encoding=windows-1253
# Turkish (Windows-1254)
assets/locale_tr/locale/tr/locale_game.txt text working-tree-encoding=windows-1254
assets/locale_tr/locale/tr/locale_interface.txt text working-tree-encoding=windows-1254
# Arabic (Windows-1256)
assets/locale_ae/locale/ae/locale_game.txt text working-tree-encoding=windows-1256
assets/locale_ae/locale/ae/locale_interface.txt text working-tree-encoding=windows-1256
# Korean (EUC-KR)
assets/root/*.py text working-tree-encoding=utf-8

View File

@@ -309,6 +309,10 @@ class QuestDialog(ui.ScriptWindow):
self.editLine = None
# END_OF_QUEST_INPUT
# QUEST_CANCEL - Track if dialog was cancelled
self.bCancelled = False
# END_OF_QUEST_CANCEL
def __del__(self):
ui.ScriptWindow.__del__(self)
@@ -330,11 +334,16 @@ class QuestDialog(ui.ScriptWindow):
# QUEST_CANCEL
def OnCancel(self):
self.bCancelled = True
self.nextCurtainMode = -1
self.CloseSelf()
# END_OF_QUEST_CANCEL
def CloseSelf(self):
if self.bCancelled:
net.SendQuestCancelPacket()
self.bCancelled = False
QuestDialog.QuestCurtain.CurtainMode = self.nextCurtainMode
self.btnNext = None
self.descWindow = None
@@ -443,7 +452,7 @@ class QuestDialog(ui.ScriptWindow):
import localeInfo
if event.BUTTON_TYPE_CANCEL == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.OnCancel())
b.SetEvent(lambda s=self:(setattr(s, 'bCancelled', True) or None) or event.SelectAnswer(s.descIndex, 254) or s.OnCancel())
b.SetText(localeInfo.UI_CANCEL)
elif event.BUTTON_TYPE_DONE == button_type:
b.SetEvent(lambda s=self:s.CloseSelf())
@@ -457,7 +466,7 @@ class QuestDialog(ui.ScriptWindow):
# END_OF_QUEST_CANCEL
def MakeQuestion(self, n): # n은 모든 퀘스트 대화창의 마지막 버튼인 "닫기"를 포함한 전체 퀘스트 버튼 개수. by 김준호
def MakeQuestion(self, n): # n은 모든 퀘스트 대화창의 마지막 버튼인 "닫기"를 포함한 전체 퀘스트 버튼 개수. by 김준호
global entire_questbutton_number
global entire_questpage_number
global cur_questpage_number
@@ -548,7 +557,7 @@ class QuestDialog(ui.ScriptWindow):
self.prevbutton = None
self.CloseSelf()
def AppendQuestion(self, name, idx): # idx는 0부터 시작함. PythonEventManager.cpp line 881 참고. by 김준호
def AppendQuestion(self, name, idx): # idx는 0부터 시작함. PythonEventManager.cpp line 881 참고. by 김준호
if not self.btnAnswer:
return
@@ -595,7 +604,7 @@ class QuestDialog(ui.ScriptWindow):
# QUEST_INPUT
def OnKeyDown(self, key):
if self.btnAnswer == None:
## 선택문이 없고 '다음', '확인' 등의 일방 버튼만 있는 경우에 대한 처리
## 선택문이 없고 '다음', '확인' 등의 일방 버튼만 있는 경우에 대한 처리
if None != self.btnNext:
if app.DIK_RETURN == key:
self.OnPressEscapeKey()
@@ -640,21 +649,22 @@ class QuestDialog(ui.ScriptWindow):
def OnPressEscapeKey(self):
# ESC키가 눌린 경우 "다음" 버튼을 누른 것과 같은 효과를 내도록 함.
# ESC키가 눌린 경우 "다음" 버튼을 누른 것과 같은 효과를 내도록 함.
if None != self.btnNext:
##퀘스트문자들이 전부다 나왔을경우의 ESC버튼
##퀘스트문자들이 전부다 나왔을경우의 ESC버튼
if event.BUTTON_TYPE_CANCEL == self.nextButtonType:
self.bCancelled = True
event.SelectAnswer(self.descIndex, 254)
self.CloseSelf()
## 아무 작업을 하지 않을때
## 아무 작업을 하지 않을때
elif event.BUTTON_TYPE_DONE == self.nextButtonType:
self.CloseSelf()
## 엔터나 다음화면으로 넘어가려고 할경우
## 엔터나 다음화면으로 넘어가려고 할경우
elif event.BUTTON_TYPE_NEXT == self.nextButtonType:
event.SelectAnswer(self.descIndex, 254)
self.CloseSelf()
else:
## 도중에 꺼버리거나, ESC버튼이 나왓을경우
## 도중에 꺼버리거나, ESC버튼이 나왓을경우
event.SelectAnswer(self.descIndex, entire_questbutton_number -1 )
self.nextbutton = None
self.prevbutton = None