PoA_PRC8/_module/nss/exploitfix.nss
Jaysyn904 8d97886c3f Changed folder name.
Changed folder name.
2022-10-07 21:08:37 -04:00

76 lines
2.8 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Example XP2 OnItemEquipped
//:: x2_mod_def_unequ
//:: (c) 2003 Bioware Corp.
//:://////////////////////////////////////////////
/*
Put into: OnUnEquip Event
*/
//:://////////////////////////////////////////////
//:: Created By: Georg Zoeller
//:: Created On: 2003-07-16
//:://////////////////////////////////////////////
//Modified By Guile 3/24/08
//This modifcation stops a weapon switching exploit
//Which gives the makes the PC never miss!!!
///////////////////////////////////////////////////
#include "x2_inc_switches"
#include "x2_inc_intweapon"
void main()
{
object oItem = GetPCItemLastUnequipped();
object oPC = GetPCItemLastUnequippedBy();
////////////Weapon Swap PVP Exploit Fix///////////////
//Lets make sure they are in combat
if(GetIsInCombat(oPC))
{
//Lets make sure it's a weapon or shield they are unequipping
if(GetBaseItemType(oItem) != BASE_ITEM_AMULET)
{if(GetBaseItemType(oItem) != BASE_ITEM_ARROW)
{if(GetBaseItemType(oItem) != BASE_ITEM_BELT)
{if(GetBaseItemType(oItem) != BASE_ITEM_BOLT)
{if(GetBaseItemType(oItem) != BASE_ITEM_BOOTS)
{if(GetBaseItemType(oItem) != BASE_ITEM_BRACER)
{if(GetBaseItemType(oItem) != BASE_ITEM_CLOAK)
{if(GetBaseItemType(oItem) != BASE_ITEM_HELMET)
{if(GetBaseItemType(oItem) != BASE_ITEM_BULLET)
{if(GetBaseItemType(oItem) != BASE_ITEM_RING)
{
//This stops whatever it is they are doing & they must retarget the enemy.
//And if they are using the swap while casting, they must recast the spell
DelayCommand(0.5, AssignCommand(oPC, ClearAllActions()));
}}}}}}}}}}
}
/////////Exploit Fix END////////////
// -------------------------------------------------------------------------
// Intelligent Weapon System
// -------------------------------------------------------------------------
if (IPGetIsIntelligentWeapon(oItem))
{
IWSetIntelligentWeaponEquipped(oPC,OBJECT_INVALID);
IWPlayRandomUnequipComment(oPC,oItem);
}
// -------------------------------------------------------------------------
// Generic Item Script Execution Code
// If MODULE_SWITCH_EXECUTE_TAGBASED_SCRIPTS is set to TRUE on the module,
// it will execute a script that has the same name as the item's tag
// inside this script you can manage scripts for all events by checking against
// GetUserDefinedItemEventNumber(). See x2_it_example.nss
// -------------------------------------------------------------------------
if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE)
{
SetUserDefinedItemEventNumber(X2_ITEM_EVENT_UNEQUIP);
int nRet = ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oItem),OBJECT_SELF);
if (nRet == X2_EXECUTE_SCRIPT_END)
{
return;
}
}
}