mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-26 15:16:24 +00:00
Merge branch 'azerothcore:master' into Playerbot
This commit is contained in:
@@ -2284,14 +2284,6 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_SET_GO_STATE:
|
||||
{
|
||||
for (WorldObject* target : targets)
|
||||
if (IsGameObject(target))
|
||||
target->ToGameObject()->SetGoState((GOState)e.action.goState.state);
|
||||
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_EXIT_VEHICLE:
|
||||
{
|
||||
for (WorldObject* target : targets)
|
||||
|
||||
@@ -725,7 +725,7 @@ bool SmartAIMgr::CheckUnusedActionParams(SmartScriptHolder const& e)
|
||||
case SMART_ACTION_SET_CORPSE_DELAY: return sizeof(SmartAction::corpseDelay);
|
||||
case SMART_ACTION_DISABLE_EVADE: return sizeof(SmartAction::disableEvade);
|
||||
case SMART_ACTION_GO_SET_GO_STATE: return sizeof(SmartAction::goState);
|
||||
case SMART_ACTION_SET_CAN_FLY: return sizeof(SmartAction::setFly);
|
||||
// case SMART_ACTION_SET_CAN_FLY: return sizeof(SmartAction::setFly);
|
||||
// case SMART_ACTION_REMOVE_AURAS_BY_TYPE: return sizeof(SmartAction::auraType);
|
||||
case SMART_ACTION_SET_SIGHT_DIST: return sizeof(SmartAction::sightDistance);
|
||||
case SMART_ACTION_FLEE: return sizeof(SmartAction::flee);
|
||||
@@ -741,7 +741,7 @@ bool SmartAIMgr::CheckUnusedActionParams(SmartScriptHolder const& e)
|
||||
// case SMART_ACTION_DESPAWN_SPAWNGROUP: return sizeof(SmartAction::groupSpawn);
|
||||
// case SMART_ACTION_RESPAWN_BY_SPAWNID: return sizeof(SmartAction::respawnData);
|
||||
// case SMART_ACTION_INVOKER_CAST: return sizeof(SmartAction::cast);
|
||||
// case SMART_ACTION_PLAY_CINEMATIC: return sizeof(SmartAction::cinematic);
|
||||
case SMART_ACTION_PLAY_CINEMATIC: return sizeof(SmartAction::cinematic);
|
||||
case SMART_ACTION_SET_MOVEMENT_SPEED: return sizeof(SmartAction::movementSpeed);
|
||||
//case SMART_ACTION_PLAY_SPELL_VISUAL_KIT: return sizeof(SmartAction::raw);
|
||||
// case SMART_ACTION_OVERRIDE_LIGHT: return sizeof(SmartAction::overrideLight);
|
||||
@@ -751,7 +751,6 @@ bool SmartAIMgr::CheckUnusedActionParams(SmartScriptHolder const& e)
|
||||
case SMART_ACTION_SET_HEALTH_PCT: return sizeof(SmartAction::setHealthPct);
|
||||
//case SMART_ACTION_CREATE_CONVERSATION: return sizeof(SmartAction::raw);
|
||||
case SMART_ACTION_MOVE_TO_POS_TARGET: return sizeof(SmartAction::moveToPos);
|
||||
case SMART_ACTION_SET_GO_STATE: return sizeof(SmartAction::goState);
|
||||
case SMART_ACTION_EXIT_VEHICLE: return NO_PARAMS;
|
||||
case SMART_ACTION_SET_UNIT_MOVEMENT_FLAGS: return sizeof(SmartAction::movementFlag);
|
||||
case SMART_ACTION_SET_COMBAT_DISTANCE: return sizeof(SmartAction::combatDistance);
|
||||
@@ -1890,7 +1889,6 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
case SMART_ACTION_SUMMON_CREATURE_GROUP:
|
||||
case SMART_ACTION_RISE_UP:
|
||||
case SMART_ACTION_MOVE_TO_POS_TARGET:
|
||||
case SMART_ACTION_SET_GO_STATE:
|
||||
case SMART_ACTION_EXIT_VEHICLE:
|
||||
case SMART_ACTION_SET_UNIT_MOVEMENT_FLAGS:
|
||||
case SMART_ACTION_SET_COMBAT_DISTANCE:
|
||||
|
||||
@@ -526,7 +526,7 @@ enum SMART_ACTION
|
||||
SMART_ACTION_TALK = 1, // groupID from creature_text, duration to wait before TEXT_OVER event is triggered, use first target from targetlist as invoker, useTalkTarget (0/1) - use target as talk target
|
||||
SMART_ACTION_SET_FACTION = 2, // FactionId (or 0 for default)
|
||||
SMART_ACTION_MORPH_TO_ENTRY_OR_MODEL = 3, // Creature_template entry(param1) OR ModelId (param2) (or 0 for both to demorph)
|
||||
SMART_ACTION_SOUND = 4, // SoundId, onlySelf
|
||||
SMART_ACTION_SOUND = 4, // SoundId, onlySelf, distance
|
||||
SMART_ACTION_PLAY_EMOTE = 5, // EmoteId
|
||||
SMART_ACTION_FAIL_QUEST = 6, // QuestID
|
||||
SMART_ACTION_OFFER_QUEST = 7, // QuestID, directAdd
|
||||
@@ -572,7 +572,7 @@ enum SMART_ACTION
|
||||
SMART_ACTION_SET_VISIBILITY = 47, // on/off
|
||||
SMART_ACTION_SET_ACTIVE = 48, // on/off
|
||||
SMART_ACTION_ATTACK_START = 49, //
|
||||
SMART_ACTION_SUMMON_GO = 50, // GameObjectID, DespawnTime in s
|
||||
SMART_ACTION_SUMMON_GO = 50, // GameObjectID, DespawnTime, targetSummon, summonType (0 time or summoner dies/1 time)
|
||||
SMART_ACTION_KILL_UNIT = 51, //
|
||||
SMART_ACTION_ACTIVATE_TAXI = 52, // TaxiID
|
||||
SMART_ACTION_WP_START = 53, // run/walk, pathID, canRepeat, quest, despawntime, reactState
|
||||
@@ -637,7 +637,7 @@ enum SMART_ACTION
|
||||
SMART_ACTION_GAME_EVENT_START = 112, // GameEventId
|
||||
SMART_ACTION_START_CLOSEST_WAYPOINT = 113, // wp1, wp2, wp3, wp4, wp5, wp6, wp7
|
||||
SMART_ACTION_RISE_UP = 114, // distance
|
||||
SMART_ACTION_RANDOM_SOUND = 115, // SoundId1, SoundId2, SoundId3, SoundId4, onlySelf
|
||||
SMART_ACTION_RANDOM_SOUND = 115, // SoundId1, SoundId2, SoundId3, SoundId4, onlySelf, distance
|
||||
SMART_ACTION_SET_CORPSE_DELAY = 116, // timer
|
||||
SMART_ACTION_DISABLE_EVADE = 117, // 0/1 (1 = disabled, 0 = enabled)
|
||||
SMART_ACTION_GO_SET_GO_STATE = 118, // state
|
||||
@@ -657,18 +657,18 @@ enum SMART_ACTION
|
||||
SMART_ACTION_DESPAWN_SPAWNGROUP = 132, /// @todo: NOT SUPPORTED YET
|
||||
SMART_ACTION_RESPAWN_BY_SPAWNID = 133, /// @todo: NOT SUPPORTED YET
|
||||
// SMART_ACTION_INVOKER_CAST = 134, /// @todo: solve name conflicts
|
||||
SMART_ACTION_PLAY_CINEMATIC = 135, // entry, cinematic
|
||||
SMART_ACTION_PLAY_CINEMATIC = 135, // entry
|
||||
SMART_ACTION_SET_MOVEMENT_SPEED = 136, // movementType, speedInteger, speedFraction
|
||||
|
||||
SMART_ACTION_SET_HEALTH_PCT = 142, // percent
|
||||
|
||||
SMART_ACTION_TC_END = 199, // placeholder
|
||||
// AC-only SmartActions:
|
||||
|
||||
// AC-only SmartActions:
|
||||
SMART_ACTION_AC_START = 200, // placeholder
|
||||
|
||||
SMART_ACTION_MOVE_TO_POS_TARGET = 201, // pointId
|
||||
SMART_ACTION_SET_GO_STATE = 202, // state
|
||||
// SMART_ACTION_SET_GO_STATE = 202, // state // Replaced by SMART_ACTION_GO_SET_GO_STATE
|
||||
SMART_ACTION_EXIT_VEHICLE = 203, // none
|
||||
SMART_ACTION_SET_UNIT_MOVEMENT_FLAGS = 204, // flags
|
||||
SMART_ACTION_SET_COMBAT_DISTANCE = 205, // combatDistance
|
||||
|
||||
@@ -824,7 +824,7 @@ int32 Player::getMaxTimer(MirrorTimerType timer)
|
||||
{
|
||||
if (!IsAlive())
|
||||
return DISABLED_MIRROR_TIMER;
|
||||
return 1 * IN_MILLISECONDS;
|
||||
return 2002;
|
||||
}
|
||||
default:
|
||||
return 0;
|
||||
@@ -920,7 +920,7 @@ void Player::HandleDrowning(uint32 time_diff)
|
||||
m_MirrorTimer[FIRE_TIMER] -= time_diff;
|
||||
if (m_MirrorTimer[FIRE_TIMER] < 0)
|
||||
{
|
||||
m_MirrorTimer[FIRE_TIMER] += 1 * IN_MILLISECONDS;
|
||||
m_MirrorTimer[FIRE_TIMER] += 2002;
|
||||
// Calculate and deal damage
|
||||
/// @todo: Check this formula
|
||||
uint32 damage = urand(600, 700);
|
||||
|
||||
@@ -29,6 +29,7 @@ enum eTexts
|
||||
SAY_SUMMON_SKELETONS = 2,
|
||||
SAY_FROST_TOMB_EMOTE = 4,
|
||||
SAY_DEATH = 5,
|
||||
SAY_KILL = 6,
|
||||
};
|
||||
|
||||
enum eNPCs
|
||||
@@ -140,14 +141,13 @@ public:
|
||||
pInstance->SetData(DATA_KELESETH, NOT_STARTED);
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* /*who*/) override {}
|
||||
|
||||
/*void KilledUnit(Unit * victim)
|
||||
void KilledUnit(Unit* victim) override
|
||||
{
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}*/
|
||||
if (victim->IsPlayer())
|
||||
{
|
||||
Talk(SAY_KILL);
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
|
||||
@@ -135,7 +135,7 @@ struct npc_raging_flames : public ScriptedAI
|
||||
if (TempSummon* summon = me->ToTempSummon())
|
||||
if (Creature* summoner = summon->GetSummonerCreatureBase())
|
||||
if (summoner->IsAIEnabled)
|
||||
if (Unit* target = summoner->AI()->SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true, false))
|
||||
if (Unit* target = summoner->AI()->SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false))
|
||||
me->AddThreat(target, 1000000.0f);
|
||||
}
|
||||
|
||||
|
||||
@@ -37,12 +37,19 @@ enum Spells
|
||||
SPELL_ARCANE_TORRENT = 36022,
|
||||
SPELL_MANA_TAP = 36021,
|
||||
SPELL_DOMINATION = 35280,
|
||||
SPELL_ETHEREAL_TELEPORT = 34427,
|
||||
SPELL_GREATER_INVISIBILITY = 34426,
|
||||
SPELL_SUMMON_NETHER_WRAITH_1 = 35285,
|
||||
SPELL_SUMMON_NETHER_WRAITH_2 = 35286,
|
||||
SPELL_SUMMON_NETHER_WRAITH_3 = 35287,
|
||||
SPELL_SUMMON_NETHER_WRAITH_4 = 35288,
|
||||
};
|
||||
|
||||
enum Misc
|
||||
{
|
||||
ACTION_BRIDGE_MOB_DEATH = 1, // Used by SAI
|
||||
};
|
||||
|
||||
struct boss_pathaleon_the_calculator : public BossAI
|
||||
{
|
||||
boss_pathaleon_the_calculator(Creature* creature) : BossAI(creature, DATA_PATHALEON_THE_CALCULATOR)
|
||||
@@ -53,6 +60,21 @@ struct boss_pathaleon_the_calculator : public BossAI
|
||||
});
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
|
||||
if (instance->GetPersistentData(DATA_BRIDGE_MOB_DEATH_COUNT) < 4)
|
||||
{
|
||||
DoCastSelf(SPELL_GREATER_INVISIBILITY);
|
||||
}
|
||||
}
|
||||
|
||||
bool CanAIAttack(Unit const* /*target*/) const override
|
||||
{
|
||||
return instance->GetPersistentData(DATA_BRIDGE_MOB_DEATH_COUNT) >= 4;
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
_JustEngagedWith();
|
||||
@@ -86,18 +108,48 @@ struct boss_pathaleon_the_calculator : public BossAI
|
||||
context.Repeat(15s);
|
||||
}).Schedule(25s, [this](TaskContext context)
|
||||
{
|
||||
Talk(SAY_DOMINATION);
|
||||
DoCastRandomTarget(SPELL_DOMINATION, 1, 50.0f);
|
||||
if (DoCastRandomTarget(SPELL_DOMINATION, 1, 50.0f) == SPELL_CAST_OK)
|
||||
{
|
||||
Talk(SAY_DOMINATION);
|
||||
}
|
||||
context.Repeat(30s);
|
||||
}).Schedule(8s, [this](TaskContext context)
|
||||
{
|
||||
DoCastAOE(SPELL_ARCANE_EXPLOSION);
|
||||
context.Repeat(12s);
|
||||
});
|
||||
|
||||
if (IsHeroic())
|
||||
{
|
||||
scheduler.Schedule(8s, [this](TaskContext context)
|
||||
{
|
||||
DoCastAOE(SPELL_ARCANE_EXPLOSION);
|
||||
context.Repeat(12s);
|
||||
});
|
||||
}
|
||||
|
||||
Talk(SAY_AGGRO);
|
||||
}
|
||||
|
||||
void DoAction(int32 actionId) override
|
||||
{
|
||||
if (actionId == ACTION_BRIDGE_MOB_DEATH)
|
||||
{
|
||||
uint8 mobCount = instance->GetPersistentData(DATA_BRIDGE_MOB_DEATH_COUNT);
|
||||
instance->StorePersistentData(DATA_BRIDGE_MOB_DEATH_COUNT, ++mobCount);
|
||||
|
||||
if (mobCount >= 4)
|
||||
{
|
||||
DoCastSelf(SPELL_ETHEREAL_TELEPORT);
|
||||
Talk(SAY_APPEAR);
|
||||
|
||||
scheduler.Schedule(2s, [this](TaskContext)
|
||||
{
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||
}).Schedule(25s, [this](TaskContext)
|
||||
{
|
||||
DoZoneInCombat();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim) override
|
||||
{
|
||||
if (victim->IsPlayer())
|
||||
|
||||
@@ -63,6 +63,7 @@ enum SpellIds
|
||||
|
||||
enum DataIndex
|
||||
{
|
||||
DATA_BRIDGE_MOB_DEATH_COUNT,
|
||||
MAX_DATA_INDEXES
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user