87 lines
3.1 KiB
Lua
87 lines
3.1 KiB
Lua
deathWindow = nil
|
|
|
|
local deathTexts = {
|
|
regular = {text = 'Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nSimply click on Ok to resume your journeys!', height = 140, width = 0},
|
|
unfair = {text = 'Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nThis death penalty has been reduced by %i%%\nbecause it was an unfair fight.\n\nSimply click on Ok to resume your journeys!', height = 185, width = 0},
|
|
blessed = {text = 'Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back into this world\n\nThis death penalty has been reduced by 100%\nbecause you are blessed with the Adventurer\'s Blessing\n\nSimply click on Ok to resume your journeys!', height = 170, width = 90}
|
|
}
|
|
|
|
function init()
|
|
g_ui.importStyle('deathwindow')
|
|
|
|
connect(g_game, { onDeath = display,
|
|
onGameEnd = reset })
|
|
end
|
|
|
|
function terminate()
|
|
disconnect(g_game, { onDeath = display,
|
|
onGameEnd = reset })
|
|
|
|
reset()
|
|
end
|
|
|
|
function reset()
|
|
if deathWindow then
|
|
deathWindow:destroy()
|
|
deathWindow = nil
|
|
end
|
|
end
|
|
|
|
function display(deathType, penalty)
|
|
displayDeadMessage()
|
|
openWindow(deathType, penalty)
|
|
end
|
|
|
|
function displayDeadMessage()
|
|
local advanceLabel = modules.game_interface.getRootPanel():recursiveGetChildById('middleCenterLabel')
|
|
if advanceLabel:isVisible() then return end
|
|
|
|
modules.game_textmessage.displayGameMessage(tr('You are dead.'))
|
|
end
|
|
|
|
function openWindow(deathType, penalty)
|
|
if deathWindow then
|
|
deathWindow:destroy()
|
|
return
|
|
end
|
|
|
|
deathWindow = g_ui.createWidget('DeathWindow', rootWidget)
|
|
|
|
local textLabel = deathWindow:getChildById('labelText')
|
|
if deathType == DeathType.Regular then
|
|
if penalty == 100 then
|
|
textLabel:setText(deathTexts.regular.text)
|
|
deathWindow:setHeight(deathWindow.baseHeight + deathTexts.regular.height)
|
|
deathWindow:setWidth(deathWindow.baseWidth + deathTexts.regular.width)
|
|
else
|
|
textLabel:setText(string.format(deathTexts.unfair.text, 100 - penalty))
|
|
deathWindow:setHeight(deathWindow.baseHeight + deathTexts.unfair.height)
|
|
deathWindow:setWidth(deathWindow.baseWidth + deathTexts.unfair.width)
|
|
end
|
|
elseif deathType == DeathType.Blessed then
|
|
textLabel:setText(deathTexts.blessed.text)
|
|
deathWindow:setHeight(deathWindow.baseHeight + deathTexts.blessed.height)
|
|
deathWindow:setWidth(deathWindow.baseWidth + deathTexts.blessed.width)
|
|
end
|
|
|
|
local okButton = deathWindow:getChildById('buttonOk')
|
|
local cancelButton = deathWindow:getChildById('buttonCancel')
|
|
|
|
local okFunc = function()
|
|
CharacterList.doLogin()
|
|
okButton:getParent():destroy()
|
|
deathWindow = nil
|
|
end
|
|
local cancelFunc = function()
|
|
g_game.safeLogout()
|
|
cancelButton:getParent():destroy()
|
|
deathWindow = nil
|
|
end
|
|
|
|
deathWindow.onEnter = okFunc
|
|
deathWindow.onEscape = cancelFunc
|
|
|
|
okButton.onClick = okFunc
|
|
cancelButton.onClick = cancelFunc
|
|
end
|