Shargast_PRC8/_module/Chapter 2/nss/sd_soc_install.nss
Jaysyn904 66a0a3e043 Initial commit
Initial commit.
2024-08-03 14:13:18 -04:00

225 lines
10 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const string COLORTOKEN = " ##################$%&'()*+,-./0123456789:;;==?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[[]^_`abcdefghijklmnopqrstuvwxyz{|}~~€<>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ¡¡¢£¤¥¦§¨©ª«¬¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþþ";
string ColorString(string sText, int nRed=255, int nGreen=255, int nBlue=255)
{
return "<c" + GetSubString(COLORTOKEN, nRed, 1) + GetSubString(COLORTOKEN, nGreen, 1) + GetSubString(COLORTOKEN, nBlue, 1) + ">" + sText + "</c>";
}
void RE_SOCKET(object oPC, object oItem)
{
int iLength, iStart, iVal, iAmt;
string sSocks, sGem, i1, i2, i3, i4, i5, i6, i7, i8;
string sName = GetName(oItem);
iLength = GetStringLength(sName);
sSocks = GetSubString(sName, iLength-6, 1);
//SendMessageToPC(oPC, sName + " has " + sSocks + " sockets");
iVal = StringToInt(sSocks);
SetLocalInt(oItem, "SOCKETS",iVal);
}
void RE_GEM(object oPC, object oItem)
{
string sName, sType1;
int rVal;
sName = GetName(oItem);
// Misc ability gems
if (FindSubString(sName, "Vengeful")>=0) sType1 = "HOLY_AVENGER";
if (FindSubString(sName, "Deadly")>=0) sType1 = "KEEN";
if (FindSubString(sName, "Unstoppable")>=0) sType1 = "FREEDOM";
if (FindSubString(sName, "Slippery")>=0) sType1 = "IMPROVED_EVASION";
if (FindSubString(sName, "Speedy")>=0) sType1 = "HASTE";
if (FindSubString(sName, "Ocular")>=0) sType1 = "TRUE_SEEING";
// Attack Gems
if (FindSubString(sName,"Enhancement")>=0){sType1 = "ENHANCEMENT_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Attack")>=0){sType1 = "ATTACK_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"AC")>=0){sType1 = "AC_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Brutal")>=0){sType1 = "MASSIVE_CRITICAL";
rVal = StringToInt(GetSubString(sName, 7, 1));}
// Ability bonus gems
if (FindSubString(sName,"Mighty")>=0){sType1 = "STRENGTH_ABILITY_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Deft")>=0){sType1 = "DEXTERITY_ABILITY_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Wise")>=0){sType1 = "WISDOM_ABILITY_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Hardy")>=0){sType1 = "CONSTITUTION_ABILITY_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Clever")>=0){sType1 = "INTELLIGENCE_ABILITY_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Charming")>=0){sType1 = "CHARISMA_ABILITY_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
// Damage bonus gems
if (FindSubString(sName,"Corrosive")>=0){sType1 = "ACID_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Thumping")>=0){sType1 = "BLUDGEONING_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Ice")>=0){sType1 = "COLD_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Holy")>=0){sType1 = "DIVINE_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Zapping")>=0){sType1 = "ELECTIRCAL_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Scorching")>=0){sType1 = "FIRE_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Magical")>=0){sType1 = "MAGICAL_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Evil")>=0){sType1 = "NEGATIVE_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Impaling")>=0){sType1 = "PIERCING_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Benevolent")>=0){sType1 = "POSITIVE_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Slicing")>=0){sType1 = "SLASHING_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Booming")>=0){sType1 = "SONIC_DAMAGE_BONUS";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Regeneration")>=0){sType1 = "REGENERATION";
rVal = StringToInt(GetSubString(sName, 7, 1));}
if (FindSubString(sName,"Vamp Regen")>=0){sType1 = "VAMPIRIC_REGENERATION";
rVal = StringToInt(GetSubString(sName, 7, 1));}
// Damage Res Gems
if (FindSubString(sName, "Alkaline")>=0)
{sType1 = "ACID_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Solid")>=0)
{sType1 = "BLUDGEONING_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Warm")>=0)
{sType1 = "COLD_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Absolvsion")>=0)
{sType1 = "DIVINE_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Grounding")>=0)
{sType1 = "ELECTRICAL_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Cool")>=0)
{sType1 = "FIRE_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Mantle")>=0)
{sType1 = "MAGICAL_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Bright")>=0)
{sType1 = "NEGATIVE_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Shell")>=0)
{sType1 = "PIERCING_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Malevolent")>=0)
{sType1 = "POSITIVE_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Mesh")>=0)
{sType1 = "SLASHING_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
if (FindSubString(sName, "Dampening")>=0)
{sType1 = "SONIC_DAMAGE_RESISTANCE";
if (GetSubString(sName, 9, 1)==" ")rVal = StringToInt(GetSubString(sName, 8, 1));
else rVal = StringToInt(GetSubString(sName, 8, 2));}
SetLocalString(oItem, "GEM_TYPE", sType1);
SetLocalInt(oItem, "AMOUNT", rVal);
}
void main()
{
object oPC = OBJECT_SELF;
object oItem;
int iLength, iStart, iVal, iAmt;
string sSocks, sName;
// check item slots for socketed items
if (GetTag(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_CHEST, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_HEAD, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_NECK, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_NECK, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_BELT, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_BELT, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC));
if (GetTag(GetItemInSlot(INVENTORY_SLOT_ARMS, oPC))== "sf_socket_item")
RE_SOCKET(oPC, GetItemInSlot(INVENTORY_SLOT_ARMS, oPC));
// check inventory for socketed items
oItem = GetFirstItemInInventory(oPC);
while (GetIsObjectValid(oItem))
{
if (GetTag(oItem)=="sf_socket_item")
{
RE_SOCKET(oPC, oItem);
}
if (GetResRef(oItem)=="sd_rune"||
GetResRef(oItem)=="sd_rune2"||
GetResRef(oItem)=="sd_rune3")
{
RE_GEM(oPC, oItem);
}
oItem = GetNextItemInInventory(oPC);
}
string sMess = ColorString("Socketed items system ", 255, 215, 0);
sMess += ColorString("[loaded successfully]", 0, 255, 255);
SendMessageToPC(oPC, sMess);
return;
}