Commit graph

261 commits

Author SHA1 Message Date
Eduardo Dantas
ef446a9d0c
feat(client): add automatic modern asset installation (#1727)
Add automatic client-asset installation for modern Tibia versions in OTC, with the UI and runtime support needed for a safe download-and-install flow.

Main changes:
- Add modules/client_assets to orchestrate descriptor and release resolution, downloads, retries, cancellation, archive extraction, optional LZMA handling, and SHA-256 integrity checks.
- Add richer install logs in the console, including download phases, install phases, and final install paths.
- Add support for packaged runtime files, including large DLLs distributed through archives.
- Make client_entergame depend on client_assets.
- Check required assets during login for modern clients version 1281 and newer.
- Prompt the user to download missing modern assets instead of requiring manual setup.
- Allow the client list and version selection to work with installed modern asset sets.

Install layout:
- Install things assets under data/things/<version>.
- Install sound assets under data/sounds/<version>.
- Keep extra runtime files in the existing client root/bin flow.
- Preserve the existing OTC asset layout as the source of truth instead of introducing a separate permanent path.

UI improvements:
- Improve missing-assets and progress dialog sizing and text wrapping.
- Improve progress behavior for downloads without Content-Length.
- Add indeterminate progress behavior for unknown-length phases.
- Add an hourglass busy indicator for indeterminate phases.
- Reduce the perception that the installer is stuck during long extraction steps.

Runtime and build support:
- Add libarchive usage and linking for archive extraction.
- Add SHA-256 helpers and Lua bindings used by client_assets.
- Add safer extraction and path normalization in ResourceManager.
- Adjust the Emscripten HTTP login path to follow the same HTTP/HTTPS fallback behavior used by native login.

Security and integrity:
- Enable strictManifestSha256 by default.
- Disable raw fallback on hash mismatch by default.
- Key releasesCache per source URL and repository to avoid stale cross-source cache reuse.
- Add an LZMA decompression output cap to reduce memory-exhaustion risk.

Compatibility:
- Keep existing classic asset behavior unchanged.
- Use the new auto-install flow only for modern versions when required assets are missing.
- Keep the scope limited to client-side asset automation and required runtime support.
- No server-side Canary behavior is changed by this PR.

This makes modern client setup safer and more automatic by downloading, validating, extracting, and installing missing assets directly from OTC while preserving the existing classic asset flow.
2026-05-28 16:18:44 -03:00
kokekanon
4a87cebb11
feat: protocol 15.24 packets and features (#1604)
New Features:
- Task Board (Bounty, Weekly, Shop) with Preferred & Soulseal modals, Kill Tracker, Offline Training dialog, Vocation tutorial, infobanner notifications, redesigned NPC chat/trade, and multi-slot action bar.

Gameplay Enhancements:
- Expanded Cyclopedia stats, talisman upgrades, weekly rewards/progress, soulseal fights, taskboard shop/offers and offline training actions.

UI / Graphics:
- Per-source spell-effect opacity sliders, status icon bar, HUD/scroll improvements, many new templates/styles, screenshot UI updates, and small label/icon fixes.

Bug Fixes:
- Miscellaneous UI behavior, layout and robustness improvements.
2026-05-20 11:26:11 -03:00
André Morais
b03c5d6e38
feat: imbuement system (#1616)
New Features:
- Imbuement Shrine UI: item/scroll selection, imbuement/clear flows, confirmation dialogs, timers, and cost display.
- New imbuement modules: selection, item/scroll handlers, and imbuement management.
- New progress bar widgets and vertical/inverted variants for status and timers.
- Exposed client APIs and protocol support for imbuement interactions.

UX Improvements:
- Resource requirement tooltips, formatted balance display, and conditional enablement of imbue actions.

Co-authored-by: kokekanon <114332266+kokekanon@users.noreply.github.com>
2026-05-20 11:16:46 -03:00
André Morais
ce885ea187
feat: proficiency (#1593)
New Features:
- Full Weapon Proficiency system: track weapon XP, levels and perks.
- Dedicated Proficiency window with item grid, progress, perk selection, filters and search.
- Top-bar proficiency widget for quick status and one-click access.
- Real-time updates when equipping items and gaining proficiency XP.
- Client and scripting support to send proficiency actions and apply perk selections to the server.

Co-authored-by: kokekanon <114332266+kokekanon@users.noreply.github.com>
2026-05-20 07:45:27 -03:00
kokekanon
80f58f85cc
fix: vbot UI (#1718)
New Features:
- Enhanced bot configuration system with improved loading and management.

Bug Fixes:
- Fixed container window sizing when minimizing, now dynamically calculates height based on layout.

Style:
- Updated scrollbar visual appearance with new imagery and styling.
- Refreshed tab bar button visuals, sizing, and color states.
- Adjusted editor button layout for better alignment.
- Improved tab font sizing based on text length rather than count.
2026-05-16 22:19:28 -03:00
Luan Santos
388b3ba2ea
feat(platform): add native Cocoa/AppKit windowing for macOS (#1559)
New Features:
- Native macOS app with Cocoa windowing, OpenGL view, improved input, clipboard and cursor handling.
- Platform-aware keyboard and shortcut behavior with clearer primary/meta/control semantics and normalized key combos.

Bug Fixes:
- Expanded detection for "connection refused" network errors.

Chores:
- macOS build/bundle and packaging improvements; new dependency overlay added; CI now runs macOS build when relevant.

Tests:
- AddressSanitizer support added for test builds.
2026-05-16 13:06:48 -03:00
InnerCircleTFS
4c6f109d39
feat: add an extended-view-ui flag in data/setup.otml (#1713) 2026-05-11 14:58:57 -03:00
InnerCircleTFS
cf3914106d
perf: item expiry/charges rendering in C++ UIItem (#1712)
New Features: 
- Per-item controls to show/hide remaining duration and charges.
- Duration and charges rendered as overlays on item icons in inventory and containers.
- More accurate duration/decay tracking for items (improved timing behavior).

Bug Fixes / Performance:
- Removed global expiry polling in favor of per-item updates to reduce overhead.

Style:
- Adjusted item UI template affecting default label styling for duration/charges.
2026-05-11 14:58:02 -03:00
kokekanon
2a75a89c63
improve: rework game_stash (#1704)
New Features:
- Redesigned stash top bar with larger search, clear button, and three filter/sort controls.
- Incremental item loading as you scroll and dynamic stash combo options.
- Right-click/context menu with Retrieve, Cyclopedia search, Market redirect (when available), and QuickLoot actions.
- "Manage Containers" button added.

Improvements:
- Debounced search, category/imbuement/NPC filters, and smarter sort triggers.
- Immediate withdraw on select, restored focus on close, and centralized stash lifecycle/cleanup.
- Clearer item count rendering with a dedicated font and new formatting.
2026-05-02 20:44:23 -03:00
kokekanon
5655e4fc2d
improve: CharacterList sorting, pinning and UI updates (#1693)
New Features:
- Persistent sortable character list columns (name, status, level, vocation, world) with ascending/descending toggle.
- Per-account character pinning and pin-based sort prioritization.
- Show/hide hidden characters toggle and show outfits option.
- Expanded premium benefits panel and action button.

Style:
- Improved row focus highlighting and visual feedback.
- Better world name text layout and wrapping.
2026-04-19 21:09:32 -03:00
kokekanon
30a65c3d89
fix(#1657): add packets 0xCA "ExivaRestrictions" (#1658) 2026-03-14 13:20:56 -03:00
Eduardo Dantas
2288d63b0a
feat: add otml alias resolution (#1634)
New Features:
• OTML variable/alias support for styles, including nested, node-scoped, and global aliases for consistent theming.

Documentation:
• Added a detailed guide and example demonstrating alias declarations, scoping, resolution order, literal handling, and best practices.

Bug Fixes:
• UI loading now ignores variable-only nodes and better handles literal color tokens and invalid or circular alias references.

Tests:
• Added tests covering alias resolution, scoping, error cases, and export behavior.
Changelog
• New changelog entry documenting OTML alias resolution and related note about an include path update.
2026-02-25 18:00:53 -03:00
Sherrat
8065f140f5
feat: load cursor colored/animation (#1614)
This feature allows for increased customization by enabling the addition of colored mouse cursors.

Co-authored-by: LIBERGOD <37589902+libergod@users.noreply.github.com>
2026-02-25 13:35:11 -03:00
André Morais
d809b0cabf
feat: wheel of destiny (#1578)
Co-authored-by: LIBERGOD <37589902+libergod@users.noreply.github.com>
2026-01-30 16:45:21 -03:00
LIBERGOD
9c06ef96fe
improve: 2fa security and multiple world config (#1613) 2026-01-26 17:39:45 -03:00
Sherrat
95e6240a94
feat: Add TrueType font rendering with new graphics (#1595)
Co-authored-by: LIBERGOD <37589902+libergod@users.noreply.github.com>
2026-01-25 07:20:40 -03:00
kokekanon
62ea289953
feat: healthcircle for monk vocations (#1588) 2026-01-12 22:39:14 -03:00
kokekanon
af55093c13
feat: statbar for monk vocations (#1587) 2026-01-12 21:55:10 -03:00
kokekanon
f193ea20f0
improve: add spells for monk vocations (#1591) 2026-01-12 15:31:49 -03:00
InnerCircleTFS
f262a1e4b9
feat: Interactive text by oen (#1553)
Co-authored-by: LIBERGOD <37589902+libergod@users.noreply.github.com>
2026-01-09 10:34:34 -08:00
Gabriel Alcântara Bernardes
452d5b9832
feat: forge system (#1391)
Co-authored-by: kokekanon <114332266+kokekanon@users.noreply.github.com>
Co-authored-by: Renato Machado <mehahx@gmail.com>
Co-authored-by: LIBERGOD <37589902+libergod@users.noreply.github.com>
2026-01-08 08:54:57 -08:00
kokekanon
bf8eee94fb
style: fix visual bugs (#1526) 2026-01-06 21:50:11 -03:00
LIBERGOD
ddd76391a5
feat: game_market (#1539)
Co-authored-by: InnerCircleTFS <ringofoner52@gmail.com>
Co-authored-by: Luan Luciano <luanluciano93@gmail.com>
2026-01-06 09:13:52 -03:00
Luan Luciano
7b132aa98a
feat: compatibility with 15.11 (only bytes)
Co-authored-by: kokekanon <114332266+kokekanon@users.noreply.github.com>
2025-12-21 12:06:28 -03:00
SkullzOTS
f726bb035b
feat: dragging item icon (#1466) 2025-11-20 16:55:02 -03:00
SkullzOTS
a8703e0a11
improve: android features and fixes (#1427) 2025-11-08 13:55:09 -03:00
kokekanon
1645b2b0b3
improve: game_actionbar multiple Bars (#1354) 2025-10-25 04:28:51 -03:00
Renato Machado
d90f700eff improve: tag display definition 2025-10-19 22:46:59 -03:00
Renato Machado
b89a42315a fix: button align 2025-10-19 12:57:29 -03:00
Renato Machado
abe7004c4e fix: text size on change font 2025-10-16 20:01:55 -03:00
Renato Machado
32bfe1eeb5 fix: textedit in html 2025-10-16 19:42:23 -03:00
kokekanon
7579f8458e fix: blessing (#1355)
The tooltip is not there yet because I can't find the packets.
2025-10-14 14:07:18 -03:00
Gabriel Alcântara Bernardes
e29a9cd82d
feat: circle mana shield (#1320)
* feat: show mana shield circle

* fix: empty mana circle

* wip: statsbar

* wip: mana shield

* fix: mana shield bar

* fix: mana shield show text

* wip: is mage

* Add mana shield bar to mage player HUD

* fix: color
2025-10-13 11:42:35 -07:00
LIBERGOD
8975696353
feat: game analysers and fix: cooldown bars (#1310)
* wip

* feat: added analyser button

* feat: WIP: exp analyzer UI

* feat: WIP: XP analyzer window open/close

* feat: wip: exp analyzer exp gain/exp hour

* fix: mini window content on exp analyzer and setup on analyzer windows

* fix: negative zero value

* wip: start fixing cooldowns bar..

* fix: improve experience per hour calculation and handle edge cases

* fix: update UI components in experience analyzer

* feat: improve analyzer window handling

* feat: adjust UI elements in game analyzer

* feat: improve analyzer window handling

* Update game_analyzer.lua

* feat: enhance experience analyzer UI

* feat: enhance experience analyzer UI

* feat: enhance experience analyzer UI

* feat: enhance experience analyzer UI

* feat: enhance experience analyzer UI

* Add new UI components for game analyzer features

- Implemented a loot target setting window with input validation.
- Created a miscellaneous tracker UI with various data displays.
- Added party hunt analysis UI with leader and member information.
- Developed a supply analyzer window to track looted items and their values.
- Introduced an XP analyzer window to monitor XP gains and progress.
- Added functionality for setting XP per hour targets with input validation.

* feat: hide debug print statements in analyser and cooldown modules

* feat: improve config saving with error handling and directory checks

* feat: enhance game analyzer UI by hiding unnecessary buttons and adding context menu functionality

* feat: update game analyzer UI by improving menu options and visibility handling for various components

* mod: GraphUI variables locations

* imp: text color and positions GraphUI

* feat: adjust window height based on raw XP visibility

* imp: Cyclopedia Items

* feat: Drop Tracker list w/ Cyclopedia

* feat: Drop Tracker list w/ Cyclopedia

* feat: Drop Tracker + onKillTracker callback

* feat: Drop Tracker + Cyclopedia Track

* feat: Loot and Hunting Gold Values

* fix: Cyclopedia Item Values and c

* fix: fallback not needed

* fix: Valuable Loot - Drop Tracker

* feat: Loot Analyser 100% + Format change

* feat: Enhance number formatting with K, KK

* feat: Implement supply tracker callback to Lua

* fix: values Loot and Supply

* fix: XP graphs, DropTracker valuable loot pt1

* fix: DropTracker valuable loot pt2

* fix: Supply reset data

* feat: Impact and Input Analyser pt1

* feat: Impact and Input Analyser pt2

* fix: Hunting and Input Analyser

* feat: Impact and Input Analyser pt3

* feat: Impact and Input Analyser final

* feat: Impact and Input Analyser final

* feat: BossCooldown pt1

* feat: BossCooldown final

* fix stuffs tks @luanluciano93 + partyHunt setup initial

* Update PartyHuntAnalyser.lua

* feat: Party analyser pt1

* test

* rebuild1

* fix: partyAnalyser updates

* Fix partyAnalyser updates

* code refact

* fix: party leave/join

* Update PartyHuntAnalyser.lua

* fix lag due to many requests

* feat protocolparse Reset Party Hunt

* fix correct protocol codes/params

* feat: loot splitter + msising tutorial images

* fix lootsplitter + hunting reset

* fix 1

* refact-pt1-reseters

* imp: debug/prints clean-up

* remove fontbug

* Update PartyHuntAnalyser.lua

* refact 1

* Cyclopedia Items Price/value refact 1

* Cyclopedia Items Price/value refact 2

* Cyclopedia Items Price/value refact 3

* Cyclopedia Items Price/value refact 4

* Loot Analyser Refact 1

* Loot Analyser Refact 2

* Cyclopedia Items Price/value refact 5

* Hunting Analyser Refact 1

* Hunting Analyser Refact 2

* Refact Loot, Supply, Hunt, Cyclo FINAL.

* Refact Market Data + Canary fix

* Update analyser.lua

* refact - remove misc

Will be developed in future. Custom feature.

* fix-cooldown-search

* imp structs for better data handling

* imp structs for better data handling  pt2

* fix actions error

---------

Co-authored-by: Matheus <matheussf.sc@gmail.com>
2025-10-13 10:18:54 -07:00
Gabriel Alcântara Bernardes
d7215bffac
feat: prey options (#1327)
* wip: handle with all options

* Fix prey reroll button availability

* Fix reroll refresh function binding

* Ensure prey reroll confirmation covers inactive slots

* Fix reroll price detection for hidden prey panels

* Disable hover highlight on prey name list

* Prevent hidden prey outfit grid from capturing clicks

* Remove base border customization from prey list entries

* fix: remove border color

* fix: clipping

* chore: remove unnecessary code

* wip: handle with all options

* Fix prey reroll button availability

* Fix reroll refresh function binding

* Ensure prey reroll confirmation covers inactive slots

* Fix reroll price detection for hidden prey panels

* Disable hover highlight on prey name list

* Prevent hidden prey outfit grid from capturing clicks

* Remove base border customization from prey list entries

* fix: remove border color

* fix: clipping

* chore: remove unnecessary code

* fix: font

* Update prey.lua

* fix Lock/Reroll states

* fix prey

---------

Co-authored-by: LIBERGOD <37589902+libergod@users.noreply.github.com>
2025-10-10 17:12:39 -07:00
Renato Machado
a6c8dff0f2
improve/fix(html): text, rules and renders 2025-10-10 00:32:54 -03:00
Renato Machado
2512e57d3f
fix(html): #1350 #1348 #1346 #1347#1349 (#1352) 2025-10-06 23:33:29 -03:00
LIBERGOD
2a5344bc56
fix: UI creature sizes outfits (#1335)
* revert #1303

* Revert "revert #1303"

This reverts commit 719781a234d465643ae7af62e8af6a05c76f6d39.

* fix: Outfits window, Selection preview, charselect

* Warning fix

* Fix luaCallLuaField warnings

* fix: tks Nekiro - Outfit List

* fix: shaders,effects,wings,auras,mounts

* fix small error console

* Update outfit.lua

* Fix error of nil attach effects oldprotocol

ERROR: protected lua call failed: LUA ERROR:
/game_attachedeffects/attachedeffects.lua:73: attempt to index a nil value

* Fixed issues to creaturePreview pos bars
2025-10-06 08:04:48 -07:00
Renato Machado
42213783f2
fix: stabilize uicreature rendering size and prevent clipping when centered 2025-10-03 18:31:33 -03:00
Renato Machado
6a2bff9a80
improve: html/css syntax 2025-09-28 14:46:24 -03:00
LIBERGOD
311965fcb4
fix: UI creature sizes (#1303)
* fix: ensure familiar configuration is checked before access

* fix: adjust outfit button padding and margins for better layout

* fix: enhance creature display settings for character appearance
2025-09-27 09:15:24 -07:00
LIBERGOD
8311a011a0
improve: UI, Styles, MiniWindow General, see Roadmap
- Introduced a new miniwindow header image for UI.
- Created a new style file for the miniwindow battle interface, defining layout, buttons, and scrollable content.
- Configured button states for close, minimize, and toggle filter functionalities.
- Established visual elements such as borders, backgrounds, and dimensions for a cohesive design.
- Multi-Instance battle list feature.
- Filters and Orderings for each instance.
- Lock buttons specific to each instance.
- Keep open/re-launch when relog/exit game.
- On close, it destroys the instance, cleaning up its settings.
- A bunch of safety checks and locks to ensure they are working properly, and update all windows accordingly.
2025-08-27 18:42:18 -03:00
Juan Pablo
498b61f164
improve: Client background particles (#1287) 2025-08-20 19:35:48 -03:00
Renato Machado
2e3cc3f0ee
improve: Texture Atlas
- Integrated font glyphs into texture atlas (reduces glBindTexture)
- Fixed foreground smoothing (UI/2D rendering)
- Refactored and improved DrawPool logic and parallelism
- FPS is now more stable during high update rates
- Applied camera stabilization formula based on player speed

Closes #1134, #1031
2025-08-01 19:35:06 -03:00
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
kokekanon
abd5b68cd9
feat: player / monster Icons 12.81 (#973)
Co-authored-by: Renato Machado <mehahx@gmail.com>
2025-06-25 18:35:55 -03:00
Renato Machado
51060a884d
perf: battle and general layout update optimized (#1212) 2025-06-25 18:34:11 -03:00
kokekanon
6fd620505a
feat: "Read-only Tab" in game_console (#1189) 2025-06-11 13:03:38 -03:00
Rodrigo Paixão
07369287f7
Cleanup: Prevent errors and warnings in Lua code (#1179)
* fix: mainpanel

* Minor fixes

* Removed dead code (Outfit)
* Fixed type error SpellGroups vs game_cooldown
* Fixed Keybind
* And more

* more fixes

* ...

* Changes in shop (store)

* Added function addOutfit;
* Fixed entries per page (history);
* Fixed Extras Category
* Added function Game.getMountIdByClientId
2025-06-02 13:15:29 -03:00
Rodrigo Paixão
2af1c2e980
fix: quest log (pr #1144) (#1164) 2025-05-23 12:31:31 -03:00