130 lines
4.1 KiB
Plaintext
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);
|
|
}
|
|
}
|