DMH-Online

Dungeon Masters Helper · Est. 2005

PCs Scripts

NWN Script: remove_neg.htm

Author: Dom Queron
Author Website: gulbsoft.de
Script Name: Dom Queron's Effect Toolbox
Description: Include file for finding and removing negative effects from PCs.
Instructions on Use: ...

Script 1 (include file):

//::///////////////////////////////////////////////
//:: Dom Queron's Effect Toolbox
//:: gzinc_effecttool
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
*/
//:://////////////////////////////////////////////
//:: Created By: Dom Queron
//:: Created On: 06-13-2002
//:://////////////////////////////////////////////
#include "nw_i0_generic"
/*
    -------------------------
    INTERFACE
    -------------------------
                              */
// Detect Effect Function
int GZHasNegativeEffects(object oPC);
int GZGetIsBlindOrDeaf(object oPC);
int GZGetIsDamaged(object oPC);
int GZGetHasAbilityDamage(object oPC);
int GZGetIsPoisoned(object oPC);
int GZGetIsDiseased(object oPC);
int GZGetIsCursed(object oPC);
int GZGetIsPolymorphed(object oPC);
int GZHasNegativeLevels(object oPC);
// Remove effect functions
void GZRemovePhysicalDamage(object oPC);
void GZRemoveDisease(object oPC);
void GZRemoveBlindOrDeafness(object oPC);
void GZRemovePoison(object oPC);
void GZRemoveCurse(object oPC);
void GZRemoveAbilityDamage(object oPC);
void GZRemoveNegativeLevels(object oPC);
void GZRemoveAllNegativeEffects(object oPC);
/*
    -------------------------
    IMPLEMENTATION
    -------------------------
                              */
/* --== Effect Detection Functions ==-- */
int GZHasNegativeEffects(object oPC)
{
    int bNeg = (GZGetHasAbilityDamage(oPC) ||GZGetIsBlindOrDeaf(oPC) || GZGetIsCursed (oPC) || GZGetIsDamaged(oPC) || GZGetIsDiseased(oPC)|| GZGetIsPoisoned(oPC) || GZGetIsPolymorphed(oPC) || GZHasNegativeLevels(oPC));
    return bNeg;
}
int GZGetIsBlindOrDeaf(object oPC)
{
    int bBlind = ((GetHasEffect(EFFECT_TYPE_BLINDNESS,oPC) == TRUE) || (GetHasEffect(EFFECT_TYPE_DEAF,oPC)==TRUE));
    return bBlind;
}
int GZGetIsDamaged(object oPC)
{
    int bDamaged = (GetPercentageHPLoss(oPC) <100);
    return bDamaged;
}
int GZGetHasAbilityDamage(object oPC)
{
    int bAbilityDmg = (GetHasEffect(EFFECT_TYPE_ABILITY_DECREASE,oPC) == TRUE);
    return bAbilityDmg;
}
int GZGetIsPoisoned(object oPC)
{
    int bPoisoned = (GetHasEffect(EFFECT_TYPE_POISON,oPC) == TRUE);
    return bPoisoned;
}
int GZGetIsDiseased(object oPC)
{
    int bDiseased = (GetHasEffect(EFFECT_TYPE_DISEASE,oPC) == TRUE);
    return bDiseased;
}
int GZGetIsCursed(object oPC)
{
    int bCursed = (GetHasEffect(EFFECT_TYPE_CURSE,oPC) == TRUE);
    return bCursed;
}
int GZGetIsPolymorphed(object oPC)
{
    int bPoly = (GetHasEffect(EFFECT_TYPE_POLYMORPH,oPC) == TRUE);
    return bPoly;
}
int GZHasNegativeLevels(object oPC)
{
    int bLvl = (GetHasEffect(EFFECT_TYPE_NEGATIVELEVEL,oPC) == TRUE);
    return bLvl;
}
/* --== Effect Removal Functions ==-- */
void GZRemovePhysicalDamage(object oPC)
{
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPC)), oPC);
}
void GZRemoveDisease(object oPC)
{
    if (GZGetIsDiseased(oPC)) // safety check
    {
        effect eBad = GetFirstEffect(oPC);
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_DISEASE)
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPC, eBad);
                }
            eBad = GetNextEffect(oPC);
        }
    }
}
void GZRemoveBlindOrDeafness(object oPC)
{
    if (GZGetIsBlindOrDeaf(oPC)) // safety check
    {
        effect eBad = GetFirstEffect(oPC);
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
                GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS )
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPC, eBad);
                }
            eBad = GetNextEffect(oPC);
        }
    }
}
void GZRemovePoison(object oPC)
{
    if (GZGetIsPoisoned(oPC)) // safety check
    {
        effect eBad = GetFirstEffect(oPC);
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_POISON)
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPC, eBad);
                }
            eBad = GetNextEffect(oPC);
        }
    }
}
void GZRemoveCurse(object oPC)
{
    if (GZGetIsCursed(oPC)) // safety check
    {
        effect eBad = GetFirstEffect(oPC);
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_CURSE)
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPC, eBad);
                }
            eBad = GetNextEffect(oPC);
        }
    }
}
void GZRemoveAbilityDamage(object oPC)
{
    if (GZGetHasAbilityDamage(oPC)) // safety check
    {
        effect eBad = GetFirstEffect(oPC);
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE)
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPC, eBad);
                }
            eBad = GetNextEffect(oPC);
        }
    }
}
void GZRemoveNegativeLevels(object oPC)
{
    if (GZHasNegativeLevels(oPC)) // safety check
    {
        effect eBad = GetFirstEffect(oPC);
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPC, eBad);
                }
            eBad = GetNextEffect(oPC);
        }
    }
}
/*
    Negative Effect Overkill
    Uses Code from nw_o0_death
*/
void GZRemoveAllNegativeEffects(object oPC)
{
        effect eBad = GetFirstEffect(oPC);
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPC)), 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 ||
                GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
                GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
                GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
                GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
                {
                    //Remove effect if it is negative.
                    RemoveEffect(oPC, eBad);
                }
            eBad = GetNextEffect(oPC);
        }
}
⌂ All Scripts ← PreviousNext → 👁 Category List

All PCs Scripts

📄 adjust_faction 📄 alt_idle_pc_anim 📄 bleeding 📄 bleeding_002 📄 bleeding_003 📄 bleeding_004 📄 creature_item 📄 drop_items 📄 force_zone 📄 give_pc_item 📄 inspect_inv 📄 limited_druid 📄 move_items_to_container 📄 notify_of_loot 📄 pc_respawn 📄 pc_respawn_002 📄 pc_respawn_003 📄 pc_respawn_004 📄 pc_respawn_005 📄 pc_respawn_006 📄 pc_respawn_007 📄 remove_neg 📄 save_spots 📄 strip_inv_give_gold 📄 strip_inv_plot 📄 subraces 📄 subraces_002 📄 voting