forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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);
|
|
}
|