Earth nature field

Qel Mobile Area of Effects bug

Please post any in-game or website related bugs you encounter and any helpful steps or information to replicate the bug. **NOTE** If this is an unbalancing in-game exploit, please PM the DMs with the information to avoid any possible abuses. If you're unsure, PM the DMs.
Post Reply
Dander7BD
Posts: 25
Joined: Sun May 03, 2015 4:54 pm

Qel Mobile Area of Effects bug

Post by Dander7BD »

Background
The spell effects of "Invisibility sphere" and "Magic circle against alignment" is claimed by NwnWiki to have a mobility bug and in response Qel made a "fix" that applied the Mobile AOE (MAOE) on a untangible invisible entity that is supposed to follow the caster. That at least I am assuming to be the motivation for the spell edit.
NwnWiki wrote:This spell is subject to the mobile area of effect bug, in which an area of effect can lag behind the character it is attached to, allowing that character to actually exit the area of effect if moving fast enough. This results in the spell ending prematurely. (A fix for this is available on the Vault[1].)
Problem
I have so far seen no evidence of this bug in the Official Campaign. While the nordock Qel version always suffers from the problem of the MAOE not keeping up with caster. The fix essentially turned "bug can happen" into "bug is always there".

Don't blindly take my word for it, compare yourself.

Request
Please have the following script files restored to their original state: NW_S0_InvSph, NW_S0_CircEvil & NW_S0_CircGood

If casters is to be able to be anything (support/control) besides being magic missile turrets in a party. It is important that these MAOE spells is in the control of the players, not some invisible entity AI.
Xillie
Posts: 197
Joined: Tue Aug 20, 2013 9:18 pm

Re: Qel Mobile Area of Effects bug

Post by Xillie »

NWNwiki: The original spell has a "moving area" bug; a patch exists on nwvault (mirror).

My experience: Nordock's circle spells are are targeted at a spot at the ground, sometimes when walking out, walking back into the invisible circle "restores" the spell. Never have I seen any proof of the AOE moving just the slightest bit.
My interpretation: In Nordock, circle spells are supposed to give effects, but only if the caster remains stationary.
My suggestion: Contact Qel, if possible, and ask whether he introduced a modified version to prevent some form of exploitability. If none exists, a working patch could be considered?
*edit* Reviewing the scripts, they appear like they should work (Qel's create area of effect on caster), the immobility of the spheres should then be considered a bug. Perhaps somehow the "object" in the end still is not the caster self?


greets,

Xillie
Dander7BD
Posts: 25
Joined: Sun May 03, 2015 4:54 pm

Re: Qel Mobile Area of Effects bug

Post by Dander7BD »

If the original script is distrusted. Here is a sample script I wrote just now that works. And not only works, it have the added bonus of resetting the invisibility effect of those within (including the caster) at a set round periodicy (Ought to be at least 2 rounds or risk of becoming to overpowering).

Code: Select all

//::///////////////////////////////////////////////
//:: Invisibility Sphere
//:: NW_S0_InvSph.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    All allies within 15ft are rendered invisible.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 7, 2002
//:://////////////////////////////////////////////

#include "x2_inc_spellhook"

const int RESET_PERIODICY = 2; // the shorter the more overpowered it gets

// Delayed Recursive Invisibility Sphere Resetter
/**************************************************************
    2015
    Author: dander.1981@gmail.com (Dander7BD at landofnordock.net)
 **************************************************************/
void ResetInvisSphere( effect aoe, object carrier, int durationRounds )
{
   // only proceed if the buff aren't close to expiration or been dispelled.
   if( GetHasSpellEffect(SPELL_INVISIBILITY_SPHERE, carrier) && durationRounds > RESET_PERIODICY )
   {
        // Reapplying the effect (with shorter time) will cancel out the old and reset.
        // Including force the enter event on all allied creatures within the sphere.
        ApplyEffectToObject( DURATION_TYPE_TEMPORARY, aoe, carrier, RoundsToSeconds(durationRounds) );

        // scheduling the next recursive reset tick
        DelayCommand( RoundsToSeconds(2), ResetInvisSphere(aoe, carrier, durationRounds - RESET_PERIODICY) );

        // Debug!
        //SendMessageToPC( carrier, "Debug: Invisiblity Sphere reset scheduled." );
    }
}

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-23 by GeorgZ
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/

    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

// End of Spell Cast Hook


    //Declare major variables including Area of Effect Object
    effect eAOE = EffectAreaOfEffect(AOE_PER_INVIS_SPHERE);
    int nDuration = GetCasterLevel(OBJECT_SELF);
    int nMetaMagic = GetMetaMagicFeat();
    //Make sure duration does no equal 0
    if (nDuration < 1)
    {
        nDuration = 1;
    }
    //Check Extend metamagic feat.
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
       nDuration = nDuration *2;    //Duration is +100%
    }

    int durationRounds = nDuration * 10; // Turns to Rounds
    ApplyEffectToObject( DURATION_TYPE_TEMPORARY, eAOE, OBJECT_SELF, RoundsToSeconds(durationRounds) );

    // scheduling the first recursive reset tick (only reset every second round)
    DelayCommand( RoundsToSeconds(2), ResetInvisSphere(eAOE, OBJECT_SELF, durationRounds - RESET_PERIODICY) );
}
* Edit: Miss-use of the term "Deferred", changed to "Delayed". *embarrased facepalming*
Post Reply