Skip to content

feat: 15.13 npc module protocol and update NPC Lua scripts#3982

Open
dudantas wants to merge 3 commits into
mainfrom
dudantas/import-npc-1513-module
Open

feat: 15.13 npc module protocol and update NPC Lua scripts#3982
dudantas wants to merge 3 commits into
mainfrom
dudantas/import-npc-1513-module

Conversation

@dudantas

@dudantas dudantas commented May 26, 2026

Copy link
Copy Markdown
Member

This pull request standardizes NPC configuration in several Lua files by adding explicit profession and speechBubble properties to each NPC's config. These changes help clarify each NPC's role (such as "normal" or "trader") and ensure consistent behavior for speech bubbles in the game.

NPC configuration standardization:

Client:
dudantas/tibia-client#18

Copilot AI review requested due to automatic review settings May 26, 2026 18:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@coderabbitai

coderabbitai Bot commented May 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 300 files, which is 150 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b1bcf145-65d1-4858-92ca-c771a84463a0

📥 Commits

Reviewing files that changed from the base of the PR and between dd1a95c and 94a79d8.

📒 Files selected for processing (300)
  • .github/workflows/reusable-checks.yml
  • data-otservbr-global/npc/....lua
  • data-otservbr-global/npc/a_bearded_woman.lua
  • data-otservbr-global/npc/a_beautiful_girl.lua
  • data-otservbr-global/npc/a_beggar.lua
  • data-otservbr-global/npc/a_behemoth.lua
  • data-otservbr-global/npc/a_confused_frog.lua
  • data-otservbr-global/npc/a_dark_priestess.lua
  • data-otservbr-global/npc/a_dead_bureaucrat1.lua
  • data-otservbr-global/npc/a_dead_bureaucrat2.lua
  • data-otservbr-global/npc/a_dead_bureaucrat3.lua
  • data-otservbr-global/npc/a_dead_bureaucrat4.lua
  • data-otservbr-global/npc/a_dragon_lord.lua
  • data-otservbr-global/npc/a_dragon_mother.lua
  • data-otservbr-global/npc/a_drillworm.lua
  • data-otservbr-global/npc/a_dwarven_ghost.lua
  • data-otservbr-global/npc/a_fading_memory.lua
  • data-otservbr-global/npc/a_fluffy_squirrel.lua
  • data-otservbr-global/npc/a_frog.lua
  • data-otservbr-global/npc/a_ghostly_guardian.lua
  • data-otservbr-global/npc/a_ghostly_knight.lua
  • data-otservbr-global/npc/a_ghostly_sage.lua
  • data-otservbr-global/npc/a_ghostly_woman.lua
  • data-otservbr-global/npc/a_ghostly_woman_ghostland.lua
  • data-otservbr-global/npc/a_goblin_exile.lua
  • data-otservbr-global/npc/a_grumpy_cyclops.lua
  • data-otservbr-global/npc/a_lost_basher.lua
  • data-otservbr-global/npc/a_lost_husher.lua
  • data-otservbr-global/npc/a_lost_soul.lua
  • data-otservbr-global/npc/a_lost_thrower.lua
  • data-otservbr-global/npc/a_majestic_warwolf.lua
  • data-otservbr-global/npc/a_nightmare_scion.lua
  • data-otservbr-global/npc/a_prisoner.lua
  • data-otservbr-global/npc/a_restless_soul.lua
  • data-otservbr-global/npc/a_sleeping_dragon.lua
  • data-otservbr-global/npc/a_starving_dog.lua
  • data-otservbr-global/npc/a_strange_chalice.lua
  • data-otservbr-global/npc/a_strange_fellow.lua
  • data-otservbr-global/npc/a_swan.lua
  • data-otservbr-global/npc/a_sweaty_cyclops.lua
  • data-otservbr-global/npc/a_tainted_soul.lua
  • data-otservbr-global/npc/a_tortured_soul.lua
  • data-otservbr-global/npc/a_vulcongra.lua
  • data-otservbr-global/npc/a_weakened_forest_fury.lua
  • data-otservbr-global/npc/a_wrinkled_bonelord.lua
  • data-otservbr-global/npc/a_wyrm.lua
  • data-otservbr-global/npc/abran_ironeye.lua
  • data-otservbr-global/npc/admiral_wyrmslicer.lua
  • data-otservbr-global/npc/adrenius.lua
  • data-otservbr-global/npc/ahmet.lua
  • data-otservbr-global/npc/ajax.lua
  • data-otservbr-global/npc/al_dee.lua
  • data-otservbr-global/npc/alaistar.lua
  • data-otservbr-global/npc/albert.lua
  • data-otservbr-global/npc/albinius.lua
  • data-otservbr-global/npc/aldo.lua
  • data-otservbr-global/npc/alesar.lua
  • data-otservbr-global/npc/alexander.lua
  • data-otservbr-global/npc/alia.lua
  • data-otservbr-global/npc/alissa.lua
  • data-otservbr-global/npc/alkestios.lua
  • data-otservbr-global/npc/allen.lua
  • data-otservbr-global/npc/altar.lua
  • data-otservbr-global/npc/alternative_rock.lua
  • data-otservbr-global/npc/alwin.lua
  • data-otservbr-global/npc/alyxo.lua
  • data-otservbr-global/npc/amanda.lua
  • data-otservbr-global/npc/amarie.lua
  • data-otservbr-global/npc/ambassador_manop.lua
  • data-otservbr-global/npc/ambassador_of_rathleton.lua
  • data-otservbr-global/npc/amber.lua
  • data-otservbr-global/npc/amra.lua
  • data-otservbr-global/npc/an_ancient_priest.lua
  • data-otservbr-global/npc/an_apparition.lua
  • data-otservbr-global/npc/an_idol.lua
  • data-otservbr-global/npc/an_imprisoned_goblin.lua
  • data-otservbr-global/npc/an_old_dragon_lord.lua
  • data-otservbr-global/npc/an_orc_guard.lua
  • data-otservbr-global/npc/anderson.lua
  • data-otservbr-global/npc/andrew_lyze.lua
  • data-otservbr-global/npc/anerui.lua
  • data-otservbr-global/npc/aneus.lua
  • data-otservbr-global/npc/angelina.lua
  • data-otservbr-global/npc/angelo.lua
  • data-otservbr-global/npc/angus.lua
  • data-otservbr-global/npc/appaloosa.lua
  • data-otservbr-global/npc/archery.lua
  • data-otservbr-global/npc/archery_rook.lua
  • data-otservbr-global/npc/ariella.lua
  • data-otservbr-global/npc/arito.lua
  • data-otservbr-global/npc/arkarra.lua
  • data-otservbr-global/npc/arkhothep.lua
  • data-otservbr-global/npc/arkulius.lua
  • data-otservbr-global/npc/armenius.lua
  • data-otservbr-global/npc/arnold.lua
  • data-otservbr-global/npc/aruda.lua
  • data-otservbr-global/npc/ashari.lua
  • data-otservbr-global/npc/ashtamor.lua
  • data-otservbr-global/npc/asima.lua
  • data-otservbr-global/npc/asnarus.lua
  • data-otservbr-global/npc/asphota.lua
  • data-otservbr-global/npc/asrak.lua
  • data-otservbr-global/npc/asralius.lua
  • data-otservbr-global/npc/atrad.lua
  • data-otservbr-global/npc/atur.lua
  • data-otservbr-global/npc/aurita.lua
  • data-otservbr-global/npc/auron.lua
  • data-otservbr-global/npc/avar_tar.lua
  • data-otservbr-global/npc/awarness_of_the_emperor.lua
  • data-otservbr-global/npc/azalea.lua
  • data-otservbr-global/npc/azil.lua
  • data-otservbr-global/npc/baa_leal.lua
  • data-otservbr-global/npc/baltim.lua
  • data-otservbr-global/npc/bambi_bonecrusher.lua
  • data-otservbr-global/npc/barazbaz.lua
  • data-otservbr-global/npc/barbara.lua
  • data-otservbr-global/npc/barnabas_dee.lua
  • data-otservbr-global/npc/barney.lua
  • data-otservbr-global/npc/barry.lua
  • data-otservbr-global/npc/bashira.lua
  • data-otservbr-global/npc/basilisk.lua
  • data-otservbr-global/npc/battlemart.lua
  • data-otservbr-global/npc/baxter.lua
  • data-otservbr-global/npc/beatrice.lua
  • data-otservbr-global/npc/benevola.lua
  • data-otservbr-global/npc/benjamin.lua
  • data-otservbr-global/npc/berenice.lua
  • data-otservbr-global/npc/bertha.lua
  • data-otservbr-global/npc/bertram.lua
  • data-otservbr-global/npc/bezil.lua
  • data-otservbr-global/npc/bigfoot_soldier.lua
  • data-otservbr-global/npc/bill_the_worker.lua
  • data-otservbr-global/npc/billy.lua
  • data-otservbr-global/npc/black_bert.lua
  • data-otservbr-global/npc/blind_orc.lua
  • data-otservbr-global/npc/bloodshade_rotten.lua
  • data-otservbr-global/npc/bloodshade_sacrifice.lua
  • data-otservbr-global/npc/blossom_bonecrusher.lua
  • data-otservbr-global/npc/blue_valley/bodh_the_kan.lua
  • data-otservbr-global/npc/blue_valley/chesa_the_guardian.lua
  • data-otservbr-global/npc/blue_valley/dahr-enpa_rahng.lua
  • data-otservbr-global/npc/blue_valley/dajcho_the_monk.lua
  • data-otservbr-global/npc/blue_valley/enpa-deia_pema.lua
  • data-otservbr-global/npc/blue_valley/enpa_rudra.lua
  • data-otservbr-global/npc/blue_valley/saih_the_guardian.lua
  • data-otservbr-global/npc/bo_ques.lua
  • data-otservbr-global/npc/bob_the_worker.lua
  • data-otservbr-global/npc/bolfona.lua
  • data-otservbr-global/npc/bonifacius.lua
  • data-otservbr-global/npc/boozer.lua
  • data-otservbr-global/npc/borkas.lua
  • data-otservbr-global/npc/boveas.lua
  • data-otservbr-global/npc/bozarn.lua
  • data-otservbr-global/npc/bozo.lua
  • data-otservbr-global/npc/braden.lua
  • data-otservbr-global/npc/bradford.lua
  • data-otservbr-global/npc/brasith.lua
  • data-otservbr-global/npc/brengus.lua
  • data-otservbr-global/npc/brewster.lua
  • data-otservbr-global/npc/briasol.lua
  • data-otservbr-global/npc/bright_percht_sleigh.lua
  • data-otservbr-global/npc/brodrosch.lua
  • data-otservbr-global/npc/broken_servant_sentry.lua
  • data-otservbr-global/npc/brom.lua
  • data-otservbr-global/npc/bron.lua
  • data-otservbr-global/npc/bruce.lua
  • data-otservbr-global/npc/bruno.lua
  • data-otservbr-global/npc/brutus.lua
  • data-otservbr-global/npc/buddel.lua
  • data-otservbr-global/npc/buddel_helheim.lua
  • data-otservbr-global/npc/buddel_okolnir.lua
  • data-otservbr-global/npc/buddel_raider_camp.lua
  • data-otservbr-global/npc/buddel_tyrsung.lua
  • data-otservbr-global/npc/budrik.lua
  • data-otservbr-global/npc/bunny_bonecrusher.lua
  • data-otservbr-global/npc/busty_bonecrusher.lua
  • data-otservbr-global/npc/cael.lua
  • data-otservbr-global/npc/cameron.lua
  • data-otservbr-global/npc/canary.lua
  • data-otservbr-global/npc/captain_bluebear.lua
  • data-otservbr-global/npc/captain_breezelda.lua
  • data-otservbr-global/npc/captain_chelop.lua
  • data-otservbr-global/npc/captain_cookie.lua
  • data-otservbr-global/npc/captain_dreadnought.lua
  • data-otservbr-global/npc/captain_fearless.lua
  • data-otservbr-global/npc/captain_greyhound.lua
  • data-otservbr-global/npc/captain_gulliver.lua
  • data-otservbr-global/npc/captain_haba.lua
  • data-otservbr-global/npc/captain_haba_open_sea.lua
  • data-otservbr-global/npc/captain_harava.lua
  • data-otservbr-global/npc/captain_jack.lua
  • data-otservbr-global/npc/captain_jack_rat.lua
  • data-otservbr-global/npc/captain_kurt.lua
  • data-otservbr-global/npc/captain_max.lua
  • data-otservbr-global/npc/captain_max_calassa.lua
  • data-otservbr-global/npc/captain_pelagia.lua
  • data-otservbr-global/npc/captain_seagull.lua
  • data-otservbr-global/npc/captain_seahorse.lua
  • data-otservbr-global/npc/captain_sinbeard.lua
  • data-otservbr-global/npc/captain_tiberius.lua
  • data-otservbr-global/npc/captain_waverider.lua
  • data-otservbr-global/npc/captain_waverider_island.lua
  • data-otservbr-global/npc/caramellia.lua
  • data-otservbr-global/npc/carina.lua
  • data-otservbr-global/npc/carlos.lua
  • data-otservbr-global/npc/carlson.lua
  • data-otservbr-global/npc/cassino.lua
  • data-otservbr-global/npc/cedrik.lua
  • data-otservbr-global/npc/ceiron.lua
  • data-otservbr-global/npc/cerdras.lua
  • data-otservbr-global/npc/cerebrir.lua
  • data-otservbr-global/npc/chantalle.lua
  • data-otservbr-global/npc/charles.lua
  • data-otservbr-global/npc/charlotta.lua
  • data-otservbr-global/npc/charos.lua
  • data-otservbr-global/npc/chartan.lua
  • data-otservbr-global/npc/chatterbone.lua
  • data-otservbr-global/npc/chavis.lua
  • data-otservbr-global/npc/chemar.lua
  • data-otservbr-global/npc/chephan.lua
  • data-otservbr-global/npc/chester_kahs.lua
  • data-otservbr-global/npc/chief_grarkharok.lua
  • data-otservbr-global/npc/chondur.lua
  • data-otservbr-global/npc/chrak.lua
  • data-otservbr-global/npc/christine.lua
  • data-otservbr-global/npc/christoph.lua
  • data-otservbr-global/npc/chrystal.lua
  • data-otservbr-global/npc/chuck_the_worker.lua
  • data-otservbr-global/npc/chuckles.lua
  • data-otservbr-global/npc/cillia.lua
  • data-otservbr-global/npc/cipfried.lua
  • data-otservbr-global/npc/clark.lua
  • data-otservbr-global/npc/cledwyn.lua
  • data-otservbr-global/npc/clyde.lua
  • data-otservbr-global/npc/cobra.lua
  • data-otservbr-global/npc/cold_percht_sleigh.lua
  • data-otservbr-global/npc/coltrayne.lua
  • data-otservbr-global/npc/commander_stone.lua
  • data-otservbr-global/npc/cornelia.lua
  • data-otservbr-global/npc/cornell.lua
  • data-otservbr-global/npc/corym_butler.lua
  • data-otservbr-global/npc/corym_footman.lua
  • data-otservbr-global/npc/corym_ratter.lua
  • data-otservbr-global/npc/corym_servant.lua
  • data-otservbr-global/npc/corym_slave.lua
  • data-otservbr-global/npc/corym_worker_01.lua
  • data-otservbr-global/npc/corym_worker_02.lua
  • data-otservbr-global/npc/corym_worker_03.lua
  • data-otservbr-global/npc/corym_worker_04.lua
  • data-otservbr-global/npc/corym_worker_05.lua
  • data-otservbr-global/npc/costello.lua
  • data-otservbr-global/npc/cranky_lizard_crone.lua
  • data-otservbr-global/npc/crowned_tree.lua
  • data-otservbr-global/npc/cruleo.lua
  • data-otservbr-global/npc/curos.lua
  • data-otservbr-global/npc/dabui.lua
  • data-otservbr-global/npc/dagomir.lua
  • data-otservbr-global/npc/dalbrect.lua
  • data-otservbr-global/npc/dallheim.lua
  • data-otservbr-global/npc/dancing_fairy.lua
  • data-otservbr-global/npc/dane.lua
  • data-otservbr-global/npc/daniel_steelsoul.lua
  • data-otservbr-global/npc/dankwart.lua
  • data-otservbr-global/npc/danlon.lua
  • data-otservbr-global/npc/dario.lua
  • data-otservbr-global/npc/dark_percht_sleigh.lua
  • data-otservbr-global/npc/dedoras.lua
  • data-otservbr-global/npc/demon_skeleton.lua
  • data-otservbr-global/npc/demonguard.lua
  • data-otservbr-global/npc/denominator.lua
  • data-otservbr-global/npc/dermot.lua
  • data-otservbr-global/npc/digger.lua
  • data-otservbr-global/npc/dixi.lua
  • data-otservbr-global/npc/djema.lua
  • data-otservbr-global/npc/doctor_gnomedix.lua
  • data-otservbr-global/npc/donald_mcronald.lua
  • data-otservbr-global/npc/dorbin.lua
  • data-otservbr-global/npc/dorian.lua
  • data-otservbr-global/npc/doubleday.lua
  • data-otservbr-global/npc/doug.lua
  • data-otservbr-global/npc/dove.lua
  • data-otservbr-global/npc/dr_merlay.lua
  • data-otservbr-global/npc/dreadeye.lua
  • data-otservbr-global/npc/dream_butterfly.lua
  • data-otservbr-global/npc/dregor.lua
  • data-otservbr-global/npc/drog.lua
  • data-otservbr-global/npc/dronk.lua
  • data-otservbr-global/npc/druid_yandur.lua
  • data-otservbr-global/npc/drystan_wildweed.lua
  • data-otservbr-global/npc/dukosch.lua
  • data-otservbr-global/npc/duncan.lua
  • data-otservbr-global/npc/duria.lua
  • data-otservbr-global/npc/dustrunner.lua
  • data-otservbr-global/npc/eathar.lua
  • data-otservbr-global/npc/ebenizer.lua
  • data-otservbr-global/npc/eclesius.lua
  • data-otservbr-global/npc/edala.lua
  • data-otservbr-global/npc/eddy.lua
  • data-otservbr-global/npc/edgar-ellen.lua
  • data-otservbr-global/npc/edmund.lua

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dudantas/import-npc-1513-module

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.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request configures the profession and speechBubble properties for a large number of NPCs, and updates npcHandler:resetNpc calls to include the npc argument. The review feedback correctly identifies several NPCs that have been assigned incorrect professions and speech bubbles (such as setting animals, interactive objects, and non-banker merchants to "banker", "sailor", or "trader" instead of "normal" or "trader"). These configurations should be corrected to match the actual roles of the NPCs in the game.

Comment thread data-otservbr-global/npc/a_sweaty_cyclops.lua
Comment thread data-otservbr-global/npc/ahmet.lua
Comment thread data-otservbr-global/npc/al_dee.lua
Comment thread data-otservbr-global/npc/aldo.lua
Comment thread data-otservbr-global/npc/altar.lua
Comment thread data-otservbr-global/npc/dallheim.lua
Comment thread data-otservbr-global/npc/dixi.lua
Comment thread data-otservbr-global/npc/chuckles.lua
Comment thread data-otservbr-global/npc/canary.lua
Comment thread data-otservbr-global/npc/andrew_lyze.lua
Apply bulk updates to NPC scripts under data-otservbr-global/npc. Numerous .lua files were modified to synchronize NPC behavior and data (bug fixes, behavior tweaks, dialogue/localization improvements, and formatting/consistency changes). This is a broad maintenance commit touching many NPC definitions.
@dudantas dudantas force-pushed the dudantas/import-npc-1513-module branch from 3e66fc6 to 5496d41 Compare May 26, 2026 21:19
@sonarqubecloud

Copy link
Copy Markdown

@zoelner

zoelner commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

@dudantas How to test this PR?

@dudantas

dudantas commented Jun 1, 2026

Copy link
Copy Markdown
Member Author

@dudantas How to test this PR?

This is the new NPC window; it's literally just for testing trading NPCs, etc.

@zoelner

zoelner commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

@dudantas Can you make the client available? I couldn't find it to test

@dudantas

dudantas commented Jun 3, 2026

Copy link
Copy Markdown
Member Author

@dudantas Can you make the client available? I couldn't find it to test

Added download link to the PR description.

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.

4 participants