otclient-redemption/modules/game_blessing/blessing.lua
kokekanon dbe3815790
feat: protocol 14.00 ~ 14.12 packets and features (#1171)
* feature: packets + features 14.10 [NO FIX LOGIN]

* fix header by murilo | dudantas

* fix: old protocol 11.00 [g_game.enableFeature(GameHeader1400);]

fix: old protocol 11.00 [g_game.enableFeature(GameHeader1400);]

* test

* test

* clear

* clear

* revert me changes of  header protocol

* header -> feat: version 14 - 1173

Co-Authored-By: murilo09 <78226931+murilo09@users.noreply.github.com>
Co-Authored-By: Eduardo Dantas <eduardo.dantas@hotmail.com.br>

* clear

* format

* format

* format

* clear

---------

Co-authored-by: murilo09 <78226931+murilo09@users.noreply.github.com>
Co-authored-by: Eduardo Dantas <eduardo.dantas@hotmail.com.br>
2025-07-30 15:17:32 -03:00

141 lines
4.7 KiB
Lua

BlessingController = Controller:new()
function BlessingController:onInit()
end
function BlessingController:onTerminate()
-- BlessingController:findWidget("#main"):destroy()
end
function BlessingController:onGameStart()
g_ui.importStyle("style.otui")
BlessingController:loadHtml('blessing.html')
BlessingController.ui:centerIn('parent')
BlessingController:registerEvents(g_game, {
onUpdateBlessDialog = onUpdateBlessDialog
})
BlessingController.ui:hide()
BlessingController.ui.minipanel1:setText("Record of Blessings") -- Temp fix html/css system
end
function BlessingController:onGameEnd()
if BlessingController.ui:isVisible() then
BlessingController.ui:hide()
end
end
function BlessingController:close()
hide()
end
function BlessingController:showHistory()
if BlessingController.ui.blessingHistory:isVisible() then
setBlessing()
else
setHistory()
end
end
function setHistory()
local ui = BlessingController.ui
ui.minipanel1:hide()
ui.promotionStatus2:hide()
ui.promotionStatus:hide()
ui.blessingHistory:show()
ui.historyButton:setText("Back")
end
function setBlessing()
local ui = BlessingController.ui
ui.minipanel1:show()
ui.promotionStatus2:show()
ui.promotionStatus:show()
ui.blessingHistory:hide()
ui.historyButton:setText("History")
end
function toggle()
if not BlessingController.ui then
return
end
if BlessingController.ui:isVisible() then
return hide()
end
show()
end
function hide()
if not BlessingController.ui then
return
end
BlessingController.ui:hide()
end
function show()
if not BlessingController.ui then
return
end
g_game.requestBless()
BlessingController.ui:show()
BlessingController.ui:raise()
BlessingController.ui:focus()
setBlessing()
end
function onUpdateBlessDialog(data)
BlessingController.ui.minipanel1:destroyChildren()
for i, entry in ipairs(data.blesses) do
local label = g_ui.createWidget("blessingTEST", BlessingController.ui.minipanel1)
local totalCount = entry.playerBlessCount + entry.store
label.text:setText(entry.playerBlessCount .. " (" .. entry.store .. ")")
if totalCount >= 1 then
label.enabled:setImageSource("images/" .. i .. "_on")
else
label.enabled:setImageSource("images/" .. i)
end
end
if (data.promotion ~= 0) then
BlessingController.ui.promotionStatus2.premium_only:setOn(true)
BlessingController.ui.promotionStatus2.rank:setColoredText(
"Your character is promoted and your account has Premium\nstatus. As a result, your XP loss is reduced by {30%, #f75f5f}.")
else
BlessingController.ui.promotionStatus2.rank:setColoredText(
"Your character is promoted and your account has Premium\nstatus. As a result, your XP loss is reduced by {0%, #f75f5f}.")
BlessingController.ui.promotionStatus2.premium_only:setOn(false)
end
BlessingController.ui.promotionStatus.fightRules:setColoredText(
"- Depending on the fair fight rules, you will lose between {" .. data.pvpMinXpLoss .. ", #f75f5f} and {" ..
data.pvpMaxXpLoss .. "%, #f75f5f} less XP and skill points \nupon your next PvP death.")
BlessingController.ui.promotionStatus.expLoss:setColoredText(
"- You will lose {" .. data.pveExpLoss .. "%, #f75f5f}% less XP and skill points upon your next PvE death.")
BlessingController.ui.promotionStatus.containerLoss:setColoredText(
"- There is a {" .. data.equipPvpLoss ..
"%, #f75f5f} chance that you will lose your equipped container on your next death.")
BlessingController.ui.promotionStatus.equipmentLoss:setColoredText(
"- There is a {" .. data.equipPveLoss .. "%, #f75f5f} chance that you will lose items upon your next death.")
BlessingController.ui.blessingHistory:getChildByIndex(1):destroyChildren()
local row2 = g_ui.createWidget("historyData", BlessingController.ui.blessingHistory:getChildByIndex(1))
row2:setBackgroundColor("#363636")
row2.rank:setText("date")
row2.name:setText("Event")
row2.rank:setColor("#c0c0c0")
row2.name:setColor("#c0c0c0")
row2:setBorderColor("#00000077")
row2:setBorderWidth(1)
for index, entry in ipairs(data.logs) do
local row = g_ui.createWidget("historyData", BlessingController.ui.blessingHistory:getChildByIndex(1))
local date = os.date("%Y-%m-%d, %H:%M:%S", entry.timestamp)
row:setBackgroundColor(index % 2 == 0 and "#ffffff12" or "#00000012")
row.rank:setText(date)
row.name:setText(entry.historyMessage)
end
end