New Barbarian Rages


  • Storyteller [DM]

    Okay: THESE ARE ALREADY IN GAME, we just need some balancing help to make them worth it, then we'll introduce them in loot tables or shops.

    1. Beserker Rage:
    2. Thunder Rage:
    3. Juggernaut:
    4. Malkizid's Wrath (Elf Rage):
    5. Default

    1. Beserker doesn't scale according to level, rather, it scales according to the amount of HP present on the character when they rage. This makes raging at low health a risky proposition.

    At: 100% hp = +2 str, +2 con, +2 will, 10% physical Damage Immunity
    At: 80% hp = +3 str, +3 con, +3 will, +15% physical Damage Immunity
    At: 60% hp = +4 str, +4 con, +4 will, +10 temp hp, +20% physical Damage Immunity
    At: 40% hp = +5 str, +5 con, +5 will, +20 temp hp, +25% physical Damage Immunity
    At: 20% hp = +6 str, +6 con, +6 will, +30 temp hp, +30% physical Damage Immunity

    1. Malkizid's Wrath is a bit lackluster, but the intention here is for ranged barbarians (archers) to assist them in their ranged angry shooting bowery.

    Lvl 1: +2 Dex, +1 Reflex
    Lvl 4: +1 Reflex, +1 Piercing DMG
    Lvl 6: +1 DEX
    Lvl 8: +1 Reflex, +1 AC, +1 Piercing DMG
    Lvl 10 - Total: +4 Dex, +2 Piercing DMG, +4 Reflex, +2 AC

    1. The Rage of Thunder is a rage that grants immunity to electric damage and possesses a damage shield that reflects electric damage back to the targets. As it levels up, it will create an AoE around the barb that strikes enemies with the wrath of storms to damage their foes.

    Lvl 1: +1 electrical DMG, 10% electrical Immunity
    Lvl 4: +1 electrical DMG, 15% electrical Immunity
    Lvl 6: 20% electrical Immunity
    Lvl 8: +1 electrical DMG, Electrical Shield,
    if hit damages opponent (1d4 electrical), 25% electrical Immunity
    Lvl 10 - Total: +3 electrical DMG, 30% electrical immunity, Electrical Shield (1d6),
    Special Effect: Lvl 6+ enemies will be hit by a lightning bolt (2d6).

    1. Juggernaught is an unstoppable force, and when charging, cannot be stopped. It will ignore all holds, bindings, entanglements etc... to reach their target, removing any energy drains or poisons in the process.

    Lvl 1: +2 str, +2 con, lesser restoration, ignore unit collision
    Lvl 4: +3 str, +2 con, lesser restoration, ignore unit collision, +10% movespeed
    Lvl 7: +3 str, +2 con, lesser restoration, clarity, ignore unit collision, +10% move speed
    Lvl 10: +4 str, +2 con, lesser restoration, clarity, ignore unit collision, +20% move speed

    1. Rage of the Wraith is a unique rage that summons the dead and slain foes of the barbarian to aid him in battle. Rise from the dead, my slain foes, and conquer my foes beside me.

    Level 4: 15% concealment, 1 allied spirit.
    Level 5: 20% concealment, 1 allied spirit, +2 neg damage to weapon
    Level 6: 25% concealement, 2 allied spirits, +2 neg damage
    Level 7: 30% concealment, 2 allied spirits, +2 neg damage, +10% immunity to negative energy.
    Level 8: 35% concealment, 2 allied spirits, +2 neg damage, +15 immunity to negative energy.
    Level 9: 40% concealement, 2 allied, +3 neg damage, +20% immunity to negative
    Level 10: 50% concealment, 3 allied spirits, +3 neg, +25 immunity to negative.


  • Storyteller [DM]

    //::///////////////////////////////////////////////
    //:: Barbarian Rage
    //:: NW_S1_BarbRage
    //:: Copyright (c) 2001 Bioware Corp.
    //:://////////////////////////////////////////////
    /*
    The Str and Con of the Barbarian increases,
    Will Save are +2, AC -2.
    Greater Rage starts at level 15.
    */
    //:://////////////////////////////////////////////
    //:: Created By: Preston Watamaniuk
    //:: Created On: Aug 13, 2001
    //:://////////////////////////////////////////////

    #include "x2_i0_spells"
    //#include "_incl_rndloc"

    int GetIsSupernaturalCurse(effect eEff) {
    object oCreator = GetEffectCreator(eEff);

    if(GetTag(oCreator) == "q6e_ShaorisFellTemple")
        return TRUE;
    
    return FALSE;
    

    }

    void RageBerserker (object oPC, int nDuration, int nLevel) {
    int nHP, nHP_total, nHP_current, nSTR, nCON, nWILL, nImmun, nTMPHP;
    nHP_total = GetMaxHitPoints(oPC);
    nHP_current = GetCurrentHitPoints(oPC);
    nHP = (nHP_current * 100) / nHP_total;
    // SendMessageToPC(oPC, "nHP_total: " + IntToString(nHP_total));
    // SendMessageToPC(oPC, "nHP_current: " + IntToString(nHP_current));
    // SendMessageToPC(oPC, "nHP: " + IntToString(nHP));

    if (nHP < 20) {
        nSTR = 6;
        nCON = 6;
        nWILL = 6;
    } else if (nHP < 40) {
        nSTR = 5;
        nCON = 5;
        nWILL = 5;
    } else if (nHP < 60) {
        nSTR = 4;
        nCON = 4;
        nWILL = 4;
    } else if (nHP < 80) {
        nSTR = 3;
        nCON = 3;
        nWILL = 3;
    } else if (nHP < 100) {
        nSTR = 2;
        nCON = 2;
        nWILL = 2;
    } else {
        nSTR = 1;
        nCON = 1;
        nWILL = 1;
    }
    
    if (nLevel > 9) {
        nTMPHP = 30;
        nImmun = 30;
    } else if (nLevel > 7) {
        nTMPHP = 20;
        nImmun = 25;
    } else if (nLevel > 5) {
        nTMPHP = 10;
        nImmun = 20;
    } else if (nLevel > 3) {
        nTMPHP = 0;
        nImmun = 15;
    } else if (nLevel > 1) {
        nTMPHP = 0;
        nImmun = 10;
    } else {
        nTMPHP = 0;
        nImmun = 5;
    }
    
    effect eSTR, eCON, eWILL, eTMPHP, eIMMUN, eLink, eVis;
    eSTR = EffectAbilityIncrease(ABILITY_STRENGTH, nSTR);
    eLink = EffectLinkEffects(eLink, eSTR);
    eCON = EffectAbilityIncrease(ABILITY_CONSTITUTION, nCON);
    eLink = EffectLinkEffects(eLink, eCON);
    eWILL = EffectSavingThrowIncrease(SAVING_THROW_WILL, nWILL);
    eLink = EffectLinkEffects(eLink, eWILL);
    
    if (nTMPHP > 0) {
        eLink = EffectLinkEffects(eLink, EffectTemporaryHitpoints(nTMPHP));
    }
    
    if (nImmun > 0) {
        eLink = EffectLinkEffects(eLink, EffectDamageImmunityIncrease(DAMAGE_TYPE_SLASHING, nImmun));
        eLink = EffectLinkEffects(eLink, EffectDamageImmunityIncrease(DAMAGE_TYPE_PIERCING, nImmun));
        eLink = EffectLinkEffects(eLink, EffectDamageImmunityIncrease(DAMAGE_TYPE_BLUDGEONING, nImmun));
    }
    
    // VFX
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_IMP_EVIL_HELP));
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE));
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_AURA_PULSE_RED_BLACK));
    eLink = ExtraordinaryEffect(eLink);
    SignalEvent(oPC, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
    PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, RoundsToSeconds(nDuration));
    

    }

    void RageJuggernaut (object oPC, int nDuration, int nLevel) {
    int nSTR, nCON, nMove;

    if (nLevel > 9) {
        nSTR = 4;
        nCON = 2;
        nMove = 20;
    } else if (nLevel > 6) {
        nSTR = 3;
        nCON = 2;
        nMove = 10;
    } else if (nLevel > 3) {
        nSTR = 3;
        nCON = 2;
        nMove = 10;
    } else {
        nSTR = 2;
        nCON = 2;
        nMove = 0;
    }
    
    effect eSTR, eCON, eMove, eCLARITY, eLink, eLink2, eBad;
    eSTR = EffectAbilityIncrease(ABILITY_STRENGTH, nSTR);
    eLink = EffectLinkEffects(eLink, eSTR);
    eCON = EffectAbilityIncrease(ABILITY_CONSTITUTION, nCON);
    eLink = EffectLinkEffects(eLink, eCON);
    
    if (nMove > 0) {
        eMove = EffectMovementSpeedIncrease(nMove);
        eLink = EffectLinkEffects(eLink, eMove);
    }
    
    // FREEDOM OF MOVEMENT
    eLink2 = EffectLinkEffects(eLink, EffectImmunity(IMMUNITY_TYPE_PARALYSIS));
    eLink2 = EffectLinkEffects(eLink, EffectImmunity(IMMUNITY_TYPE_ENTANGLE));
    eLink2 = EffectLinkEffects(eLink, EffectImmunity(IMMUNITY_TYPE_SLOW));
    eLink2 = EffectLinkEffects(eLink, EffectImmunity(IMMUNITY_TYPE_MOVEMENT_SPEED_DECREASE));
    
    if (nLevel > 6) eLink2 = EffectLinkEffects(eLink, EffectImmunity(IMMUNITY_TYPE_MIND_SPELLS)); // CLARITY
    
    // RESTORATION
    eBad = GetFirstEffect(oPC);
    
    //Search for negative effects
    while(GetIsEffectValid(eBad)) {
        if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE) {
            //Remove effect if it is negative.
            if(!GetIsSupernaturalCurse(eBad))
                RemoveEffect(oPC, eBad);
        }
    
        eBad = GetNextEffect(oPC);
    }
    
    // VFX
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY));
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_FREEDOM_OF_MOVEMENT));
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_IMP_SUPER_HEROISM));
    eLink = ExtraordinaryEffect(eLink);
    SignalEvent(oPC, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
    PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, RoundsToSeconds(nDuration));
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink2, oPC, RoundsToSeconds(2));
    

    }

    void SummonWraith(string Creature_ResRef, object oPC, int nDuration) {
    location lSelf = GetLocation(OBJECT_SELF);
    // Create Location in cut off cone
    // location lTarget = RndLoc(lSelf,3,1,BASE_SHAPE_CIRCLE,DIRECTION_SOUTH,42.5f);
    effect eSummon = EffectSummonCreature(Creature_ResRef, VFX_FNF_SUMMON_UNDEAD, 0.5f);
    // ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, lTarget, RoundsToSeconds(nDuration));
    object oWraith = GetObjectByTag(Creature_ResRef);
    ChangeToStandardFaction(oWraith, STANDARD_FACTION_DEFENDER);
    }

    void RageWraith (object oPC, int nDuration, int nLevel) {
    int nWraith, nConceal, nHP, nHP_total, nHP_current, nSTR, nCON, nWILL, nImmun, nTMPHP;

    if (nLevel > 9) {
        nWraith = 3;
        nConceal = 25;
        nSTR = 4;
        nCON = 4;
    } else if (nLevel > 7){
        nWraith = 2;
        nConceal = 20;
        nTMPHP = 20;
    } else if (nLevel > 5) {
        nWraith = 2;
        nConceal = 15;
    } else if (nLevel > 3) {
        nWraith = 1;
        nConceal = 10;
    } else {
        nWraith = 1;
        nConceal = 5;
        nSTR = 2;
        nCON = 2;
    }
    
    int nTimer = 0;
    
    for (nTimer = 0; nTimer < nWraith; nTimer++) {
        DelayCommand(1.0f, SummonWraith("spiffymadethis", oPC, nDuration));
    }
    
    PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
    

    }

    void RageThunder (object oPC, int nDuration, int nLevel) {
    int nEleDR, nDmg;

    if (nLevel > 9) {
        nEleDR = 30;
        nDmg = 3;
    } else if (nLevel > 7) {
        nEleDR = 25;
        nDmg = 3;
    } else if (nLevel > 5) {
        nEleDR = 20;
        nDmg = 2;
    } else if (nLevel > 3) {
        nEleDR = 15;
        nDmg = 2;
    } else {
        nEleDR = 10;
        nDmg = 1;
    }
    
    effect eLink, eVisCall, eVisShield, eEleShield, eEleDR;
    // ELECTRICAL DMG
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(oPC));
    itemproperty iKeen = ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ELECTRICAL, nDmg);
    object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
    object oOffhand = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
    
    if(GetIsObjectValid(oWeapon))
        IPSafeAddItemProperty(oWeapon, iKeen, RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
    
    if(GetIsObjectValid(oOffhand))
        IPSafeAddItemProperty(oOffhand, iKeen, RoundsToSeconds(nDuration), X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
    
    // ELECTRICAL DR
    eEleDR = EffectDamageImmunityIncrease(DAMAGE_TYPE_ELECTRICAL, nEleDR);
    eLink = EffectLinkEffects(eLink, eEleDR);
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_AURA_PULSE_BLUE_WHITE));
    eLink = EffectLinkEffects(eLink, EffectAttackIncrease(2));
    eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_STRENGTH, 2));
    eLink = EffectLinkEffects(eLink, EffectAbilityIncrease(ABILITY_DEXTERITY,2));
    eLink = EffectLinkEffects(eLink, EffectACIncrease(1, AC_DODGE_BONUS, AC_VS_DAMAGE_TYPE_ALL));
    eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_REFLEX, 2, SAVING_THROW_TYPE_ALL));
    
    if (nLevel > 6) { // ELETRIC SHIELD + Call Lightining
        // ELETRICAL SHIELD
        eVisShield = EffectVisualEffect(VFX_IMP_LIGHTNING_S);
        eEleShield = EffectDamageShield(DAMAGE_BONUS_1d4, DAMAGE_BONUS_1, DAMAGE_TYPE_ELECTRICAL);
    
        if (nLevel > 9)  eEleShield = EffectDamageShield(DAMAGE_BONUS_1d6, DAMAGE_BONUS_1, DAMAGE_TYPE_ELECTRICAL);
    
        eLink = EffectLinkEffects(eLink, eEleShield);
        eLink = EffectLinkEffects(eLink, eVisShield);
        //eEleShield = EffectLinkEffects(eEleShield, eVisShield);
        SignalEvent(oPC, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
        RemoveEffectsFromSpell(oPC, GetSpellId());
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, RoundsToSeconds(nDuration));
        eVisCall = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
        eLink =  EffectDamage(d6(2), DAMAGE_TYPE_ELECTRICAL);
        eLink = EffectLinkEffects(eLink, eVisCall);
    
        // CALL LIGHTINING
        while(GetIsObjectValid(oTarget)) {
            if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) {
    

    // ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration));
    DelayCommand(GetRandomDelay(0.1, 0.5), ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget));
    }

            oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
        }
    
        PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
    }
    

    }

    void RageElf (object oPC, int nDuration, int nLevel) {
    int nStr, nDex, nConceal, nBlade;

    if (nLevel > 9) {
        nStr = 4;
        nDex = 4;
        nConceal = 20;
        nBlade = d6(6);
    } else if (nLevel > 7) {
        nStr = 4;
        nDex = 3;
        nConceal = 20;
        nBlade = d6(5);
    } else if (nLevel > 5) {
        nStr = 3;
        nDex = 3;
        nConceal = 15;
        nBlade = d6(4);
    } else if (nLevel > 3) {
        nStr = 2;
        nDex = 2;
        nConceal = 10;
        nBlade = d6(2);
    } else if (nLevel > 1) {
        nStr = 2;
        nDex = 2;
        nConceal = 10;
        nBlade = d6(2);
    } else {
        nStr = 2;
        nDex = 1;
        nConceal = 10;
        nBlade = d6(1);
    }
    
    PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
    //Determine the duration by getting the con modifier after being modified
    effect eDex = EffectAbilityIncrease(ABILITY_DEXTERITY, nDex);
    effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH, nStr);
    effect eConceal = EffectConcealment(nConceal);
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
    effect eLink = EffectLinkEffects(eLink, eDex);
    eLink = EffectLinkEffects(eLink, eStr);
    eLink = EffectLinkEffects(eLink, eConceal);
    eLink = EffectLinkEffects(eLink, eDur);
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_GHOST_SMOKE_2));
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_IMP_MAGBLUE));
    eLink = EffectLinkEffects(eLink, EffectVisualEffect(460));
    eLink = ExtraordinaryEffect(eLink);
    SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BARBARIAN_RAGE, FALSE));
    PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, OBJECT_SELF, RoundsToSeconds(nDuration));
    // BLADE DANCE
    int nDC = 10 + GetAbilityModifier(ABILITY_DEXTERITY) + (nLevel / 2);
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, GetLocation(oPC));
    DoWhirlwindAttack();     //ActionUseFeat(FEAT_WHIRLWIND_ATTACK, oEnemy)
    nBlade = GetReflexAdjustedDamage(nBlade, oTarget, nDC);
    effect eBlade = EffectDamage(nBlade, DAMAGE_TYPE_PIERCING);
    
    while(GetIsObjectValid(oTarget)) {
        if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)) {
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eBlade, oTarget);
        }
    
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
    }
    

    }

    void RageDefault (object oPC, int nDuration, int nLevel) {
    int nWill, nStr, nCon, nImmun;

    if (nLevel > 9) {
        nWill = 3;
        nStr = 4;
        nCon = 4;
        nImmun = 20;
    } else if (nLevel > 7) {
        nWill = 2;
        nStr = 4;
        nCon = 3;
        nImmun = 20;
    } else if (nLevel > 5) {
        nWill = 2;
        nStr = 3;
        nCon = 3;
        nImmun = 15;
    } else if (nLevel > 3) {
        nWill = 1;
        nStr = 3;
        nCon = 2;
        nImmun = 15;
    } else {
        nWill = 1;
        nStr = 2;
        nCon = 1;
        nImmun = 10;
    }
    
    PlayVoiceChat(VOICE_CHAT_BATTLECRY1);
    //Determine the duration by getting the con modifier after being modified
    effect eStr = EffectAbilityIncrease(ABILITY_CONSTITUTION, nCon);
    effect eCon = EffectAbilityIncrease(ABILITY_STRENGTH, nStr);
    effect eWill = EffectSavingThrowIncrease(SAVING_THROW_WILL, nWill);
    effect eImmun = EffectDamageImmunityIncrease(DAMAGE_TYPE_SLASHING, nImmun);
    eImmun = EffectLinkEffects(eImmun, EffectDamageImmunityIncrease(DAMAGE_TYPE_PIERCING, nImmun));
    eImmun = EffectLinkEffects(eImmun, EffectDamageImmunityIncrease(DAMAGE_TYPE_BLUDGEONING, nImmun));
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
    effect eLink = EffectLinkEffects(eCon, eStr);
    eLink = EffectLinkEffects(eLink, eWill);
    eLink = EffectLinkEffects(eLink, eImmun);
    eLink = EffectLinkEffects(eLink, eDur);
    SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_BARBARIAN_RAGE, FALSE));
    //Make effect extraordinary
    eLink = ExtraordinaryEffect(eLink);
    effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE); //Change to the Rage VFX
    //Apply the VFX impact and effects
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, OBJECT_SELF, RoundsToSeconds(nDuration));
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF) ;
    

    }

    void main() {
    if(!GetHasFeatEffect(FEAT_BARBARIAN_RAGE)) {
    object oPC = OBJECT_SELF;
    int nLevel = GetLevelByClass(CLASS_TYPE_BARBARIAN);
    int nDuration = 7 + GetAbilityModifier(ABILITY_CONSTITUTION);
    string sBarbRage = GetLocalString (oPC, "sBarbRage");

        if ((sBarbRage == "") || (sBarbRage == "Default")) {
            RageDefault (oPC, nDuration, nLevel);
            return;
        }
    
        if (sBarbRage == "RageThunder") {
            RageThunder (oPC, nDuration, nLevel);
            return;
        }
    
        if (sBarbRage == "RageElf") {
            RageElf (oPC, nDuration, nLevel);
            return;
        }
    
        if (sBarbRage == "RageWraith") {
            RageWraith (oPC, nDuration, nLevel);
            return;
        }
    
        if (sBarbRage == "RageJuggernaut") {
            RageJuggernaut (oPC, nDuration, nLevel);
            return;
        }
    
        if (sBarbRage == "RageBerserker") {
            RageBerserker (oPC, nDuration, nLevel);
            return;
        }
    }
    

    }


  • Storyteller [DM]

    Code posted as well.


  • Storyteller [DM]

    13 days, no comments. I guess these are fine as is and will be going live.


  • Admin [DM]

    @SpiffyMeister said in New Barbarian Rages:

    13 days, no comments. I guess these are fine as is and will be going live.

    Good job Spiffy and co. Locking this thread. If anyone has feedback or suggestions please start a new post.

    As a reminder we likely will miss any suggestions/feed back on Discord for this or anything else. Please take the time to make a forum post and we’ll get to it when we can.

    Happy Gaming!


Log in to reply