Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::General Support

Support::General Support Post all topics here having to do with errors while trying to connect to an EQEMu server but not about the setup/running of the Server itself.

Reply
 
Thread Tools Display Modes
  #1  
Old 08-09-2011, 06:37 AM
calloflunacy
Fire Beetle
 
Join Date: Jul 2011
Posts: 5
Default Bestial Alignment AA

So something I noticed on the Bestial Alignment AA ability, it states in the description that it turns you into the likeness of your warder, and from what I remember and can find on live it is race specific, so as an iksar I should turn into a scaled wolf.

On the emulator it appears to only turn you into a generic wolf model, and it makes you very tiny like a level 1 pet.

occurs in all zones, every time as far as I can tell. Not a critical ability, but something that is fun to use and looks cool if it worked correctly.

Here's the link to the alla info on it.
http://everquest.allakhazam.com/db/s...html?skill=509
Reply With Quote
  #2  
Old 01-15-2012, 12:32 AM
AudioGarden21
Sarnak
 
Join Date: Aug 2004
Posts: 80
Default

It appears that there's an issue with the implementation of the code. I too just noticed this as I was going through the aa's to see how they function.

In the code itself, the AA appears to be functional, however in practice it always casts the Barbarian version of the AA. There are already provisions in the code for each race, I just think that for whatever reason, it needs to be slightly altered to grant the desired effect.

Here is a copy of the code itself:

case aaBeastialAlignment:
switch(GetBaseRace()) {
case BARBARIAN:
spell_id = AA_Choose3(activate_val, 4521, 4522, 4523);
break;
case TROLL:
spell_id = AA_Choose3(activate_val, 4524, 4525, 4526);
break;
case OGRE:
spell_id = AA_Choose3(activate_val, 4527, 4527, 4529);
break;
case IKSAR:
spell_id = AA_Choose3(activate_val, 4530, 4531, 4532);
break;
case VAHSHIR:
spell_id = AA_Choose3(activate_val, 4533, 4534, 4535);
break;
}

I'm no expert, but I know there's gotta be a way to change around how this actually works, since there are actually three separate ranks for each of the listed classes totaling 3.

Here's a copy of the Celestial Renewal AA for Clerics:

case aaActionCelestialRegen: {
//special because spell_id depends on a different AA
switch (GetAA(aaCelestialRenewal)) {
case 1:
spell_id = 3250;
break;
case 2:
spell_id = 3251;
break;
default:
spell_id = 2740;
break;
}
target = aaTargetCurrent;
break;
}

Anyone got any bright ideas on how to re-arrange the Beastlord AA to work more like the Cleric AA listed above?
Reply With Quote
  #3  
Old 01-15-2012, 02:41 AM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,742
Default

Other than having the same ID for the first 2 ranks for Ogres it looks fine to me. What makes you think it uses the same spell for everyone?
Reply With Quote
  #4  
Old 01-15-2012, 03:07 AM
AudioGarden21
Sarnak
 
Join Date: Aug 2004
Posts: 80
Default

Hmm, I just noticed that with the Ogre. I'll have a look at that some other time.

As far as it using the same spell for each Beastlord race, I tested it on my server. Regardless of race, it casts the same spells as Barbarians.

I checked the spell file and each race specific spell has a different illusion corresponding to their pet skin. The only one that casts is the wolf version, for each of them.

I'm going to build a solution with the fix to the Ogre typo and see if that perhaps fixes it.

EDIT

FYI, that typo is on the source code and not my typo.

EDIT 2

Well that didn't fix anything. It's still using the wolf illusion.
Reply With Quote
  #5  
Old 01-15-2012, 09:44 AM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,742
Default

So, there are two issues.

First, that code is never called because the nonspell_action is 0 on that AA. It also has a spell_id set, which as you found is 4521-4523, the barbarian spells.

In order to make that code execute the database needs to be fixed like this:

Code:
UPDATE `aa_actions` SET `spell_id` = 0, `nonspell_action` = 13 WHERE `aaid` = 718;
The second issue is that the code is not correct in several ways:
1) The case value is wrong, instead of aaBeastialAlignment it should be aaActionBeastialAlignment.

2) The AA_Choose3 macro is expecting 1,2,3 but what's passed in is 0,1,2 because 1 is subtracted from the value higher up in the code to use it as an array index.

3) There's no break at the end, so it falls through and you harm touch yourself. It looks like this was copy/pasted from some commented out code in aa.cpp that was used before they were handled in the database, and the break was left out along with the "not working yet" message.

This fixes those issues. The macro was defined in two places, so I commented out the one in ptimer.h since it seems like aa.h was the better place to have it. This is the only non commented out code in the project to use the macro, so it really should be in aa.cpp.

Code:
Index: trunk/EQEmuServer/common/ptimer.h
===================================================================
--- trunk/EQEmuServer/common/ptimer.h	(revision 2097)
+++ trunk/EQEmuServer/common/ptimer.h	(working copy)
@@ -138,7 +138,7 @@
 };
 
 //code prettying macros
-#define AA_Choose3(val, v1, v2, v3) (val==1?v1:(val==2?v2:v3))
-#define AA_Choose5(val, v1, v2, v3, v4, v5) (val==1?v1:(val==2?v2:(val==3?v3:(val==4?v4:v5))))
+//#define AA_Choose3(val, v1, v2, v3) (val==1?v1:(val==2?v2:v3))
+//#define AA_Choose5(val, v1, v2, v3, v4, v5) (val==1?v1:(val==2?v2:(val==3?v3:(val==4?v4:v5))))
 
 #endif
Index: trunk/EQEmuServer/zone/AA.cpp
===================================================================
--- trunk/EQEmuServer/zone/AA.cpp	(revision 2097)
+++ trunk/EQEmuServer/zone/AA.cpp	(working copy)
@@ -454,7 +454,7 @@
 			Escape();
 			break;
 			
-		case aaBeastialAlignment:
+		case aaActionBeastialAlignment:
 			switch(GetBaseRace()) {
 				case BARBARIAN:
 					spell_id = AA_Choose3(activate_val, 4521, 4522, 4523);
@@ -463,7 +463,7 @@
 					spell_id = AA_Choose3(activate_val, 4524, 4525, 4526);
 					break;
 				case OGRE:
-					spell_id = AA_Choose3(activate_val, 4527, 4527, 4529);
+					spell_id = AA_Choose3(activate_val, 4527, 4528, 4529);
 					break;
 				case IKSAR:
 					spell_id = AA_Choose3(activate_val, 4530, 4531, 4532);
@@ -472,6 +472,7 @@
 					spell_id = AA_Choose3(activate_val, 4533, 4534, 4535);
 					break;
 			}
+			break;
 			
 		case aaActionLeechTouch:
 			target = aaTargetCurrent;
Index: trunk/EQEmuServer/zone/AA.h
===================================================================
--- trunk/EQEmuServer/zone/AA.h	(revision 2097)
+++ trunk/EQEmuServer/zone/AA.h	(working copy)
@@ -728,7 +728,7 @@
 extern AA_DBAction AA_Actions[aaHighestID][MAX_AA_ACTION_RANKS];	//[aaid][rank]
 extern map<int16, AA_SwarmPet> AA_SwarmPets;	//key=spell_id
 
-#define AA_Choose3(val, v1, v2, v3) (val==1?v1:(val==2?v2:v3))
+#define AA_Choose3(val, v1, v2, v3) (val==0?v1:(val==1?v2:v3))
 
 extern map<int32,SendAA_Struct*>aas_send;
 extern std::map<uint32, std::map<uint32, AA_Ability> > aa_effects;
Reply With Quote
  #6  
Old 01-15-2012, 10:24 PM
AudioGarden21
Sarnak
 
Join Date: Aug 2004
Posts: 80
Default

I applied those adjustments and am making a new build. I'll report with my results.

Thanks a ton for the work you've put in man. I'm hoping that any issues I report will further the progress on Emu as a whole, and not merely for myself. I'll make sure, once I'm capable, that any improvements go into the live version for everyone to benefit.

EDIT

I just tested each race and they now receive the proper version of the AA. Good work man. Thanks again. Hopefully we can get this committed.

This AA is now fully functional.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 02:50 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3