mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-10 19:13:52 +00:00
Novel open replacement for Blizzard's PlayerCondition.dbc +
the AzerothCore-style condition_template SQL tables. The
37th open format added to the editor.
Defines reusable boolean conditions that other formats can
reference for gating: "player has quest X completed",
"player level >= N", "player class is mage", "player has
item Y in inventory", "WSEA event Z is active".
Conditions can be grouped and combined with AND/OR
aggregators on a per-group basis: a quest-giver gossip
option that says "show only to level 60 alliance mages
who completed quest 1234" composes 4 conditions sharing
the same groupId with AND aggregation. The runtime walks
each group, applies the group's aggregator, and returns
the boolean result to the caller.
Cross-references with previously-added formats — the
targetId field has a polymorphic interpretation by kind:
WPCD.targetId (kind=QuestCompleted/Active) -> WQT.questId
WPCD.targetId (kind=HasItem) -> WIT.itemId
WPCD.targetId (kind=HasSpell) -> WSPL.spellId
WPCD.targetId (kind=HasAchievement) -> WACH.achievementId
WPCD.targetId (kind=AreaId) -> WMS.areaId
WPCD.targetId (kind=EventActive) -> WSEA.eventId
WPCD.targetId (kind=HasTitle) -> WTIT.titleId
WPCD.targetId (kind=FactionRep) -> WFAC.factionId
WPCD.targetId (kind=Class/Race) -> WCHC class/race id
Future format extensions can reference WPCD.conditionId in
their own gating fields — WTRG triggers gated by player
state, WGSP options visible only when conditions are met,
WMOU summon spells condition-gated by quest progress, etc.
Format:
• magic "WPCD", version 1, little-endian
• per condition: conditionId / groupId (0 = standalone) /
name / description / kind / aggregator / negated /
targetId / minValue / maxValue
Enums:
• Kind (17): AlwaysTrue / AlwaysFalse / QuestCompleted /
QuestActive / HasItem / HasSpell / MinLevel /
MaxLevel / ClassMatch / RaceMatch /
FactionRep / HasAchievement / TeamSize /
GuildLevel / EventActive / AreaId / HasTitle
• Aggregator (2): And / Or
API: WoweeConditionLoader::save / load / exists / findById.
Three preset emitters showcase typical usage:
• makeStarter — 4 standalone conditions covering the most
common kinds (quest-done / has-item /
min-level / class)
• makeGated — 5 conditions in 2 groups demonstrating
AND-aggregation (alliance + mage + lvl 60)
and OR-aggregation (did quest 1 OR quest 100)
• makeEvent — 3 event-gated conditions cross-referencing
WSEA event IDs (Hallow's End / Brewfest /
Winter's Veil)
CLI added (5 flags, 656 documented total now):
--gen-conditions / --gen-conditions-gated / --gen-conditions-event
--info-wpcd / --validate-wpcd
Validator catches: conditionId=0 + duplicates, kind /
aggregator out of range, kinds requiring targetId having
target=0 (skips AlwaysTrue/False, MinLevel/MaxLevel,
TeamSize, GuildLevel which use min/max instead), TeamSize
with min > max.
|
||
|---|---|---|
| .. | ||
| adt_loader.hpp | ||
| asset_manager.hpp | ||
| asset_manifest.hpp | ||
| blp_loader.hpp | ||
| custom_zone_discovery.hpp | ||
| dbc_layout.hpp | ||
| dbc_loader.hpp | ||
| loose_file_reader.hpp | ||
| m2_loader.hpp | ||
| terrain_mesh.hpp | ||
| wdt_loader.hpp | ||
| wmo_loader.hpp | ||
| wowee_achievements.hpp | ||
| wowee_battlegrounds.hpp | ||
| wowee_building.hpp | ||
| wowee_chars.hpp | ||
| wowee_collision.hpp | ||
| wowee_conditions.hpp | ||
| wowee_creatures.hpp | ||
| wowee_events.hpp | ||
| wowee_factions.hpp | ||
| wowee_gems.hpp | ||
| wowee_gossip.hpp | ||
| wowee_guilds.hpp | ||
| wowee_items.hpp | ||
| wowee_light.hpp | ||
| wowee_locks.hpp | ||
| wowee_loot.hpp | ||
| wowee_mail.hpp | ||
| wowee_maps.hpp | ||
| wowee_model.hpp | ||
| wowee_mounts.hpp | ||
| wowee_objects.hpp | ||
| wowee_quests.hpp | ||
| wowee_skills.hpp | ||
| wowee_sound.hpp | ||
| wowee_spawns.hpp | ||
| wowee_spells.hpp | ||
| wowee_talents.hpp | ||
| wowee_taxi.hpp | ||
| wowee_terrain_loader.hpp | ||
| wowee_titles.hpp | ||
| wowee_tokens.hpp | ||
| wowee_trainers.hpp | ||
| wowee_triggers.hpp | ||
| wowee_weather.hpp | ||
| wowee_world_map.hpp | ||