View Single Post
  #12  
Old 08-14-2006, 07:56 AM
Glorandwarf
Fire Beetle
 
Join Date: Jul 2006
Posts: 5
Default

Hello all,

I think I've finally gotten the AAs to display correctly in the AA window of the Titanium client. Now you can purchase the AAs and they will display correctly, even after zoning and logging. So if you purchase 2 ranks of Innate Strength, the client will reflect this in the Inventory window. It also has a fix that will display the purchase strings correctly for both Client62 and Titanium.

The following patches are built using the 0.7.0-841 source:

for common/emu_oplist.h:
Code:
25a26
> N(OP_UpdateAA),
for common/eq_packet_structs.h:
Code:
3116,3117c3116,3118
< /*0088*/	int32 total_abilities;
< /*0092*/	AA_Ability abilities[0];
---
> /*0088*/	char  name[128];		// added AA name to struct, not used outside of server
> /*0216*/	int32 total_abilities;
> /*0220*/	AA_Ability abilities[0];
for utils/patch_Titanium.conf:
Code:
414c414
< OP_UpdateAA=0x0000
---
> OP_UpdateAA=0x5966
for zone/AA.cpp:
Code:
569,587c569,572
< 		char val1[20]={0};
< 		char val2[20]={0};
< 		char val3[20]={0};
< 		char points[20]={0};
< 		char point[20]={0};
< 		const char* points2=ConvertArray(AA_POINTS,points);
< 		const char* point2=ConvertArray(AA_POINT,point);
< 		if(cur_level<1){
< 			if(aa2->cost>1)
< 				Message_StringID(15,AA_GAIN_ABILITY,ConvertArray(aa2->title_sid,val1),ConvertArray(aa2->cost,val2),points2);
< 			else
< 				Message_StringID(15,AA_GAIN_ABILITY,ConvertArray(aa2->title_sid,val1),ConvertArray(aa2->cost,val2),point2);
< 		}
< 		else{
< 			if(aa2->cost>1)
< 				Message_StringID(15,AA_IMPROVE,ConvertArray(aa2->title_sid,val1),ConvertArray(cur_level,val2),ConvertArray(aa2->cost,val3),points2);
< 			else
< 				Message_StringID(15,AA_IMPROVE,ConvertArray(aa2->title_sid,val1),ConvertArray(cur_level,val2),ConvertArray(aa2->cost,val3),point2);
<         }
---
> 		if(cur_level<1)
> 			Message(15,"You have gained the ability \"%s\" at a cost of %d ability %s.", aa2->name, aa2->cost, (aa2->cost>1)?"points":"point");
> 		else
> 			Message(15,"You have improved %s %d at a cost of %d ability %s.", aa2->name, cur_level, aa2->cost, (aa2->cost>1)?"points":"point");
671c656
< 			saa->abilities[0].increase_amt*=value;
---
> 			saa->abilities[0].increase_amt*=saa->current_level;
1001c986
< 		"classes, berserker,spellid,class_type"
---
> 		"classes, berserker,spellid,class_type,name"
1034a1020
> 			strcpy(sendaa->name,row[15]);
1037c1023
< 			if(sendaa->hotkey_sid==0xFFFFFFFF)
---
> 			if(sendaa->max_level>1)
for zone/client_packet.h:
Code:
7a8
> 	void Handle_Connect_OP_UpdateAA(const EQApplicationPacket *app);
and for zone/client_packet.cpp:
Code:
115a116
> 	ConnectingOpcodes[OP_UpdateAA] = &Client::Handle_Connect_OP_UpdateAA;
6449a6451,6455
> 
> void Client::Handle_Connect_OP_UpdateAA(const EQApplicationPacket *app)
> {
> 	SendAATable();
> }
\ No newline at end of file
Also, during my testing, I have found out that in SendAA_Struct, the field "class_type" refers instead to the minimum level the character has to be in order to buy the AA.

Hope this helps out.

P.S. Sorry about the long post, was going to send the files in a zip attachment, but couldn't upload them for some reason.
Reply With Quote