int MaxAppearanceIndex(object oItem, int nPart, int nColor) { int nMax1; int nMax2; int nMax3; int nMax4; int nMax5; int nMax6; int nMin = 1; int nMax; int nTotal = 0; int nColors = 0; switch (GetBaseItemType(oItem)) { case BASE_ITEM_BOLT: { nMax1 = 3; nMax2 = 6; nMax3 = 3; nColors = 4; } break; case BASE_ITEM_ARROW: { nTotal = 3; nMax4 = 7; nMax5 = 1; nMax6 = 7; } break; case BASE_ITEM_LONGBOW: { nTotal = 8; nColors = 4; } break; case BASE_ITEM_SHORTBOW: { nTotal = 6; nColors = 4; } break; case BASE_ITEM_HEAVYCROSSBOW: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_LIGHTCROSSBOW: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_HALBERD: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_SCYTHE: { nTotal = 3; nColors = 4; } break; case BASE_ITEM_TRIDENT: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_SHORTSPEAR: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_MAGICSTAFF: { nTotal = 6; nColors = 4; } break; case BASE_ITEM_KAMA: { nTotal = 1; nColors = 4; } break; case BASE_ITEM_KUKRI: { nTotal = 1; nColors = 4; } break; case BASE_ITEM_SICKLE: { nTotal = 1; nColors = 4; } break; case BASE_ITEM_THROWINGAXE: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_LIGHTMACE: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_HEAVYFLAIL: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_LIGHTFLAIL: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_CLUB: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_LIGHTHAMMER: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_WARHAMMER: { nTotal = 6; nColors = 4; } break; case BASE_ITEM_MORNINGSTAR: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_QUARTERSTAFF: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_TWOBLADEDSWORD: { nTotal = 3; nColors = 4; } break; case BASE_ITEM_DOUBLEAXE: { nTotal = 3; nColors = 4; } break; case BASE_ITEM_DIREMACE: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_LONGSWORD: { nTotal = 10; nColors = 4; } break; case BASE_ITEM_KATANA: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_RAPIER: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_SCIMITAR: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_SHORTSWORD: { nTotal = 6; nColors = 4; } break; case BASE_ITEM_BASTARDSWORD: { nTotal = 6; nColors = 4; } break; case BASE_ITEM_DAGGER: { nTotal = 6; nColors = 4; } break; case BASE_ITEM_GREATSWORD: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_BATTLEAXE: { nTotal = 6; nColors = 4; } break; case BASE_ITEM_HANDAXE: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_GREATAXE: { nTotal = 4; nColors = 4; } break; case BASE_ITEM_BULLET: { nMax = 8; } break; case BASE_ITEM_SHURIKEN: { nMax = 3; } break; case BASE_ITEM_DART: { nMax = 3; } break; case BASE_ITEM_SLING: { nMax = 16; } break; } if (nTotal != 0) {nMax1 = nTotal; nMax2 = nTotal; nMax3 = nTotal; } if (nColors != 0) {nMax4 = nColors; nMax5 = nColors; nMax6 = nColors; } if (nColor == TRUE) { switch (nPart) { case ITEM_APPR_WEAPON_COLOR_TOP: { nMax = nMax4; } break; case ITEM_APPR_WEAPON_COLOR_MIDDLE: { nMax = nMax5; } break; case ITEM_APPR_WEAPON_COLOR_BOTTOM: { nMax = nMax6; } break; } } else { switch (nPart) { case ITEM_APPR_WEAPON_MODEL_TOP: { nMax = nMax1; } break; case ITEM_APPR_WEAPON_MODEL_MIDDLE: { nMax = nMax2; } break; case ITEM_APPR_WEAPON_MODEL_BOTTOM: { nMax = nMax3; } break; } } return nMax; } object ModifiedItem(object oItem, int nType, int nPart, int nColor) { int nFinalApp = MaxAppearanceIndex(oItem, nPart, nColor); //ITEM_APPR_WEAPON_MODEL_TOP int nCurrentApp = GetItemAppearance(oItem, nType, nPart); int nNextApp; if (nCurrentApp >= nFinalApp) nNextApp = 1; else nNextApp = nCurrentApp+1; object oNewItem = CopyItemAndModify(oItem, nType, nPart, nNextApp, TRUE); SetItemCursedFlag(oNewItem, TRUE); if (oNewItem != OBJECT_INVALID) {DestroyObject(oItem); return oNewItem;} else return oItem; } /*object ModifiedArmor(object oItem, int nPart) { int nCurrentApp = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL , nPart); siwtch (nCurrentApp) { case } int nNextApp; if (nCurrentApp >= nFinalApp) nNextApp = 1; else nNextApp = nCurrentApp+1; object oNewItem = CopyItemAndModify(oItem, nType, nPart, nNextApp, TRUE); SetItemCursedFlag(oNewItem, TRUE); if (oNewItem != OBJECT_INVALID) {DestroyObject(oItem); return oNewItem;} else return oItem; } */