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