Inspired by the Murloc Minder addon developed by Kagrok
An AzerothCore module and companion World of Warcraft addon for the 3.3.5a client that turns summoned companion pets into something worth looking after: feed, play with, rest, and clean your companion to keep it out of neglect, send it out scavenging for bonus loot, and complete daily challenges to earn treats, or if the server has mod-tcg-vendors enabled, server-tracked Promo Points redeemable in an optional in-game shop for TCG and Promo items that are otherwise unobtainable in-game.
| Component | Path | What it is |
|---|---|---|
| mod-companion-caddy | mod-companion-caddy/Root of the Repository |
AzerothCore C++ module — server-authoritative point tracking, scavenge resolution, and promo shop fulfillment |
| CompanionCaddy | mod-companion-caddy/CompanionCaddy-Addon.zip/CompanionCaddy |
Client addon — companion care UI, challenge tracking, minimap button, and the promo shop panel |
The addon is presentation and challenge-tracking only. It can be used on any 3.3.5a private server, and it will failback to whatever it is capable of interacting with. At a minimum, the addon will let you earn treats to be able to buy in-addon items to care for your companions more effectively.
Note: Developed against the mod-playerbots fork of AzerothCore. Should be compatible with standard AzerothCore mainline. See Compatibility for details.
- Four tracked Need bars — Hunger, Joy, Energy, Cleanliness — that decay over time and are restored by feeding, playing, resting, and cleaning your active companion.
- A four-tier care rating (Struggling → Okay → Good → Thriving) computed from those Needs, which feeds directly into scavenge loot odds (see below).
- Neglect consequences — if every Need bar bottoms out, the companion needs to fully re-bond with you rather than simply picking back up where it left off.
- A sustained-care streak system that rewards keeping a companion in the Thriving tier over time, decaying gradually (not resetting outright) on a single drop out of it.
- Occasional spontaneous care events while a companion is Good/Thriving.
- Send your companion out on a timed scavenge in one of three tiers — green (30 min), blue (1 hr), purple (2 hr) — for a client-side Treats reward plus a server-rolled chance at bonus loot from a per-tier, per-server item pool.
- Bonus loot odds are multiplied by the companion's care tier at the moment it was sent out (Struggling 0.5× up to Thriving 1.4× by default), so a well-kept companion scavenges better.
- A "scavenge squad" variant challenge type for coordinated/group scavenging.
- Around 50 tracked challenge types spanning companion care, world activity, gathering and professions, class abilities, and social actions — see Challenge Types for the full list.
- Per-challenge-type cooldown (10 minutes by default) prevents spamming the same action for repeat rewards.
- A configurable daily point cap that can run capped, uncapped, or fully disabled — see Configuration.
- An optional in-game shop, populated from a server-side catalog, that mails redemption codes to the player rather than handling raw codes client-side.
- Automatically enabled/disabled based on whether mod-tcg-vendors is
installed (detected via the
account_tcg_codestable) — if it's absent, or ifCompanionCaddy.DailyCapis set to disable Promo Points outright, the shop tab loads itself into a greyed out state, and stops reporting promo points entirely instead of erroring.
- A tabbed main window: Habitat (care actions and Need bars), Store (Treats economy), Customization, Info, and Promo (the shop, when active).
- A draggable minimap button, togglable independently via
/cc minimap. - Slash commands for everything below — no dependency on a separate config addon.
- AzerothCore (3.3.5a branch)
- A
charactersdatabase Companion Caddy can create its own tables in (done automatically on first boot) - Optional: mod-tcg-vendors — if its
account_tcg_codestable is present, the promo shop is enabled automatically; otherwise Companion Caddy still tracks care and challenges with the shop items simply hidden
- Clone this repo's
mod-companion-caddy/folder into your AzerothCoremodules/directory. - Re-run CMake and rebuild
worldserver. - Copy
mod-companion-caddy/conf/mod-companion-caddy.conf.distto your server'sconfigs/(orconfigs/modules/) directory asmod-companion-caddy.conf, and adjust values as needed. - Start
worldserver— the module creates its owncharactersDB tables on first launch.
- Copy the
CompanionCaddy-Addon.zipfile into your WoW 3.3.5a client'sInterface/AddOns/directory and extract theCompanionCaddyfolder into the same Interface/AddOns directory. - Enable Companion Caddy at the character select AddOns list.
| Command | Effect |
|---|---|
/companioncaddy, /caddy, /cc |
Open the main panel |
/cc hide / /cc close |
Close the main panel |
/cc toggle |
Toggle the main panel |
/cc config / /cc options |
Open settings |
/cc minimap |
Toggle the minimap button |
/cc tutorial |
Show the in-addon tutorial |
/cc debug |
Print current companion state and Promo Point balance to chat |
Set in mod-companion-caddy.conf:
| Option | Default | Notes |
|---|---|---|
CompanionCaddy.DailyCap |
200 |
Max Promo Points earnable per calendar day. > 0 = normal cap · 0 = unlimited earning, feature stays fully on · -1 = Promo Points disabled entirely — earning, the daily-cap log message, and the shop all turn off, and the addon stops reporting challenges rather than spamming errors. Useful on a server where a TCG mode of Free makes Promo Points pointless. |
CompanionCaddy.ChallengeCooldown |
600 |
Seconds between repeat point awards for the same challenge type. Tracked in-memory; resets on relog. |
CompanionCaddy.ScavengeLootEnable |
1 |
Master switch for bonus scavenge loot. Separate from the Treats reward, which is client-side and always happens. |
CompanionCaddy.ScavengeLootChanceGreen / *Blue / *Purple |
20 / 12 / 6 |
Percent chance (0–100) of bonus loot per scavenge tier. |
CompanionCaddy.ScavengeLootPoolGreen / *Blue / *Purple |
(empty) | Comma-separated item_template IDs each tier can drop. Left blank by default — populate with IDs that exist, and make sense for the quality tier, on your own server's DB. Unparseable entries are logged and skipped. |
CompanionCaddy.ScavengeCareMultStruggling / *Okay / *Good / *Thriving |
0.5 / 0.8 / 1.0 / 1.4 |
Multiplier on ScavengeLootChance* based on the companion's care tier at send-off time. Final chance is clamped 0–100. |
See the comments in mod-companion-caddy.conf.dist for the authoritative, up-to-date list.
Full list of tracked challenges and their point value
| Category | Challenge types |
|---|---|
| Companion care | feed, play, rest, clean, soothe, warm (5 pts each) · scavenge (15) · scavenge_squad (30) · summon_companion (10) · learn_companion (15) |
| World & travel | zone_activity (8) · explore_zone (10) · visit_major_city (10) · visit_inn (8) · use_hearthstone (12) · use_flight_path (8) · use_mount (8) · swim_short (10) · swim_long (20) · group_up (10) |
| Quests & combat | quest_turnin (15) · dungeon_complete (30) · leave_combat (8) · return_from_death (10) · honorable_kill (15) · duel_request (10) · earn_achievement (20) · level_up (50) |
| Gathering & professions | craft_anything (12) · cook_food (12) · fish_zone (15) · gather_herb (15) · gather_ore (15) · gather_skin (12) |
| Vendors & economy | visit_vendor (10) · visit_bank (10) · visit_trainer (10) · visit_auction_house (8) · check_mail (8) · trade_player (8) · loot_gold (6) · loot_rare_item (18) |
| Consumables & utility | use_bandage (10) · use_potion (8) · drink_any (5) · create_fire (8) · roll_dice (6) |
| Class abilities | dk_ability (8) · druid_shapeshift (10) · hunter_feign_death (8) · mage_conjure (8) · paladin_blessing (8) · priest_heal (10) · rogue_stealth (8) · shaman_totem (8) · warlock_summon_pet (8) · warrior_charge (8) |
| Social | emote (5) · emote_dance, emote_salute, emote_wave, emote_laugh, emote_bow, emote_roar, emote_cheer, emote_thank, emote_cry, emote_yawn, emote_clap (6–8) · emote_sleep (8) · guild_chat (6) |
| Reputation | gain_reputation (12) |
Awards live in CHALLENGE_AWARDS in src/mod_companion_caddy.cpp — the table above is a
categorized view of that source for readability.
Client and server exchange pipe-delimited messages over the CCADDY addon prefix. Key
message shapes:
| Message | Direction | Meaning |
|---|---|---|
CHALLENGE|<type> |
Addon → Server | Report a completed challenge for validation and award |
BALANCE|<bal>|<left>|<tcgReady>|<promoEnabled> |
Server → Addon | Current point balance, points left today (-1 = unlimited), whether TCG delivery is available, and whether Promo Points are enabled at all |
PURCHASE|<rewardGroup> |
Addon → Server | Request a shop redemption; server validates balance and mails a code |
ERR|<code> |
Server → Addon | Error/state code (e.g. daily_cap) — only sent for a genuine cap hit, never when Promo Points are simply disabled |
The server is the source of truth for balances, catalog contents, and scavenge timers; the addon renders what it's told and reports challenge completions and scavenge care tier for the server to validate and roll against.
| Core | Status |
|---|---|
| mod-playerbots fork | ✅ Developed and tested here |
| AzerothCore mainline | ✅ Should be compatible |
| File | Description |
|---|---|
mod-companion-caddy/src/mod_companion_caddy.cpp |
All server-side C++ logic — point tracking, scavenge resolution, promo shop fulfillment |
mod-companion-caddy/conf/mod-companion-caddy.conf.dist |
Configuration template — copy and remove .dist to activate |
mod-companion-caddy/data/sql/characters/base/create_tables.sql |
Creates Companion Caddy's characters DB tables |
mod-companion-caddy/CompanionCaddy-Addon.zip/CompanionCaddy/CompanionCaddy.toc |
Addon manifest |
mod-companion-caddy/CompanionCaddy-Addon.zip/CompanionCaddy/Core.lua |
Care system, pet state, challenge tracking, minimap, slash commands, server comms |
mod-companion-caddy/CompanionCaddy-Addon.zip/CompanionCaddy/UI.lua |
Main window, tabs, and promo shop panel |
- AzerothCore — the core emulator and module framework.
- The AzerothCore community for module conventions and reference implementations.
This module and addon are released under the MIT License.
AzerothCore: repository • website • Discord





