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.
102 lines
3.1 KiB
Plaintext
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);
|
|
}
|