Skip to content

Commit

Permalink
Core/Spell: Pyroblast effect
Browse files Browse the repository at this point in the history
  • Loading branch information
Spyder committed Dec 24, 2012
1 parent 0249d6d commit 73e83a4
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 83 deletions.
33 changes: 18 additions & 15 deletions .cproject
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="0.43936889">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.43936889" moduleId="org.eclipse.cdt.core.settings" name="Default">
<cconfiguration id="0.720934124">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.720934124" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
Expand All @@ -14,20 +14,20 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration buildProperties="" description="" id="0.43936889" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.43936889." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.2025991291" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.2025991291.1213850621" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.1388710517" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1120652708" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.1284418344" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1912937973" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
<configuration buildProperties="" description="" id="0.720934124" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.720934124." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.242073039" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.242073039.1225118087" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.1988521114" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.186750343" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.685117209" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.870883460" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.1187098814" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.2012542347" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.1966265838" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1591365771" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.987886700" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.431393003" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.1821719063" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1434742195" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
Expand All @@ -37,13 +37,16 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="ArkCORE.null.711791208" name="ArkCORE"/>
<project id="ArkCORE.null.734418866" name="ArkCORE"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="0.43936889">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="0.720934124">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="0.724540704">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
Expand Down
76 changes: 58 additions & 18 deletions src/server/game/Spells/SpellEffects.cpp
Expand Up @@ -519,6 +519,7 @@ void Spell::SpellDamageSchoolDmg (SpellEffIndex effIndex)
if (unitTarget->GetGUID() == m_caster->GetGUID() || unitTarget->GetTypeId() != TYPEID_PLAYER)
return;


float radius = GetSpellRadiusForHostile(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[0]));
if (!radius)
return;
Expand Down Expand Up @@ -1266,6 +1267,7 @@ void Spell::EffectDummy (SpellEffIndex effIndex)
return;
}


m_caster->CastSpell(m_caster, spell_id, true);
return;
}
Expand Down Expand Up @@ -1345,6 +1347,7 @@ void Spell::EffectDummy (SpellEffIndex effIndex)
unitTarget->CastSpell(unitTarget, 44867, true);
}


return;
}
case 44869: // Spectral Blast
Expand Down Expand Up @@ -1430,6 +1433,7 @@ void Spell::EffectDummy (SpellEffIndex effIndex)
break;
}


return;
}
case 48046: // Use Camera
Expand Down Expand Up @@ -1760,27 +1764,34 @@ void Spell::EffectDummy (SpellEffIndex effIndex)
}
switch (m_spellInfo->Id)
{
case 1459: // Arcane Brilliance
{
if (m_caster->GetTypeId() == TYPEID_PLAYER)
{
std::list<Unit*> PartyMembers;
m_caster->GetPartyMembers(PartyMembers);
bool Continue = false;
uint32 player = 0;
for (std::list<Unit*>::iterator itr = PartyMembers.begin(); itr != PartyMembers.end(); ++itr) // If caster is in party with a player
case 92315: // Pyroblast!
m_caster->RemoveAurasDueToSpell(48108); // Remove hot streak
break;
case 30455: // Ice lance
if (Aura* fof = m_caster->GetAura(44544))
AddPctN(damage, 25*fof->GetCharges());
break;
case 1459: // Arcane Brilliance
{
++player;
if (Continue == false && player > 1)
Continue = true;
if (m_caster->GetTypeId() == TYPEID_PLAYER)
{
std::list<Unit*> PartyMembers;
m_caster->GetPartyMembers(PartyMembers);
bool Continue = false;
uint32 player = 0;
for (std::list<Unit*>::iterator itr = PartyMembers.begin(); itr != PartyMembers.end(); ++itr) // If caster is in party with a player
{
++player;
if (Continue == false && player > 1)
Continue = true;
}
if (Continue == true)
m_caster->CastSpell(unitTarget, 79058, true); // Arcane Brilliance (For all)
else
m_caster->CastSpell(unitTarget, 79057, true); // Arcane Brilliance (Only for caster)
}
if (Continue == true)
m_caster->CastSpell(unitTarget, 79058, true); // Arcane Brilliance (For all)
else
m_caster->CastSpell(unitTarget, 79057, true); // Arcane Brilliance (Only for caster)
break;
}
break;
}
case 42955: // Conjure Refreshment
{
if (m_caster->getLevel() > 33 && m_caster->getLevel() < 44)
Expand Down Expand Up @@ -1847,6 +1858,33 @@ void Spell::EffectDummy (SpellEffIndex effIndex)
m_caster->CastCustomSpell(unitTarget, 50782, &bp0, NULL, NULL, true, 0);
return;
}
// Execute
if (m_spellInfo->SpellFamilyFlags[EFFECT_0] & SPELLFAMILYFLAG_WARRIOR_EXECUTE)
{
if (!unitTarget)
return;

spell_id = 20647;

int32 rageUsed = std::min<int32>(300 - m_powerCost, m_caster->GetPower(POWER_RAGE));
int32 newRage = std::max<int32>(0, m_caster->GetPower(POWER_RAGE) - rageUsed);

// Sudden Death rage save
if (AuraEffect * aurEff = m_caster->GetAuraEffect(SPELL_AURA_PROC_TRIGGER_SPELL, SPELLFAMILY_GENERIC, 1989, EFFECT_0))
{
int32 ragesave = SpellMgr::CalculateSpellEffectAmount(aurEff->GetSpellProto(), EFFECT_1) * 10;
newRage = std::max(newRage, ragesave);
}

m_caster->SetPower(POWER_RAGE, uint32(newRage));

// Glyph of Execution bonus
if (AuraEffect * aurEff = m_caster->GetAuraEffect(58367, EFFECT_0))
rageUsed += aurEff->GetAmount() * 10;

bp = damage + int32(rageUsed * m_spellInfo->EffectDamageMultiplier[effIndex] + m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.2f);
break;
}
// Concussion Blow
if (m_spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW)
{
Expand Down Expand Up @@ -4007,6 +4045,7 @@ void Spell::EffectSummonType (SpellEffIndex effIndex)
if (!summon)
continue;


if (properties->Category == SUMMON_CATEGORY_ALLY)
{
summon->SetUInt64Value(UNIT_FIELD_SUMMONEDBY, m_originalCaster->GetGUID());
Expand Down Expand Up @@ -5119,6 +5158,7 @@ void Spell::SpellDamageWeaponDmg (SpellEffIndex effIndex)
// Annihilation
if (AuraEffect const * aurEff = m_caster->GetDummyAuraEffect(SPELLFAMILY_DEATHKNIGHT, 2710, EFFECT_0))


totalDamagePercentMod *= ((SpellMgr::CalculateSpellEffectAmount(m_spellInfo, EFFECT_2) * unitTarget->GetDiseasesByCaster(m_caster->GetGUID()) / 2.0f) + 100.0f) / 100.0f;
break;
}
Expand Down

0 comments on commit 73e83a4

Please sign in to comment.