full implementation of viano dungeon bots
clang PCH / build (push) Has been cancelled
GCC PCH / build (push) Has been cancelled

This commit is contained in:
Nico committed 2026-10-08 09:40:02 +02:00
1 parent 634606b5ba
commit 96c937d5e4
5 files changed
+4538 -24

No files matched your search

+103 -21
View File
@@ -46,6 +46,39 @@ namespace VianoAdventurers
|| scriptName.rfind("npc_alliance_adventurer_tank", 0) == 0;
}
// VIANO_FACTION_MODELS_V1
static uint32 GetVianoAdventurerDisplayId(Creature* creature)
{
static constexpr uint32 HORDE_MODELS[] =
{
30063,
30064,
30065,
30066
};
static constexpr uint32 ALLIANCE_MODELS[] =
{
24361,
24541,
24543,
24542
};
uint32 const* models = HORDE_MODELS;
if (creature)
{
uint32 const entry = creature->GetEntry();
if (entry >= 900004 && entry <= 900006)
models = ALLIANCE_MODELS;
}
return models[urand(0, 3)];
}
static void GetVianoFollowSlot(Creature* bot, Player* owner, float& distance, float& angle)
{
distance = FOLLOW_DISTANCE;
@@ -316,20 +349,18 @@ namespace VianoAdventurers
me->SetFaction(owner->GetFaction());
me->SetLevel(owner->getLevel());
me->UpdateLevelDependantStats();
static constexpr uint32 HORDE_ADVENTURER_MODELS[] =
{
30063,
30064,
30065,
30066
};
uint32 displayId = HORDE_ADVENTURER_MODELS[urand(0, 3)];
uint32 const displayId =
GetVianoAdventurerDisplayId(me);
me->SetDisplayId(displayId, true);
TC_LOG_INFO("scripts","[VianoAI] Horde adventurer display selected: %u", displayId);
TC_LOG_INFO(
"scripts",
"[VianoAI] adventurer display selected: "
"entry=%u display=%u",
me->GetEntry(),
displayId);
// REACT_PASSIVE lets AttackStart() briefly set a victim, but the
// core subsequently drops that victim again. We already suppress
@@ -1095,16 +1126,11 @@ namespace VianoAdventurers
me->SetFaction(owner->GetFaction());
me->SetLevel(owner->getLevel());
me->UpdateLevelDependantStats();
uint32 const displayId =
GetVianoAdventurerDisplayId(me);
static constexpr uint32 HORDE_ADVENTURER_MODELS[] =
{
30063,
30064,
30065,
30066
};
me->SetDisplayId(displayId, true);
me->SetDisplayId(HORDE_ADVENTURER_MODELS[urand(0, 3)], true);
SetEquipmentSlots(false, 50179, 50794, EQUIP_NO_CHANGE);
me->SetReactState(REACT_DEFENSIVE);
@@ -1517,9 +1543,11 @@ namespace VianoAdventurers
me->SetLevel(owner->getLevel());
me->UpdateLevelDependantStats();
ConfigureMana(true);
uint32 const displayId =
GetVianoAdventurerDisplayId(me);
me->SetDisplayId(displayId, true);
static constexpr uint32 MODELS[] = { 30063, 30064, 30065, 30066 };
me->SetDisplayId(MODELS[urand(0, 3)], true);
SetEquipmentSlots(false, 39426, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
me->SetReactState(REACT_PASSIVE);
FollowOwner(owner);
@@ -1674,6 +1702,57 @@ void UpdateAI(uint32 diff) override
return new npc_horde_adventurer_healerAI(creature);
}
};
// VIANO_ALLIANCE_ADVENTURERS_V1
//
// Alliance adventurers intentionally reuse the same combat AI as their
// Horde counterparts. Faction, models and default equipment are supplied
// by their own creature_template rows.
class npc_alliance_adventurer_melee : public CreatureScript
{
public:
npc_alliance_adventurer_melee()
: CreatureScript("npc_alliance_adventurer_melee")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_horde_adventurer_melee::
npc_horde_adventurer_meleeAI(creature);
}
};
class npc_alliance_adventurer_tank : public CreatureScript
{
public:
npc_alliance_adventurer_tank()
: CreatureScript("npc_alliance_adventurer_tank")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_horde_adventurer_tank::
npc_horde_adventurer_tankAI(creature);
}
};
class npc_alliance_adventurer_healer : public CreatureScript
{
public:
npc_alliance_adventurer_healer()
: CreatureScript("npc_alliance_adventurer_healer")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_horde_adventurer_healer::
npc_horde_adventurer_healerAI(creature);
}
};
}
void AddSC_viano_adventurers()
@@ -1682,4 +1761,7 @@ void AddSC_viano_adventurers()
new npc_horde_adventurer_melee();
new npc_horde_adventurer_tank();
new npc_horde_adventurer_healer();
new npc_alliance_adventurer_melee();
new npc_alliance_adventurer_tank();
new npc_alliance_adventurer_healer();
}
File diff suppressed because it is too large. Load diff
+3 -3
View File
@@ -436,9 +436,9 @@ enum VcoreDungeonHornNpcs
NPC_HORDE_ADVENTURER_HEALER = 900003,
// TODO: replace once Alliance creature templates exist.
NPC_ALLIANCE_ADVENTURER_DAMAGE = 0,
NPC_ALLIANCE_ADVENTURER_TANK = 0,
NPC_ALLIANCE_ADVENTURER_HEALER = 0
NPC_ALLIANCE_ADVENTURER_DAMAGE = 900004,
NPC_ALLIANCE_ADVENTURER_TANK = 900005,
NPC_ALLIANCE_ADVENTURER_HEALER = 900006
};
static constexpr uint32 VCORE_DUNGEON_GROUP_LIMIT = 5;
File diff suppressed because it is too large. Load diff