Further file organization
Further file organization
This commit is contained in:
76
nwn/nwnprc/trunk/scripts/rm_spellrage.nss
Normal file
76
nwn/nwnprc/trunk/scripts/rm_spellrage.nss
Normal file
@@ -0,0 +1,76 @@
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void ApplyFatigue(object oPC)
|
||||
{
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||
|
||||
effect eLink = EffectLinkEffects(EffectFatigue(), eDur);
|
||||
|
||||
eLink = ExtraordinaryEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, RoundsToSeconds(5));
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
int iAC = 2;
|
||||
|
||||
if(GetHasSpellEffect(SPELL_SPELL_RAGE, oPC))
|
||||
{
|
||||
IncrementRemainingFeatUses(oPC, FEAT_SPELL_RAGE);
|
||||
return;
|
||||
}
|
||||
if(GetHasSpellEffect(SPELLABILITY_BARBARIAN_RAGE, oPC))
|
||||
{
|
||||
IncrementRemainingFeatUses(oPC, FEAT_SPELL_RAGE);
|
||||
FloatingTextStringOnCreature("You can't use Barbarian Rage and Spell Rage at the same time.", oPC, FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Removes effects of being winded
|
||||
effect eWind = GetFirstEffect(oPC);
|
||||
while (GetIsEffectValid(eWind))
|
||||
{
|
||||
if (GetEffectType(eWind) == EFFECT_TYPE_ABILITY_DECREASE || GetEffectType(eWind) == EFFECT_TYPE_MOVEMENT_SPEED_DECREASE)
|
||||
if (GetEffectSpellId(eWind) == PRCGetSpellId())
|
||||
RemoveEffect(oPC, eWind);
|
||||
eWind = GetNextEffect(oPC);
|
||||
}
|
||||
|
||||
// play a random voice chat instead of just VOICE_CHAT_BATTLECRY1
|
||||
int iVoiceConst = 0;
|
||||
int iVoice = d3(1);
|
||||
switch(iVoice)
|
||||
{
|
||||
case 1: iVoice = VOICE_CHAT_BATTLECRY1;
|
||||
break;
|
||||
case 2: iVoice = VOICE_CHAT_BATTLECRY2;
|
||||
break;
|
||||
case 3: iVoice = VOICE_CHAT_BATTLECRY3;
|
||||
break;
|
||||
}
|
||||
PlayVoiceChat(iVoice);
|
||||
|
||||
int nCon = 3 + GetAbilityModifier(ABILITY_CONSTITUTION);
|
||||
if(GetHasFeat(FEAT_EXTENDED_RAGE, oPC))
|
||||
nCon += 5;
|
||||
effect eAC = EffectACDecrease(iAC, AC_DODGE_BONUS);
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
|
||||
effect eLink = EffectLinkEffects(eAC, eDur);
|
||||
SignalEvent(oPC, EventSpellCastAt(oPC, SPELL_SPELL_RAGE, FALSE));
|
||||
|
||||
eLink = ExtraordinaryEffect(eLink);
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
|
||||
|
||||
if (nCon > 0)
|
||||
{
|
||||
PRCRemoveEffectsFromSpell(oPC, SPELL_SPELL_RAGE);
|
||||
IncrementRemainingFeatUses(oPC, FEAT_SPELL_FURY);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, RoundsToSeconds(nCon));
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
|
||||
if(!GetHasFeat(FEAT_TIRELESS_RAGE, oPC))
|
||||
DelayCommand(RoundsToSeconds(nCon), ApplyFatigue(oPC));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user