Commit Graph
100 Commits
Author SHA1 Message Date
luis 33f02ce4df bpet fix 2026-05-16 05:24:11 -03:00
luis 0117e57350 fix pve pet 2026-05-16 05:11:51 -03:00
luis 8df22c8c45 typo 2026-05-16 04:50:54 -03:00
luis 18f477481d exterior housing door clicks are handled by spell 1271876
missing/in-memory-created door GO templates previously had no Data10/goober.spell
that caused the client cast to be rejected or the door not to activate
now the generated door GO templates include the correct housing door spell
2026-05-16 04:46:24 -03:00
luis cc350894ec ++ 2026-05-16 04:37:16 -03:00
luis a4f00f295c 67602 2026-05-16 03:55:55 -03:00
luis 818ce05548 db2 2026-05-16 03:11:23 -03:00
luis 00bdfc4c1a + db2 2026-05-16 03:03:21 -03:00
luis 8ee459aa5f db2 2026-05-16 02:53:32 -03:00
luis 182d66b13c Allow transmogrification across armor subclasses (cloth/leather/mail/
plate). Remove armor subclass restriction in CanTransmogrifyItemWithItem
while preserving slot compatibility and weapon category rules. Replace
CanUseItem check in transmog handler with faction/race-only gating.
Quest package items now learn appearances for all armor types.
2026-05-16 02:21:12 -03:00
luis 75022ddc19 wip 2026-05-16 02:03:50 -03:00
luis a313dfe24a Phase 3: Restrict character bank "Deposit All" to reagents only 2026-05-16 00:58:10 -03:00
luis 7a70eda6dd Phase 3: Implement bank auto-deposit with tab-based item routing
Replace the narrow reagent-only / warbound-only auto-deposit handlers
with the modern "Deposit All" behaviour the warband bank UI expects:

  - Each tab's BagSlotFlags::Priority<Equipment|Consumables|TradeGoods|
    Junk|QuestItems|Reagents> are persisted in {character,account}_bank_
    tab_settings.depositFlags. The handler now classifies every eligible
    inventory item (Player::GetItemAutoDepositCategory) and routes it
    to the first tab whose flags match (Player::PickAutoDepositTab),
    falling back to the first tab without any priority filter, then to
    any tab without DisableAutoSort ("Cleanup: Ignore this tab").
  - Player::GetItemsForBankAutoDeposit collects eligible inventory
    items per bank type, applying the warband bank's
    "Include tradeable reagents" toggle (CVar bankAutoDepositReagents)
    when bank == Account.

CMSG_AUTO_DEPOSIT_ACCOUNT_BANK actually carries that toggle on the
wire (verified against build 12.0.5.67186 client serializer): 1 bit
IncludeReagents, then the banker GUID. The previous Read() consumed
the GUID byte-aligned and silently mis-parsed when the bit was set.
Add the IncludeReagents field and read it first.
2026-05-16 00:32:41 -03:00
luis f97c889d1b Phase 3: Wire account bank into auto-stack and swap paths 2026-05-16 00:16:50 -03:00
luis c110915e38 ecognise account bank tab bags as bag containers 2026-05-16 00:12:32 -03:00
luis d90ae50756 Grant per-Bnet account inventory lock so warband bank UI opens 2026-05-16 00:09:26 -03:00
luis 8c65662dec Prevent gold loss at money cap on account bank deposit/withdraw 2026-05-15 23:49:57 -03:00
luis 5dfc231c60 Phase 3: Allow PlayerInteractionType::AccountBanker activation 2026-05-15 23:49:08 -03:00
luis 75cec3552d Implement account bank money deposit/withdraw + coinage persistence 2026-05-15 23:46:46 -03:00
luis 6d32e75543 account bank 2026-05-15 23:31:13 -03:00
luis c5e496fc22 Currency: Implement warband currency transfer handlers 2026-05-15 22:26:46 -03:00
luis 0dbe5390fe Implement currency system 2026-05-15 22:26:04 -03:00
luis ab587294c6 spell fixes i push sql later 2026-05-15 22:01:38 -03:00
luis 6a58adb59d AnimalCompanion 2026-05-15 21:45:12 -03:00
luis c0e73dff06 Animal companion System part 1 2026-05-15 14:09:57 -03:00
luis 5ca4ad30cd Core/Spells: Sync enum name with 3.3.5 branch 2026-05-13 21:41:15 -03:00
luis 8651126b3b +++ 2026-05-13 21:10:12 -03:00
luis d4bd2066eb improve delete 2026-05-13 20:53:17 -03:00
luis 3f27b36a10 try fix bot acc 2026-05-13 20:46:24 -03:00
luis b8385521e8 Fix mem leaks on playerbots 2026-05-13 08:46:03 -03:00
luis 7b195de737 ✅ Checks account character count before attempting bot character creation
✅ Only creates new bot characters if there's space available (< 10 characters per account)
✅ Gracefully skips creation when account is full instead of failing with repeated errors
✅ Logs appropriate debug messages when accounts are full
2026-05-13 08:42:37 -03:00
luis 42eea15365 Fix playerbot and spells 2026-05-13 08:28:40 -03:00
luis 90ea70cc89 Loop-based retry: The code now loops through up to 10 accounts looking for one with available character slots
Better logging: Shows progress and helps track account availability
Graceful fallback: Only fails when no accounts with available slots are found
2026-05-12 21:00:53 -03:00
luis a693e65e70 core warning fix 2026-05-12 20:43:50 -03:00
luis 05788710bf fix warning 2026-05-12 20:12:01 -03:00
luis 2e48d7e514 remove wrong opcodes 2026-05-12 08:34:59 -03:00
luis 0675522ff0 ++ 2026-05-12 08:21:57 -03:00
luis 3a8dc57460 up 2026-05-12 08:15:53 -03:00
luis 747a9f72fb Core/Misc: Update QuestSort enum for 12.0.5 2026-05-12 08:12:32 -03:00
luis c62a1b1fdd ++ 2026-05-11 19:47:11 -03:00
luis 9125314b5a typo 2026-05-11 19:38:23 -03:00
luis 7147475c32 typo fix 2026-05-09 09:06:55 -03:00
luis 9116ef3370 bot 2026-05-09 08:47:35 -03:00
luis c92a03f40e Fix bot 2026-05-09 07:32:00 -03:00
luis 8c8ed956f7 bot fix 2026-05-09 04:58:37 -03:00
luis df16c99723 fix bot 2026-05-09 03:48:56 -03:00
luis 315ad258d5 typo 2026-05-09 02:34:42 -03:00
luis 0931883834 fix bot 2026-05-09 00:34:45 -03:00
luis 1af17fc6cb fix gob 2026-05-08 23:20:10 -03:00
luis 2fe48fda4a 67451 2026-05-08 22:39:34 -03:00
luis b367d85bc7 typo 2026-05-08 22:29:58 -03:00
luis 0e96bc63c8 Housing: fix HOTFIX_SEL_EXTERIOR_COMPONENT prepare for refreshed schema
Worldserver crashed at startup after applying 2026_04_29_00_hotfixes.sql
with mysql_stmt_prepare() id 249 "Unknown column 'FileDataID' in 'field
list'" — the C++ PrepareStatement was still on the older WoW-build
column set (FileDataID/ConditionID/HookID/Slot/SortOrder/
ComponentGroupID/UiTextureKitID/ExteriorComponentTypeID) while the SQL
table is now on the 12.0.5 layout (ParentComponentID/ModelFileDataID/
Flags/Field_7/Type/Field_9/GameObjectID/Field_11/ItemID/
HouseExteriorWmoDataID).

Updated the SELECT to match DB2LoadInfo::ExteriorComponentLoadInfo
column order (LayoutHash 0x53EA0925, 14 fields). The in-memory
ExteriorComponentEntry struct in DB2Structure.h was already on the new
layout — only the prepared statement lagged.
2026-05-08 22:15:31 -03:00
luis 91f23fceef Housing: wire blizzlike door click via SpellID 1271876
Sniff-decoded from C:\sniff\housing_stuff\{alliance,horde}_housing\
dump_12.0.5.67186_2026-04-28_*.pkt: when a player clicks a housing
door GO the 12.0.5 retail client emits CMSG_CAST_SPELL with
SpellID 1,271,876 (uint32 at body offset 0x15) targeting the door.
Both faction sniffs are byte-identical in the spell-id field; only the
target PackedGUID at offset 0x3D differs. CMSG_GAME_OBJ_REPORT_USE that
follows is criteria-tracking, NOT the trigger — the cast is.

The server side had four stacked gaps blocking this flow:

A. SpellID 1271876 was missing from spell_name / spell_misc / spell_effect.
   Cast validation rejected it as unknown. Added a minimal row set with
   SPELL_EFFECT_DUMMY targeting TARGET_GAMEOBJECT_TARGET so the cast
   accepts and the SpellScript hook fires.

B. gameobject_template.Data10 (goober.spell) on the housing front-door
   templates was either zero (575017, 602702) or pointing at the older
   12.0.1 spell 1234192 (586576, 602705) / 1234193 (587318). Neither
   matches what the 12.0.5 retail client casts, so the goober mechanism
   wouldn't have routed correctly even if the spell existed. All five
   entries now point at 1271876.

C. New SpellScript spell_housing_door_open, registered against 1271876
   via spell_script_names, intercepts the cast and calls
   GameObject::Use() on the spell target. That routes to the existing
   go_housing_door::OnGossipHello which already handles edit-mode
   gating, visitor permissions, and the interior round trip.

D. The exterior_component SQL hotfix table was on an older WoW build's
   schema (FileDataID/ConditionID/HookID/Slot/SortOrder/...) that
   doesn't line up with DB2LoadInfo's 12.0.5 layout
   (Name + 3 floats + ID + Size + ParentComponentID + ModelFileDataID +
   Flags + Field_7 + Type + Field_9 + GameObjectID + Field_11 +
   ItemID + HouseExteriorWmoDataID). Without a GameObjectID column the
   hotfix loader was filling that field with zeros, so HousingMap::
   SpawnExtCompTree never spawned door GOs in the first place. Schema
   rebuilt to match the 14-field 12.0.5 record (LayoutHash 0x53EA0925).
2026-05-08 22:14:33 -03:00
luis 1efdf256cd fix gob issues 2026-05-08 21:56:17 -03:00
luis e26e3f5280 DB/Hallowfall: Added graveyards 2026-05-08 21:54:56 -03:00
luis 534211feb7 new build 2026-05-08 21:46:38 -03:00
luis 46f704784b playerbot chat ai system 2026-05-08 14:06:08 -03:00
luis ecbdc55de7 fix bot equipment 2026-05-08 13:37:02 -03:00
luis e1d30b5100 fix bot speed 2026-05-08 13:32:57 -03:00
luis a2cd28af21 improve db of bots 2026-05-08 13:17:27 -03:00
luis 26ce8c43e3 new bot fixes 2026-05-07 22:33:26 -03:00
luis 2c2637f09a PetBattle: fall back to cast ability ID when sub-aura has no icon 2026-05-07 19:37:24 -03:00
luis 55f6b87d50 PetBattle: wire IsPeriodic on WEATHER_SET, document Accuracy
Tester noted PropsID 170 has Accuracy(param[1]) and IsPeriodic(param[4])
labels that weren't visible in the WEATHER_SET handler.

- Accuracy is already rolled at the top of ProcessEffect before the
  switch dispatches; added a comment so the handler doesn't look
  unwired.
- IsPeriodic was silently ignored. PetBattleEnvironment now carries
  PeriodicStateIDs; WEATHER_SET inserts when the flag is set;
  TickWeather re-emits SET_STATE each round for periodic states so
  the client refreshes its visual/counter. ClearWeatherStates also
  clears the periodic set.
2026-05-07 19:36:47 -03:00
luis 312f08f1a4 PetBattle: clamp wild pet level to 1 to fix idle wild AI
Tester log shows a Squirrel (creature 61081, species 379) entering
combat at Level=0:

  PetBattle LoadWildPetAbilities: Species=379 Level=0 entries=6 loaded=0
  PetBattle GenerateWildTeamInput: NO available abilities! ... -> PASS

Every BattlePetSpeciesXAbility entry has RequiredLevel >= 1, so the
level gate (RequiredLevel > pet.Level with pet.Level = 0) filtered all
six entries out. The wild pet then idled every round because the AI's
ability-collection loop produced an empty list.

Root cause is that creature->GetWildBattlePetLevel() can legitimately
return 0 — SelectWildBattlePetLevel only assigns a level when
IsWildBattlePet() is true at the moment it runs (creature spawn /
respawn), and we've seen cases (summoned creatures, hot-respawned
spawns, zones with no AreaTable.WildBattlePetLevelMin entry) where
that path doesn't fire. Clamp the value at the read site in
GenerateWildTeam, log a WARN with the creature entry so the underlying
spawn data can be fixed, and reuse the clamped value for the +/-1
variation that derives extra wild pets in multi-pet wild battles.
2026-05-07 19:34:59 -03:00
luis 1448bd1182 Revert "SMART_ACTION_IGNORE_PATHFINDING"
This reverts commit 939baa5a48.
2026-05-07 19:33:52 -03:00
luis 61bbbb4c27 PetBattle: wire kill-credit creatures for Marcus Jensen intro quests
Marcus Jensen (npc 63014) gives the four MoP intro pet-battle quests
which all use Type=0 MONSTER objectives against virtual kill-credit
creatures rather than QUEST_OBJECTIVE_CRITERIA_TREE. Without explicit
KilledMonsterCredit calls these quests never advance even though our
CriteriaType progress lines up.

- 31308 "Learning the Ropes" -> creature 65355 on any pet battle win,
  fired in PetBattle::FinishBattle for the winning team.
- 31550 "Got one!" -> creature 65356 on first capture, fired in
  PetBattle::CompleteBattle next to the existing AccountObtainPet /
  PlayerObtainPet criteria.
- 31785 "Level Up!" -> creature 65876 on first 2->3 transition,
  fired inside the level-up loop in BattlePetMgr::GrantBattlePetExperience
  (only at level == 3 so larger XP grants don't double-credit).
- 31309 "On The Mend" -> creature 64320 when Revive Battle Pets
  actually heals at least one pet, fired in
  BattlePetMgr::HealBattlePetsPct after the updates list is non-empty
  so casting the spell with full-HP pets doesn't credit.

KilledMonsterCredit no-ops if the player has no quest with that
objective, so each call is safe regardless of quest state.
2026-05-07 01:07:07 -03:00
luis 939baa5a48 SMART_ACTION_IGNORE_PATHFINDING 2026-05-07 01:05:09 -03:00
luis f5975c8cf4 DB/K'aresh: Added graveyards 2026-05-07 00:49:17 -03:00
luis 8f8ed2aa74 PetBattle: fix aura icon, weather routing, and capture quest credit
Three tester-reported bugs in one pass:

1. Multi-round aura icon was missing because AURA_APPLY/AURA_CHANGE
   wire param 0 (AbilityID — used by the client to look up the spell
   icon) carried the parent cast ability instead of the actual aura
   ability. When a wrapper ability applies a sub-aura via
   AuraBattlePetAbilityID, the cast ability has no icon and the slot
   came up blank. Use AuraBattlePetAbilityID when set, fall back to
   the cast ability ID otherwise. Stored on the aura so AURA_CHANGE
   and AURA_CANCEL ticks pick up the same ID.

2. Weather auras (Call Darkness etc.) were landing on the casting
   pet with a turn counter instead of in the middle environment slot.
   Root cause: BuildEffectActionMap's weather label match was an
   exact string set ("weatherState"/"WeatherState"/"weatherAura"/
   "WeatherAura"). Labels like "WeatherStateID" missed the weather
   bucket and fell into the "State" substring branch, so the parent
   ability never got into _weatherAbilityIDs and IsWeatherAbility
   returned false at runtime. Replace with a case-insensitive
   "weather" substring check that runs before the State/etc. checks.

3. Wild battles where the player captured the only opponent did not
   credit DEFEATBATTLEPET quest objectives because the captured pet
   stayed alive (Health > 0). Capture removes the pet from play just
   like a kill, so credit it too.

Also raise GenerateWildTeamInput's "no available abilities" log from
DEBUG to WARN ("battlepet" channel) so the next time a tester sees a
wild pet idle, the species ID and ability slots show up in the log
without needing to flip the global log level.
2026-05-05 13:28:48 -03:00
luis 2bb0c6f49b prev sql 2026-05-05 08:35:28 -03:00
luis a745a8039b DB/Harandar: Added some more spawns 2026-05-05 08:32:59 -03:00
luis 004a44cdc4 DB/Harandar: Added conversation after teleport to harandar (Quest: The Root Cause) 2026-05-05 08:29:36 -03:00
luis 0f42125b49 typo fix 2026-05-05 08:25:08 -03:00
luis a75c7b760f bot 2026-05-04 20:57:47 -03:00
luis 230556d90d fixes 2026-05-03 08:58:32 -03:00
luis 5189f27df6 fix garrison and playerbots 2026-05-03 07:51:18 -03:00
luis e5926a830c full update garrison packets 2026-05-02 17:06:56 -03:00
luis 21655596cf rename 2026-05-02 13:42:57 -03:00
luis 9edabe6ce3 typo 2026-05-02 11:34:27 -03:00
luis ff7d24c938 spell effects fixes 2026-05-02 11:33:54 -03:00
luis 61b6e23588 Core/Spells: Set private object owner for vehicle summon spells 2026-05-02 11:26:50 -03:00
luis 11a9c99dbd SPELL_EFFECT_LEARN_HOUSE_TYPE 2026-05-02 11:25:41 -03:00
luis 4b940875ab 67314 2026-05-02 11:22:32 -03:00
luis c6007eb48c 67235 2026-05-02 11:21:28 -03:00
luis 28a2dea776 SMART_ACTION_ADD_AURA 2026-05-02 11:18:17 -03:00
luis d269d04f04 SMART_ACTION_SET_UNIT_FLAG re implement 2026-05-02 11:12:12 -03:00
luis f6fcb153e4 fix build without bot 2026-05-01 18:44:56 -03:00
luis 74f9dabe6b rework commands 2026-05-01 08:59:35 -03:00
luis 94bae5266f bots 2026-05-01 08:33:23 -03:00
luis b2a6d321f7 bot fixes 2026-05-01 07:18:39 -03:00
luis 19deb2f50e fix bot crash 2026-05-01 03:07:34 -03:00
luis 4c953ad571 bots build now 2026-05-01 01:22:43 -03:00
luis 0c2eb65164 Playerbot merge part 1 2026-04-30 23:39:14 -03:00
luis 094111d398 Fix bpet opcode 2026-04-30 22:55:34 -03:00
luis 41df391d70 Update bpet to 12.0.5 2026-04-30 22:39:36 -03:00
luis d4ba2de12e helpers 2026-04-30 08:34:54 -03:00
luis 85d3bec028 Fix WarbandScenePlacement for 12.0.1 (added Field_12_0_0_63534_008).
Fix WarbandScenePlacementFilterReq layout to match client metadata.
Fix all parent index fields to be unsigned as required by DB2 loader.
Update warband group limit from 5 to 20 (retail 11.1+).
2026-04-29 19:52:08 -03:00
luis 1cbe505605 need fix struct later 2026-04-29 08:36:56 -03:00
luis 1beb546d1b Add all locales 2026-04-28 21:19:42 -03:00
luis 436244e188 Scripts/Spells: Implement demon hunter talent "Moment of Craving" 2026-04-28 20:16:42 -03:00