Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
This commit is contained in:
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
@echo off &setlocal EnableDelayedExpansion
|
||||||
|
set usage=Usage: %0 ^<-id ^| -hash^>
|
||||||
|
set errormsg=Error: No valid revision information found
|
||||||
|
|
||||||
|
set cmres=false
|
||||||
|
if "%1"=="-id" set cmres=true
|
||||||
|
if "%1"=="-hash" set cmres=true
|
||||||
|
if not "!cmres!"=="true" (
|
||||||
|
echo !usage!
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
for /F "tokens=2,3 delims=-" %%a IN ('"git describe --match=init --abbrev=12"') do (
|
||||||
|
set res=false
|
||||||
|
if %%c=="" set res=true
|
||||||
|
if %%d=="" set res=true
|
||||||
|
if "!res!"=="true" (
|
||||||
|
echo !errormsg!
|
||||||
|
exit /B 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%1"=="-id" (
|
||||||
|
echo %%a
|
||||||
|
) else if "%1"=="-hash" (
|
||||||
|
set str=%%b
|
||||||
|
set str=!str:~1!
|
||||||
|
echo !str!
|
||||||
|
)
|
||||||
|
)
|
||||||
Executable
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#/bin/bash
|
||||||
|
command=$(git describe --match init --abbrev=12)
|
||||||
|
IFS="-"
|
||||||
|
cmdarray=($command)
|
||||||
|
|
||||||
|
if [ "$1" != "-id" ] && [ "$1" != "-hash" ]; then
|
||||||
|
echo "Usage: $0 <-id | -hash>"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${cmdarray[1]}" == "" ] || [ "${cmdarray[2]}" == "" ]; then
|
||||||
|
echo "Error: No valid revision information found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "-id" ]; then
|
||||||
|
echo ${cmdarray[1]}
|
||||||
|
elif [ "$1" == "-hash" ]; then
|
||||||
|
echo ${cmdarray[2]:1}
|
||||||
|
fi
|
||||||
@@ -26878,6 +26878,11 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
|||||||
( 71900, 'spell_blood_queen_bloodbolt'),
|
( 71900, 'spell_blood_queen_bloodbolt'),
|
||||||
( 71901, 'spell_blood_queen_bloodbolt'),
|
( 71901, 'spell_blood_queen_bloodbolt'),
|
||||||
( 71902, 'spell_blood_queen_bloodbolt'),
|
( 71902, 'spell_blood_queen_bloodbolt'),
|
||||||
|
-- Trial of Crusader
|
||||||
|
( 66118, 'spell_gen_leeching_swarm'),
|
||||||
|
( 67630, 'spell_gen_leeching_swarm'),
|
||||||
|
( 68646, 'spell_gen_leeching_swarm'),
|
||||||
|
( 68647, 'spell_gen_leeching_swarm'),
|
||||||
-- Ulduar
|
-- Ulduar
|
||||||
( 62717, 'spell_ignis_slag_pot'),
|
( 62717, 'spell_ignis_slag_pot'),
|
||||||
( 63477, 'spell_ignis_slag_pot'),
|
( 63477, 'spell_ignis_slag_pot'),
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` IN ( 66118, 67630, 68646, 68647 );
|
||||||
|
INSERT INTO `spell_script_names` VALUES
|
||||||
|
(66118, 'spell_gen_leeching_swarm'),
|
||||||
|
(67630, 'spell_gen_leeching_swarm'),
|
||||||
|
(68646, 'spell_gen_leeching_swarm'),
|
||||||
|
(68647, 'spell_gen_leeching_swarm');
|
||||||
@@ -1848,6 +1848,7 @@ struct VehicleSeatEntry
|
|||||||
// 46-57 added in 3.1, floats mostly
|
// 46-57 added in 3.1, floats mostly
|
||||||
|
|
||||||
bool CanEnterOrExit() const { return m_flags & VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT; }
|
bool CanEnterOrExit() const { return m_flags & VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT; }
|
||||||
|
bool CanSwitchFromSeat() const { return m_flags & VEHICLE_SEAT_FLAG_B_CANSWITCH; }
|
||||||
bool IsUsableByAura() const { return m_flagsB & (VEHICLE_SEAT_FLAG_B_USABLE_FORCED | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3); }
|
bool IsUsableByAura() const { return m_flagsB & (VEHICLE_SEAT_FLAG_B_USABLE_FORCED | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3); }
|
||||||
bool IsEjectable() const { return m_flagsB & VEHICLE_SEAT_FLAG_B_EJECTABLE; }
|
bool IsEjectable() const { return m_flagsB & VEHICLE_SEAT_FLAG_B_EJECTABLE; }
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15017,8 +15017,8 @@ bool Player::SatisfyQuestExclusiveGroup(Quest const* qInfo, bool msg)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// alternative quest already started or completed
|
// alternative quest already started or completed - but don't check rewarded states if both are repeatable
|
||||||
if (m_QuestStatus.find(exclude_Id) != m_QuestStatus.end() || m_RewardedQuests.find(exclude_Id) != m_RewardedQuests.end())
|
if (m_QuestStatus.find(exclude_Id) != m_QuestStatus.end() || (!(qInfo->IsRepeatable() && Nquest->IsRepeatable()) && m_RewardedQuests.find(exclude_Id) != m_RewardedQuests.end()))
|
||||||
{
|
{
|
||||||
if (msg)
|
if (msg)
|
||||||
SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ);
|
SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ);
|
||||||
|
|||||||
@@ -1936,6 +1936,7 @@ class Player : public Unit, public GridObject<Player>
|
|||||||
bool isHonorOrXPTarget(Unit* pVictim);
|
bool isHonorOrXPTarget(Unit* pVictim);
|
||||||
|
|
||||||
bool GetsRecruitAFriendBonus(bool forXP);
|
bool GetsRecruitAFriendBonus(bool forXP);
|
||||||
|
uint8 GetGrantableLevels() { return GetByteValue(PLAYER_FIELD_BYTES, 1); }
|
||||||
|
|
||||||
ReputationMgr& GetReputationMgr() { return m_reputationMgr; }
|
ReputationMgr& GetReputationMgr() { return m_reputationMgr; }
|
||||||
ReputationMgr const& GetReputationMgr() const { return m_reputationMgr; }
|
ReputationMgr const& GetReputationMgr() const { return m_reputationMgr; }
|
||||||
|
|||||||
@@ -418,7 +418,7 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 M
|
|||||||
void Unit::SendMonsterMoveTransport(Unit *vehicleOwner)
|
void Unit::SendMonsterMoveTransport(Unit *vehicleOwner)
|
||||||
{
|
{
|
||||||
// TODO: Turn into BuildMonsterMoveTransport packet and allow certain variables (for npc movement aboard vehicles)
|
// TODO: Turn into BuildMonsterMoveTransport packet and allow certain variables (for npc movement aboard vehicles)
|
||||||
WorldPacket data(SMSG_MONSTER_MOVE_TRANSPORT, GetPackGUID().size()+vehicleOwner->GetPackGUID().size());
|
WorldPacket data(SMSG_MONSTER_MOVE_TRANSPORT, GetPackGUID().size()+vehicleOwner->GetPackGUID().size() + 47);
|
||||||
data.append(GetPackGUID());
|
data.append(GetPackGUID());
|
||||||
data.append(vehicleOwner->GetPackGUID());
|
data.append(vehicleOwner->GetPackGUID());
|
||||||
data << int8(GetTransSeat());
|
data << int8(GetTransSeat());
|
||||||
@@ -431,10 +431,10 @@ void Unit::SendMonsterMoveTransport(Unit *vehicleOwner)
|
|||||||
data << GetTransOffsetO(); // facing angle?
|
data << GetTransOffsetO(); // facing angle?
|
||||||
data << uint32(SPLINEFLAG_TRANSPORT);
|
data << uint32(SPLINEFLAG_TRANSPORT);
|
||||||
data << uint32(0); // move time
|
data << uint32(0); // move time
|
||||||
data << uint32(1);
|
data << uint32(1); // amount of waypoints
|
||||||
data << uint32(GetTransOffsetX());
|
data << GetTransOffsetX();
|
||||||
data << uint32(GetTransOffsetY());
|
data << GetTransOffsetY();
|
||||||
data << uint32(GetTransOffsetZ());
|
data << GetTransOffsetZ();
|
||||||
SendMessageToSet(&data, true);
|
SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6493,10 +6493,9 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (damage > 0)
|
else if (damage > 0)
|
||||||
{
|
|
||||||
triggered_spell_id = 58597;
|
triggered_spell_id = 58597;
|
||||||
|
|
||||||
target = this;
|
target = this;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Righteous Vengeance
|
// Righteous Vengeance
|
||||||
|
|||||||
@@ -1255,6 +1255,7 @@ class Unit : public WorldObject
|
|||||||
inline bool HealthAbovePct(int32 pct) const { return GetHealth() * (uint64)100 > GetMaxHealth() * (uint64)pct; }
|
inline bool HealthAbovePct(int32 pct) const { return GetHealth() * (uint64)100 > GetMaxHealth() * (uint64)pct; }
|
||||||
inline float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; }
|
inline float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; }
|
||||||
inline uint32 CountPctFromMaxHealth(int32 pct) const { return CalculatePctN(GetMaxHealth(), pct); }
|
inline uint32 CountPctFromMaxHealth(int32 pct) const { return CalculatePctN(GetMaxHealth(), pct); }
|
||||||
|
inline uint32 CountPctFromCurHealth(int32 pct) const { return CalculatePctN(GetHealth(), pct); }
|
||||||
|
|
||||||
void SetHealth(uint32 val);
|
void SetHealth(uint32 val);
|
||||||
void SetMaxHealth(uint32 val);
|
void SetMaxHealth(uint32 val);
|
||||||
|
|||||||
@@ -423,17 +423,6 @@ void Vehicle::RemovePassenger(Unit *unit)
|
|||||||
sScriptMgr->OnRemovePassenger(this, unit);
|
sScriptMgr->OnRemovePassenger(this, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vehicle::EjectPassenger(Unit* passenger, Unit* controller)
|
|
||||||
{
|
|
||||||
SeatMap::const_iterator m_SeatsItr;
|
|
||||||
for (m_SeatsItr = m_Seats.begin(); m_SeatsItr != m_Seats.end(); ++m_SeatsItr)
|
|
||||||
if (m_SeatsItr->second.passenger == passenger)
|
|
||||||
if (m_SeatsItr->second.seatInfo->IsEjectable())
|
|
||||||
return passenger->ExitVehicle();
|
|
||||||
else
|
|
||||||
sLog->outError("Player %u attempted to eject unit GUID "UI64FMTD" from non-ejectable seat.", controller->GetGUIDLow(), passenger->GetGUID());
|
|
||||||
}
|
|
||||||
|
|
||||||
void Vehicle::RelocatePassengers(float x, float y, float z, float ang)
|
void Vehicle::RelocatePassengers(float x, float y, float z, float ang)
|
||||||
{
|
{
|
||||||
Map *map = me->GetMap();
|
Map *map = me->GetMap();
|
||||||
@@ -443,6 +432,8 @@ void Vehicle::RelocatePassengers(float x, float y, float z, float ang)
|
|||||||
for (SeatMap::const_iterator itr = m_Seats.begin(); itr != m_Seats.end(); ++itr)
|
for (SeatMap::const_iterator itr = m_Seats.begin(); itr != m_Seats.end(); ++itr)
|
||||||
if (Unit *passenger = itr->second.passenger)
|
if (Unit *passenger = itr->second.passenger)
|
||||||
{
|
{
|
||||||
|
ASSERT(passenger->IsInWorld());
|
||||||
|
|
||||||
float px = x + passenger->m_movementInfo.t_pos.m_positionX;
|
float px = x + passenger->m_movementInfo.t_pos.m_positionX;
|
||||||
float py = y + passenger->m_movementInfo.t_pos.m_positionY;
|
float py = y + passenger->m_movementInfo.t_pos.m_positionY;
|
||||||
float pz = z + passenger->m_movementInfo.t_pos.m_positionZ;
|
float pz = z + passenger->m_movementInfo.t_pos.m_positionZ;
|
||||||
|
|||||||
@@ -60,6 +60,13 @@ MailSender::MailSender(AuctionEntry* sender)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MailSender::MailSender(Player* sender)
|
||||||
|
{
|
||||||
|
m_messageType = MAIL_NORMAL;
|
||||||
|
m_stationery = sender->isGameMaster() ? MAIL_STATIONERY_GM : MAIL_STATIONERY_DEFAULT;
|
||||||
|
m_senderId = sender->GetGUIDLow();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
MailReceiver::MailReceiver(Player* receiver) : m_receiver(receiver), m_receiver_lowguid(receiver->GetGUIDLow())
|
MailReceiver::MailReceiver(Player* receiver) : m_receiver(receiver), m_receiver_lowguid(receiver->GetGUIDLow())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ class MailSender
|
|||||||
}
|
}
|
||||||
MailSender(Object* sender, MailStationery stationery = MAIL_STATIONERY_DEFAULT);
|
MailSender(Object* sender, MailStationery stationery = MAIL_STATIONERY_DEFAULT);
|
||||||
MailSender(AuctionEntry* sender);
|
MailSender(AuctionEntry* sender);
|
||||||
|
MailSender(Player* sender);
|
||||||
public: // Accessors
|
public: // Accessors
|
||||||
MailMessageType GetMailMessageType() const { return m_messageType; }
|
MailMessageType GetMailMessageType() const { return m_messageType; }
|
||||||
uint32 GetSenderId() const { return m_senderId; }
|
uint32 GetSenderId() const { return m_senderId; }
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data)
|
|||||||
draft
|
draft
|
||||||
.AddMoney(money)
|
.AddMoney(money)
|
||||||
.AddCOD(COD)
|
.AddCOD(COD)
|
||||||
.SendMailTo(trans, MailReceiver(receive, GUID_LOPART(rc)), pl, body.empty() ? MAIL_CHECK_MASK_COPIED : MAIL_CHECK_MASK_HAS_BODY, deliver_delay);
|
.SendMailTo(trans, MailReceiver(receive, GUID_LOPART(rc)), MailSender(pl), body.empty() ? MAIL_CHECK_MASK_COPIED : MAIL_CHECK_MASK_HAS_BODY, deliver_delay);
|
||||||
|
|
||||||
pl->SaveInventoryAndGoldToDB(trans);
|
pl->SaveInventoryAndGoldToDB(trans);
|
||||||
CharacterDatabase.CommitTransaction(trans);
|
CharacterDatabase.CommitTransaction(trans);
|
||||||
|
|||||||
@@ -548,6 +548,14 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
|
|||||||
if (!vehicle_base)
|
if (!vehicle_base)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
VehicleSeatEntry const* seat = GetPlayer()->GetVehicle()->GetSeatForPassenger(GetPlayer());
|
||||||
|
if (!seat->CanSwitchFromSeat())
|
||||||
|
{
|
||||||
|
sLog->outError("HandleChangeSeatsOnControlledVehicle, Opcode: %u, Player %u tried to switch seats but current seatflags %u don't permit that.",
|
||||||
|
recv_data.GetOpcode(), GetPlayer()->GetGUIDLow(), seat->m_flags);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (recv_data.GetOpcode())
|
switch (recv_data.GetOpcode())
|
||||||
{
|
{
|
||||||
case CMSG_REQUEST_VEHICLE_PREV_SEAT:
|
case CMSG_REQUEST_VEHICLE_PREV_SEAT:
|
||||||
@@ -635,6 +643,8 @@ void WorldSession::HandleEjectPassenger(WorldPacket &data)
|
|||||||
VehicleSeatEntry const* seat = vehicle->GetSeatForPassenger(plr);
|
VehicleSeatEntry const* seat = vehicle->GetSeatForPassenger(plr);
|
||||||
if (seat->IsEjectable())
|
if (seat->IsEjectable())
|
||||||
plr->ExitVehicle();
|
plr->ExitVehicle();
|
||||||
|
else
|
||||||
|
sLog->outError("Player %u attempted to eject player %u from non-ejectable seat.", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sLog->outError("Player %u tried to eject player %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
|
sLog->outError("Player %u tried to eject player %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
|
||||||
@@ -650,6 +660,8 @@ void WorldSession::HandleEjectPassenger(WorldPacket &data)
|
|||||||
unit->ExitVehicle();
|
unit->ExitVehicle();
|
||||||
unit->ToCreature()->ForcedDespawn(1000);
|
unit->ToCreature()->ForcedDespawn(1000);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
sLog->outError("Player %u attempted to eject creature GUID "UI64FMTD" from non-ejectable seat.", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sLog->outError("Player %u tried to eject creature guid %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
|
sLog->outError("Player %u tried to eject creature guid %u from vehicle, but the latter was not found in world!", GetPlayer()->GetGUIDLow(), GUID_LOPART(guid));
|
||||||
|
|||||||
@@ -2362,9 +2362,15 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
|
|||||||
case 65920:
|
case 65920:
|
||||||
case 65922:
|
case 65922:
|
||||||
case 65923:
|
case 65923:
|
||||||
if (caster->HasAura(66193))
|
|
||||||
{
|
{
|
||||||
if (Unit *permafrostCaster = caster->GetAura(66193)->GetCaster())
|
Unit *permafrostCaster = NULL;
|
||||||
|
if (caster->HasAura(66193)) permafrostCaster = caster->GetAura(66193)->GetCaster();
|
||||||
|
if (caster->HasAura(67855)) permafrostCaster = caster->GetAura(67855)->GetCaster();
|
||||||
|
if (caster->HasAura(67856)) permafrostCaster = caster->GetAura(67856)->GetCaster();
|
||||||
|
if (caster->HasAura(67857)) permafrostCaster = caster->GetAura(67857)->GetCaster();
|
||||||
|
|
||||||
|
if (permafrostCaster)
|
||||||
|
{
|
||||||
if (Creature *permafrostCasterAsCreature = permafrostCaster->ToCreature())
|
if (Creature *permafrostCasterAsCreature = permafrostCaster->ToCreature())
|
||||||
permafrostCasterAsCreature->ForcedDespawn(3000);
|
permafrostCasterAsCreature->ForcedDespawn(3000);
|
||||||
|
|
||||||
@@ -2373,6 +2379,7 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
|
|||||||
if (Creature *casterAsCreature = caster->ToCreature())
|
if (Creature *casterAsCreature = caster->ToCreature())
|
||||||
casterAsCreature->DisappearAndDie();
|
casterAsCreature->DisappearAndDie();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
// Mana Tide
|
// Mana Tide
|
||||||
case 16191:
|
case 16191:
|
||||||
@@ -2387,7 +2394,7 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
|
|||||||
case 54362:
|
case 54362:
|
||||||
// Slime Pool (Dreadscale & Acidmaw)
|
// Slime Pool (Dreadscale & Acidmaw)
|
||||||
case 66882:
|
case 66882:
|
||||||
target->CastCustomSpell(triggerSpellId, SPELLVALUE_RADIUS_MOD, (int32)((((float)m_tickNumber / 60) * 0.9f + 0.1f) * 10000), NULL, true, NULL, this);
|
target->CastCustomSpell(triggerSpellId, SPELLVALUE_RADIUS_MOD, (int32)((((float)m_tickNumber / 60) * 0.9f + 0.1f) * 10000 * 2 / 3), NULL, true, NULL, this);
|
||||||
return;
|
return;
|
||||||
// Beacon of Light
|
// Beacon of Light
|
||||||
case 53563:
|
case 53563:
|
||||||
|
|||||||
+2
-2
@@ -222,7 +222,7 @@ public:
|
|||||||
|
|
||||||
void JustSummoned(Creature* pSummoned)
|
void JustSummoned(Creature* pSummoned)
|
||||||
{
|
{
|
||||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM);
|
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true);
|
||||||
switch (pSummoned->GetEntry())
|
switch (pSummoned->GetEntry())
|
||||||
{
|
{
|
||||||
case NPC_BURROW:
|
case NPC_BURROW:
|
||||||
@@ -658,7 +658,7 @@ public:
|
|||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
// For an unknown reason this npc isn't recognize the Aura of Permafrost with this flags =/
|
// For an unknown reason this npc isn't recognize the Aura of Permafrost with this flags =/
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||||
m_uiTargetGUID = 0;
|
m_uiTargetGUID = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -601,7 +601,7 @@ public:
|
|||||||
else
|
else
|
||||||
if (!me->HasAura(AURA_SATED))
|
if (!me->HasAura(AURA_SATED))
|
||||||
DoCastAOE(SPELL_BLOODLUST);
|
DoCastAOE(SPELL_BLOODLUST);
|
||||||
m_uiHeroismOrBloodlustTimer = urand(30*IN_MILLISECONDS, 60*IN_MILLISECONDS);
|
m_uiHeroismOrBloodlustTimer = 300*IN_MILLISECONDS;
|
||||||
} else m_uiHeroismOrBloodlustTimer -= uiDiff;
|
} else m_uiHeroismOrBloodlustTimer -= uiDiff;
|
||||||
|
|
||||||
if (m_uiHexTimer <= uiDiff)
|
if (m_uiHexTimer <= uiDiff)
|
||||||
|
|||||||
+4
-4
@@ -209,7 +209,7 @@ public:
|
|||||||
|
|
||||||
if (m_uiIncinerateFleshTimer <= uiDiff)
|
if (m_uiIncinerateFleshTimer <= uiDiff)
|
||||||
{
|
{
|
||||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1))
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 0, true))
|
||||||
{
|
{
|
||||||
DoScriptText(EMOTE_INCINERATE, me, pTarget);
|
DoScriptText(EMOTE_INCINERATE, me, pTarget);
|
||||||
DoScriptText(SAY_INCINERATE, me);
|
DoScriptText(SAY_INCINERATE, me);
|
||||||
@@ -226,7 +226,7 @@ public:
|
|||||||
|
|
||||||
if (m_uiLegionFlameTimer <= uiDiff)
|
if (m_uiLegionFlameTimer <= uiDiff)
|
||||||
{
|
{
|
||||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1))
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 0, true))
|
||||||
{
|
{
|
||||||
DoScriptText(EMOTE_LEGION_FLAME, me, pTarget);
|
DoScriptText(EMOTE_LEGION_FLAME, me, pTarget);
|
||||||
DoCast(pTarget, SPELL_LEGION_FLAME);
|
DoCast(pTarget, SPELL_LEGION_FLAME);
|
||||||
@@ -534,14 +534,14 @@ public:
|
|||||||
|
|
||||||
if (m_uiSpinningStrikeTimer <= uiDiff)
|
if (m_uiSpinningStrikeTimer <= uiDiff)
|
||||||
{
|
{
|
||||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
|
||||||
DoCast(pTarget, SPELL_SPINNING_STRIKE);
|
DoCast(pTarget, SPELL_SPINNING_STRIKE);
|
||||||
m_uiSpinningStrikeTimer = 30*IN_MILLISECONDS;
|
m_uiSpinningStrikeTimer = 30*IN_MILLISECONDS;
|
||||||
} else m_uiSpinningStrikeTimer -= uiDiff;
|
} else m_uiSpinningStrikeTimer -= uiDiff;
|
||||||
|
|
||||||
if (IsHeroic() && m_uiMistressKissTimer <= uiDiff)
|
if (IsHeroic() && m_uiMistressKissTimer <= uiDiff)
|
||||||
{
|
{
|
||||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
|
||||||
DoCast(pTarget, SPELL_MISTRESS_KISS);
|
DoCast(pTarget, SPELL_MISTRESS_KISS);
|
||||||
m_uiMistressKissTimer = 30*IN_MILLISECONDS;
|
m_uiMistressKissTimer = 30*IN_MILLISECONDS;
|
||||||
} else m_uiMistressKissTimer -= uiDiff;
|
} else m_uiMistressKissTimer -= uiDiff;
|
||||||
|
|||||||
+1
-1
@@ -843,7 +843,7 @@ public:
|
|||||||
m_uiStage = 2;
|
m_uiStage = 2;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
|
||||||
{
|
{
|
||||||
m_uiTrampleTargetGUID = pTarget->GetGUID();
|
m_uiTrampleTargetGUID = pTarget->GetGUID();
|
||||||
me->SetUInt64Value(UNIT_FIELD_TARGET, m_uiTrampleTargetGUID);
|
me->SetUInt64Value(UNIT_FIELD_TARGET, m_uiTrampleTargetGUID);
|
||||||
|
|||||||
+1
-1
@@ -389,7 +389,7 @@ struct boss_twin_baseAI : public ScriptedAI
|
|||||||
if (IsHeroic() && m_uiTouchTimer <= uiDiff)
|
if (IsHeroic() && m_uiTouchTimer <= uiDiff)
|
||||||
{
|
{
|
||||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true, m_uiOtherEssenceSpellId))
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true, m_uiOtherEssenceSpellId))
|
||||||
DoCast(pTarget, m_uiTouchSpellId);
|
me->CastCustomSpell(m_uiTouchSpellId, SPELLVALUE_MAX_TARGETS, 1, pTarget, false);
|
||||||
m_uiTouchTimer = urand(10, 15)*IN_MILLISECONDS;
|
m_uiTouchTimer = urand(10, 15)*IN_MILLISECONDS;
|
||||||
} m_uiTouchTimer -= uiDiff;
|
} m_uiTouchTimer -= uiDiff;
|
||||||
|
|
||||||
|
|||||||
@@ -281,10 +281,10 @@ public:
|
|||||||
|
|
||||||
void HandleEffectPeriodic(AuraEffect const * aurEff)
|
void HandleEffectPeriodic(AuraEffect const * aurEff)
|
||||||
{
|
{
|
||||||
Unit* pTarget = GetTarget();
|
if (Unit* pTarget = GetTarget())
|
||||||
if (Unit* pCaster = GetCaster())
|
if (Unit* pCaster = GetCaster())
|
||||||
{
|
{
|
||||||
int32 lifeLeeched = pTarget->CountPctFromMaxHealth(aurEff->GetAmount());
|
int32 lifeLeeched = pTarget->CountPctFromCurHealth(aurEff->GetAmount());
|
||||||
if (lifeLeeched < 250)
|
if (lifeLeeched < 250)
|
||||||
lifeLeeched = 250;
|
lifeLeeched = 250;
|
||||||
// Damage
|
// Damage
|
||||||
|
|||||||
Reference in New Issue
Block a user