mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-02-03 10:53:48 +00:00
[HOT FIX] MS build issues regarding folder / command lenght usage or rc.exe (#2038)
This commit is contained in:
110
src/Ai/Raid/Onyxia/Trigger/RaidOnyxiaTriggers.cpp
Normal file
110
src/Ai/Raid/Onyxia/Trigger/RaidOnyxiaTriggers.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
#include "RaidOnyxiaTriggers.h"
|
||||
|
||||
#include "GenericTriggers.h"
|
||||
#include "ObjectAccessor.h"
|
||||
#include "PlayerbotAI.h"
|
||||
#include "Playerbots.h"
|
||||
#include "NearestNpcsValue.h"
|
||||
|
||||
OnyxiaDeepBreathTrigger::OnyxiaDeepBreathTrigger(PlayerbotAI* botAI) : Trigger(botAI, "ony deep breath warning") {}
|
||||
|
||||
bool OnyxiaDeepBreathTrigger::IsActive()
|
||||
{
|
||||
Unit* boss = AI_VALUE2(Unit*, "find target", "onyxia");
|
||||
if (!boss || !boss->HasUnitState(UNIT_STATE_CASTING))
|
||||
return false;
|
||||
|
||||
// Check if Onyxia is casting
|
||||
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
|
||||
|
||||
if (!currentSpell)
|
||||
return false;
|
||||
|
||||
uint32 spellId = currentSpell->m_spellInfo->Id;
|
||||
|
||||
if (spellId == 17086 || // North to South
|
||||
spellId == 18351 || // South to North
|
||||
spellId == 18576 || // East to West
|
||||
spellId == 18609 || // West to East
|
||||
spellId == 18564 || // Southeast to Northwest
|
||||
spellId == 18584 || // Northwest to Southeast
|
||||
spellId == 18596 || // Southwest to Northeast
|
||||
spellId == 18617 // Northeast to Southwest
|
||||
)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
OnyxiaNearTailTrigger::OnyxiaNearTailTrigger(PlayerbotAI* botAI) : Trigger(botAI, "ony near tail") {}
|
||||
|
||||
bool OnyxiaNearTailTrigger::IsActive()
|
||||
{
|
||||
Unit* boss = AI_VALUE2(Unit*, "find target", "onyxia");
|
||||
if (!boss || botAI->IsTank(bot))
|
||||
return false;
|
||||
|
||||
// Skip if Onyxia is in air or transitioning
|
||||
if (!boss->IsInCombat() || boss->IsFlying() || !boss->GetVictim())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
RaidOnyxiaFireballSplashTrigger::RaidOnyxiaFireballSplashTrigger(PlayerbotAI* botAI)
|
||||
: Trigger(botAI, "ony fireball splash incoming")
|
||||
{
|
||||
}
|
||||
|
||||
bool RaidOnyxiaFireballSplashTrigger::IsActive()
|
||||
{
|
||||
Unit* boss = AI_VALUE2(Unit*, "find target", "onyxia");
|
||||
if (!boss || !boss->HasUnitState(UNIT_STATE_CASTING))
|
||||
return false;
|
||||
|
||||
// Check if Onyxia is casting Fireball
|
||||
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
|
||||
if (!currentSpell || currentSpell->m_spellInfo->Id != 18392) // 18392 is the classic Fireball ID
|
||||
return false;
|
||||
|
||||
GuidVector nearbyUnits = AI_VALUE(GuidVector, "nearest friendly players");
|
||||
|
||||
for (ObjectGuid guid : nearbyUnits)
|
||||
{
|
||||
Unit* unit = botAI->GetUnit(guid);
|
||||
if (!unit || unit == bot || !unit->IsAlive())
|
||||
continue;
|
||||
|
||||
if (bot->GetDistance(unit) < 8.0f)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
RaidOnyxiaWhelpsSpawnTrigger::RaidOnyxiaWhelpsSpawnTrigger(PlayerbotAI* botAI) : Trigger(botAI, "ony whelps spawn") {}
|
||||
|
||||
bool RaidOnyxiaWhelpsSpawnTrigger::IsActive()
|
||||
{
|
||||
Unit* boss = AI_VALUE2(Unit*, "find target", "onyxia");
|
||||
if (!boss)
|
||||
return false;
|
||||
|
||||
return !botAI->IsHeal(bot) && boss->IsFlying(); // DPS + Tanks only
|
||||
}
|
||||
|
||||
OnyxiaAvoidEggsTrigger::OnyxiaAvoidEggsTrigger(PlayerbotAI* botAI) : Trigger(botAI, "ony avoid eggs") {}
|
||||
|
||||
bool OnyxiaAvoidEggsTrigger::IsActive()
|
||||
{
|
||||
Position botPos = Position(bot->GetPositionX(), bot->GetPositionY(), bot->GetPositionZ());
|
||||
|
||||
if (botPos.GetExactDist2d(-35.0f, -165.0f) <= 5.0f)
|
||||
return true;
|
||||
|
||||
if (botPos.GetExactDist2d(-35.0f, -260.0f) <= 5.0f)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user