Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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);
|
|
} |