City of Arabel
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    evards dc incorrect

    Scheduled Pinned Locked Moved Closed Bugs
    3 Posts 3 Posters 24 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • CadizC
      Cadiz
      last edited by Cadiz

      68f0ddf6-43b7-4778-bd9b-318c89e18d68-image.png

      the dc for evards doesnt seem to be being calculated correctly.

      see screenie! dc should be 10+5(int)+2 (sf) +4 (level) = 21

      (frustrating as i died cos the spawns weren’t incapacitated by the spell)

      Zool's rule - don't be a dick.

      Mr.MolochM 1 Reply Last reply Reply Quote
      • Mr.MolochM
        Mr.Moloch @Cadiz
        last edited by

        @Cadiz DC is correct. Its not based on the function you think it is based on. Its based on a grapple check.

        //::///////////////////////////////////////////////
        //:: Evards Black Tentacles: Heartbeat
        //:: NW_S0_EvardsB
        //:: Copyright (c) 2001 Bioware Corp.
        //:://////////////////////////////////////////////
        /*
            Upon remaining within the mass of rubbery tentacles the
            target is struck by 1d4 + 1/lvl tentacles.  Each
            makes a grapple check. If it succeeds then
            it does 1d6+4 damage and the target must make
            a Fortitude Save versus paralysis or be paralyzed
            for 1 round.
        */
        //:://////////////////////////////////////////////
        //:: Created By: Preston Watamaniuk
        //:: Created On: Nov 23, 2001
        //:://////////////////////////////////////////////
        //:: GZ: Removed SR, its not there by the book
        
        
        #include "X0_I0_SPELLS"
        #include "x2_inc_spellhook"
        
        void main() {
            object oTarget;
            effect eParal = EffectParalyze();
            effect eDur = EffectVisualEffect(VFX_DUR_PARALYZED);
            effect eLink = EffectLinkEffects(eDur, eParal);
            effect eDam;
            effect eFail = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
            int nMetaMagic = GetMetaMagicFeat();
            int nDamage;
            int nDieDam;
            float fDelay;
            int nNumberTargets = 0;
            int nTargetSize;
            int nTentacleGrappleCheck;
            int nOpposedGrappleCheck;
            int nOppossedGrappleCheckModifiers;
            int nHits;
            int nMinimumTargets = 2;
            int nTentaclesPerTarget;
            int nCasterLevel = GetAdjustedCasterLevel(OBJECT_SELF);
        
            if ( nCasterLevel > 20 ) {
                nCasterLevel = 20;
            }
        
            nTentaclesPerTarget = d4();
        
            if (nMetaMagic == METAMAGIC_MAXIMIZE) {
                nTentaclesPerTarget = 4;
            }
        
            nTentaclesPerTarget = nTentaclesPerTarget + nCasterLevel;
        
            if (nMetaMagic == METAMAGIC_EMPOWER) {
                nTentaclesPerTarget = nTentaclesPerTarget + (nTentaclesPerTarget / 2); //Number of variable tentacles is +50%
            }
        
            oTarget = GetFirstInPersistentObject();
        
            while(GetIsObjectValid(oTarget)) {
               // if ( GetCreatureSize(oTarget) >= CREATURE_SIZE_MEDIUM ) {
                    if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) {
                        nNumberTargets++;
                   // }
                } else {
                    // Some visual feedback that the spell doesn't affect creatures of this type.
                    fDelay = GetRandomDelay(0.75, 1.5);
                    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFail, oTarget, fDelay);
                }
        
                oTarget = GetNextInPersistentObject();
            }
        
            if ( nNumberTargets > 0 ) {
                // Distribute the tentacle between all valid targets.
                if ( nNumberTargets < nMinimumTargets ) {
                    // If there is only one target in the area, then only a portion of the tentacles should be able to reach them.
                    nTentaclesPerTarget = nTentaclesPerTarget / nMinimumTargets;
                } else {
                    nTentaclesPerTarget = nTentaclesPerTarget / nNumberTargets;
                }
        
                oTarget = GetFirstInPersistentObject();
        
                while(GetIsObjectValid(oTarget)) {
                    nDamage = 0;
                    nTargetSize = GetCreatureSize(oTarget);
        
                    if ( nTargetSize >= CREATURE_SIZE_SMALL ) {
                        if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) {
                            //Fire cast spell at event for the specified target
                            SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_EVARDS_BLACK_TENTACLES));
                            **nOppossedGrappleCheckModifiers = GetBaseAttackBonus(oTarget) + GetAbilityModifier(ABILITY_STRENGTH, oTarget);**
        
                            if (nTargetSize == CREATURE_SIZE_LARGE ) {
                                nOppossedGrappleCheckModifiers = nOppossedGrappleCheckModifiers + 4;
                            } else if ( nTargetSize = CREATURE_SIZE_HUGE ) {
                                nOppossedGrappleCheckModifiers = nOppossedGrappleCheckModifiers + 8;
                            }
        
                            for (nHits = nTentaclesPerTarget; nHits > 0; nHits--) {
                                // Grapple Check.
                                nTentacleGrappleCheck = d20() + nCasterLevel + 8; // Str(4) + Large Tentacle(4)
                                nOpposedGrappleCheck = d20() + nOppossedGrappleCheckModifiers;
        
                                if(nTentacleGrappleCheck >= nOpposedGrappleCheck) {
                                    nDieDam = d6() + 4;
        
                                    //Enter Metamagic conditions
                                    if (nMetaMagic == METAMAGIC_MAXIMIZE) {
                                        nDieDam = 10;//Damage is at max 6+4=10
                                    }
        
                                    if (nMetaMagic == METAMAGIC_EMPOWER) {
                                        nDieDam = nDieDam + (nDieDam / 2); //Damage/Healing is +50%
                                    }
        
                                    nDamage = nDamage + nDieDam;
                                    eDam = EffectDamage(nDieDam, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_PLUS_ONE);
                                    fDelay = GetRandomDelay(0.75, 1.5);
                                    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
                                }
                            }
                        }
                    }
        
                    if(nDamage > 0) {
                        if(!MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDCCustom(), SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay)) {
                            DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(1)));
                        }
                    }
        
                    oTarget = GetNextInPersistentObject();
                }
            }
        }
        

        In the future, there are two simple rules to remember:

        NO SPITTING.

        DO NOT CROSS MISTER MOLOCH.

        https://youtu.be/dQw4w9WgXcQ?si=uHdfqTMS7FMTWREf

        1 Reply Last reply Reply Quote
        • R
          Richord
          last edited by

          If Evard's DC calculation followed the logic of other spells it'd be horrendously overpowered.

          1 Reply Last reply Reply Quote
          • Mr.MolochM Mr.Moloch moved this topic from Bug Reports
          • 1 / 1
          • First post
            Last post