Skip to content

improve: add minClientVersion in .otmod (load or unload modules based in client Version) - #1475

Closed
kokekanon wants to merge 33 commits into
opentibiabr:mainfrom
kokekanon:moduleclient
Closed

improve: add minClientVersion in .otmod (load or unload modules based in client Version)#1475
kokekanon wants to merge 33 commits into
opentibiabr:mainfrom
kokekanon:moduleclient

Conversation

@kokekanon

@kokekanon kokekanon commented Nov 23, 2025

Copy link
Copy Markdown
Contributor

load or unload modules based on the current client version.

.otmod

Module
  name: game_Module
  description: game_Module
  scripts: [ game_Module]
  sandboxed: true
  autoload: true
+ minClientVersion: 1310
  @onLoad: controller:init()
  @onUnload: controller:terminate()

or

Module
  name: game_Module
  description: game_Module
  scripts: [ game_Module]
  sandboxed: true
  autoload: true
+ !requiredFeature: g_game.getFeature(GameSpellList)
  @onLoad: controller:init()
  @onUnload: controller:terminate()

when executed onClientVersionChange If the current client version is lower than the minClientVersion of .otmod, the module unload

If I use client 8.6, I don't need to have these modules loaded:

  • store (1098),
  • cyclopedia (1310),
  • blessing (1000),
  • prey (1100),
  • analyzer (1310),
  • etc..

Summary by CodeRabbit

  • Chores

    • Added minimum client version requirements and feature gates to many modules for clearer compatibility.
    • Consolidated and reorganized UI asset paths and icon sources.
    • Improved module lifecycle handling and mobile device scoping; some UI toggles now appear/cleanup based on client version.
    • Roadmap updated: replaced entries with a new "Search Locker" item.
  • Bug Fixes

    • Fixed widget parent reassignment in mini windows.
    • Ensured controller events are fully stopped during termination.
    • Disabled certain status-icon tooltips to prevent incorrect displays.

Review Change Stack

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
B Maintainability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@github-actions

Copy link
Copy Markdown
Contributor

This PR is stale because it has been open 45 days with no activity.

@github-actions github-actions Bot added the Stale label Feb 12, 2026
@github-actions github-actions Bot removed the Stale label Feb 27, 2026
@coderabbitai

coderabbitai Bot commented Mar 14, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d054f214-d345-44b1-a635-997ca05a5623

📥 Commits

Reviewing files that changed from the base of the PR and between d5bde33 and 5db047f.

📒 Files selected for processing (2)
  • modules/game_notifications/game_notifications.otmod
  • modules/game_walk/walk.lua

📝 Walkthrough

Walkthrough

Centralizes module compatibility (manifest-level minClientVersion/requiredFeature/devices), updates loader behavior to sync modules by client version, consolidates icon and wheel asset paths, adds analyzer event teardown, and cleans various UI lifecycle/tooltip behaviors across many modules.

Changes

Module System Framework & Compatibility Gating

Layer / File(s) Summary
Core framework: module versioning and conditional loading
modules/game_things/things.lua, mods/game_bot/default_configs/vBot_4.8/_Loader.lua, README.md
Game loader calls g_modules.updateModulesByClientVersion() after startup; bot loader conditionally appends analyzer for legacy clients (< 1310) when the module exists; roadmap updated.
Module lifecycle simplification: version gates move to manifest
modules/game_blessing/blessing.lua, modules/game_cyclopedia/game_cyclopedia.lua, modules/game_forge/game_forge.lua, modules/game_rewardwall/game_rewardwall.lua, modules/game_inspect/inspect.lua, modules/game_taskboard/tasks.lua, modules/game_tutorial/controller/tutorial_controller.lua, modules/game_questlog/game_questlog.lua
Removes runtime g_game.getClientVersion() checks and conditional module unload scheduling from multiple module startup methods; availability is managed via manifests.
Module manifests: minClientVersion and device gates
modules/*/*.otmod (many files)
Adds minClientVersion, !requiredFeature, and devices: [mobile] entries across numerous module manifests to declare client/version/device requirements and feature gating.

Analyzer & Controller Integration

Layer / File(s) Summary
Analyzer: stopAllEvent and termination cleanup
modules/game_analyser/classes/Controller.lua, modules/game_analyser/analyser.lua, modules/game_analyser/analyser.otmod
Adds ControllerAnalyser:stopAllEvent() to cancel scheduled controller events and invokes it from analyser termination; analyser manifest now includes minClientVersion: 1310.
Analyzer image path updates
modules/game_analyser/classes/ImpactAnalyser.lua, modules/game_analyser/classes/InputAnalyser.lua
Updates analyzer imageDir constants to use consolidated /images/icons/... paths.

Asset Path Consolidation: Bestiary Icons

Layer / File(s) Summary
Bestiary UI icons: consolidated icon paths
modules/game_cyclopedia/tab/bestiary/bestiary.otui
Updates diamond, bonus, core stat, and elemental resistance icon image-source values to /images/icons/monster-icon-*.
Cyclopedia mappings initialization
modules/game_cyclopedia/utils.lua
Initializes Cyclopedia.clientCombat and updates combat-state icon path strings to /images/icons/monster-icon-*-resist.
Skills UI resistance icons
modules/game_skills/skills.otui
Updates resist/defence ImageAbsorb image-source entries to /images/icons/monster-icon-*.

Asset Path Consolidation: Wheel of Destiny Icons

Layer / File(s) Summary
Wheel buttons: button image asset relocation
modules/game_wheel/classes/buttons.lua
Updates WheelButtons entries by changing color/border/focus image bases to /game_wheel/images/....
Wheel class: mod/perk/vocation/socket icons
modules/game_wheel/classes/wheelclass.lua
Updates mod icon, perk backdrop, vocation backdrop, and socket background image sources to /game_wheel/images/...; wheel toggle button is now only added on clients >= 1310.
Gem atelier: vessel socket image relocation
modules/game_wheel/classes/gematelier.lua
Updates vessel socket background images to /game_wheel/images/....

UI and Integration Tweaks

Layer / File(s) Summary
Widget reparenting and lifecycle guards
modules/corelib/ui/uiminiwindowcontainer.lua, modules/game_mainpanel/mainpanel.lua, modules/game_questlog/game_questlog.lua, modules/game_walk/walk.lua
Avoids re-inserting widgets already parented to the container; creates/destroys controlButton1400 per client version; destroys quest tracker button for older clients; joystick listener registration gated to mobile + joystick module.
Module integration and minor UI changes
modules/game_interface/widgets/statsbar.lua, modules/game_healthcircle/statusiconbar.lua, modules/game_outfit/outfit.otmod, modules/game_cyclopedia/game_cyclopedia.lua, modules/game_rewardwall/game_rewardwall.lua, modules/game_forge/game_forge.lua
Guards proficiency top bar call on module presence; disables some healthcircle tooltips; removes outfit website metadata; schedules cyclopedia unload for older clients; removes older-client unload scheduling for rewardwall and forge.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

15.x

Suggested reviewers

  • majestyotbr
  • vllsystems

"🐰 I hopped through manifests, paths, and gears,
moving loaders, icons, and silent tears.
Modules gated, wheel images bright,
events stopped neat, everything right.
A tiny rabbit cheers the code tonight!"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: introducing minClientVersion in .otmod files to conditionally load/unload modules based on client version.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@kokekanon
kokekanon marked this pull request as ready for review May 21, 2026 03:23

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/game_healthcircle/statusiconbar.lua`:
- Line 735: The status icon container tooltip was commented out (the commented
line contains container:setTooltip(condition.tooltip or '')), removing hover
info; restore this by re-enabling the tooltip assignment where each status icon
container is created/updated (look for the container variable and condition data
used for the icon) and call container:setTooltip(condition.tooltip or '') so the
tooltip shows the condition.tooltip when present and falls back to an empty
string otherwise; ensure this is applied in the same function that
builds/updates the status icon container so tooltips are consistently set.
- Line 367: The tooltip for condition rows was accidentally disabled by
commenting out the widget:setTooltip call; restore tooltip behavior by
re-enabling the tooltip assignment so that the UI shows condition.tooltip (or a
safe default) when available. Find the code that builds condition rows (look for
the variable/widget and the commented line
"--widget:setTooltip(condition.tooltip or '')") and uncomment or re-add the
assignment using widget:setTooltip(condition.tooltip or '') and ensure
condition.tooltip is nil-safe (empty string fallback) so hover text is restored
without causing errors.

In `@modules/game_notifications/game_notifications.otmod`:
- Line 5: The module's minClientVersion (minClientVersion in
modules/game_notifications/game_notifications.otmod) is too high (1510) and
should match the actual API gate used in controllers/screenshot.lua and
infobanner.lua; change minClientVersion to the lowest client protocol that
provides the onClientEvent payloads used by infobanner.lua (currently
g_game.getClientVersion() is compared to 1180 in
modules/game_notifications/controllers/screenshot.lua), so update
minClientVersion to 1180 (or to the precise version that introduces the required
onClientEvent fields) so the module loads for clients 1180–1509 which already
support the code paths.

In `@modules/game_walk/walk.lua`:
- Around line 275-277: The mobile-only joystick hookup doesn't check that
modules.game_joystick (and its function addOnJoystickMoveListener) is present,
which can crash if the module failed to load; update the block that calls
modules.game_joystick.addOnJoystickMoveListener inside the g_platform.isMobile()
check to first verify modules.game_joystick and
modules.game_joystick.addOnJoystickMoveListener are non-nil before invoking
them, and only then call
modules.game_joystick.addOnJoystickMoveListener(function(dir) g_game.walk(dir)
end).

In `@README.md`:
- Line 570: The README badge image in the "Search Locker" table row uses empty
alt text which fails MD045; update the markdown for that cell by replacing the
empty alt with descriptive alt text (for example change
"![](https://geps.dev/progress/0)" to something like "![0%
progress](https://geps.dev/progress/0)") so the "Search Locker" row includes
accessible alt text.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5c9b6f82-f653-4410-a3de-946d578ccca1

📥 Commits

Reviewing files that changed from the base of the PR and between 0290ce1 and d5bde33.

⛔ Files ignored due to path filters (253)
  • data/images/icons/monster-icon-agony-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-armor.png is excluded by !**/*.png
  • data/images/icons/monster-icon-bonuspoints.png is excluded by !**/*.png
  • data/images/icons/monster-icon-death-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-diamond-active.png is excluded by !**/*.png
  • data/images/icons/monster-icon-diamond-inactive.png is excluded by !**/*.png
  • data/images/icons/monster-icon-drowning-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-earth-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-energy-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-experience.png is excluded by !**/*.png
  • data/images/icons/monster-icon-fire-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-healing-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-hitpoints.png is excluded by !**/*.png
  • data/images/icons/monster-icon-holy-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-ice-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-lifedrain-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-manadrain-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-melee.png is excluded by !**/*.png
  • data/images/icons/monster-icon-mitigation.png is excluded by !**/*.png
  • data/images/icons/monster-icon-noattack.png is excluded by !**/*.png
  • data/images/icons/monster-icon-physical-resist.png is excluded by !**/*.png
  • data/images/icons/monster-icon-ranged.png is excluded by !**/*.png
  • data/images/icons/monster-icon-speed.png is excluded by !**/*.png
  • data/images/icons/monster-icon-spellcaster.png is excluded by !**/*.png
  • modules/game_wheel/images/apply_button.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_circle_bottom.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_circle_bottom_anim.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_circle_mid.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_circle_mid_anim.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_circle_top.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_circle_top_anim.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_line.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_grades_line_anim.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_modgrades.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front0_BL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front0_BR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front0_TL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front0_TR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front1_BL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front1_BR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front1_TL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front1_TR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front2_BL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front2_BR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front2_TL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front2_TR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front3_BL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front3_BR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front3_TL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_front3_TR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_light_BL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_light_BR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_light_TL.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_light_TR.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketdisabled_0.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketdisabled_1.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketdisabled_2.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketdisabled_3.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketenabled_0.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketenabled_1.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketenabled_2.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_largebonus_socketenabled_3.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_socket_active.png is excluded by !**/*.png
  • modules/game_wheel/images/backdrop_skillwheel_socket_inactive.png is excluded by !**/*.png
  • modules/game_wheel/images/change-button.png is excluded by !**/*.png
  • modules/game_wheel/images/change-skillpoints-button-down.png is excluded by !**/*.png
  • modules/game_wheel/images/change-skillpoints-button-up.png is excluded by !**/*.png
  • modules/game_wheel/images/change_preset_icon.png is excluded by !**/*.png
  • modules/game_wheel/images/delete_button.png is excluded by !**/*.png
  • modules/game_wheel/images/destroy-button.png is excluded by !**/*.png
  • modules/game_wheel/images/enhance-button.png is excluded by !**/*.png
  • modules/game_wheel/images/export_button.png is excluded by !**/*.png
  • modules/game_wheel/images/fragmentIcon.png is excluded by !**/*.png
  • modules/game_wheel/images/fragmentMenu.png is excluded by !**/*.png
  • modules/game_wheel/images/gemMenu.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-augmentation1-active.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-augmentation1-inactive.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-augmentation2-active.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-augmentation2-inactive.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-crit.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-gematelier.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-locked.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-modgrade1.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-modgrade2.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-modgrade3.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-modgrade4.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-skillwheel-presets.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-skillwheel-selection.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-skillwheel-vesselresonance-basic.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-skillwheel-vesselresonance-supreme.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-socketed.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-spelldamage.png is excluded by !**/*.png
  • modules/game_wheel/images/icon-unlocked.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-gematelier-domainaffinity.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-gematelier-gemvariants.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-gematelier-gemvariants64.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-modgrades-potential.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-basicmods.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-largeperks.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-mediumperks.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-smallperks.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-sockets.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-suprememods-1.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-suprememods-2.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-suprememods-3.png is excluded by !**/*.png
  • modules/game_wheel/images/icons-skillwheel-suprememods.png is excluded by !**/*.png
  • modules/game_wheel/images/import_button.png is excluded by !**/*.png
  • modules/game_wheel/images/informationSelection.png is excluded by !**/*.png
  • modules/game_wheel/images/manageSelect.png is excluded by !**/*.png
  • modules/game_wheel/images/marker_largeperk.png is excluded by !**/*.png
  • modules/game_wheel/images/marker_skillwheelsocket.png is excluded by !**/*.png
  • modules/game_wheel/images/menuBg.png is excluded by !**/*.png
  • modules/game_wheel/images/new_button.png is excluded by !**/*.png
  • modules/game_wheel/images/place-vessel-button.png is excluded by !**/*.png
  • modules/game_wheel/images/preset_bg.png is excluded by !**/*.png
  • modules/game_wheel/images/progressBar.png is excluded by !**/*.png
  • modules/game_wheel/images/progressBg.png is excluded by !**/*.png
  • modules/game_wheel/images/remove-vessel-button.png is excluded by !**/*.png
  • modules/game_wheel/images/rename_button.png is excluded by !**/*.png
  • modules/game_wheel/images/reveal-button.png is excluded by !**/*.png
  • modules/game_wheel/images/revelation-bg-perk-circles.png is excluded by !**/*.png
  • modules/game_wheel/images/show-gui-help-grey.png is excluded by !**/*.png
  • modules/game_wheel/images/small_information_button.png is excluded by !**/*.png
  • modules/game_wheel/images/small_manage_button.png is excluded by !**/*.png
  • modules/game_wheel/images/socket-gematelier.png is excluded by !**/*.png
  • modules/game_wheel/images/summary.png is excluded by !**/*.png
  • modules/game_wheel/images/switch-button.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/revelationPerk.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_left/vesselGem.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/revelationPerk.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/bottom_right/vesselGem.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/revelationPerk.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_left/vesselGem.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/revelationPerk.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-border/top_right/vesselGem.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/BottonLeft_9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/perkCircle/revelationBg.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/revelationBg.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot1/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot1/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot1/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot1/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot1/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot2/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot3/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/10.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot4/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/10.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot5/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/10.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot6/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/10.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/11.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/12.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/13.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/14.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/15.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/2.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/3.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/4.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/5.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/6.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/7.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/8.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot7/9.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot8/1.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot8/10.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot8/11.png is excluded by !**/*.png
  • modules/game_wheel/images/wheel-colors/bottom_left/slot8/12.png is excluded by !**/*.png
📒 Files selected for processing (47)
  • README.md
  • mods/game_bot/default_configs/vBot_4.8/_Loader.lua
  • modules/corelib/ui/uiminiwindowcontainer.lua
  • modules/game_analyser/analyser.lua
  • modules/game_analyser/analyser.otmod
  • modules/game_analyser/classes/Controller.lua
  • modules/game_analyser/classes/ImpactAnalyser.lua
  • modules/game_analyser/classes/InputAnalyser.lua
  • modules/game_blessing/blessing.lua
  • modules/game_blessing/blessing.otmod
  • modules/game_cyclopedia/game_cyclopedia.lua
  • modules/game_cyclopedia/game_cyclopedia.otmod
  • modules/game_cyclopedia/tab/bestiary/bestiary.otui
  • modules/game_cyclopedia/utils.lua
  • modules/game_forge/game_forge.lua
  • modules/game_forge/game_forge.otmod
  • modules/game_healthcircle/statusiconbar.lua
  • modules/game_highscore/game_highscore.otmod
  • modules/game_imbuementtracker/imbuementtracker.otmod
  • modules/game_imbuing/imbuing.otmod
  • modules/game_inspect/inspect.lua
  • modules/game_interface/widgets/statsbar.lua
  • modules/game_joystick/joystick.otmod
  • modules/game_lootsplitter/lootsplitter.otmod
  • modules/game_mainpanel/mainpanel.lua
  • modules/game_notifications/game_notifications.otmod
  • modules/game_outfit/outfit.otmod
  • modules/game_prey/prey.otmod
  • modules/game_proficiency/proficiency.otmod
  • modules/game_questlog/game_questlog.lua
  • modules/game_quickloot/quickloot.otmod
  • modules/game_rewardwall/game_rewardwall.lua
  • modules/game_rewardwall/game_rewardwall.otmod
  • modules/game_shortcuts/shortcuts.otmod
  • modules/game_skills/skills.otui
  • modules/game_spelllist/spelllist.otmod
  • modules/game_stash/game_stash.otmod
  • modules/game_store/game_store.otmod
  • modules/game_taskboard/tasks.lua
  • modules/game_taskboard/tasks.otmod
  • modules/game_things/things.lua
  • modules/game_tutorial/controller/tutorial_controller.lua
  • modules/game_unjustifiedpoints/unjustifiedpoints.otmod
  • modules/game_walk/walk.lua
  • modules/game_wheel/classes/buttons.lua
  • modules/game_wheel/classes/gematelier.lua
  • modules/game_wheel/classes/wheelclass.lua
💤 Files with no reviewable changes (7)
  • modules/game_inspect/inspect.lua
  • modules/game_rewardwall/game_rewardwall.lua
  • modules/game_cyclopedia/game_cyclopedia.lua
  • modules/game_forge/game_forge.lua
  • modules/game_blessing/blessing.lua
  • modules/game_taskboard/tasks.lua
  • modules/game_outfit/outfit.otmod

Comment thread modules/game_healthcircle/statusiconbar.lua
Comment thread modules/game_healthcircle/statusiconbar.lua
Comment thread modules/game_notifications/game_notifications.otmod Outdated
Comment thread modules/game_walk/walk.lua Outdated
Comment thread README.md
@kokekanon kokekanon closed this by deleting the head repository May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant