Merge pull request #1 from TrinityCore/master
This commit is contained in:
@@ -498,10 +498,9 @@ namespace VMAP
|
||||
}
|
||||
|
||||
char ident[8];
|
||||
ident[7] = 0;
|
||||
int readOperation = 0;
|
||||
|
||||
READ_OR_RETURN(&ident, 7);
|
||||
|
||||
READ_OR_RETURN(&ident, 8);
|
||||
CMP_OR_RETURN(ident, RAW_VMAP_MAGIC);
|
||||
|
||||
// we have to read one int. This is needed during the export and we have to skip it here
|
||||
@@ -517,7 +516,7 @@ namespace VMAP
|
||||
for (uint32 g = 0; g < groups && succeed; ++g)
|
||||
succeed = groupsArray[g].Read(rf);
|
||||
|
||||
if (!succeed) /// rf will be freed inside Read if the function had any errors.
|
||||
if (succeed) /// rf will be freed inside Read if the function had any errors.
|
||||
fclose(rf);
|
||||
return succeed;
|
||||
}
|
||||
|
||||
@@ -1033,7 +1033,7 @@ void BattlegroundMgr::ScheduleQueueUpdate(uint32 arenaMatchmakerRating, uint8 ar
|
||||
{
|
||||
//This method must be atomic, @todo add mutex
|
||||
//we will use only 1 number created of bgTypeId and bracket_id
|
||||
uint64 const scheduleId = ((uint64)arenaMatchmakerRating << 32) | (arenaType << 24) | (bgQueueTypeId << 16) | (bgTypeId << 8) | bracket_id;
|
||||
uint64 const scheduleId = ((uint64)arenaMatchmakerRating << 32) | (uint32(arenaType) << 24) | (bgQueueTypeId << 16) | (bgTypeId << 8) | bracket_id;
|
||||
if (std::find(m_QueueUpdateScheduler.begin(), m_QueueUpdateScheduler.end(), scheduleId) == m_QueueUpdateScheduler.end())
|
||||
m_QueueUpdateScheduler.push_back(scheduleId);
|
||||
}
|
||||
|
||||
@@ -159,20 +159,20 @@ void CalendarMgr::RemoveEvent(uint64 eventId, uint64 remover)
|
||||
PreparedStatement* stmt;
|
||||
MailDraft mail(calendarEvent->BuildCalendarMailSubject(remover), calendarEvent->BuildCalendarMailBody());
|
||||
|
||||
CalendarInviteStore::iterator itr = _invites[eventId].begin();
|
||||
while (itr != _invites[eventId].end())
|
||||
CalendarInviteStore& eventInvites = _invites[eventId];
|
||||
for (size_t i = 0; i < eventInvites.size(); ++i)
|
||||
{
|
||||
CalendarInvite* invite = eventInvites[i];
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_INVITE);
|
||||
stmt->setUInt64(0, (*itr)->GetInviteId());
|
||||
stmt->setUInt64(0, invite->GetInviteId());
|
||||
trans->Append(stmt);
|
||||
|
||||
// guild events only? check invite status here?
|
||||
// When an event is deleted, all invited (accepted/declined? - verify) guildies are notified via in-game mail. (wowwiki)
|
||||
if (remover && (*itr)->GetInviteeGUID() != remover)
|
||||
mail.SendMailTo(trans, MailReceiver((*itr)->GetInviteeGUID()), calendarEvent, MAIL_CHECK_MASK_COPIED);
|
||||
if (remover && invite->GetInviteeGUID() != remover)
|
||||
mail.SendMailTo(trans, MailReceiver(invite->GetInviteeGUID()), calendarEvent, MAIL_CHECK_MASK_COPIED);
|
||||
|
||||
delete *itr;
|
||||
_invites[eventId].erase(itr);
|
||||
delete invite;
|
||||
}
|
||||
|
||||
_invites.erase(eventId);
|
||||
|
||||
@@ -4702,12 +4702,6 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||
charDelete_method = CHAR_DELETE_REMOVE;
|
||||
else if (CharacterNameData const* nameData = sWorld->GetCharacterNameData(guid)) // To avoid a query, we select loaded data. If it doesn't exist, return.
|
||||
{
|
||||
if (!nameData)
|
||||
{
|
||||
TC_LOG_ERROR(LOG_FILTER_PLAYER, "Cannot find CharacterNameData entry for player %u from account %u. Could not delete character.", guid, accountId);
|
||||
return;
|
||||
}
|
||||
|
||||
// Define the required variables
|
||||
uint32 charDelete_minLvl = sWorld->getIntConfig(nameData->m_class != CLASS_DEATH_KNIGHT ? CONFIG_CHARDELETE_MIN_LEVEL : CONFIG_CHARDELETE_HEROIC_MIN_LEVEL);
|
||||
|
||||
|
||||
@@ -3342,7 +3342,7 @@ void Spell::handle_immediate()
|
||||
if (m_spellInfo->IsChanneled())
|
||||
{
|
||||
int32 duration = m_spellInfo->GetDuration();
|
||||
if (duration)
|
||||
if (duration > 0)
|
||||
{
|
||||
// First mod_duration then haste - see Missile Barrage
|
||||
// Apply duration mod
|
||||
|
||||
@@ -2167,7 +2167,7 @@ namespace Trinity
|
||||
{
|
||||
WorldPacket* data = new WorldPacket();
|
||||
|
||||
uint32 lineLength = (line ? strlen(line) : 0) + 1;
|
||||
uint32 lineLength = strlen(line) + 1;
|
||||
|
||||
data->Initialize(SMSG_MESSAGECHAT, 100); // guess size
|
||||
*data << uint8(CHAT_MSG_SYSTEM);
|
||||
|
||||
@@ -962,12 +962,7 @@ public:
|
||||
|
||||
uint32 id = atoi((char*)args);
|
||||
|
||||
bool found = false;
|
||||
uint32 count = 0;
|
||||
uint32 maxResults = 1;
|
||||
|
||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id);
|
||||
if (spellInfo)
|
||||
if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id))
|
||||
{
|
||||
int locale = handler->GetSessionDbcLocale();
|
||||
std::string name = spellInfo->SpellName[locale];
|
||||
@@ -977,14 +972,6 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
if (locale < TOTAL_LOCALES)
|
||||
{
|
||||
if (maxResults && count++ == maxResults)
|
||||
{
|
||||
handler->PSendSysMessage(LANG_COMMAND_LOOKUP_MAX_RESULTS, maxResults);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool known = target && target->HasSpell(id);
|
||||
bool learn = (spellInfo->Effects[0].Effect == SPELL_EFFECT_LEARN_SPELL);
|
||||
|
||||
@@ -1028,13 +1015,8 @@ public:
|
||||
ss << handler->GetTrinityString(LANG_ACTIVE);
|
||||
|
||||
handler->SendSysMessage(ss.str().c_str());
|
||||
|
||||
if (!found)
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
else
|
||||
handler->SendSysMessage(LANG_COMMAND_NOSPELLFOUND);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -1071,9 +1071,7 @@ public:
|
||||
Player* player = handler->GetSession()->GetPlayer();
|
||||
uint32 zone_id = player->GetZoneId();
|
||||
|
||||
WorldSafeLocsEntry const* graveyard = sObjectMgr->GetClosestGraveYard(
|
||||
player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), team);
|
||||
|
||||
WorldSafeLocsEntry const* graveyard = sObjectMgr->GetClosestGraveYard(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), team);
|
||||
if (graveyard)
|
||||
{
|
||||
uint32 graveyardId = graveyard->ID;
|
||||
@@ -1103,14 +1101,12 @@ public:
|
||||
{
|
||||
std::string team_name;
|
||||
|
||||
if (team == 0)
|
||||
team_name = handler->GetTrinityString(LANG_COMMAND_GRAVEYARD_ANY);
|
||||
else if (team == HORDE)
|
||||
if (team == HORDE)
|
||||
team_name = handler->GetTrinityString(LANG_COMMAND_GRAVEYARD_HORDE);
|
||||
else if (team == ALLIANCE)
|
||||
team_name = handler->GetTrinityString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
|
||||
|
||||
if (team == ~uint32(0))
|
||||
if (!team)
|
||||
handler->PSendSysMessage(LANG_COMMAND_ZONENOGRAVEYARDS, zone_id);
|
||||
else
|
||||
handler->PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id, team_name.c_str());
|
||||
@@ -2144,7 +2140,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32 school = schoolStr ? atoi((char*)schoolStr) : SPELL_SCHOOL_NORMAL;
|
||||
uint32 school = atoi((char*)schoolStr);
|
||||
if (school >= MAX_SPELL_SCHOOL)
|
||||
return false;
|
||||
|
||||
|
||||
@@ -309,24 +309,14 @@ public:
|
||||
|
||||
if (!pfactionid)
|
||||
{
|
||||
if (target)
|
||||
{
|
||||
uint32 factionid = target->getFaction();
|
||||
uint32 flag = target->GetUInt32Value(UNIT_FIELD_FLAGS);
|
||||
uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
|
||||
uint32 dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
||||
handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUIDLow(), factionid, flag, npcflag, dyflag);
|
||||
}
|
||||
uint32 factionid = target->getFaction();
|
||||
uint32 flag = target->GetUInt32Value(UNIT_FIELD_FLAGS);
|
||||
uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
|
||||
uint32 dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
||||
handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUIDLow(), factionid, flag, npcflag, dyflag);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!target)
|
||||
{
|
||||
handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 factionid = atoi(pfactionid);
|
||||
uint32 flag;
|
||||
|
||||
@@ -340,7 +330,7 @@ public:
|
||||
|
||||
uint32 npcflag;
|
||||
if (!pnpcflag)
|
||||
npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
|
||||
npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
|
||||
else
|
||||
npcflag = atoi(pnpcflag);
|
||||
|
||||
@@ -348,7 +338,7 @@ public:
|
||||
|
||||
uint32 dyflag;
|
||||
if (!pdyflag)
|
||||
dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
||||
dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
||||
else
|
||||
dyflag = atoi(pdyflag);
|
||||
|
||||
|
||||
@@ -252,7 +252,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 vendor_entry = vendor ? vendor->GetEntry() : 0;
|
||||
uint32 vendor_entry = vendor->GetEntry();
|
||||
|
||||
if (!sObjectMgr->IsVendorItemValid(vendor_entry, itemId, maxcount, incrtime, extendedcost, handler->GetSession()->GetPlayer()))
|
||||
{
|
||||
|
||||
@@ -146,49 +146,51 @@ class boss_kirtonos_the_herald : public CreatureScript
|
||||
{
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent() && !UpdateVictim())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case INTRO_1:
|
||||
me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false);
|
||||
break;
|
||||
case INTRO_2:
|
||||
me->GetMotionMaster()->MovePoint(0, PosMove[0]);
|
||||
events.ScheduleEvent(INTRO_3, 1000);
|
||||
break;
|
||||
case INTRO_3:
|
||||
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
|
||||
gate->SetGoState(GO_STATE_READY);
|
||||
me->SetFacingTo(0.01745329f);
|
||||
events.ScheduleEvent(INTRO_4, 3000);
|
||||
break;
|
||||
case INTRO_4:
|
||||
if (GameObject* brazier = me->GetMap()->GetGameObject(instance->GetData64(GO_BRAZIER_OF_THE_HERALD)))
|
||||
brazier->SetGoState(GO_STATE_READY);
|
||||
me->SetWalk(true);
|
||||
me->SetDisableGravity(false);
|
||||
DoCast(me, SPELL_KIRTONOS_TRANSFORM);
|
||||
me->SetCanFly(false);
|
||||
events.ScheduleEvent(INTRO_5, 1000);
|
||||
break;
|
||||
case INTRO_5:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
events.ScheduleEvent(INTRO_6, 5000);
|
||||
break;
|
||||
case INTRO_6:
|
||||
me->GetMotionMaster()->MovePoint(0, PosMove[1]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!UpdateVictim())
|
||||
{
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case INTRO_1:
|
||||
me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false);
|
||||
break;
|
||||
case INTRO_2:
|
||||
me->GetMotionMaster()->MovePoint(0, PosMove[0]);
|
||||
events.ScheduleEvent(INTRO_3, 1000);
|
||||
break;
|
||||
case INTRO_3:
|
||||
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_KIRTONOS)))
|
||||
gate->SetGoState(GO_STATE_READY);
|
||||
me->SetFacingTo(0.01745329f);
|
||||
events.ScheduleEvent(INTRO_4, 3000);
|
||||
break;
|
||||
case INTRO_4:
|
||||
if (GameObject* brazier = me->GetMap()->GetGameObject(instance->GetData64(GO_BRAZIER_OF_THE_HERALD)))
|
||||
brazier->SetGoState(GO_STATE_READY);
|
||||
me->SetWalk(true);
|
||||
me->SetDisableGravity(false);
|
||||
DoCast(me, SPELL_KIRTONOS_TRANSFORM);
|
||||
me->SetCanFly(false);
|
||||
events.ScheduleEvent(INTRO_5, 1000);
|
||||
break;
|
||||
case INTRO_5:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
events.ScheduleEvent(INTRO_6, 5000);
|
||||
break;
|
||||
case INTRO_6:
|
||||
me->GetMotionMaster()->MovePoint(0, PosMove[1]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
@@ -36,9 +36,9 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_FROSTBREATH = 0,
|
||||
EVENT_MASSIVEGEYSER = 1,
|
||||
EVENT_SLAM = 2
|
||||
EVENT_FROSTBREATH = 1,
|
||||
EVENT_MASSIVEGEYSER = 2,
|
||||
EVENT_SLAM = 3
|
||||
};
|
||||
|
||||
class boss_gahzranka : public CreatureScript // gahzranka
|
||||
|
||||
@@ -35,8 +35,8 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_AVATAR = 0,
|
||||
EVENT_GROUND_TREMOR = 1
|
||||
EVENT_AVATAR = 1,
|
||||
EVENT_GROUND_TREMOR = 2
|
||||
};
|
||||
|
||||
class boss_grilek : public CreatureScript // grilek
|
||||
|
||||
@@ -51,17 +51,17 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_BLOOD_SIPHON = 0,
|
||||
EVENT_CORRUPTED_BLOOD = 1,
|
||||
EVENT_CAUSE_INSANITY = 2, // Spell needs scripting. Event disabled
|
||||
EVENT_WILL_OF_HAKKAR = 3,
|
||||
EVENT_ENRAGE = 4,
|
||||
EVENT_BLOOD_SIPHON = 1,
|
||||
EVENT_CORRUPTED_BLOOD = 2,
|
||||
EVENT_CAUSE_INSANITY = 3, // Spell needs scripting. Event disabled
|
||||
EVENT_WILL_OF_HAKKAR = 4,
|
||||
EVENT_ENRAGE = 5,
|
||||
// The Aspects of all High Priests events
|
||||
EVENT_ASPECT_OF_JEKLIK = 5,
|
||||
EVENT_ASPECT_OF_VENOXIS = 6,
|
||||
EVENT_ASPECT_OF_MARLI = 7,
|
||||
EVENT_ASPECT_OF_THEKAL = 8,
|
||||
EVENT_ASPECT_OF_ARLOKK = 9
|
||||
EVENT_ASPECT_OF_JEKLIK = 6,
|
||||
EVENT_ASPECT_OF_VENOXIS = 7,
|
||||
EVENT_ASPECT_OF_MARLI = 8,
|
||||
EVENT_ASPECT_OF_THEKAL = 9,
|
||||
EVENT_ASPECT_OF_ARLOKK = 10
|
||||
};
|
||||
|
||||
class boss_hakkar : public CreatureScript
|
||||
|
||||
@@ -35,9 +35,9 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_MANABURN = 0,
|
||||
EVENT_SLEEP = 1,
|
||||
EVENT_ILLUSIONS = 2
|
||||
EVENT_MANABURN = 1,
|
||||
EVENT_SLEEP = 2,
|
||||
EVENT_ILLUSIONS = 3
|
||||
};
|
||||
|
||||
class boss_hazzarah : public CreatureScript
|
||||
|
||||
@@ -48,11 +48,11 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_BRAINWASHTOTEM = 0,
|
||||
EVENT_POWERFULLHEALINGWARD = 1,
|
||||
EVENT_HEX = 2,
|
||||
EVENT_DELUSIONSOFJINDO = 3,
|
||||
EVENT_TELEPORT = 4
|
||||
EVENT_BRAINWASHTOTEM = 1,
|
||||
EVENT_POWERFULLHEALINGWARD = 2,
|
||||
EVENT_HEX = 3,
|
||||
EVENT_DELUSIONSOFJINDO = 4,
|
||||
EVENT_TELEPORT = 5
|
||||
};
|
||||
|
||||
Position const TeleportLoc = {-11583.7783f, -1249.4278f, 77.5471f, 4.745f};
|
||||
|
||||
@@ -48,13 +48,13 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_SPAWN_START_SPIDERS = 0, // Phase 1
|
||||
EVENT_POISON_VOLLEY = 1, // Phase All
|
||||
EVENT_SPAWN_SPIDER = 2, // Phase All
|
||||
EVENT_CHARGE_PLAYER = 3, // Phase 3
|
||||
EVENT_ASPECT_OF_MARLI = 4, // Phase 2
|
||||
EVENT_TRANSFORM = 5, // Phase 2
|
||||
EVENT_TRANSFORM_BACK = 6 // Phase 3
|
||||
EVENT_SPAWN_START_SPIDERS = 1, // Phase 1
|
||||
EVENT_POISON_VOLLEY = 2, // Phase All
|
||||
EVENT_SPAWN_SPIDER = 3, // Phase All
|
||||
EVENT_CHARGE_PLAYER = 4, // Phase 3
|
||||
EVENT_ASPECT_OF_MARLI = 5, // Phase 2
|
||||
EVENT_TRANSFORM = 6, // Phase 2
|
||||
EVENT_TRANSFORM_BACK = 7 // Phase 3
|
||||
};
|
||||
|
||||
enum Phases
|
||||
@@ -153,57 +153,54 @@ class boss_marli : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_SPAWN_SPIDER, urand(12000, 17000));
|
||||
break;
|
||||
case EVENT_TRANSFORM:
|
||||
{
|
||||
Talk(SAY_TRANSFORM);
|
||||
DoCast(me, SPELL_SPIDER_FORM);
|
||||
const CreatureTemplate* cinfo = me->GetCreatureTemplate();
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35)));
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35)));
|
||||
me->UpdateDamagePhysical(BASE_ATTACK);
|
||||
DoCast(me->getVictim(), SPELL_ENVOLWINGWEB);
|
||||
if (DoGetThreat(me->getVictim()))
|
||||
DoModifyThreatPercent(me->getVictim(), -100);
|
||||
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 1500, 0, PHASE_THREE);
|
||||
events.ScheduleEvent(EVENT_TRANSFORM_BACK, 25000, 0, PHASE_THREE);
|
||||
events.SetPhase(PHASE_THREE);
|
||||
break;
|
||||
}
|
||||
{
|
||||
Talk(SAY_TRANSFORM);
|
||||
DoCast(me, SPELL_SPIDER_FORM);
|
||||
CreatureTemplate const* cinfo = me->GetCreatureTemplate();
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35)));
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35)));
|
||||
me->UpdateDamagePhysical(BASE_ATTACK);
|
||||
DoCast(me->getVictim(), SPELL_ENVOLWINGWEB);
|
||||
if (DoGetThreat(me->getVictim()))
|
||||
DoModifyThreatPercent(me->getVictim(), -100);
|
||||
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 1500, 0, PHASE_THREE);
|
||||
events.ScheduleEvent(EVENT_TRANSFORM_BACK, 25000, 0, PHASE_THREE);
|
||||
events.SetPhase(PHASE_THREE);
|
||||
break;
|
||||
}
|
||||
case EVENT_CHARGE_PLAYER:
|
||||
{
|
||||
Unit* target = NULL;
|
||||
int i = 0;
|
||||
while (i++ < 3) // max 3 tries to get a random target with power_mana
|
||||
{
|
||||
Unit* target = NULL;
|
||||
int i = 0;
|
||||
while (i < 3) // max 3 tries to get a random target with power_mana
|
||||
{
|
||||
++i;
|
||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); // not aggro leader
|
||||
if (target && target->getPowerType() == POWER_MANA)
|
||||
i = 3;
|
||||
}
|
||||
if (target)
|
||||
{
|
||||
DoCast(target, SPELL_CHARGE);
|
||||
//me->SetPosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
||||
//me->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true, 1);
|
||||
AttackStart(target);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 8000, 0, PHASE_THREE);
|
||||
break;
|
||||
target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); // not aggro leader
|
||||
if (target && target->getPowerType() == POWER_MANA)
|
||||
break;
|
||||
}
|
||||
if (target)
|
||||
{
|
||||
DoCast(target, SPELL_CHARGE);
|
||||
AttackStart(target);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_CHARGE_PLAYER, 8000, 0, PHASE_THREE);
|
||||
break;
|
||||
}
|
||||
case EVENT_TRANSFORM_BACK:
|
||||
{
|
||||
me->SetDisplayId(MODEL_MARLI);
|
||||
const CreatureTemplate* cinfo = me->GetCreatureTemplate();
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1)));
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1)));
|
||||
me->UpdateDamagePhysical(BASE_ATTACK);
|
||||
events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000);
|
||||
events.ScheduleEvent(EVENT_SPAWN_SPIDER, 30000);
|
||||
events.ScheduleEvent(EVENT_TRANSFORM, urand(35000, 60000), 0, PHASE_TWO);
|
||||
events.SetPhase(PHASE_TWO);
|
||||
break;
|
||||
}
|
||||
{
|
||||
me->SetDisplayId(MODEL_MARLI);
|
||||
CreatureTemplate const* cinfo = me->GetCreatureTemplate();
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1)));
|
||||
me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1)));
|
||||
me->UpdateDamagePhysical(BASE_ATTACK);
|
||||
events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000);
|
||||
events.ScheduleEvent(EVENT_SPAWN_SPIDER, 30000);
|
||||
events.ScheduleEvent(EVENT_TRANSFORM, urand(35000, 60000), 0, PHASE_TWO);
|
||||
events.SetPhase(PHASE_TWO);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -59,15 +59,15 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_MORTALCLEAVE = 0, // Phase 1
|
||||
EVENT_SILENCE = 1, // Phase 1
|
||||
EVENT_CHECK_TIMER = 2, // Phase 1
|
||||
EVENT_RESURRECT_TIMER = 3, // Phase 1
|
||||
EVENT_FRENZY = 4, // Phase 2
|
||||
EVENT_FORCEPUNCH = 5, // Phase 2
|
||||
EVENT_SPELL_CHARGE = 6, // Phase 2
|
||||
EVENT_ENRAGE = 7, // Phase 2
|
||||
EVENT_SUMMONTIGERS = 8 // Phase 2
|
||||
EVENT_MORTALCLEAVE = 1, // Phase 1
|
||||
EVENT_SILENCE = 2, // Phase 1
|
||||
EVENT_CHECK_TIMER = 3, // Phase 1
|
||||
EVENT_RESURRECT_TIMER = 4, // Phase 1
|
||||
EVENT_FRENZY = 5, // Phase 2
|
||||
EVENT_FORCEPUNCH = 6, // Phase 2
|
||||
EVENT_SPELL_CHARGE = 7, // Phase 2
|
||||
EVENT_ENRAGE = 8, // Phase 2
|
||||
EVENT_SUMMONTIGERS = 9 // Phase 2
|
||||
};
|
||||
|
||||
enum Phases
|
||||
|
||||
@@ -35,8 +35,8 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_LIGHTNINGCLOUD = 0,
|
||||
EVENT_LIGHTNINGWAVE = 1
|
||||
EVENT_LIGHTNINGCLOUD = 1,
|
||||
EVENT_LIGHTNINGWAVE = 2
|
||||
};
|
||||
|
||||
class boss_wushoolay : public CreatureScript
|
||||
|
||||
@@ -34,13 +34,13 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_STINGER_SPRAY = 0,
|
||||
EVENT_POISON_STINGER = 1,
|
||||
EVENT_SUMMON_SWARMER = 2,
|
||||
EVENT_SWARMER_ATTACK = 3,
|
||||
EVENT_PARALYZE = 4,
|
||||
EVENT_LASH = 5,
|
||||
EVENT_TRASH = 6
|
||||
EVENT_STINGER_SPRAY = 1,
|
||||
EVENT_POISON_STINGER = 2,
|
||||
EVENT_SUMMON_SWARMER = 3,
|
||||
EVENT_SWARMER_ATTACK = 4,
|
||||
EVENT_PARALYZE = 5,
|
||||
EVENT_LASH = 6,
|
||||
EVENT_TRASH = 7
|
||||
};
|
||||
|
||||
enum Emotes
|
||||
|
||||
@@ -42,11 +42,11 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_DISMEMBER = 0,
|
||||
EVENT_GATHERING_SPEED = 1,
|
||||
EVENT_FULL_SPEED = 2,
|
||||
EVENT_CREEPING_PLAGUE = 3,
|
||||
EVENT_RESPAWN_EGG = 4
|
||||
EVENT_DISMEMBER = 1,
|
||||
EVENT_GATHERING_SPEED = 2,
|
||||
EVENT_FULL_SPEED = 3,
|
||||
EVENT_CREEPING_PLAGUE = 4,
|
||||
EVENT_RESPAWN_EGG = 5
|
||||
};
|
||||
|
||||
enum Phases
|
||||
|
||||
@@ -40,10 +40,10 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_ARCANE_EXPLOSION = 0,
|
||||
EVENT_FULLFILMENT = 1,
|
||||
EVENT_BLINK = 2,
|
||||
EVENT_EARTH_SHOCK = 3
|
||||
EVENT_ARCANE_EXPLOSION = 1,
|
||||
EVENT_FULLFILMENT = 2,
|
||||
EVENT_BLINK = 3,
|
||||
EVENT_EARTH_SHOCK = 4
|
||||
};
|
||||
|
||||
uint32 const BlinkSpells[3] = { 4801, 8195, 20449 };
|
||||
|
||||
@@ -61,8 +61,8 @@ enum HauntingWitchHill
|
||||
NPC_RISEN_SPIRIT = 23554,
|
||||
|
||||
// Events
|
||||
EVENT_CONSUME_FLESH = 0,
|
||||
EVENT_INTANGIBLE_PRESENCE = 1,
|
||||
EVENT_CONSUME_FLESH = 1,
|
||||
EVENT_INTANGIBLE_PRESENCE = 2,
|
||||
};
|
||||
|
||||
class mobs_risen_husk_spirit : public CreatureScript
|
||||
|
||||
@@ -33,10 +33,10 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_BERSERK = 0,
|
||||
EVENT_CLOUD = 1,
|
||||
EVENT_INJECT = 2,
|
||||
EVENT_SPRAY = 3
|
||||
EVENT_BERSERK = 1,
|
||||
EVENT_CLOUD = 2,
|
||||
EVENT_INJECT = 3,
|
||||
EVENT_SPRAY = 4
|
||||
};
|
||||
|
||||
enum CreatureId
|
||||
@@ -46,7 +46,8 @@ enum CreatureId
|
||||
|
||||
class boss_grobbulus : public CreatureScript
|
||||
{
|
||||
public: boss_grobbulus() : CreatureScript("boss_grobbulus") { }
|
||||
public:
|
||||
boss_grobbulus() : CreatureScript("boss_grobbulus") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
|
||||
@@ -45,9 +45,9 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_STREAM_OF_MACHINE_FLUID = 0,
|
||||
EVENT_SAW_BLADE = 1,
|
||||
EVENT_SHADOW_POWER = 2
|
||||
EVENT_STREAM_OF_MACHINE_FLUID = 1,
|
||||
EVENT_SAW_BLADE = 2,
|
||||
EVENT_SHADOW_POWER = 3
|
||||
};
|
||||
|
||||
class boss_gatewatcher_gyrokill : public CreatureScript
|
||||
|
||||
@@ -52,11 +52,11 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_FROST_ATTACK = 0,
|
||||
EVENT_ARCANE_BLAST = 1,
|
||||
EVENT_DRAGONS_BREATH = 2,
|
||||
EVENT_KNOCKBACK = 3,
|
||||
EVENT_SOLARBURN = 4
|
||||
EVENT_FROST_ATTACK = 1,
|
||||
EVENT_ARCANE_BLAST = 2,
|
||||
EVENT_DRAGONS_BREATH = 3,
|
||||
EVENT_KNOCKBACK = 4,
|
||||
EVENT_SOLARBURN = 5
|
||||
};
|
||||
|
||||
class boss_nethermancer_sepethrea : public CreatureScript
|
||||
|
||||
@@ -54,11 +54,11 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_SUMMON = 0,
|
||||
EVENT_MANA_TAP = 1,
|
||||
EVENT_ARCANE_TORRENT = 2,
|
||||
EVENT_DOMINATION = 3,
|
||||
EVENT_ARCANE_EXPLOSION = 4
|
||||
EVENT_SUMMON = 1,
|
||||
EVENT_MANA_TAP = 2,
|
||||
EVENT_ARCANE_TORRENT = 3,
|
||||
EVENT_DOMINATION = 4,
|
||||
EVENT_ARCANE_EXPLOSION = 5
|
||||
};
|
||||
|
||||
enum Creatures
|
||||
|
||||
Reference in New Issue
Block a user