Further file organization
Further file organization
This commit is contained in:
101
nwn/nwnprc/trunk/scripts/prc_frebzk.nss
Normal file
101
nwn/nwnprc/trunk/scripts/prc_frebzk.nss
Normal file
@@ -0,0 +1,101 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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);
|
||||
}
|
Reference in New Issue
Block a user