PRC8/nwn/nwnprc/trunk/scripts/prc_frebzk.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

102 lines
3.1 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Frenzied Berserker - Armor/Skin
//:://////////////////////////////////////////////
/*
Script to modify skin of Frenzied Berserker
*/
//:://////////////////////////////////////////////
//:: Created By: Oni5115
//:: Created On: Feb 26, 2004
//:://////////////////////////////////////////////
#include "prc_alterations" // for checking if item is a weapon
void CheckSupremePowerAttack(object oPC, int iEquip)
{
int bIsWeapon = FALSE;
if(iEquip == 2) // On Equip
{
object oWeapon = GetItemLastEquipped();
if(IPGetIsMeleeWeapon(oWeapon) || GetWeaponRanged(oWeapon) )
{
bIsWeapon = TRUE;
}
}
else if(iEquip == 1) // Unequip
{
object oWeapon = GetItemLastUnequipped();
if(IPGetIsMeleeWeapon(oWeapon) || GetWeaponRanged(oWeapon) )
{
bIsWeapon = TRUE;
}
}
if(GetHasFeatEffect(FEAT_SUPREME_POWER_ATTACK) && bIsWeapon)
{
// Removes effects
PRCRemoveSpellEffects(SPELL_SUPREME_POWER_ATTACK, oPC, oPC);
string nMes = "*Supreme Power Attack Mode Deactivated*";
FloatingTextStringOnCreature(nMes, OBJECT_SELF, FALSE);
}
}
void ApplyAutoFrenzy(object oPC, object oArmor)
{
IPSafeAddItemProperty(oArmor, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
SetLocalInt(oPC, "AFrenzy", 2);
}
void RemoveAutoFrenzy(object oPC, object oArmor)
{
RemoveSpecificProperty(oArmor, ITEM_PROPERTY_ONHITCASTSPELL, IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 0, 1, "", -1, DURATION_TYPE_TEMPORARY);
SetLocalInt(oPC, "AFrenzy", 1);
}
void main()
{
//Declare main variables.
object oPC = OBJECT_SELF;
object oItem;
int iEquip = GetLocalInt(oPC, "ONEQUIP");
if(GetHasFeat(FEAT_FRENZY) && GetLocalInt(oPC, "AFrenzy") == 0)
{
// remove bonus on error
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
RemoveAutoFrenzy(oPC, oArmor);
ApplyAutoFrenzy(oPC, oArmor);
}
else if(GetHasFeat(FEAT_FRENZY) && GetLocalInt(oPC, "AFrenzy") != 0)
{
if(iEquip == 2) // On Equip
{
// add bonus to armor
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
oItem = GetItemLastEquipped();
if(oItem == oArmor)
{
ApplyAutoFrenzy(oPC, oArmor);
}
}
else if(iEquip == 1) // Unequip
{
oItem = GetItemLastUnequipped();
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
{
RemoveAutoFrenzy(oPC, oItem);
}
}
else // On level, rest, or other events
{
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
RemoveAutoFrenzy(oPC, oArmor);
ApplyAutoFrenzy(oPC, oArmor);
}
}
CheckSupremePowerAttack(oPC, iEquip);
}