All pastes #14059 Raw Edit

Ornedan

public c v1 · immutable
#14059 ·published 2005-06-12 14:00 UTC
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);    }}