#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); } }