Ancordia_PRC8/_module/nss/craft_prevsimpl2.nss
Jaysyn904 102ba7dab6 Initial Commit
Initial Commit
2023-09-21 19:51:32 -04:00

130 lines
4.1 KiB
Plaintext

#include "x2_inc_itemprop"
//This is actually the main function.
void script(object oItem, object oPC)
{
int nCurrentApp = GetItemAppearance(oItem, ITEM_APPR_TYPE_SIMPLE_MODEL, ITEM_APPR_TYPE_SIMPLE_MODEL );
int nNewApp;
if (GetBaseItemType(oItem) == BASE_ITEM_AMULET)
{
switch (nCurrentApp)
{
case 28: nNewApp = 26; break;
case 1: nNewApp = 56; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_LARGESHIELD) {
switch (nCurrentApp)
{
case 21: nNewApp = 19; break;
case 31: nNewApp = 29; break;
case 41: nNewApp = 33; break;
case 51: nNewApp = 43; break;
case 90: nNewApp = 88; break;
case 11: nNewApp = 96; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_HELMET) {
switch (nCurrentApp)
{
case 47: nNewApp = 32; break;
case 53: nNewApp = 47; break;
case 67: nNewApp = 61; break;
//case 76: nNewApp = 68; break;
case 107: nNewApp = 68; break;
//case 166: nNewApp = 107; break;
case 1: nNewApp = 107; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_BRACER) {
switch (nCurrentApp)
{
case 51: nNewApp = 12; break;
case 1: nNewApp = 60; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_SMALLSHIELD) {
switch (nCurrentApp)
{
case 21: nNewApp = 19; break;
case 31: nNewApp = 25; break;
case 41: nNewApp = 33; break;
case 86: nNewApp = 43; break;
case 11: nNewApp = 88; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_BELT) {
switch (nCurrentApp)
{
case 51: nNewApp = 9; break;
case 238: nNewApp = 58; break;
case 1: nNewApp = 255; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_TOWERSHIELD) {
switch (nCurrentApp)
{
case 21: nNewApp = 13; break;
case 31: nNewApp = 23; break;
case 51: nNewApp = 46; break;
case 55: nNewApp = 51; break;
case 121: nNewApp = 60; break;
case 11: nNewApp = 123; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_RING) {
switch (nCurrentApp)
{
case 46: nNewApp = 37; break;
case 49: nNewApp = 47; break;
case 116: nNewApp = 50; break;
case 122: nNewApp = 120; break;
case 1: nNewApp = 125; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_CLOAK) {
switch (nCurrentApp)
{
case 1: nNewApp = 21; break;
case 21: nNewApp = 19; break;
default: nNewApp = nCurrentApp-1; break;
} }
if (GetBaseItemType(oItem) == BASE_ITEM_GLOVES) {
switch (nCurrentApp)
{
case 51: nNewApp = 10; break;
case 62: nNewApp = 60; break;
case 1: nNewApp = 62; break;
default: nNewApp = nCurrentApp-1; break;
} }
object oModified = CopyItemAndModify(oItem, ITEM_APPR_TYPE_SIMPLE_MODEL, ITEM_APPR_TYPE_SIMPLE_MODEL, nNewApp, TRUE);
SetItemCursedFlag(oModified, TRUE);
if (oModified != OBJECT_INVALID) DestroyObject(oItem);
if (GetBaseItemType(oModified) == BASE_ITEM_LARGESHIELD || GetBaseItemType(oModified) == BASE_ITEM_SMALLSHIELD
|| GetBaseItemType(oModified) == BASE_ITEM_TOWERSHIELD) ExecuteScript("craft_pcequip", oPC);
return;
}
void main()
{
object oPC = GetPCSpeaker();
int nSlot = 0;
object oItem;
//Check if the item being crafted is equipped
while (nSlot < 18)
{
oItem = GetItemInSlot(nSlot, oPC);
if (GetLocalInt(oItem, "Prototype") == TRUE) {script(oItem, oPC); return; }
nSlot++;
}
//If the item is not equipped, search for it in the inventory
oItem = GetFirstItemInInventory(oPC);
while (GetIsObjectValid(oItem))
{
if (GetLocalInt(oItem, "Prototype") == TRUE) {script(oItem, oPC); return; }
oItem = GetNextItemInInventory(oPC);
}
}