/** * Rage * * Enchantment (Compulsion) [Mind-Affecting] * Level: Bard 2, Sorcerer/Wizard 3 * Components: V, S, * Casting Time: 1 standard action * Range: Medium (100 ft. + 10 ft./level) * Target: One willing living creature per three levels, no two of which may be more than 30 ft. apart * Duration: Concentration + 1 round/level (D) * Saving Throw: None * Spell Resistance: Yes * * Each affected creature gains a +2 morale bonus to Strength and Constitution, a +1 morale bonus on Will saves, and a -2 penalty to AC. */ #include "prc_inc_spells" void main() { PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT); if (!X2PreSpellCastCode()) return; //Declare major variables object oTarget = PRCGetSpellTargetObject(); int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); int nMetaMagic = PRCGetMetaMagicFeat(); int nDuration = CasterLvl; int nSpellID = PRCGetSpellId(); if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND)) nDuration *= 2; // how many creatures (we've done one already) int nCreatures = (CasterLvl/3); if (nCreatures >= 1) { object oNextTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(30.0), GetLocation(oTarget), TRUE); // only creatures int nCount; while (GetIsObjectValid(oNextTarget) && nCount < nCreatures) { if (GetIsFriend(oNextTarget, OBJECT_SELF) && PRCGetIsAliveCreature(oNextTarget)) { //Fire cast spell at event for the specified target SignalEvent(oNextTarget, EventSpellCastAt(OBJECT_SELF, nSpellID)); effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_CONSTITUTION, 2)); eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_STRENGTH, 2)); eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_WILL, 1)); eLink = EffectLinkEffects(eLink, EffectACDecrease(2, AC_DODGE_BONUS)); SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration),TRUE,-1,CasterLvl); nCount++; } oNextTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(30.0), GetLocation(oTarget), TRUE); // only creatures } } PRCSetSchool(); }