Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system. Added PC deleter. Added ACP 4.1. Full compile. Updated release archive.
275 lines
7.5 KiB
Plaintext
275 lines
7.5 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Dom Queron's Effect Toolbox
|
|
//:: gzinc_effecttool
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Dom Queron
|
|
//:: Created On: 06-13-2002
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_inc_spells"
|
|
#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);
|
|
|
|
void GZSetUpHealer(object oModule);
|
|
|
|
/*
|
|
-------------------------
|
|
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 = ((PRCGetHasEffect(EFFECT_TYPE_BLINDNESS,oPC) == TRUE) || (PRCGetHasEffect(EFFECT_TYPE_DEAF,oPC)==TRUE));
|
|
return bBlind;
|
|
}
|
|
|
|
int GZGetIsDamaged(object oPC)
|
|
{
|
|
int bDamaged = (GetPercentageHPLoss(oPC) <100);
|
|
return bDamaged;
|
|
}
|
|
|
|
int GZGetHasAbilityDamage(object oPC)
|
|
{
|
|
int bAbilityDmg = (PRCGetHasEffect(EFFECT_TYPE_ABILITY_DECREASE,oPC) == TRUE);
|
|
return bAbilityDmg;
|
|
}
|
|
|
|
int GZGetIsPoisoned(object oPC)
|
|
{
|
|
int bPoisoned = (PRCGetHasEffect(EFFECT_TYPE_POISON,oPC) == TRUE);
|
|
return bPoisoned;
|
|
}
|
|
|
|
int GZGetIsDiseased(object oPC)
|
|
{
|
|
int bDiseased = (PRCGetHasEffect(EFFECT_TYPE_DISEASE,oPC) == TRUE);
|
|
return bDiseased;
|
|
}
|
|
|
|
int GZGetIsCursed(object oPC)
|
|
{
|
|
int bCursed = (PRCGetHasEffect(EFFECT_TYPE_CURSE,oPC) == TRUE);
|
|
return bCursed;
|
|
}
|
|
|
|
int GZGetIsPolymorphed(object oPC)
|
|
{
|
|
int bPoly = (PRCGetHasEffect(EFFECT_TYPE_POLYMORPH,oPC) == TRUE);
|
|
return bPoly;
|
|
}
|
|
|
|
int GZHasNegativeLevels(object oPC)
|
|
{
|
|
int bLvl = (PRCGetHasEffect(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);
|
|
}
|
|
|
|
}
|
|
|
|
// This function sets the cost of my custom healer services
|
|
void GZSetUpHealer(object oModule)
|
|
{
|
|
if (GetLocalInt(oModule,"T1_MODULE_HEALERSETUP") == 0)
|
|
{
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_FULLCHECK",100);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_HEAL",50);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_RESLVL",500);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_RESAB",200);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_DISEASE",20);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_BLIND",80);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_POISON",20);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALER_CURSE",100);
|
|
SetLocalInt(oModule,"T1_MODULE_HEALERSETUP",TRUE);
|
|
}
|
|
}
|
|
|
|
|