Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
84 lines
3.2 KiB
Plaintext
84 lines
3.2 KiB
Plaintext
/*
|
|
----------------
|
|
Warchief Tribal Frenzy
|
|
|
|
prc_wchf_frenzy
|
|
----------------
|
|
*/
|
|
|
|
#include "prc_inc_spells"
|
|
#include "inc_addragebonus"
|
|
|
|
void FrenzyHB(object oPC, int nStr)
|
|
{
|
|
//--------------------------------------------------------------------------
|
|
// Check if the combat is over or if the PC turned it off
|
|
//--------------------------------------------------------------------------
|
|
if (DEBUG) DoDebug("prc_wchf_frenzy: IsInCombat: " + IntToString(GetIsInCombat(oPC)));
|
|
if (DEBUG) DoDebug("prc_wchf_frenzy: LocalInt: " + IntToString(GetLocalInt(oPC, "WarchiefFrenzy")));
|
|
if (!GetIsInCombat(oPC) || !GetLocalInt(oPC, "WarchiefFrenzy"))
|
|
{
|
|
PRCRemoveSpellEffects(SPELL_TRIBAL_FRENZY, oPC, oPC);
|
|
if (DEBUG) DoDebug("prc_wchf_frenzy: Exit Function");
|
|
return;
|
|
}
|
|
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, GetLocation(oPC), TRUE);
|
|
while (GetIsObjectValid(oTarget))
|
|
{
|
|
if (DEBUG) DoDebug("prc_wchf_frenzy: Entered Loop");
|
|
if(spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, oPC))
|
|
{
|
|
if(DEBUG) DoDebug("prc_wchf_frenzy: Friends");
|
|
int nRacialType = MyPRCGetRacialType(oTarget);
|
|
// Gotta be alive to Frenzy
|
|
if(nRacialType != RACIAL_TYPE_CONSTRUCT && nRacialType != RACIAL_TYPE_UNDEAD)
|
|
{
|
|
if (DEBUG) DoDebug("prc_wchf_frenzy: Racial Type");
|
|
// This is the damage they take for being in a frenzy
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(GetHitDice(oTarget)), oTarget);
|
|
|
|
effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH, nStr);
|
|
eStr = ExtraordinaryEffect(eStr);
|
|
int StrBeforeBonuses = GetAbilityScore(oTarget, ABILITY_STRENGTH);
|
|
int ConBeforeBonuses = GetAbilityScore(oTarget, ABILITY_CONSTITUTION);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStr, oTarget, 6.5);
|
|
// Because +10 is almost certain to hit the cap
|
|
DelayCommand(0.1, GiveExtraRageBonuses(1, StrBeforeBonuses, ConBeforeBonuses, nStr, 0, 0, DAMAGE_TYPE_BASE_WEAPON, oTarget));
|
|
if (DEBUG) DoDebug("prc_wchf_frenzy: Heartbeat Apply Bonus");
|
|
}
|
|
}
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, GetLocation(oPC), TRUE);
|
|
}
|
|
|
|
// Power keeps doing till duration is over.
|
|
DelayCommand(6.0f, FrenzyHB(oPC, nStr));
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
string nMes = "";
|
|
|
|
if(!GetHasSpellEffect(SPELL_TRIBAL_FRENZY, oPC))
|
|
{
|
|
int nWarChief = GetLevelByClass(CLASS_TYPE_WARCHIEF, oPC);
|
|
int nBonus = (nWarChief + 1) / 2;
|
|
|
|
SetLocalInt(oPC, "WarchiefFrenzy", TRUE);
|
|
FrenzyHB(oPC, nBonus * 2);
|
|
nMes = "*Tribal Frenzy Activated*";
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDur, oPC);
|
|
}
|
|
else
|
|
{
|
|
// Removes effects
|
|
if (DEBUG) DoDebug("prc_wchf_frenzy: Remove Effects");
|
|
PRCRemoveSpellEffects(SPELL_TRIBAL_FRENZY, oPC, oPC);
|
|
nMes = "*Tribal Frenzy Deactivated*";
|
|
DeleteLocalInt(oPC, "WarchiefFrenzy");
|
|
}
|
|
|
|
FloatingTextStringOnCreature(nMes, oPC, FALSE);
|
|
} |