/////////////// Universal Dye Kit v1.0 ////////////// // // // Creator: Aesica // // Contact: aesicae@hotmail.com // // // // http://www.angelfire.com/goth/chantel/nwn // // // // Description: This universal dye kit was // // designed to add to the customization // // options available in HotU for armor // // appearances. The unique power function on // // the universal dye kit allows players to // // cycle through and set any color available, // // and is a much tidier alternative than // // trying to have 1 dye kit for every color // // in the game. // // // // An option exists (See the "Adjustable // // Settings" section below) that allows the // // module builder to disable any of the // // "hidden" colors if so desired. By default, // // all of the hidden colors have been set // // to TRUE. (Enabled) // // // Use: Place the [udk_onactivate] script in the // // OnActivate part of the module, or simply // // add [#include "udk_include"] and // // [EnableDyeKitMenu();] to an existing // // OnActivate script. // // // // Important: You may use this dye kit package // // however you please, and modify any part of // // it in whatever way you feel will best suit // // the needs of your mod, except for the // // 'About the Universal Dye Kit' part in the // // dialog. I ask that this part be left // // unchanged, so that those who find problems // // can inform me, and so that those who would // // like to use it for their own modules may // // easily find it. // // // // Problems: If you experience any bugs in these // // scripts, please check for the solution at // // http://www.angelfire.com/goth/chantel/nwn // // or, as a last resort, contact me and // // inform me of the problem. Please try to // // be specific, in this case. // // // // Thanks and enjoy! // ///////////////////////////////////////////////////// // // - o - // ///////////// Adjustable Settings /////////////////// // Adjust these variables to TRUE or FALSE if you // // wish to allow/disallow any of the 'hidden' // // dye colors (the invisible bottom color row) // // // // If you change any of these, don't forget to use // // the Build Module command to recompile the // // scripts...or you can recompile them // // individually if you really want to. // ///////////////////////////////////////////////////// /*56*/ int COLOR_SILVER = TRUE; /*57*/ int COLOR_OBSIDIAN = TRUE; /*58*/ int COLOR_GOLD = TRUE; /*59*/ int COLOR_COPPER = TRUE; /*60*/ int COLOR_GREY = TRUE; /*61*/ int COLOR_MIRROR = TRUE; /*62*/ int COLOR_WHITE = TRUE; /*63*/ int COLOR_BLACK = TRUE; ///////////// Adjustable Variable End ////////////// // Adjust the temporary value for the dye kit's color void AdjustCurrentDyeKitColor(object oDyeKit, int iAmount); // Send a message to the player detailing both the // dye kit's original and current color value void ShowDyeKitColorStatus(object oPlayer); // Command used to initiate the dialog menu. // Put this into your onactivate script. // It will check for "UDK" as the first 3 letters of // the tag on its own. void EnableDyeKitMenu(); // Set the current color of the dye kit void SetDyeKitColor(); // Send a message with the game's metal colors void ShowMetalList(); // Send a message with the game's cloth/leather colors void ShowClothList(); void ShowDyeKitColorStatus(object oPlayer) { int iCurrentColor = GetLocalInt(OBJECT_SELF, "CurrentDyeColor"); int iOriginalColor = GetLocalInt(OBJECT_SELF, "OriginalDyeColor"); string sMessage = "Original[" + IntToString(iOriginalColor) + "] Current: [" + IntToString(iCurrentColor) + "]"; SendMessageToPC(OBJECT_SELF, sMessage); } void AdjustCurrentDyeKitColor(object oDyeKit, int iAmount) { // Last 2 characters in a dye kit's tag define the // the color value int iColor = GetLocalInt(OBJECT_SELF, "CurrentDyeColor"); // Adjust color iColor = iColor + iAmount; // Cycle through to skip disabled colors if (iAmount > 0) { if (COLOR_SILVER == FALSE && iColor == 56) iColor++; if (COLOR_OBSIDIAN == FALSE && iColor == 57) iColor++; if (COLOR_GOLD == FALSE && iColor == 58) iColor++; if (COLOR_COPPER == FALSE && iColor == 59) iColor++; if (COLOR_GREY == FALSE && iColor == 60) iColor++; if (COLOR_MIRROR == FALSE && iColor == 61) iColor++; if (COLOR_WHITE == FALSE && iColor == 62) iColor++; if (COLOR_BLACK == FALSE && iColor == 63) iColor++; } // Wraparound if (iColor > 63) iColor = iColor - 64; if (iColor < 0) iColor = iColor + 64; // Cycle through to skip disabled colors if (iAmount < 0) { if (COLOR_BLACK == FALSE && iColor == 63) iColor--; if (COLOR_WHITE == FALSE && iColor == 62) iColor--; if (COLOR_MIRROR == FALSE && iColor == 61) iColor--; if (COLOR_GREY == FALSE && iColor == 60) iColor--; if (COLOR_COPPER == FALSE && iColor == 59) iColor--; if (COLOR_GOLD == FALSE && iColor == 58) iColor--; if (COLOR_OBSIDIAN == FALSE && iColor == 57) iColor--; if (COLOR_SILVER == FALSE && iColor == 56) iColor--; } // Adjust and set new value SetLocalInt(OBJECT_SELF, "CurrentDyeColor", iColor); } void EnableDyeKitMenu() { object oItem = GetItemActivated(); object oActivator = GetItemActivator(); string sTag = GetStringLeft(GetTag(oItem), 3); int iColor = StringToInt(GetStringRight(GetTag(oItem), 2)); if (sTag == "UDK") { SetLocalObject(oActivator, "DyeKit", oItem); SetLocalInt(oActivator, "CurrentDyeColor", iColor); SetLocalInt(oActivator, "OriginalDyeColor", iColor); AssignCommand(oActivator, ActionStartConversation(OBJECT_SELF, "udk_dialog", TRUE)); } } void SetDyeKitColor() { object oDyeKit = GetLocalObject(OBJECT_SELF, "DyeKit"); int iCurrentColor = GetLocalInt(OBJECT_SELF, "CurrentDyeColor"); string sTag = GetTag(oDyeKit); string sNewTag = GetStringLeft(sTag, GetStringLength(sTag) - 2); if (iCurrentColor > 9) sNewTag = sNewTag + IntToString(iCurrentColor); if (iCurrentColor < 10) sNewTag = sNewTag + "0" + IntToString(iCurrentColor); CopyObject(oDyeKit, GetLocation(OBJECT_SELF), OBJECT_SELF, sNewTag); DestroyObject(oDyeKit); } void ShowClothList() { string sMessage; sMessage = sMessage + "00 = Lightest Tan/Brown\n"; sMessage = sMessage + "01 = Light Tan/Brown\n"; sMessage = sMessage + "02 = Dark Tan/Brown\n"; sMessage = sMessage + "03 = Darkest Tan/Brown\n"; sMessage = sMessage + "04 = Lightest Tan/Red\n"; sMessage = sMessage + "05 = Light Tan/Red\n"; sMessage = sMessage + "06 = Dark Tan/Red\n"; sMessage = sMessage + "07 = Darkest Tan/Red\n"; sMessage = sMessage + "08 = Lightest Tan/Yellow\n"; sMessage = sMessage + "09 = Light Tan/Yellow\n"; sMessage = sMessage + "10 = Dark Tan/Yellow\n"; sMessage = sMessage + "11 = Darkest Tan/Yellow\n"; sMessage = sMessage + "12 = Lightest Tan/Grey\n"; sMessage = sMessage + "13 = Light Tan/Grey\n"; sMessage = sMessage + "14 = Dark Tan/Grey\n"; sMessage = sMessage + "15 = Darkest Tan/Grey\n"; sMessage = sMessage + "16 = Lightest Olive\n"; sMessage = sMessage + "17 = Light Olive\n"; sMessage = sMessage + "18 = Dark Olive\n"; sMessage = sMessage + "19 = Darkest Olive\n"; sMessage = sMessage + "20 = White\n"; sMessage = sMessage + "21 = Light Grey\n"; sMessage = sMessage + "22 = Dark Grey\n"; sMessage = sMessage + "23 = Black\n"; sMessage = sMessage + "24 = Light Blue\n"; sMessage = sMessage + "25 = Dark Blue\n"; sMessage = sMessage + "26 = Light Aqua\n"; sMessage = sMessage + "27 = Dark Aqua\n"; sMessage = sMessage + "28 = Light Teal\n"; sMessage = sMessage + "29 = Dark Teal\n"; sMessage = sMessage + "30 = Light Green\n"; sMessage = sMessage + "31 = Dark Green\n"; sMessage = sMessage + "32 = Light Yellow\n"; sMessage = sMessage + "33 = Dark Yellow\n"; sMessage = sMessage + "34 = Light Orange\n"; sMessage = sMessage + "35 = Dark Orange\n"; sMessage = sMessage + "36 = Light Red\n"; sMessage = sMessage + "37 = Dark Red\n"; sMessage = sMessage + "38 = Light Pink\n"; sMessage = sMessage + "39 = Dark Pink\n"; sMessage = sMessage + "40 = Light Purple\n"; sMessage = sMessage + "41 = Dark Purple\n"; sMessage = sMessage + "42 = Light Violet\n"; sMessage = sMessage + "43 = Dark Violet\n"; sMessage = sMessage + "44 = Shiny White\n"; sMessage = sMessage + "45 = Shiny Black\n"; sMessage = sMessage + "46 = Shiny Blue\n"; sMessage = sMessage + "47 = Shiny Aqua\n"; sMessage = sMessage + "48 = Shiny Teal\n"; sMessage = sMessage + "49 = Shiny Green\n"; sMessage = sMessage + "50 = Shiny Yellow\n"; sMessage = sMessage + "51 = Shiny Orange\n"; sMessage = sMessage + "52 = Shiny Red\n"; sMessage = sMessage + "53 = Shiny Pink\n"; sMessage = sMessage + "54 = Shiny Purple\n"; sMessage = sMessage + "55 = Shiny Violet\n"; if (COLOR_SILVER == TRUE) sMessage = sMessage + "56 = Hidden: Silver\n"; if (COLOR_OBSIDIAN == TRUE) sMessage = sMessage + "57 = Hidden: Obsidian\n"; if (COLOR_GOLD == TRUE) sMessage = sMessage + "58 = Hidden: Gold\n"; if (COLOR_COPPER == TRUE) sMessage = sMessage + "59 = Hidden: Copper\n"; if (COLOR_GREY == TRUE) sMessage = sMessage + "60 = Hidden: Grey\n"; if (COLOR_MIRROR == TRUE) sMessage = sMessage + "61 = Hidden: Mirror\n"; if (COLOR_WHITE == TRUE) sMessage = sMessage + "62 = Hidden: Absolute White\n"; if (COLOR_BLACK == TRUE) sMessage = sMessage + "63 = Hidden: Absolute Black\n"; SendMessageToPC(OBJECT_SELF, sMessage); } void ShowMetalList() { string sMessage; sMessage = sMessage + "00 = Lightest Shiny Silver\n"; sMessage = sMessage + "01 = Light Shiny Silver\n"; sMessage = sMessage + "02 = Dark Shiny Obsidian\n"; sMessage = sMessage + "03 = Darkest Shiny Obsidian\n"; sMessage = sMessage + "04 = Lightest Dull Silver\n"; sMessage = sMessage + "05 = Light Dull Silver\n"; sMessage = sMessage + "06 = Dark Dull Obsidian\n"; sMessage = sMessage + "07 = Darkest Dull Obsidian\n"; sMessage = sMessage + "08 = Lightest Gold\n"; sMessage = sMessage + "09 = Light Gold\n"; sMessage = sMessage + "10 = Dark Gold\n"; sMessage = sMessage + "11 = Darkest Gold\n"; sMessage = sMessage + "12 = Lightest Celestial Gold\n"; sMessage = sMessage + "13 = Light Celestial Gold\n"; sMessage = sMessage + "14 = Dark Celestial Gold\n"; sMessage = sMessage + "15 = Darkest Celestial Gold\n"; sMessage = sMessage + "16 = Lightest Copper\n"; sMessage = sMessage + "17 = Light Copper\n"; sMessage = sMessage + "18 = Dark Copper\n"; sMessage = sMessage + "19 = Darkest Copper\n"; sMessage = sMessage + "20 = Lightest Brass\n"; sMessage = sMessage + "21 = Light Brass\n"; sMessage = sMessage + "22 = Dark Brass\n"; sMessage = sMessage + "23 = Darkest Brass\n"; sMessage = sMessage + "24 = Light Red\n"; sMessage = sMessage + "25 = Dark Red\n"; sMessage = sMessage + "26 = Light Dull Red\n"; sMessage = sMessage + "27 = Dark Dull Red\n"; sMessage = sMessage + "28 = Light Purple\n"; sMessage = sMessage + "29 = Dark Purple\n"; sMessage = sMessage + "30 = Light Dull Purple\n"; sMessage = sMessage + "31 = Dark Dull Purple\n"; sMessage = sMessage + "32 = Light Blue\n"; sMessage = sMessage + "33 = Dark Blue\n"; sMessage = sMessage + "34 = Light Dull Blue\n"; sMessage = sMessage + "35 = Dark Dull Blue\n"; sMessage = sMessage + "36 = Light Teal\n"; sMessage = sMessage + "37 = Dark Teal\n"; sMessage = sMessage + "38 = Light Dull Teal\n"; sMessage = sMessage + "39 = Dark Dull Teal\n"; sMessage = sMessage + "40 = Light Green\n"; sMessage = sMessage + "41 = Dark Green\n"; sMessage = sMessage + "42 = Light Dull Green\n"; sMessage = sMessage + "43 = Dark Dull Green\n"; sMessage = sMessage + "44 = Light Olive\n"; sMessage = sMessage + "45 = Dark Olive\n"; sMessage = sMessage + "46 = Light Dull Olive\n"; sMessage = sMessage + "47 = Dark Dull Olive\n"; sMessage = sMessage + "48 = Light Prismatic\n"; sMessage = sMessage + "49 = Dark Prismatic\n"; sMessage = sMessage + "50 = Lightest Rust\n"; sMessage = sMessage + "51 = Light Rust\n"; sMessage = sMessage + "52 = Dark Rust\n"; sMessage = sMessage + "53 = Darkest Rust\n"; sMessage = sMessage + "54 = Light Aged Metal\n"; sMessage = sMessage + "55 = Dark Aged Metal\n"; if (COLOR_SILVER == TRUE) sMessage = sMessage + "56 = Hidden: Silver\n"; if (COLOR_OBSIDIAN == TRUE) sMessage = sMessage + "57 = Hidden: Obsidian\n"; if (COLOR_GOLD == TRUE) sMessage = sMessage + "58 = Hidden: Gold\n"; if (COLOR_COPPER == TRUE) sMessage = sMessage + "59 = Hidden: Copper\n"; if (COLOR_GREY == TRUE) sMessage = sMessage + "60 = Hidden: Grey\n"; if (COLOR_MIRROR == TRUE) sMessage = sMessage + "61 = Hidden: Mirror\n"; if (COLOR_WHITE == TRUE) sMessage = sMessage + "62 = Hidden: Absolute White\n"; if (COLOR_BLACK == TRUE) sMessage = sMessage + "63 = Hidden: Absolute Black\n"; SendMessageToPC(OBJECT_SELF, sMessage); }