mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-30 08:53:47 +00:00
Compare commits
3 Commits
hermensbas
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a92886032c | ||
|
|
f5711dc6f7 | ||
|
|
43e8e31980 |
@@ -109,6 +109,7 @@ If yes, please specify:
|
||||
AI assistance is allowed, but all submitted code must be fully understood, reviewed, and owned by the contributor.
|
||||
Any AI-influenced changes must be verified against existing CORE and PB logic. We expect contributors to be honest
|
||||
about what they do and do not understand.
|
||||
|
||||
---
|
||||
|
||||
## Final Checklist
|
||||
|
||||
@@ -150,7 +150,7 @@ bool SummonAction::SummonUsingNpcs(Player* summoner, Player* player, bool preser
|
||||
bool SummonAction::Teleport(Player* summoner, Player* player, bool preserveAuras)
|
||||
{
|
||||
// Player* master = GetMaster();
|
||||
if (!summoner)
|
||||
if (!summoner || summoner == player)
|
||||
return false;
|
||||
|
||||
if (player->GetVehicle())
|
||||
@@ -212,9 +212,11 @@ bool SummonAction::Teleport(Player* summoner, Player* player, bool preserveAuras
|
||||
if (!preserveAuras)
|
||||
player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_TELEPORTED |
|
||||
AURA_INTERRUPT_FLAG_CHANGE_MAP);
|
||||
|
||||
player->TeleportTo(mapId, x, y, z, 0);
|
||||
|
||||
if (player->GetPet())
|
||||
player->GetPet()->NearTeleportTo(x, y, z, player->GetOrientation());
|
||||
if (player->GetGuardianPet())
|
||||
player->GetGuardianPet()->NearTeleportTo(x, y, z, player->GetOrientation());
|
||||
if (botAI->HasStrategy("stay", botAI->GetState()))
|
||||
{
|
||||
PositionMap& posMap = AI_VALUE(PositionMap&, "position");
|
||||
|
||||
@@ -45,8 +45,19 @@ bool RaidOnyxiaSpreadOutAction::Execute(Event event)
|
||||
if (!boss)
|
||||
return false;
|
||||
|
||||
Player* target = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL)->m_targets.GetUnitTarget()->ToPlayer();
|
||||
if (target != bot)
|
||||
// Trigger may fire on one tick, but the action can execute on a later tick.
|
||||
// By that time the cast may have finished, so current spell can be null.
|
||||
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
|
||||
if (!currentSpell || !currentSpell->m_spellInfo)
|
||||
return false;
|
||||
|
||||
// Fireball
|
||||
if (currentSpell->m_spellInfo->Id != 18392)
|
||||
return false;
|
||||
|
||||
Unit* unitTarget = currentSpell->m_targets.GetUnitTarget();
|
||||
Player* target = unitTarget ? unitTarget->ToPlayer() : nullptr;
|
||||
if (!target || target != bot)
|
||||
return false;
|
||||
|
||||
// bot->Yell("Spreading out — I'm the Fireball target!", LANG_UNIVERSAL);
|
||||
@@ -60,7 +71,7 @@ bool RaidOnyxiaMoveToSafeZoneAction::Execute(Event event)
|
||||
return false;
|
||||
|
||||
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
|
||||
if (!currentSpell)
|
||||
if (!currentSpell || !currentSpell->m_spellInfo)
|
||||
return false;
|
||||
|
||||
uint32 spellId = currentSpell->m_spellInfo->Id;
|
||||
|
||||
@@ -17,7 +17,7 @@ bool OnyxiaDeepBreathTrigger::IsActive()
|
||||
// Check if Onyxia is casting
|
||||
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
|
||||
|
||||
if (!currentSpell)
|
||||
if (!currentSpell || !currentSpell->m_spellInfo)
|
||||
return false;
|
||||
|
||||
uint32 spellId = currentSpell->m_spellInfo->Id;
|
||||
@@ -65,7 +65,7 @@ bool RaidOnyxiaFireballSplashTrigger::IsActive()
|
||||
|
||||
// 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
|
||||
if (!currentSpell || !currentSpell->m_spellInfo || currentSpell->m_spellInfo->Id != 18392) // 18392 is the classic Fireball ID // 18392 is the classic Fireball ID
|
||||
return false;
|
||||
|
||||
GuidVector nearbyUnits = AI_VALUE(GuidVector, "nearest friendly players");
|
||||
|
||||
Reference in New Issue
Block a user