View Single Post
  #3  
Old 05-22-2007, 05:49 AM
Darkonig
Hill Giant
 
Join Date: Dec 2006
Posts: 102
Default

Code:
Index: tradeskills.cpp
===================================================================
RCS file: /cvsroot/eqemulator/EQEmuCVS/Source/zone/tradeskills.cpp,v
retrieving revision 1.17
diff -r1.17 tradeskills.cpp
108,109c108,109
< 	int8 tstype = 0xE8;
< 	uint8 passtype = 0;
---
> 	uint8 c_type = 0xE8;
> 	uint32 some_id = 0;
117a118
> 		c_type = worldo->m_type;
125c126,127
< 				tstype = item->BagType;
---
> 				c_type = item->BagType;
> 				some_id = item->ID;
137,139c139,148
< 	// Convert container type to tradeskill type
< 	SkillType tradeskill = TradeskillUnknown;
< 	switch (tstype)
---
> 	DBTradeskillRecipe_Struct spec;
> 	if (!database.GetTradeRecipe(container, c_type, some_id, &spec)) {
> 		user->Message_StringID(4,TRADESKILL_NOCOMBINE);
> 		EQApplicationPacket* outapp = new EQApplicationPacket(OP_TradeSkillCombine, 0);
> 		user->QueuePacket(outapp);
> 		safe_delete(outapp);
> 		return;
> 	}
> 	
> 	switch (spec.tradeskill)
141,177c150,151
< 	case 16:
< 		tradeskill = TAILORING;
< 		break;
< 	case 0xE8: //Generic World Container
< 		if(!worldcontainer)	//just to garuntee that worldo is valid
< 			return;
< 		passtype = worldo->m_type;
< 		
< 		if(worldo->m_type == OT_MEDICINEBAG) {
< 			if ((user_pp.class_ == SHAMAN) & (user_pp.level >= MIN_LEVEL_ALCHEMY))
< 				tradeskill = ALCHEMY;
< 			else if (user_pp.class_ != SHAMAN)
< 				user->Message(13, "This tradeskill can only be performed by a shaman.");
< 			else if (user_pp.level < MIN_LEVEL_ALCHEMY)
< 				user->Message(13, "You cannot perform alchemy until you reach level %i.", MIN_LEVEL_ALCHEMY);
< 			break;
< 		} else {
< 			tradeskill = TypeToSkill(worldo->m_type);
< 		}
< 		break;
< 	case 18:
< 		tradeskill = FLETCHING;
< 		break;
< 	case 20:
< 		tradeskill = JEWELRY_MAKING;
< 		break;
< 	case 30: //Pottery Still needs completion
< 		tradeskill = POTTERY;
< 		break;
< 	case 14: // Baking 
< 	case 15:
< 		tradeskill = BAKING;
< 		break;
< 	case 9: //Alchemy Still needs completion
< 		if ((user_pp.class_ == SHAMAN) & (user_pp.level >= MIN_LEVEL_ALCHEMY))
< 			tradeskill = ALCHEMY;
< 		else if (user_pp.class_ != SHAMAN)
---
> 	case ALCHEMY:
> 		if (user_pp.class_ != SHAMAN)
180a155
> 		return;
182,185c157,158
< 	case 10: //Tinkering Still needs completion
< 		if (user_pp.race == GNOME)
< 			tradeskill = TINKERING;
< 		else
---
> 	case TINKERING:
> 		if (user_pp.race != GNOME)
186a160
> 		return;
188,200c162,163
< 	case 24: //Research Still needs completion
< 	case 25:
< 	case 26:
< 	case 27:
< 		tradeskill = RESEARCH;
< 		break;
< 	case 28: // Another Quest Containers.. Cavedude asked for this
< 		tradeskill = GENERIC_TRADESKILL;
< 		break;
< 	case 12:
< 		if (user_pp.class_ == ROGUE)
< 			tradeskill = MAKE_POISON;
< 		else
---
> 	case MAKE_POISON:
> 		if (user_pp.class_ != ROGUE)
202,223d164
< 		break;
< 	case 13: //Quest Containers
< 		tradeskill = GENERIC_TRADESKILL;
< 		break;
< 	case 46: //Fishing Still needs completion
< 		tradeskill = FISHING;
< 		break;
< 	default:
< 		user->Message(13, "This tradeskill has not been implemented yet, if you get this message send a "
< 			"petition and let them know what tradeskill you were trying to use. and give them the following code: 0x%02X", tradeskill);
< 	}
< 	
< 	if (tradeskill == TradeskillUnknown) {
< 		return;
< 	}
< 	
< 	DBTradeskillRecipe_Struct spec;
< 	if (!database.GetTradeRecipe(container, passtype, tradeskill, &spec)) {
< 		user->Message_StringID(4,TRADESKILL_NOCOMBINE);
< 		EQApplicationPacket* outapp = new EQApplicationPacket(OP_TradeSkillCombine, 0);
< 		user->QueuePacket(outapp);
< 		safe_delete(outapp);
224a166
> 		break;
228c170
< 	bool success = user->TradeskillExecute(&spec, tradeskill);
---
> 	bool success = user->TradeskillExecute(&spec);
272,279d213
< 	SkillType tskill = Object::TypeToSkill(rac->object_type);
< 	if(tskill == TradeskillUnknown) {
< 		LogFile->write(EQEMuLog::Error, "Unknown container type for HandleAutoCombine: %d\n", rac->object_type);
< 		user->QueuePacket(outapp);
< 		safe_delete(outapp);
< 		return;
< 	}
< 	
282c216
< 	if (!database.GetTradeRecipe(rac->recipe_id, rac->object_type, tskill, &spec)) {
---
> 	if (!database.GetTradeRecipe(rac->recipe_id, rac->object_type, rac->some_id, &spec)) {
395c329
< 	bool success = user->TradeskillExecute(&spec, tskill);
---
> 	bool success = user->TradeskillExecute(&spec);
653,654c587,588
< bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec, SkillType tradeskill) {
< 	if(spec == NULL || tradeskill == 0)
---
> bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
> 	if(spec == NULL)
657c591
< 	int16 user_skill = GetSkill(tradeskill);
---
> 	int16 user_skill = GetSkill(spec->tradeskill);
676c610
< 	switch(tradeskill) {
---
> 	switch(spec->tradeskill) {
698c632
< 	if (tradeskill ==  FLETCHING || tradeskill == MAKE_POISON) {
---
> 	if (spec->tradeskill ==  FLETCHING || spec->tradeskill == MAKE_POISON) {
701c635
< 	} else if (tradeskill == BLACKSMITHING) {
---
> 	} else if (spec->tradeskill == BLACKSMITHING) {
780c714
< 	if (((tradeskill==75) || GetGM() || (chance > res)) || MakeRandomInt(0, 99) < AAChance){
---
> 	if (((spec->tradeskill==75) || GetGM() || (chance > res)) || MakeRandomInt(0, 99) < AAChance){
784c718
< 			CheckIncreaseTradeskill(bonusstat, stat_modifier, skillup_modifier, success_modifier, tradeskill);
---
> 			CheckIncreaseTradeskill(bonusstat, stat_modifier, skillup_modifier, success_modifier, spec->tradeskill);
801c735
< 			CheckIncreaseTradeskill(bonusstat, stat_modifier, skillup_modifier, success_modifier, tradeskill);
---
> 			CheckIncreaseTradeskill(bonusstat, stat_modifier, skillup_modifier, success_modifier, spec->tradeskill);
continued next post, still too big
Reply With Quote