Thread: Undye fix
View Single Post
  #1  
Old 04-10-2009, 10:07 AM
realityincarnate
Developer
 
Join Date: Dec 2007
Posts: 122
Default Undye fix [Committed in Rev420]

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).

Code:
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;

Last edited by Derision; 04-10-2009 at 09:11 PM.. Reason: [Committed in Rev420]
Reply With Quote