NWNDS/nwnds_module/divinetenser_inc.nss
Jaysyn904 de24f81734 Added NWN Dark Sun module contents
Added NWN Dark Sun module contents.
2021-07-12 21:24:46 -04:00

257 lines
7.8 KiB
Plaintext

#include "x2_inc_itemprop"
//*Checks to see if the EFFECT_TYPE_DAMAGE_IMMUNITY_INCREASE is still
//*there. if not, the spell has expired or was dispelled
void CheckHasTensersEffects(object oTarget = OBJECT_SELF);
//*Checks to see if the EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE is still
//*there. if not, the spell has expired or was dispelled
void CheckDivinePowerEffects(object oTarget);
//custom function so as not to conflict with nw_i0_spells (duplicate
//function implementation). Also ensures a normal magical effect,
//in case a custom race or PrC has this effect generated as Supernatural
int VulcGetHasNormalEffect(int nEffectType, object oTarget = OBJECT_SELF)
{
effect eCheck = GetFirstEffect(oTarget);
while(GetIsEffectValid(eCheck))
{
if(GetEffectType(eCheck) == nEffectType &&
GetEffectSubType(eCheck) == SUBTYPE_MAGICAL)
{
return TRUE;
}
eCheck = GetNextEffect(oTarget);
}
return FALSE;
}
//returns true if the weapon is an exotic weapon
int GetIsExoticWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_DIREMACE) ||
(nItem == BASE_ITEM_DOUBLEAXE) ||
(nItem == BASE_ITEM_DWARVENWARAXE) ||
(nItem == BASE_ITEM_KATANA) ||
(nItem == BASE_ITEM_KUKRI) ||
(nItem == BASE_ITEM_SCYTHE) ||
(nItem == BASE_ITEM_KAMA) ||
(nItem == BASE_ITEM_SHURIKEN) ||
(nItem == BASE_ITEM_SICKLE) ||
(nItem == BASE_ITEM_TWOBLADEDSWORD) ||
(nItem == BASE_ITEM_WHIP))
{
return TRUE;
}
return FALSE;
}
//returns true if the weapon is a martial weapon
int GetIsMartialWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_BATTLEAXE) ||
(nItem == BASE_ITEM_GREATAXE) ||
(nItem == BASE_ITEM_GREATSWORD) ||
(nItem == BASE_ITEM_HALBERD) ||
(nItem == BASE_ITEM_HANDAXE) ||
(nItem == BASE_ITEM_LONGSWORD) ||
(nItem == BASE_ITEM_SCIMITAR) ||
(nItem == BASE_ITEM_HEAVYFLAIL) ||
(nItem == BASE_ITEM_LIGHTFLAIL) ||
(nItem == BASE_ITEM_LIGHTHAMMER) ||
(nItem == BASE_ITEM_RAPIER) ||
(nItem == BASE_ITEM_WARHAMMER) ||
(nItem == BASE_ITEM_THROWINGAXE) ||
(nItem == BASE_ITEM_LONGBOW) ||
(nItem == BASE_ITEM_TRIDENT) ||
(nItem == BASE_ITEM_SHORTBOW))
{
return TRUE;
}
return FALSE;
}
//returns true if the weapon is a simple weapon that wizards normally
//can't use
int GetIsSimpleWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_CLUB) ||
(nItem == BASE_ITEM_DAGGER) ||
(nItem == BASE_ITEM_HEAVYCROSSBOW) ||
(nItem == BASE_ITEM_LIGHTCROSSBOW) ||
(nItem == BASE_ITEM_QUARTERSTAFF) ||
(nItem == BASE_ITEM_LIGHTMACE) ||
(nItem == BASE_ITEM_SICKLE) ||
(nItem == BASE_ITEM_SHORTSPEAR) ||
(nItem == BASE_ITEM_MORNINGSTAR) ||
(nItem == BASE_ITEM_DART) ||
(nItem == BASE_ITEM_SLING))
{
return TRUE;
}
return FALSE;
}
int GetIsElfWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_LONGBOW) ||
(nItem == BASE_ITEM_LONGSWORD) ||
(nItem == BASE_ITEM_RAPIER) ||
(nItem == BASE_ITEM_SHORTBOW))
{
return TRUE;
}
return FALSE;
}
int GetIsRogueWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_CLUB) ||
(nItem == BASE_ITEM_DAGGER) ||
(nItem == BASE_ITEM_DART) ||
(nItem == BASE_ITEM_HANDAXE) ||
(nItem == BASE_ITEM_HEAVYCROSSBOW) ||
(nItem == BASE_ITEM_LIGHTCROSSBOW) ||
(nItem == BASE_ITEM_QUARTERSTAFF) ||
(nItem == BASE_ITEM_LIGHTMACE) ||
(nItem == BASE_ITEM_SHORTSWORD) ||
(nItem == BASE_ITEM_RAPIER) ||
(nItem == BASE_ITEM_MORNINGSTAR) ||
(nItem == BASE_ITEM_SLING) ||
(nItem == BASE_ITEM_SHORTBOW))
{
return TRUE;
}
return FALSE;
}
int GetIsMonkWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_CLUB) ||
(nItem == BASE_ITEM_DAGGER) ||
(nItem == BASE_ITEM_HANDAXE) ||
(nItem == BASE_ITEM_LIGHTCROSSBOW) ||
(nItem == BASE_ITEM_HEAVYCROSSBOW) ||
(nItem == BASE_ITEM_QUARTERSTAFF) ||
(nItem == BASE_ITEM_SHURIKEN) ||
(nItem == BASE_ITEM_KAMA) ||
(nItem == BASE_ITEM_SLING))
{
return TRUE;
}
return FALSE;
}
int GetIsDruidWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_LONGBOW) ||
(nItem == BASE_ITEM_LONGSWORD) ||
(nItem == BASE_ITEM_RAPIER) ||
(nItem == BASE_ITEM_SHORTBOW))
{
return TRUE;
}
return FALSE;
}
int GetIsWizardWeapon(object oItem)
{
//Declare major variables
int nItem = GetBaseItemType(oItem);
if((nItem == BASE_ITEM_CLUB) ||
(nItem == BASE_ITEM_DAGGER) ||
(nItem == BASE_ITEM_HEAVYCROSSBOW) ||
(nItem == BASE_ITEM_LIGHTCROSSBOW) ||
(nItem == BASE_ITEM_MAGICROD) ||
(nItem == BASE_ITEM_MAGICSTAFF) ||
(nItem == BASE_ITEM_MAGICWAND) ||
(nItem == BASE_ITEM_QUARTERSTAFF))
{
return TRUE;
}
return FALSE;
}
int GetIsProficientWithWeapon(object oItem)
{
int iReturn;
if((GetIsMartialWeapon(oItem) && GetHasFeat(FEAT_WEAPON_PROFICIENCY_MARTIAL)) ||
(GetIsSimpleWeapon(oItem) && GetHasFeat(FEAT_WEAPON_PROFICIENCY_SIMPLE)) ||
(GetIsElfWeapon(oItem) && GetHasFeat(FEAT_WEAPON_PROFICIENCY_ELF)) ||
(GetIsRogueWeapon(oItem) && GetHasFeat(FEAT_WEAPON_PROFICIENCY_ROGUE)) ||
(GetIsMonkWeapon(oItem) && GetHasFeat(FEAT_WEAPON_PROFICIENCY_MONK)) ||
(GetIsDruidWeapon(oItem) && GetHasFeat(FEAT_WEAPON_PROFICIENCY_DRUID)) ||
(GetIsWizardWeapon(oItem) && GetHasFeat(FEAT_WEAPON_PROFICIENCY_WIZARD)) ||
(GetIsExoticWeapon(oItem) && GetHasFeat(IP_CONST_FEAT_WEAPON_PROF_EXOTIC)) ||
(GetBaseItemType(oItem) == BASE_ITEM_MAGICSTAFF) ||
(GetBaseItemType(oItem) == BASE_ITEM_SMALLSHIELD) ||
(GetBaseItemType(oItem) == BASE_ITEM_LARGESHIELD) ||
(GetBaseItemType(oItem) == BASE_ITEM_TOWERSHIELD) ||
(GetBaseItemType(oItem) == BASE_ITEM_TORCH) ||
(GetBaseItemType(oItem) == BASE_ITEM_MAGICROD) ||
(GetBaseItemType(oItem) == BASE_ITEM_MAGICWAND))
{
return TRUE;
}
return FALSE;
}
void CheckHasTensersEffects(object oTarget = OBJECT_SELF)
{
int nTenser = GetLocalInt(oTarget,"tensers_transformation");
object oRight, oLeft, oArmor;
if(nTenser)
{
//check for turn resistance. if gone, the spell was
//dispelled/expired.
if(VulcGetHasNormalEffect(EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE,oTarget))
{
return;
}
else
{
DeleteLocalInt(oTarget,"tensers_transformation");
RestoreBaseAttackBonus(oTarget);
oRight = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oTarget);
oLeft = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oTarget);
oArmor = GetLocalObject(oTarget,"tensers_armor");
SetItemCursedFlag(oArmor,FALSE);
if(!GetIsProficientWithWeapon(oLeft))
{
AssignCommand(oTarget,ClearAllActions());
AssignCommand(oTarget,ActionUnequipItem(oLeft));
}
if(!GetIsProficientWithWeapon(oRight))
{
AssignCommand(oTarget,ClearAllActions());
AssignCommand(oTarget,ActionUnequipItem(oRight));
}
}
}
}
void CheckDivinePowerEffects(object oTarget)
{
if(VulcGetHasNormalEffect(EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE,oTarget))
{
return;
}
else
{
RestoreBaseAttackBonus(oTarget);
}
}
//void main () {}