mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
320 lines
16 KiB
C++
320 lines
16 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// MILLENIUM-STUDIO
|
|
// Copyright 2016 Millenium-studio SARL
|
|
// All Rights Reserved.
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "ScriptPCH.h"
|
|
#include "ScriptMgr.h"
|
|
#include "Config.h"
|
|
|
|
class duel_reset: public PlayerScript
|
|
{
|
|
public:
|
|
duel_reset() : PlayerScript("duel_reset") {}
|
|
|
|
void OnDuelEnd(Player* winner, Player* looser, DuelCompleteType type)
|
|
{
|
|
if (sWorld->getBoolConfig(CONFIG_DUEL_RESET_COOLDOWN_ON_FINISH))
|
|
{
|
|
if (sWorld->getBoolConfig(CONFIG_DUEL_RESET_COOLDOWN_ONLY_IN_ELWYNN_AND_DUROTAR))
|
|
{
|
|
if (winner->GetZoneId() == 14 || winner->GetZoneId() == 12)
|
|
{
|
|
if (type == DUEL_WON)
|
|
{
|
|
winner->RemoveArenaSpellCooldowns();
|
|
looser->RemoveArenaSpellCooldowns();
|
|
winner->SetHealth(winner->GetMaxHealth());
|
|
looser->SetHealth(looser->GetMaxHealth());
|
|
|
|
if (winner->getPowerType() == POWER_MANA)
|
|
winner->SetPower(POWER_MANA, winner->GetMaxPower(POWER_MANA));
|
|
|
|
if (looser->getPowerType() == POWER_MANA)
|
|
looser->SetPower(POWER_MANA, looser->GetMaxPower(POWER_MANA));
|
|
}
|
|
|
|
winner->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (type == DUEL_WON)
|
|
{
|
|
winner->RemoveArenaSpellCooldowns();
|
|
looser->RemoveArenaSpellCooldowns();
|
|
winner->SetHealth(winner->GetMaxHealth());
|
|
looser->SetHealth(looser->GetMaxHealth());
|
|
|
|
if (winner->getPowerType() == POWER_MANA)
|
|
winner->SetPower(POWER_MANA, winner->GetMaxPower(POWER_MANA));
|
|
|
|
if (looser->getPowerType() == POWER_MANA)
|
|
looser->SetPower(POWER_MANA, looser->GetMaxPower(POWER_MANA));
|
|
}
|
|
|
|
winner->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
|
|
}
|
|
}
|
|
}
|
|
|
|
void OnDuelStart(Player* player1, Player* player2)
|
|
{
|
|
if (sWorld->getBoolConfig(CONFIG_DUEL_RESET_COOLDOWN_ON_START))
|
|
{
|
|
if (sWorld->getBoolConfig(CONFIG_DUEL_RESET_COOLDOWN_ONLY_IN_ELWYNN_AND_DUROTAR))
|
|
{
|
|
if (player1->GetZoneId() == 14 || player1->GetZoneId() == 12)
|
|
{
|
|
player1->RemoveArenaSpellCooldowns();
|
|
player2->RemoveArenaSpellCooldowns();
|
|
player1->SetHealth(player1->GetMaxHealth());
|
|
player2->SetHealth(player2->GetMaxHealth());
|
|
|
|
if (sWorld->getBoolConfig(CONFIG_DUEL_RESET_COOLDOWN_RESET_ENERGY_ON_START))
|
|
{
|
|
switch (player1->getPowerType())
|
|
{
|
|
case POWER_RAGE:
|
|
player1->SetPower(POWER_RAGE, 0);
|
|
break;
|
|
case POWER_RUNIC_POWER:
|
|
player1->SetPower(POWER_RUNIC_POWER, 0);
|
|
break;
|
|
case POWER_CHI:
|
|
player1->SetPower(POWER_CHI, 0);
|
|
break;
|
|
case POWER_DEMONIC_FURY:
|
|
player1->SetPower(POWER_DEMONIC_FURY, 0);
|
|
break;
|
|
case POWER_HOLY_POWER:
|
|
player1->SetPower(POWER_HOLY_POWER, 0);
|
|
break;
|
|
case POWER_BURNING_EMBERS:
|
|
player1->SetPower(POWER_BURNING_EMBERS, 0);
|
|
break;
|
|
case POWER_SHADOW_ORB:
|
|
player1->SetPower(POWER_SHADOW_ORB, 0);
|
|
break;
|
|
case POWER_SOUL_SHARDS:
|
|
player1->SetPower(POWER_SOUL_SHARDS, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (player2->getPowerType())
|
|
{
|
|
case POWER_RAGE:
|
|
player2->SetPower(POWER_RAGE, 0);
|
|
break;
|
|
case POWER_RUNIC_POWER:
|
|
player2->SetPower(POWER_RUNIC_POWER, 0);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (sWorld->getBoolConfig(CONFIG_DUEL_RESET_COOLDOWN_MAX_ENERGY_ON_START))
|
|
{
|
|
switch (player1->getPowerType())
|
|
{
|
|
case POWER_MANA:
|
|
player1->SetPower(POWER_MANA, player1->GetMaxPower(POWER_MANA));
|
|
break;
|
|
case POWER_RAGE:
|
|
player1->SetPower(POWER_RAGE, player1->GetMaxPower(POWER_RAGE));
|
|
break;
|
|
case POWER_RUNIC_POWER:
|
|
player1->SetPower(POWER_RUNIC_POWER, player1->GetMaxPower(POWER_RUNIC_POWER));
|
|
break;
|
|
case POWER_CHI:
|
|
player1->SetPower(POWER_CHI, player1->GetMaxPower(POWER_CHI));
|
|
break;
|
|
case POWER_DEMONIC_FURY:
|
|
player1->SetPower(POWER_DEMONIC_FURY, player1->GetMaxPower(POWER_DEMONIC_FURY));
|
|
break;
|
|
case POWER_HOLY_POWER:
|
|
player1->SetPower(POWER_HOLY_POWER, player1->GetMaxPower(POWER_HOLY_POWER));
|
|
break;
|
|
case POWER_BURNING_EMBERS:
|
|
player1->SetPower(POWER_BURNING_EMBERS, player1->GetMaxPower(POWER_BURNING_EMBERS));
|
|
break;
|
|
case POWER_SHADOW_ORB:
|
|
player1->SetPower(POWER_SHADOW_ORB, player1->GetMaxPower(POWER_SHADOW_ORB));
|
|
break;
|
|
case POWER_FOCUS:
|
|
player1->SetPower(POWER_FOCUS, player1->GetMaxPower(POWER_FOCUS));
|
|
break;
|
|
case POWER_ENERGY:
|
|
player1->SetPower(POWER_ENERGY, player1->GetMaxPower(POWER_ENERGY));
|
|
break;
|
|
case POWER_SOUL_SHARDS:
|
|
player1->SetPower(POWER_SOUL_SHARDS, player1->GetMaxPower(POWER_SOUL_SHARDS));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (player2->getPowerType())
|
|
{
|
|
case POWER_MANA:
|
|
player2->SetPower(POWER_MANA, player2->GetMaxPower(POWER_MANA));
|
|
break;
|
|
case POWER_RAGE:
|
|
player2->SetPower(POWER_RAGE, player2->GetMaxPower(POWER_RAGE));
|
|
break;
|
|
case POWER_RUNIC_POWER:
|
|
player2->SetPower(POWER_RUNIC_POWER, player2->GetMaxPower(POWER_RUNIC_POWER));
|
|
break;
|
|
case POWER_CHI:
|
|
player2->SetPower(POWER_CHI, player2->GetMaxPower(POWER_CHI));
|
|
break;
|
|
case POWER_DEMONIC_FURY:
|
|
player2->SetPower(POWER_DEMONIC_FURY, player2->GetMaxPower(POWER_DEMONIC_FURY));
|
|
break;
|
|
case POWER_HOLY_POWER:
|
|
player2->SetPower(POWER_HOLY_POWER, player2->GetMaxPower(POWER_HOLY_POWER));
|
|
break;
|
|
case POWER_BURNING_EMBERS:
|
|
player2->SetPower(POWER_BURNING_EMBERS, player2->GetMaxPower(POWER_BURNING_EMBERS));
|
|
break;
|
|
case POWER_SHADOW_ORB:
|
|
player2->SetPower(POWER_SHADOW_ORB, player2->GetMaxPower(POWER_SHADOW_ORB));
|
|
break;
|
|
case POWER_FOCUS:
|
|
player2->SetPower(POWER_FOCUS, player2->GetMaxPower(POWER_FOCUS));
|
|
break;
|
|
case POWER_ENERGY:
|
|
player2->SetPower(POWER_ENERGY, player2->GetMaxPower(POWER_ENERGY));
|
|
break;
|
|
case POWER_SOUL_SHARDS:
|
|
player2->SetPower(POWER_SOUL_SHARDS, player2->GetMaxPower(POWER_SOUL_SHARDS));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
player1->RemoveArenaSpellCooldowns();
|
|
player2->RemoveArenaSpellCooldowns();
|
|
player1->SetHealth(player1->GetMaxHealth());
|
|
player2->SetHealth(player2->GetMaxHealth());
|
|
|
|
if (sWorld->getBoolConfig(CONFIG_DUEL_RESET_COOLDOWN_MAX_ENERGY_ON_START))
|
|
{
|
|
switch (player1->getPowerType())
|
|
{
|
|
case POWER_MANA:
|
|
player1->SetPower(POWER_MANA, player1->GetMaxPower(POWER_MANA));
|
|
break;
|
|
case POWER_RAGE:
|
|
player1->SetPower(POWER_RAGE, player1->GetMaxPower(POWER_RAGE));
|
|
break;
|
|
case POWER_RUNIC_POWER:
|
|
player1->SetPower(POWER_RUNIC_POWER, player1->GetMaxPower(POWER_RUNIC_POWER));
|
|
break;
|
|
case POWER_CHI:
|
|
player1->SetPower(POWER_CHI, player1->GetMaxPower(POWER_CHI));
|
|
break;
|
|
case POWER_DEMONIC_FURY:
|
|
player1->SetPower(POWER_DEMONIC_FURY, player1->GetMaxPower(POWER_DEMONIC_FURY));
|
|
break;
|
|
case POWER_HOLY_POWER:
|
|
player1->SetPower(POWER_HOLY_POWER, player1->GetMaxPower(POWER_HOLY_POWER));
|
|
break;
|
|
case POWER_BURNING_EMBERS:
|
|
player1->SetPower(POWER_BURNING_EMBERS, player1->GetMaxPower(POWER_BURNING_EMBERS));
|
|
break;
|
|
case POWER_SHADOW_ORB:
|
|
player1->SetPower(POWER_SHADOW_ORB, player1->GetMaxPower(POWER_SHADOW_ORB));
|
|
break;
|
|
case POWER_FOCUS:
|
|
player1->SetPower(POWER_FOCUS, player1->GetMaxPower(POWER_FOCUS));
|
|
break;
|
|
case POWER_ENERGY:
|
|
player1->SetPower(POWER_ENERGY, player1->GetMaxPower(POWER_ENERGY));
|
|
break;
|
|
case POWER_SOUL_SHARDS:
|
|
player1->SetPower(POWER_SOUL_SHARDS, player1->GetMaxPower(POWER_SOUL_SHARDS));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (player2->getPowerType())
|
|
{
|
|
case POWER_MANA:
|
|
player2->SetPower(POWER_MANA, player2->GetMaxPower(POWER_MANA));
|
|
break;
|
|
case POWER_RAGE:
|
|
player2->SetPower(POWER_RAGE, player2->GetMaxPower(POWER_RAGE));
|
|
break;
|
|
case POWER_RUNIC_POWER:
|
|
player2->SetPower(POWER_RUNIC_POWER, player2->GetMaxPower(POWER_RUNIC_POWER));
|
|
break;
|
|
case POWER_CHI:
|
|
player2->SetPower(POWER_CHI, player2->GetMaxPower(POWER_CHI));
|
|
break;
|
|
case POWER_DEMONIC_FURY:
|
|
player2->SetPower(POWER_DEMONIC_FURY, player2->GetMaxPower(POWER_DEMONIC_FURY));
|
|
break;
|
|
case POWER_HOLY_POWER:
|
|
player2->SetPower(POWER_HOLY_POWER, player2->GetMaxPower(POWER_HOLY_POWER));
|
|
break;
|
|
case POWER_BURNING_EMBERS:
|
|
player2->SetPower(POWER_BURNING_EMBERS, player2->GetMaxPower(POWER_BURNING_EMBERS));
|
|
break;
|
|
case POWER_SHADOW_ORB:
|
|
player2->SetPower(POWER_SHADOW_ORB, player2->GetMaxPower(POWER_SHADOW_ORB));
|
|
break;
|
|
case POWER_FOCUS:
|
|
player2->SetPower(POWER_FOCUS, player2->GetMaxPower(POWER_FOCUS));
|
|
break;
|
|
case POWER_ENERGY:
|
|
player2->SetPower(POWER_ENERGY, player2->GetMaxPower(POWER_ENERGY));
|
|
break;
|
|
case POWER_SOUL_SHARDS:
|
|
player2->SetPower(POWER_SOUL_SHARDS, player2->GetMaxPower(POWER_SOUL_SHARDS));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
class duel_reset_aura_script: public PlayerScript
|
|
{
|
|
public:
|
|
duel_reset_aura_script() : PlayerScript("duel_reset_aura_script") {}
|
|
|
|
void OnDuelStart(Player* p_Player1, Player* p_Player2)
|
|
{
|
|
if (!p_Player1 || !p_Player2)
|
|
return;
|
|
|
|
if (p_Player1->HasAuraType(SPELL_AURA_RESET_COOLDOWNS_BEFORE_DUEL))
|
|
p_Player1->RemoveArenaSpellCooldowns(true);
|
|
|
|
if (p_Player2->HasAuraType(SPELL_AURA_RESET_COOLDOWNS_BEFORE_DUEL))
|
|
p_Player2->RemoveArenaSpellCooldowns(true);
|
|
}
|
|
};
|
|
|
|
#ifndef __clang_analyzer__
|
|
void AddSC_DuelReset()
|
|
{
|
|
//new duel_reset();
|
|
new duel_reset_aura_script();
|
|
}
|
|
#endif
|