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

08-09-2011, 06:37 AM
|
Fire Beetle
|
|
Join Date: Jul 2011
Posts: 5
|
|
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
|
 |
|
 |

01-15-2012, 12:32 AM
|
Sarnak
|
|
Join Date: Aug 2004
Posts: 80
|
|
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?
|
 |
|
 |

01-15-2012, 02:41 AM
|
Demi-God
|
|
Join Date: Aug 2010
Posts: 1,742
|
|
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?
|

01-15-2012, 03:07 AM
|
Sarnak
|
|
Join Date: Aug 2004
Posts: 80
|
|
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.
|
 |
|
 |

01-15-2012, 09:44 AM
|
Demi-God
|
|
Join Date: Aug 2010
Posts: 1,742
|
|
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;
|
 |
|
 |

01-15-2012, 10:24 PM
|
Sarnak
|
|
Join Date: Aug 2004
Posts: 80
|
|
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.
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 01:53 PM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |