Protocol 10.76, fixed death window & death packet
This commit is contained in:
parent
ca60efd786
commit
83dc129f03
|
@ -1,10 +1,11 @@
|
||||||
DeathWindow < MainWindow
|
DeathWindow < MainWindow
|
||||||
id: deathWindow
|
id: deathWindow
|
||||||
!text: tr('You are dead')
|
!text: tr('You are dead')
|
||||||
size: 350 155
|
&baseWidth: 350
|
||||||
|
&baseHeight: 15
|
||||||
|
|
||||||
Label
|
Label
|
||||||
!text: tr('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!')
|
id: labelText
|
||||||
width: 550
|
width: 550
|
||||||
height: 140
|
height: 140
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
deathWindow = nil
|
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()
|
function init()
|
||||||
g_ui.importStyle('deathwindow')
|
g_ui.importStyle('deathwindow')
|
||||||
|
|
||||||
|
@ -21,9 +27,9 @@ function reset()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function display()
|
function display(deathType, penalty)
|
||||||
displayDeadMessage()
|
displayDeadMessage()
|
||||||
openWindow()
|
openWindow(deathType, penalty)
|
||||||
end
|
end
|
||||||
|
|
||||||
function displayDeadMessage()
|
function displayDeadMessage()
|
||||||
|
@ -33,12 +39,31 @@ function displayDeadMessage()
|
||||||
modules.game_textmessage.displayGameMessage(tr('You are dead.'))
|
modules.game_textmessage.displayGameMessage(tr('You are dead.'))
|
||||||
end
|
end
|
||||||
|
|
||||||
function openWindow()
|
function openWindow(deathType, penalty)
|
||||||
if deathWindow then
|
if deathWindow then
|
||||||
deathWindow:destroy()
|
deathWindow:destroy()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
deathWindow = g_ui.createWidget('DeathWindow', rootWidget)
|
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 okButton = deathWindow:getChildById('buttonOk')
|
||||||
local cancelButton = deathWindow:getChildById('buttonCancel')
|
local cancelButton = deathWindow:getChildById('buttonCancel')
|
||||||
|
|
||||||
|
|
|
@ -130,6 +130,7 @@ GameExperienceBonus = 66
|
||||||
GameAuthenticator = 67
|
GameAuthenticator = 67
|
||||||
GameUnjustifiedPoints = 68
|
GameUnjustifiedPoints = 68
|
||||||
GameSessionKey = 69
|
GameSessionKey = 69
|
||||||
|
GameDeathType = 70
|
||||||
|
|
||||||
TextColors = {
|
TextColors = {
|
||||||
red = '#f55e5e', --'#c83200'
|
red = '#f55e5e', --'#c83200'
|
||||||
|
@ -270,4 +271,9 @@ Blessings = {
|
||||||
SparkOfPhoenix = 32
|
SparkOfPhoenix = 32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeathType = {
|
||||||
|
Regular = 0,
|
||||||
|
Blessed = 1
|
||||||
|
}
|
||||||
|
|
||||||
-- @}
|
-- @}
|
||||||
|
|
|
@ -73,7 +73,7 @@ function g_game.getSupportedClients()
|
||||||
1053, 1054, 1055, 1056, 1057,
|
1053, 1054, 1055, 1056, 1057,
|
||||||
1058, 1059, 1060, 1061, 1062,
|
1058, 1059, 1060, 1061, 1062,
|
||||||
1063, 1064, 1070, 1071, 1072,
|
1063, 1064, 1070, 1071, 1072,
|
||||||
1073, 1074, 1075
|
1073, 1074, 1075, 1076
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -402,6 +402,7 @@ namespace Otc
|
||||||
GameAuthenticator = 67,
|
GameAuthenticator = 67,
|
||||||
GameUnjustifiedPoints = 68,
|
GameUnjustifiedPoints = 68,
|
||||||
GameSessionKey = 69,
|
GameSessionKey = 69,
|
||||||
|
GameDeathType = 70,
|
||||||
|
|
||||||
LastGameFeature = 101
|
LastGameFeature = 101
|
||||||
};
|
};
|
||||||
|
@ -466,6 +467,11 @@ namespace Otc
|
||||||
BlessingWisdomOfSolitude = 1 << 4,
|
BlessingWisdomOfSolitude = 1 << 4,
|
||||||
BlessingSparkOfPhoenix = 1 << 5
|
BlessingSparkOfPhoenix = 1 << 5
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum DeathType {
|
||||||
|
DeathRegular = 0,
|
||||||
|
DeathBlessed = 1
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -228,12 +228,12 @@ void Game::processGameEnd()
|
||||||
g_map.cleanDynamicThings();
|
g_map.cleanDynamicThings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::processDeath(int penality)
|
void Game::processDeath(int deathType, int penality)
|
||||||
{
|
{
|
||||||
m_dead = true;
|
m_dead = true;
|
||||||
m_localPlayer->stopWalk();
|
m_localPlayer->stopWalk();
|
||||||
|
|
||||||
g_lua.callGlobalField("g_game", "onDeath", penality);
|
g_lua.callGlobalField("g_game", "onDeath", deathType, penality);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::processGMActions(const std::vector<uint8>& actions)
|
void Game::processGMActions(const std::vector<uint8>& actions)
|
||||||
|
@ -1450,7 +1450,7 @@ void Game::setProtocolVersion(int version)
|
||||||
if(isOnline())
|
if(isOnline())
|
||||||
stdext::throw_exception("Unable to change protocol version while online");
|
stdext::throw_exception("Unable to change protocol version while online");
|
||||||
|
|
||||||
if(version != 0 && (version < 740 || version > 1075))
|
if(version != 0 && (version < 740 || version > 1076))
|
||||||
stdext::throw_exception(stdext::format("Protocol version %d not supported", version));
|
stdext::throw_exception(stdext::format("Protocol version %d not supported", version));
|
||||||
|
|
||||||
m_protocolVersion = version;
|
m_protocolVersion = version;
|
||||||
|
@ -1468,7 +1468,7 @@ void Game::setClientVersion(int version)
|
||||||
if(isOnline())
|
if(isOnline())
|
||||||
stdext::throw_exception("Unable to change client version while online");
|
stdext::throw_exception("Unable to change client version while online");
|
||||||
|
|
||||||
if(version != 0 && (version < 740 || version > 1075))
|
if(version != 0 && (version < 740 || version > 1076))
|
||||||
stdext::throw_exception(stdext::format("Client version %d not supported", version));
|
stdext::throw_exception(stdext::format("Client version %d not supported", version));
|
||||||
|
|
||||||
m_features.reset();
|
m_features.reset();
|
||||||
|
@ -1596,6 +1596,10 @@ void Game::setClientVersion(int version)
|
||||||
enableFeature(Otc::GameExperienceBonus);
|
enableFeature(Otc::GameExperienceBonus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(version >= 1055) {
|
||||||
|
enableFeature(Otc::GameDeathType);
|
||||||
|
}
|
||||||
|
|
||||||
if(version >= 1061) {
|
if(version >= 1061) {
|
||||||
enableFeature(Otc::GameOGLInformation);
|
enableFeature(Otc::GameOGLInformation);
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ protected:
|
||||||
|
|
||||||
void processGameStart();
|
void processGameStart();
|
||||||
void processGameEnd();
|
void processGameEnd();
|
||||||
void processDeath(int penality);
|
void processDeath(int deathType, int penality);
|
||||||
|
|
||||||
void processGMActions(const std::vector<uint8>& actions);
|
void processGMActions(const std::vector<uint8>& actions);
|
||||||
void processInventoryChange(int slot, const ItemPtr& item);
|
void processInventoryChange(int slot, const ItemPtr& item);
|
||||||
|
|
|
@ -537,9 +537,15 @@ void ProtocolGame::parseChallenge(const InputMessagePtr& msg)
|
||||||
void ProtocolGame::parseDeath(const InputMessagePtr& msg)
|
void ProtocolGame::parseDeath(const InputMessagePtr& msg)
|
||||||
{
|
{
|
||||||
int penality = 100;
|
int penality = 100;
|
||||||
if(g_game.getFeature(Otc::GamePenalityOnDeath))
|
int deathType = Otc::DeathRegular;
|
||||||
|
|
||||||
|
if(g_game.getFeature(Otc::GameDeathType))
|
||||||
|
deathType = msg->getU8();
|
||||||
|
|
||||||
|
if(g_game.getFeature(Otc::GamePenalityOnDeath) && deathType == Otc::DeathRegular)
|
||||||
penality = msg->getU8();
|
penality = msg->getU8();
|
||||||
g_game.processDeath(penality);
|
|
||||||
|
g_game.processDeath(deathType, penality);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProtocolGame::parseMapDescription(const InputMessagePtr& msg)
|
void ProtocolGame::parseMapDescription(const InputMessagePtr& msg)
|
||||||
|
|
Loading…
Reference in New Issue