forked from metin-server/m2dev-client
Update uidragonsoul.py
This commit is contained in:
@@ -20,11 +20,11 @@ import uiInventory
|
||||
import sys
|
||||
ITEM_FLAG_APPLICABLE = 1 << 14
|
||||
|
||||
# 용혼석 Vnum에 대한 comment
|
||||
# ITEM VNUM을 10만 자리부터, FEDCBA라고 한다면
|
||||
# FE : 용혼석 종류. D : 등급
|
||||
# C : 단계 B : 강화
|
||||
# A : 여벌의 번호들...
|
||||
# Dragon soul Vnum comments
|
||||
# If ITEM VNUM from 100,000s digit is represented as FEDCBA
|
||||
# FE: Dragon soul type D: Grade
|
||||
# C: Step B: Strength
|
||||
# A: Reserved numbers
|
||||
|
||||
class DragonSoulWindow(ui.ScriptWindow):
|
||||
KIND_TAP_TITLES = [uiScriptLocale.DRAGONSOUL_TAP_TITLE_1, uiScriptLocale.DRAGONSOUL_TAP_TITLE_2,
|
||||
@@ -226,9 +226,9 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
for j in xrange(item.LIMIT_MAX_NUM):
|
||||
(limitType, limitValue) = item.GetLimit(j)
|
||||
|
||||
# 밑에서 remain_time이 0이하인지 체크 하기 때문에 임의의 양수로 초기화
|
||||
# Initialize to arbitrary positive number since we check if remain_time <= 0 below
|
||||
remain_time = 999
|
||||
# 일단 현재 타이머는 이 세개 뿐이다.
|
||||
# Currently only these three timers exist
|
||||
if item.LIMIT_REAL_TIME == limitType:
|
||||
remain_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0) - app.GetGlobalTimeStamp()
|
||||
elif item.LIMIT_REAL_TIME_START_FIRST_USE == limitType:
|
||||
@@ -275,7 +275,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
for j in xrange(item.LIMIT_MAX_NUM):
|
||||
(limitType, limitValue) = item.GetLimit(j)
|
||||
|
||||
# 밑에서 remain_time이 음수인지 체크 하기 때문에 임의의 양수로 초기화
|
||||
# Initialize to arbitrary positive number since we check if remain_time < 0 below
|
||||
remain_time = 999
|
||||
if item.LIMIT_REAL_TIME == limitType:
|
||||
remain_time = player.GetItemMetinSocket(player.DRAGON_SOUL_INVENTORY, slotNumber, 0)
|
||||
@@ -306,7 +306,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
if None != self.tooltipItem:
|
||||
self.tooltipItem.SetTop()
|
||||
|
||||
# item slot 관련 함수
|
||||
# Item slot related functions
|
||||
def OverOutItem(self):
|
||||
self.wndItem.SetUsableItem(False)
|
||||
if None != self.tooltipItem:
|
||||
@@ -359,7 +359,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
mouseModule.mouseController.DeattachObject()
|
||||
|
||||
else:
|
||||
## 상점에서 팔도록 추가
|
||||
# # Added to be sold in shop
|
||||
## 20140220
|
||||
curCursorNum = app.GetCursor()
|
||||
|
||||
@@ -377,8 +377,8 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
self.wndItem.SetUseMode(False)
|
||||
snd.PlaySound("sound/ui/pick.wav")
|
||||
|
||||
## 상점에 팔기
|
||||
## 2014.02.20 추가
|
||||
## Sell to shop
|
||||
## Added 2014.02.20
|
||||
def __SellItem(self, itemSlotPos):
|
||||
if not player.IsDSEquipmentSlot(player.DRAGON_SOUL_INVENTORY, itemSlotPos):
|
||||
self.sellingSlotNumber = itemSlotPos
|
||||
@@ -412,21 +412,21 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
self.questionDialog.Open()
|
||||
self.questionDialog.count = itemCount
|
||||
|
||||
## 상점에 팔기
|
||||
## Sell to shop
|
||||
def SellItem(self):
|
||||
|
||||
net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.DRAGON_SOUL_INVENTORY)
|
||||
snd.PlaySound("sound/ui/money.wav")
|
||||
self.OnCloseQuestionDialog()
|
||||
|
||||
## 상점에 팔기
|
||||
## Sell to shop
|
||||
def OnCloseQuestionDialog(self):
|
||||
if self.questionDialog:
|
||||
self.questionDialog.Close()
|
||||
|
||||
self.questionDialog = None
|
||||
|
||||
## 상점에 팔기
|
||||
## Sell to shop
|
||||
def __OnClosePopupDialog(self):
|
||||
self.pop = None
|
||||
|
||||
@@ -478,7 +478,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
return
|
||||
slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, slotIndex)
|
||||
try:
|
||||
# 용혼석 강화창이 열려있으면, 아이템 우클릭 시 자동으로 강화창으로 들어감.
|
||||
# If dragon soul refine window is open, right-click automatically puts item into refine window
|
||||
if self.wndDragonSoulRefine.IsShow():
|
||||
if uiPrivateShopBuilder.IsBuildingPrivateShop():
|
||||
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
|
||||
@@ -500,7 +500,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
|
||||
net.SendItemMovePacket(srcSlotWindow , srcSlotPos, dstSlotWindow, dstSlotPos, srcItemCount)
|
||||
|
||||
# equip 슬롯 관련 함수들.
|
||||
# Equipment slot related functions
|
||||
def OverOutEquipItem(self):
|
||||
self.OverOutItem()
|
||||
|
||||
@@ -529,7 +529,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
|
||||
def SelectEquipItemSlot(self, itemSlotIndex):
|
||||
|
||||
## 마우스 버튼이 sell buy 체크 해서 return
|
||||
## Check for sell/buy mouse button and return
|
||||
curCursorNum = app.GetCursor()
|
||||
if app.SELL == curCursorNum:
|
||||
return
|
||||
@@ -545,7 +545,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
if mouseModule.mouseController.isAttached():
|
||||
attachedSlotType = mouseModule.mouseController.GetAttachedType()
|
||||
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
|
||||
# 자기 자신을 자기 자신에게 드래그하는 경우
|
||||
# Case of dragging item onto itself
|
||||
if player.SLOT_TYPE_INVENTORY == attachedSlotType and itemSlotIndex == attachedSlotPos:
|
||||
return
|
||||
|
||||
@@ -592,9 +592,9 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
self.__OpenQuestionDialog(True, srcItemPos, dstItemPos)
|
||||
|
||||
mouseModule.mouseController.DeattachObject()
|
||||
# equip 슬롯 관련 함수들 끝.
|
||||
|
||||
# 경고창 관련
|
||||
# Equipment slot related functions end
|
||||
|
||||
# Warning dialog related
|
||||
def __OpenQuestionDialog(self, Equip, srcItemPos, dstItemPos):
|
||||
self.srcItemPos = srcItemPos
|
||||
self.dstItemPos = dstItemPos
|
||||
@@ -623,7 +623,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
self.dstItemPos = (0, 0)
|
||||
self.dlgQuestion.Close()
|
||||
|
||||
# 경고창 관련 끝
|
||||
# Warning dialog related end
|
||||
|
||||
def SetDSKindIndex(self, kindIndex):
|
||||
if self.DSKindIndex != kindIndex:
|
||||
@@ -656,7 +656,7 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
|
||||
self.RefreshEquipSlotWindow()
|
||||
|
||||
# 용혼석 활성화 관련
|
||||
# Dragon soul activation related
|
||||
def ActivateDragonSoulByExtern(self, deck):
|
||||
self.isActivated = True
|
||||
self.activateButton.Down()
|
||||
@@ -701,24 +701,24 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
for i in xrange(item.LIMIT_MAX_NUM):
|
||||
(limitType, limitValue) = item.GetLimit(i)
|
||||
|
||||
# LIMIT_TIMER_BASED_ON_WEAR는 소켓0에 남은 시간을 박는다.
|
||||
# LIMIT_REAL_TIME은 시간 다 되면 아이템이 사라지므로 할 필요가 없다.
|
||||
# LIMIT_REAL_TIME_START_FIRST_USE는 서버에 제대로 정의되지 않아 일단 냅둔다.
|
||||
# LIMIT_TIMER_BASED_ON_WEAR stores remaining time in socket0
|
||||
# LIMIT_REAL_TIME makes item disappear when time expires, so no need to check
|
||||
# LIMIT_REAL_TIME_START_FIRST_USE not properly defined on server, leave as is
|
||||
if item.LIMIT_TIMER_BASED_ON_WEAR == limitType:
|
||||
isNoLimit = False
|
||||
remain_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0)
|
||||
if 0 != remain_time:
|
||||
canActiveNum += 1
|
||||
break
|
||||
# 타이머가 없다면 Activate할 수 있는 용혼석.
|
||||
# Dragon soul can be activated if it has no timer
|
||||
if isNoLimit:
|
||||
canActiveNum += 1
|
||||
|
||||
return canActiveNum > 0
|
||||
|
||||
# 활성화 관련 끝
|
||||
|
||||
# 슬롯 highlight 관련
|
||||
# Activation related end
|
||||
|
||||
# Slot highlight related
|
||||
def __HighlightSlot_ClearCurrentPage(self):
|
||||
for i in xrange(self.wndItem.GetSlotCount()):
|
||||
slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, i)
|
||||
@@ -735,14 +735,14 @@ class DragonSoulWindow(ui.ScriptWindow):
|
||||
def HighlightSlot(self, slot):
|
||||
if not slot in self.listHighlightedSlot:
|
||||
self.listHighlightedSlot.append (slot)
|
||||
# 슬롯 highlight 관련 끝
|
||||
# Slot highlight related end
|
||||
|
||||
def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
|
||||
if app.ENABLE_DRAGON_SOUL_SYSTEM:
|
||||
from _weakref import proxy
|
||||
self.wndDragonSoulRefine = proxy(wndDragonSoulRefine)
|
||||
|
||||
## 강화할 수 없는 경우 날리는 예외
|
||||
## Exception raised when refining is not possible
|
||||
#class DragonSoulRefineException(Exception):
|
||||
#pass
|
||||
|
||||
@@ -879,7 +879,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
def SetItemToolTip(self, tooltipItem):
|
||||
self.tooltipItem = tooltipItem
|
||||
|
||||
# 버튼 눌려 있는 상태를 제외한 모든 강화창 관련 변수들을 초기화.
|
||||
# Initialize all refine window variables except button pressed state
|
||||
def __Initialize(self):
|
||||
self.currentRecipe = {}
|
||||
self.refineItemInfo = {}
|
||||
@@ -897,7 +897,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
|
||||
def __FlushRefineItemSlot(self):
|
||||
## Item slot settings
|
||||
# 원래 인벤의 아이템 카운트 회복
|
||||
# Restore original inventory item count
|
||||
for invenType, invenPos, itemCount in self.refineItemInfo.values():
|
||||
remainCount = player.GetItemCount(invenType, invenPos)
|
||||
player.SetItemCount(invenType, invenPos, remainCount + itemCount)
|
||||
@@ -948,33 +948,33 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
raise Exception, ("Invalid attachedItemCount(%d). (base pos (%d, %d), base itemCount(%d))" % (itemCount, invenType, invenPos, maxCount))
|
||||
#return False
|
||||
|
||||
# strength 강화일 경우, 0번엔 강화석, 1번엔 용혼석을 놓도록 강제함.
|
||||
# For strength refining, force slot 0 for refine stone and slot 1 for dragon soul
|
||||
if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:
|
||||
if self.__IsDragonSoul(itemVnum):
|
||||
dstSlotIndex = 1
|
||||
else:
|
||||
dstSlotIndex = 0
|
||||
|
||||
# 빈 슬롯이어야함.
|
||||
# Must be empty slot
|
||||
if dstSlotIndex in self.refineItemInfo:
|
||||
return False
|
||||
|
||||
# 강화창에 올릴 수 있는 아이템인지 검사.
|
||||
|
||||
# Check if item can be placed in refine window
|
||||
if False == self.__CheckCanRefine(itemVnum):
|
||||
return False
|
||||
|
||||
# 끌어다 놓은 아이템 카운트만큼 원래 자리의 아이템 카운트 감소
|
||||
|
||||
# Decrease original slot item count by dragged amount
|
||||
player.SetItemCount(invenType, invenPos, maxCount - itemCount)
|
||||
self.refineItemInfo[dstSlotIndex] = (invenType, invenPos, itemCount)
|
||||
self.Refresh()
|
||||
|
||||
return True
|
||||
|
||||
# 강화 가능한 아이템인지 체크
|
||||
# 용혼석 강화는 강화 레시피를 정해놓고 시작하는 것이 아니라,
|
||||
# 처음에 강화창에 올린 용혼석에 의해 강화 레시피가 결정된다.
|
||||
# 그래서 __CanRefineGrade, __CanRefineStep, __CanRefineStrength 함수에서
|
||||
# 강화 레시피가 없다면(처음 올리는 아이템이라면), 강화 레시피를 설정해주는 역할도 한다.
|
||||
# Check if item can be refined
|
||||
# Dragon soul refining doesn't start with a predetermined recipe
|
||||
# The refine recipe is determined by the first dragon soul placed in the refine window
|
||||
# So __CanRefineGrade, __CanRefineStep, __CanRefineStrength functions also
|
||||
# set the refine recipe if there isn't one (if it's the first item placed)
|
||||
def __CheckCanRefine(self, vnum):
|
||||
if self.REFINE_TYPE_GRADE == self.currentRefineType:
|
||||
return self.__CanRefineGrade(vnum)
|
||||
@@ -1001,19 +1001,19 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
if not (cur_refine_ds_type == ds_type and cur_refine_grade == grade):
|
||||
self.__PopUp(localeInfo.DRAGON_SOUL_INVALID_DRAGON_SOUL)
|
||||
return False
|
||||
# 강화 창에 처음 아이템을 올리는 경우, 강화 재료에 관한 정보가 없다.
|
||||
# 용혼석 강화가, 레시피를 가지고 시작하는 것이 아니라, 강화창에 처음 올리는 아이템이 무엇이냐에 따라,
|
||||
# 무엇을 강화하고, 재료가 무엇인지(이하 레시피)가 정해진다.
|
||||
# 레시피가 없다면, 처음 올린 아이템이라 생각하고, vnum을 바탕으로 레시피를 셋팅.
|
||||
# When placing first item in refine window, there's no material information
|
||||
# Dragon soul refining doesn't start with a recipe - what to refine and
|
||||
# what materials are needed (recipe) is determined by the first item placed
|
||||
# If no recipe exists, assume it's the first item and set recipe based on vnum
|
||||
else:
|
||||
self.currentRecipe = self.__GetRefineGradeRecipe(vnum)
|
||||
|
||||
if self.currentRecipe:
|
||||
self.refineSlotLockStartIndex = self.currentRecipe["need_count"]
|
||||
self.wndMoney.SetText(localeInfo.NumberToMoneyString(self.currentRecipe["fee"]))
|
||||
self.wndMoney.SetText(localeInfo.NumberToMoneyString(self.currentRecipe["fee"]))
|
||||
return True
|
||||
else:
|
||||
# 강화 정보 셋팅에 실패하면 올릴 수 없는 아이템으로 판단.
|
||||
# If recipe setup fails, item cannot be placed
|
||||
self.__PopUp(localeInfo.DRAGON_SOUL_CANNOT_REFINE)
|
||||
return False
|
||||
|
||||
@@ -1030,25 +1030,25 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
if not (cur_refine_ds_type == ds_type and cur_refine_grade == grade and cur_refine_step == step):
|
||||
self.__PopUp(localeInfo.DRAGON_SOUL_INVALID_DRAGON_SOUL)
|
||||
return False
|
||||
# 강화 창에 처음 아이템을 올리는 경우, 재료에 관한 정보가 없다.
|
||||
# 용혼석 강화가, 레시피를 가지고 시작하는 것이 아니라, 강화창에 처음 올리는 아이템이 무엇이냐에 따라,
|
||||
# 무엇을 강화하고, 재료가 무엇인지(이하 레시피)가 정해진다.
|
||||
# 레시피가 없다면, 처음 올린 아이템이라 생각하고, vnum을 바탕으로 레시피를 셋팅.
|
||||
# When placing first item in refine window, there's no material information
|
||||
# Dragon soul refining doesn't start with a recipe - what to refine and
|
||||
# what materials are needed (recipe) is determined by the first item placed
|
||||
# If no recipe exists, assume it's the first item and set recipe based on vnum
|
||||
else:
|
||||
self.currentRecipe = self.__GetRefineStepRecipe(vnum)
|
||||
|
||||
if self.currentRecipe:
|
||||
self.refineSlotLockStartIndex = self.currentRecipe["need_count"]
|
||||
self.wndMoney.SetText(localeInfo.NumberToMoneyString(self.currentRecipe["fee"]))
|
||||
self.wndMoney.SetText(localeInfo.NumberToMoneyString(self.currentRecipe["fee"]))
|
||||
return True
|
||||
|
||||
else:
|
||||
# 강화 정보 셋팅에 실패하면 올릴 수 없는 아이템으로 판단.
|
||||
# If recipe setup fails, item cannot be placed
|
||||
self.__PopUp(localeInfo.DRAGON_SOUL_CANNOT_REFINE)
|
||||
return False
|
||||
|
||||
def __CanRefineStrength (self, vnum):
|
||||
# 용혼석인 경우, 더 이상 strength 강화를 할 수 없는지 체크해야함.
|
||||
# For dragon souls, check if strength refining is no longer possible
|
||||
if self.__IsDragonSoul(vnum):
|
||||
ds_type, grade, step, strength = self.__GetDragonSoulTypeInfo(vnum)
|
||||
|
||||
@@ -1060,10 +1060,10 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
else:
|
||||
return True
|
||||
|
||||
# strength 강화의 경우, refine_recipe가 용혼석의 종류가 아닌, 강화석의 종류에 따라 달라진다.
|
||||
# 따라서 용혼석이 아니라면,
|
||||
# 이미 레시피가 있는 경우는, 강화석이 강화창에 있다는 것이므로, return False
|
||||
# 레시피가 없는 경우는, 강화석인지 확인하고, 레시피를 셋팅한다.
|
||||
# For strength refining, refine_recipe depends on refine stone type, not dragon soul type
|
||||
# So if it's not a dragon soul:
|
||||
# If recipe already exists, refine stone is in window, so return False
|
||||
# If no recipe, check if it's a refine stone and set recipe
|
||||
else:
|
||||
if self.currentRecipe:
|
||||
self.__PopUp(localeInfo.DRAGON_SOUL_IS_NOT_DRAGON_SOUL)
|
||||
@@ -1075,7 +1075,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
self.wndMoney.SetText(localeInfo.NumberToMoneyString(self.currentRecipe["fee"]))
|
||||
return True
|
||||
else:
|
||||
# 레시피를 셋팅할 수 없는 경우
|
||||
# Cannot set recipe
|
||||
self.__PopUp(localeInfo.DRAGON_SOUL_NOT_DRAGON_SOUL_REFINE_STONE)
|
||||
return False
|
||||
|
||||
@@ -1105,11 +1105,11 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
except:
|
||||
return None
|
||||
|
||||
# strength 강화의 경우, refineInfo는 강화석에 따라 달라진다.
|
||||
# For strength refining, refineInfo depends on the refine stone
|
||||
def __GetRefineStrengthInfo (self, itemVnum):
|
||||
try:
|
||||
# 이놈의 위치를 어찌하지....
|
||||
# 강화석이 아니면 안됨.
|
||||
# Where to put this...
|
||||
# Must be a refine stone
|
||||
item.SelectItem(itemVnum)
|
||||
if not (item.ITEM_TYPE_MATERIAL == item.GetItemType() \
|
||||
and (item.MATERIAL_DS_REFINE_NORMAL <= item.GetItemSubType() and item.GetItemSubType() <= item.MATERIAL_DS_REFINE_HOLLY)):
|
||||
@@ -1124,11 +1124,11 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
item.SelectItem(vnum)
|
||||
return item.GetItemType() == item.ITEM_TYPE_DS
|
||||
|
||||
# 용혼석 Vnum에 대한 comment
|
||||
# ITEM VNUM을 10만 자리부터, FEDCBA라고 한다면
|
||||
# FE : 용혼석 종류. D : 등급
|
||||
# C : 단계 B : 강화
|
||||
# A : 여벌의 번호들...
|
||||
# Dragon soul Vnum comments
|
||||
# If ITEM VNUM from 100,000s digit is represented as FEDCBA
|
||||
# FE: Dragon soul type D: Grade
|
||||
# C: Step B: Strength
|
||||
# A: Reserved numbers
|
||||
def __GetDragonSoulTypeInfo(self, vnum):
|
||||
if not self.__IsDragonSoul(vnum):
|
||||
return DragonSoulRefineWindow.INVALID_DRAGON_SOUL_INFO
|
||||
@@ -1142,7 +1142,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
def __MakeDragonSoulVnum(self, ds_type, grade, step, strength):
|
||||
return ds_type * 10000 + grade * 1000 + step * 100 + strength * 10
|
||||
|
||||
## 빈 슬롯 선택 Event
|
||||
## Empty slot selection event
|
||||
def __SelectRefineEmptySlot(self, selectedSlotPos):
|
||||
try:
|
||||
if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
|
||||
@@ -1177,14 +1177,14 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
import dbg
|
||||
dbg.TraceError("Exception : __SelectRefineEmptySlot, %s" % e)
|
||||
|
||||
# 클릭으로 슬롯에서 삭제.
|
||||
# Remove from slot by clicking
|
||||
def __SelectRefineItemSlot(self, selectedSlotPos):
|
||||
if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
|
||||
return
|
||||
|
||||
try:
|
||||
if not selectedSlotPos in self.refineItemInfo:
|
||||
# 새로운 아이템을 강화창에 올리는 작업.
|
||||
# Place new item in refine window
|
||||
if mouseModule.mouseController.isAttached():
|
||||
attachedSlotType = mouseModule.mouseController.GetAttachedType()
|
||||
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
|
||||
@@ -1211,26 +1211,26 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
|
||||
attachedInvenType, attachedSlotPos, attachedItemCount = self.refineItemInfo[selectedSlotPos]
|
||||
selectedItemVnum = player.GetItemIndex(attachedInvenType, attachedSlotPos)
|
||||
|
||||
# 강화창에서 삭제 및 원래 인벤의 아이템 카운트 회복
|
||||
|
||||
# Remove from refine window and restore original inventory item count
|
||||
invenType, invenPos, itemCount = self.refineItemInfo[selectedSlotPos]
|
||||
remainCount = player.GetItemCount(invenType, invenPos)
|
||||
player.SetItemCount(invenType, invenPos, remainCount + itemCount)
|
||||
del self.refineItemInfo[selectedSlotPos]
|
||||
|
||||
# 강화창이 비었다면, 초기화
|
||||
|
||||
# If refine window is empty, initialize
|
||||
if not self.refineItemInfo:
|
||||
self.__Initialize()
|
||||
else:
|
||||
item.SelectItem(selectedItemVnum)
|
||||
# 없앤 아이템이 강화석이었다면 강화 레피시 초기화
|
||||
# If removed item was refine stone, reset refine recipe
|
||||
if (item.ITEM_TYPE_MATERIAL == item.GetItemType() \
|
||||
and (item.MATERIAL_DS_REFINE_NORMAL <= item.GetItemSubType() and item.GetItemSubType() <= item.MATERIAL_DS_REFINE_HOLLY)):
|
||||
self.currentRecipe = {}
|
||||
self.wndMoney.SetText(localeInfo.NumberToMoneyString(0))
|
||||
# 용혼석이었다면,
|
||||
# strength강화가 아닌 경우, 강화창에 다른 용혼석이 남아있으므로, 레시피를 초기화하면 안됨.
|
||||
# strength강화의 경우, 강화 레시피는 강화석에 종속된 것이므로 다른 처리할 필요가 없음.
|
||||
# If it was a dragon soul:
|
||||
# For non-strength refining, don't reset recipe since other dragon souls remain in window
|
||||
# For strength refining, no special handling needed since recipe depends on refine stone
|
||||
else:
|
||||
pass
|
||||
|
||||
@@ -1277,10 +1277,10 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
for slotPos in xrange(self.wndRefineSlot.GetSlotCount()):
|
||||
self.wndRefineSlot.ClearSlot(slotPos)
|
||||
if slotPos < self.refineSlotLockStartIndex:
|
||||
# self.refineItemInfo[slotPos]의 정보확인
|
||||
# (실제로 아이템이 존재하는지 확인)
|
||||
# 존재 -> 아이템 아이콘을 슬롯에 셋팅.
|
||||
# 비존재 -> 아이템이 없으므로 강화창에서 삭제.
|
||||
# Check self.refineItemInfo[slotPos] information
|
||||
# (check if item actually exists)
|
||||
# Exists -> Set item icon to slot
|
||||
# Doesn't exist -> Remove from refine window since there's no item
|
||||
if slotPos in self.refineItemInfo:
|
||||
invenType, invenPos, itemCount = self.refineItemInfo[slotPos]
|
||||
itemVnum = player.GetItemIndex(invenType, invenPos)
|
||||
@@ -1291,12 +1291,12 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
else:
|
||||
del self.refineItemInfo[slotPos]
|
||||
|
||||
# 빈 슬롯에 reference 아이콘을 alpha 0.5로 셋팅.
|
||||
# Set reference icon with alpha 0.5 for empty slot
|
||||
if not slotPos in self.refineItemInfo:
|
||||
try:
|
||||
reference_vnum = 0
|
||||
# strength 강화일 때는,
|
||||
# 0번 슬롯에 강화석을, 1번 슬롯에 용혼석을 놓는다.
|
||||
# For strength refining:
|
||||
# Slot 0 for refine stone, slot 1 for dragon soul
|
||||
if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:
|
||||
if DragonSoulRefineWindow.REFINE_STONE_SLOT == slotPos:
|
||||
reference_vnum = 100300
|
||||
@@ -1307,28 +1307,27 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
itemIcon = item.GetIconImage()
|
||||
(width, height) = item.GetItemSize()
|
||||
self.wndRefineSlot.SetSlot(slotPos, 0, width, height, itemIcon, (1.0, 1.0, 1.0, 0.5))
|
||||
# slot 우측 하단에 숫자 뜨면 안 예쁨...
|
||||
# Don't show number in bottom right of slot, looks bad
|
||||
self.wndRefineSlot.SetSlotCount(slotPos, 0)
|
||||
except:
|
||||
pass
|
||||
# refineSlotLockStartIndex 보다 작은 슬롯은 닫힌 이미지를 보여주면 안됨.
|
||||
# Slots smaller than refineSlotLockStartIndex shouldn't show closed image
|
||||
self.wndRefineSlot.HideSlotBaseImage(slotPos)
|
||||
# slotPos >= self.refineSlotLockStartIndex:
|
||||
else:
|
||||
# 정상적인 경우라면 이 if문에 들어갈 일은 없겠지만,
|
||||
# (애초에 인덱스가 refineSlotLockStartIndex 이상인 슬롯에는 아이템을 넣지 못하게 했기 때문)
|
||||
# 혹시 모를 에러에 대비함.
|
||||
# Normally this if statement shouldn't execute
|
||||
# (since we prevented items from being placed in slots >= refineSlotLockStartIndex)
|
||||
# But handle just in case of error
|
||||
if slotPos in self.refineItemInfo:
|
||||
invenType, invenPos, itemCount = self.refineItemInfo[slotPos]
|
||||
remainCount = player.GetItemCount(invenType, invenPos)
|
||||
player.SetItemCount(invenType, invenPos, remainCount + itemCount)
|
||||
del self.refineItemInfo[slotPos]
|
||||
# refineSlotLockStartIndex 이상인 슬롯은 닫힌 이미지를 보여줘야함.
|
||||
# Slots >= refineSlotLockStartIndex should show closed image
|
||||
self.wndRefineSlot.ShowSlotBaseImage(slotPos)
|
||||
|
||||
# 강화창에 아무런 아이템이 없다면, 초기화해줌.
|
||||
# 위에서 중간 중간에 "del self.refineItemInfo[slotPos]"를 했기 때문에,
|
||||
# 여기서 한번 체크해줘야함.
|
||||
|
||||
# If there are no items in refine window, initialize
|
||||
# Need to check here since we did "del self.refineItemInfo[slotPos]" above
|
||||
if not self.refineItemInfo:
|
||||
self.__Initialize()
|
||||
|
||||
@@ -1338,8 +1337,8 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
|
||||
dbg.TraceError("Exception : __RefreshRefineItemSlot, %s" % e)
|
||||
|
||||
def __GetEmptySlot(self, itemVnum = 0):
|
||||
# STRENGTH 강화의 경우, 용혼석 슬롯과 강화석 슬롯이 구분되어있기 떄문에
|
||||
# vnum을 알아야 한다.
|
||||
# For STRENGTH refining, dragon soul slot and refine stone slot are separate
|
||||
# so we need to know the vnum
|
||||
if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:
|
||||
if 0 == itemVnum:
|
||||
return -1
|
||||
|
||||
Reference in New Issue
Block a user