rendered paste body#include "spn_functions"//script adds speed modifications based on equipped items with item_prop_speed_modconst int ITEM_PROPERTY_SPEED_MOD = 134;const string PLAYER_SPEED_MOD = "player_speed_mod";//equip scriptvoid main(){ //declarations object oPC = GetPCItemLastEquippedBy(); object oItem = GetPCItemLastEquipped(); itemproperty ipTest = GetFirstItemProperty(oItem); int nCache = GetLocalInt(oPC, PLAYER_SPEED_MOD); int nSpeedMod = nCache, bDo = FALSE; DSpeak("nCache = " +IntToString(nCache)); // start adding new properties while(GetIsItemPropertyValid(ipTest)) { if(GetItemPropertyType(ipTest) == ITEM_PROPERTY_SPEED_MOD) { int iItemAdjust = 0; if (GetItemPropertyCostTableValue(ipTest) == 0) iItemAdjust = 10; else if(GetItemPropertyCostTableValue(ipTest) == 1) iItemAdjust = 20; else if(GetItemPropertyCostTableValue(ipTest) == 2) iItemAdjust = 30; else if(GetItemPropertyCostTableValue(ipTest) == 3) iItemAdjust = 40; else if(GetItemPropertyCostTableValue(ipTest) == 4) iItemAdjust = 50; else if(GetItemPropertyCostTableValue(ipTest) == 5) iItemAdjust = 60; else if(GetItemPropertyCostTableValue(ipTest) == 6) iItemAdjust = 70; else if(GetItemPropertyCostTableValue(ipTest) == 7) iItemAdjust = 80; else if(GetItemPropertyCostTableValue(ipTest) == 8) iItemAdjust = 90; else if(GetItemPropertyCostTableValue(ipTest) == 9) iItemAdjust = 99; else if(GetItemPropertyCostTableValue(ipTest) == 10) iItemAdjust = -10; else if(GetItemPropertyCostTableValue(ipTest) == 11) iItemAdjust = -20; else if(GetItemPropertyCostTableValue(ipTest) == 12) iItemAdjust = -30; else if(GetItemPropertyCostTableValue(ipTest) == 13) iItemAdjust = -40; else if(GetItemPropertyCostTableValue(ipTest) == 14) iItemAdjust = -50; else if(GetItemPropertyCostTableValue(ipTest) == 15) iItemAdjust = -60; else if(GetItemPropertyCostTableValue(ipTest) == 16) iItemAdjust = -70; else if(GetItemPropertyCostTableValue(ipTest) == 17) iItemAdjust = -80; else if(GetItemPropertyCostTableValue(ipTest) == 18) iItemAdjust = -90; else if(GetItemPropertyCostTableValue(ipTest) == 19) iItemAdjust = -99; nSpeedMod += iItemAdjust; bDo = TRUE; } ipTest = GetNextItemProperty(oItem); } // If the item had a speed mod itemproperty, handle the effect if(bDo) { //clean existing modification object oPrevItem = GetLocalObject(oPC, "SpeedIncreaseIpropLastApplierItem"); effect eTest = GetFirstEffect(oPC); while(GetIsEffectValid(eTest)) { if(GetEffectCreator(eTest) == oPrevItem && GetEffectDurationType(eTest) == DURATION_TYPE_TEMPORARY ) RemoveEffect(oPC, eTest); eTest = GetNextEffect(oPC); } //add new modification if(nSpeedMod < 0) { AssignCommand(oItem, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectMovementSpeedDecrease(-nSpeedMod), oPC, 99999.9)); DSpeak("Decreasing Speed = " +IntToString(nSpeedMod)); } else if (nSpeedMod > 0) { AssignCommand(oItem, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectMovementSpeedIncrease(nSpeedMod), oPC, 99999.9)); DSpeak("Increasing Speed = " +IntToString(nSpeedMod)); } else if (nSpeedMod = 0) // Avoids setting 0 bonus { DSpeak("Clearing Speed = " +IntToString(nSpeedMod)); } SetLocalInt(oPC, PLAYER_SPEED_MOD, nSpeedMod); GetLocalObject(oPC, "SpeedIncreaseIpropLastApplierItem", oItem); }}