PDA

View Full Version : Undye fix


realityincarnate
04-10-2009, 10:07 AM
I noticed that if you try to undye an armor slot by setting all colors to 255, it only works until next time you zone. This makes it permanent (and also consumes a prismatic dye).


Index: inventory.cpp
================================================== =================
--- inventory.cpp (revision 418)
+++ inventory.cpp (working copy)
@@ -919,9 +919,9 @@
void Client::DyeArmor(DyeStruct* dye){
sint16 slot=0;
for(int i=0;i<7;i++){
- if(dye->dye[i].rgb.use_tint && (m_pp.item_tint[i].rgb.blue!=dye->dye[i].rgb.blue ||
+ if(m_pp.item_tint[i].rgb.blue!=dye->dye[i].rgb.blue ||
m_pp.item_tint[i].rgb.red!=dye->dye[i].rgb.red ||
- m_pp.item_tint[i].rgb.green != dye->dye[i].rgb.green)){
+ m_pp.item_tint[i].rgb.green != dye->dye[i].rgb.green){
slot = m_inv.HasItem(32557, 1, invWherePersonal);
if(slot != SLOT_INVALID){
DeleteItemInInventory(slot,1,true);
@@ -930,7 +930,10 @@
if(inst){
inst->SetColor((dye->dye[i].rgb.red*65536)+(dye->dye[i].rgb.green*256)+(dye->dye[i].rgb.blue));
database.SaveInventory(CharacterID(),inst,slot2);
- m_pp.item_tint[i].rgb.use_tint = 0xFF;
+ if(dye->dye[i].rgb.use_tint)
+ m_pp.item_tint[i].rgb.use_tint = 0xFF;
+ else
+ m_pp.item_tint[i].rgb.use_tint=0x00;
}
m_pp.item_tint[i].rgb.blue=dye->dye[i].rgb.blue;
m_pp.item_tint[i].rgb.red=dye->dye[i].rgb.red;

Derision
04-10-2009, 12:16 PM
Thanks, I'll test this out and put it in along with your title suffix and bard tweaks.

I think Cavedude was going to test out your merchant list quest one, so I'll wait for him to put that one in.