Random fixes
hi, ive kinda made it a goal of mine to fix AA as a means of learning to program, im posting so that anyone else thats been working on them as well may post their progress so i dont have to do something thats already been done, and so that others may notice problems in what ive corrected so far.
anyway ive corrected quite a few but i need some help on the more complex ones such as wake the dead and doppelganger, so im hoping someone else may have already made some progress on those or others and would like to share. also let me say sorry for deleting the exsisting comments in eq_packet_structs.h as ive been useing that as a checklist of sorta, also while working with these i discovered a tons of little errors and exploits, the biggest of which were that the entire AA table was off by one so checks for innate STA were actually checking innate STR, also with the way AA were set up i found a huge exploit allowing any character to have any AA skill at any time, thats been corrected however another huge problem is that the AA timers dont seem to be working at all, so i need to ask if they ever were to begin with or maybe my database or something ive done has broken them, these all work with the latest CVS 07-31-04 and the latest spells_us.txt from sony, although some of the spells themselves arent correct so druid dire charm does not check if the target is an animal, can correct this in your own spells_us.txt or ill eventually do it in the code for the skill itself i guess. PROS- most targeted AAs work, if your database is setup correctly with the correct max level and the cost of the FIRST purchase of a skill the buy ammount is correct in that it doubles when needed 2-4-6 etc, i fixed the exploit i found. i also threw in the timer mods for skill reuse AAs, and i put in a message to client for my own testing purposes so youll have to delete those as needed CONS- THIS WILL DELETE ALL EXSISTING AA SKILLS AND POINTS FROM ALL CHARACTERS on your server, and none are really usefull to legit servers since currently the AA timer is not working, for me atleast uhh also im not sure how to post all this without it useing word wrap or whatever so this might be messy but oh well... zone\command.cpp around line 4748 replace exsisintg with- Code:
void command_manaburn(Client *c, const Seperator *sep) common\eq_packet_structs.h around line 3142 replace exsisintg with- Code:
// New Alternate Advancement table. holds all the skill levels for the AA skills. replace exsisintg with- Code:
void Client::ActivateAA(int activate){ |
uhh whoops seems there some limit as to how much one post can display so heres the rest of the stuff from case 212 down
Code:
case 212: //fading memories if(SpellFinished == TRUE) and the result is always that the damage happens the instant the button is pushed, anyone know of a way to make it interuptable and wait untill casting is complete? anyway questions, comments, suggestons appreciated. |
also a shadowknight friend of mine told me that after level 40 HT is a different spell so i tried correcting it in zone/client_process.cpp around line 2127 by adding
Code:
else if((GetClass() == SHADOWKNIGHT)&&(GetLevel() <= 39)) however the line below it Code:
prevents spell 2821 from being cast, so does anyone know how i could make 2821 an allowable spell for HT since im pretty sure it is correct, but i may be wrong since ive never played an SK myself. also as a correction to the above post in case 117 in client.cpp strong root, the cast time should be 2 seconds correct this by making line 4052- CastSpell(2748,targ,9,2000,0,0,0); anyway uh thanks again. |
So im the only one working on fixing AA or interested in them i guess? well anyway they'll be here if anyone else ever is /shrug.
Heres the fix for a 100% working manaburn, well except for the reuse timer which ill fix shortly i guess, NOTE you must edit the spell in spells_us.txt or spells_en.txt to make the damage 0. ok in zone\spells.cpp around line 879 add the following- Code:
updated in later post. then in zone\client.cpp correct case 226 to be- Code:
case 226: //manaburn also should i repost the above code from my first post since i messed it up a little, so its more copy and paste friendly? also does anyone know the itemslot number for the item on the cursor? or have any other ideas as to how to make flesh to bone work? anyway thanks again. |
Sometimes it takes a while for something to soak in.
Give them time to figure out what you did. And good job! |
thanks scorpious2k, im really hoping those who have servers of their own and maybe a little freetime will throw this in and test a few out, as i wont even claim to know how most of them actually work so i just put in the default cast time etc etc while the actual skill may be instant, also to test if there are other side effects other than zone.exe finding any invalid AA profile the first 2 or 3 times an exsisting character with AA zones. useing a BACKUP database of course!
anyway here lifeburn as i think it should be going by the description in EQ~ zone\spells.cpp around line 896 assuming you already put manaburn in here- Code:
updated in later post. zone\client.cpp case 68 Code:
case 68: //Life Burn |
lifeburn does your damage in hp lowers you to 25% hp and then gives you a 250 hp a tick regen for 4 ticks
|
still working on this but been busy, anyway heres a few others that might be good enough to use.
lifeburn correction, although the FD effect in the recource is real buggy and causes the spell to be no agro, suppose to? zone\spells.cpp repleace exsisting with- Code:
updated in later post. Code:
// solar: now check if the spell is allowed to land Code:
case 76: //act of valor Archery Mastery and headshot i went through some logs of ranger friends from live and found a lot of the current archery code to be incorrect IMO so i kinda redid a whole lot of it and added a level check that brings things much closer to live i believe, i think its better but far from perfect yet, anyway zone/client_process.cpp around line 2268- remove everything from float chancetohit = 0; down to the } that is right above float multiple=(GetLevel()/5); and replace with- Code:
float chancetohit = 0; zone\client_process.cpp around line 5336 add- Code:
if(((CastToClient()->GetAAStruct()->class_skills.named.flurry) >= 1)&&(IsAttackAllowed(target)) also in client_process.cpp around line 5392 add- Code:
if(CastToClient()->GetAAStruct()->class_skills.named.ambidexterity == 1) |
Temp Fix for MGB, far from perfect but it casts AE buffs and doubles manacost, also tries to affect NPCS, i know theres really no need for this on EMU servers due to the low population but /shrug.
zone\client.cpp replace exsisting with-- Code:
case 35: //MGB---AE cast group spell in slot 1 zone\client_process.cpp replace exsisting with---- Code:
case OP_Begging: //Throw command final fantasy style-- |
ok almost have swarm pets and wards done, however i need a lil more info about them, ive looked almost everywhere i can think of and havent had any luck getting details of what exactly some of them do, i understand the basics of most of them however i need more details on things like max hit on the AA swarm pets, max hit on the proc pets and info on the spells that the wards cast and how often they cast it and at what range etc etc, also details on the models would be really handy, i know the wizard swords and some of the proc pets are invis men with epics of the class however the SK one seems to be a skeleton instead, are any other class pet procs also other models than invis men? i also read that the call of time pet has a max hit of 415 which seems a lil off to me so was hoping for a second opinion.
swarm of decay is supposed to be skeleton archers, hows this work? are they rooted in place and just use archery i guess? yes, no? max hit? servant of ro, whats this do other than the base description, is the pet rooted? what spell does it cast? anyway as you can see im missing a lot of minor details about a lot of these skills so if you know anything to be 100% correct please let me know so i can do these right the first time is there any problem with me claiming bodytype 63 for temporary pets? its labeled as an unknown bodytype but was wondering if this had been updated somewhere that i dont know of, also im currently having some problems finding the location of the code that limits characters to 1 familiar at a time, ive tried tons of things to remove this temporarily however it never seems to work, is there something i dont know about the way familiars are handled? currently im just making the pets despawn whenever their target gets below 2% or so health, however this is a problem and as they "can" ks players. also thanks to everyone who helped when i booted my server publicly a few days ago i got a lot of usefull information, thanks again. if anyone knows any details of these skills or any others whos description is a lil off (doppelganger) please fill me in, yes ive tried all the basic sites like steel warriors allakhazam's and lucy but their all proving to be 99% useless to me. |
Jesus nice work man
|
What exactly does that begging code do? It takes the money you have on you and converts it into damage and throws it?
|
heh yeah it just takes the money on you and does 10 damage per plat, i did the lil attack animation and things also with it and if your curious as to why the Mana parts are in there well, at first it was causing hotkeys to lock up and for whatever reason adding the current mana bit fixed this, i honestly dont know how or why it fixed it but i had done some other skill on the beg button before and it never had a problem locking up, so i just went through the process of eliminations with the 2 and found that when i added some change to mana on it they no longer locked up....sorry thats the only explanation i have and also even with the manachange once every now and then it still seems to lock up for some people on my server, guess its something to do with patch state but really no clue. anyway im slowly creating a server with a few friends and i was just playing with that and they thought it was a really fun/neat command so i just thought id share it.
|
Damn, nice job there Branks.
I hope the server admins can work with that. |
Definatly something that saves me alot your knocking out alot of aa's. I'm working on some stuff of my own soon too that u guys can use but. Dam nice job bro.
|
thanks for the compliments, nice to know someone considers this usefull, anyway heres the progress at the moment, i just completely fixed swarm pets working 100% correctly except the fine details of models/max hit etc, currently i have them labeled as pets, despawning correctly and everything else is done so they no longer can KS players, and work just as they do on live with the exception of gaining a second target when the original target dies, (ok so 99% correct) i'll work on this. i'll put the code on here as soon as i remove all my comments and testing stuff statments.
however it wont be complete because i cant seem to find information anywhere at all on the correct damage and models of the pets, nor information on what exactly the wards cast, so ill just put in a minor list of what i know mage swarm pets are size 3 earth elementals with a max hit of around 50 wizards = call of xuzl pets, hit 50ish shaman pets = spirit wolves hit 50ish mage servant of ro = fire elemental that casts some spell? normal size PoP pet weapon procs= invis man with the class epic with the exception of the SK weapon which the model is a skeleton, these have a max hit of 90ish call of wu monk pet proc...whats this one wield, is the epic visable? or does it even wield the epic? call of time...hearing its somehting that looks like the spear from solusek ro and has a max hit 415? tricksters calling and stone animation im guessing are NPC spells however if anyone knows details on these please let me know also since their temporary pets also and it would be nice to see them working correctly swarm of decay...im guessing rooted skeletons with bows? wards....invis man that casts some unknown spells should i maybe post these questions in another forum? ive got a lil usefull info from leaving the server up the last 2 days but mainly people just seem to manaburn each other in the arena 2 dozen times and log out. im also pretty close to the timer check thing to not allow reuse untill the timer has expired but currently its not 100% and causing skills to only be used once per zone also another problem ive found is that the spell ids change with each patch and when the server and client list dont match this causes issues and while the spell ids are in the code itself its kinda useless, i cant think of anything to correct the mismatch of client/server however the IDs need to be removed from the code so i was wanting to put in another column in alt_vars with the spell ids for each skill along side their cost and max level this way as the server is updated people could use an sql file to make AAs work with the new spells lists, however currently im not too sure how to do this. but plan to work on it, however if anyone else has done this or wants to feel free, id appreciate it anyway thats all for now ill work on getting the swarm code cleaned up a bit and working more like normal pets and post is a lil later |
If it's helpful any, my bard pet weapon (Coral Hilted Shortsword) proc'd a pet which hit for 94 maximum. It may have been 96, but I am unsure. I am completely positive that it hit for at least 94. The pet also kicks and bashes, but I cannot remember those damage numbers offhand.
If you need any info with the pet weapon, give me a shout and I can test it in game. I would assume the other pet weapons follow this damage pattern as well. |
thats what i was looking for, thanks!
|
Again, if you need anymore info, shoot me a PM and I can get it for you.
|
Quote:
Code:
if((spell_to_cast != castspell->spell_id) && (spell_to_cast != 2821) |
the pet code is in zone\spells.cpp and it has defaults for anything thats not already listed in "pets" in the DB, i think you may be mistaken as to what i was speaking of, of wards, i meant the wards that are summoned for the AA skills such as ward of destructions and others, clerics and shaman get ones that casts an AE heal for a duration of time and wizards get one that does damage and maybe a few other classes ive forgoten at the moment.
ive also been told of a bug with some pets spawning level 200+ which i'll look into sometime since ive become quite familiar with the whole pet making process due to the swarm pets, also as an update to those, sorry no code yet but i found a new bug with them, currently if you have a pet and use them your real pet despawns with them, im working on correcting this atm but not making much progress. my newest plan is to try and find a way to add an extra spot or use an unknown as a swarm pet ID in the player profile to solve the problem of pets questioning whom their owner is and then despawning, although im not all too sure if thats even possible, regardless currently its not quite right and its a lot of code which ive already completely redone 3 times nows and still having problems so id rather not waste another full page on this thread for something that i may redo tommorow, if anyone wants to play with their current state you can log into my server ive had up a few days now and i guess ill keep up awhile longer as its been rather usefull for gathering information on many of the AA skills, or PM me and ill send you the current codes ive got. also, has anyone fixed this items vanishing bug when you zone? im hearing its a common bug but i havent had much luck correcting it yet. anyway thats all for now. |
rangerdown posted a fix for the pets spawning uber. for 1 pet the summoned mistwalker. perhaps the same logic could be used to fix the others. i beleive its in the bug forums somewhere
|
Quote:
|
here a solution to the overpowered pets bug/problem, i havent seen rangerdown's post so sorry if its the same thing, anyway this will simply making any pet thats unknown to the code/database, a lev 10 gnome with a max hit of 10 and display a message in zone.exe stating the character id of the caster and the spell id used with the unknown pet so that you can go through and update them. im not exactly sure how the exsisting code for default pets was supposed to work however it seems it was getting the raw information from the spell being cast and trying to create a pet from that, maybe the way pet spells are made have been changed? dont know, anyway it was multiplying things it shouldnt have in an attempt to make a pet from the spell data and well wasnt working correctly, thus we had lev 200+ pets.
in zone\spells.cpp around line 6472 if youve been useing any of the other code ive been posting. otherwise do a search for "spell property testing functions" and scroll up a few lines till you find the default case for for MakePet and replace the exsisting code between "default:" and "break;" with Code:
default: edit- I'll learn to type someday. |
why gnome? make it a puppy or a rat. =D
|
puppy > gnome. just cant touch the gimpness that is gnomes, anyway uh heres a few other AAs, and im redoing manaburn and lifeburn so their pvpable will update that in a moment. swarm pets still buggy so no code yet but ive almost got enough information from people that their all the correct models now. no luck on the wards yet...
redid SK weapon proc buffs to make them work correctly. soul abrasion. healing adept. advanced healing adept. healing gift. advanced healing gift. casting fury. fury mastery. fury of magic mastery. theft of life. removed the FD effect of lifeburn server side which was causing issues. added a message to heals for caster and target. zone\spells.cpp search for " nukes, heals; also " and replace the exsisting case: SE_CurrentHP with Code:
case SE_CurrentHP: // nukes, heals; also regen/dot if a buff do a search for "SE_WeaponProc:" and replace exsist case with this Code:
case SE_WeaponProc: Code:
// if spell is lifetap add hp to the caster after the #endif add Code:
if(spell_id==2488) //Dook- Lifeburn fix |
Quote:
|
is this stuff being added into the CVS ? please say that it is =p
|
would be pointless till i get the timers working correctly, for anything other than none legit servers. currently i can put in a check for them each time you zone but they dont refresh so you can only use a skill once per zone. plus all of these need a little finishing touches because i dont know the exact values of some skills and have just gone by "feel" and guesstimates from players.
also ive been looking at the way LoH and HT work and they seem to do the same thing in that they dont update untill you zone. id really like to hear from some of the devs about this since im still extremly newbish with all this and would like to know if ive made any common mistakes and also if it would be a bad thing to have 20 or so timers running for each client in order to make AAs refresh correctly, i had to add a new timers for swarm pets and noticed no performance loss however that was only one timer, would it be an issue to have several running? also is there anywhere i can find a list of the message types in order to properly do messages so that they filter correctly and crits etc dont show up when you use the options to turn them off? anyway in a bit of a rush ill be back in a few hours. |
last i heard scorp got timers working correctly... ?? maybe im wrong.
|
scorp also has a ton of custom code i believe so it may not work the same with this, however if it does and he feels like sharing that would be great! if not no biggy i'll eventually get it done or someone else will.
|
updated the code from my last post it seems while testing none of us ever decided to use canni, manastones etc or heal a pet so it was causing some problems we apparently didnt see, sorry ill try to be a lil more carefull testing next time.
anyway uh updated it so self target only spells no longer crit(manastone-canni-etc) and fixed the heal messages a lil but currently group heals dont display a message- also fixed something else i cant think of atm. |
dont use old manaburn or lifeburn code, remove them and use the new stuff posted below, this will allow the buff from manaburn to take hold and not allow manaburn groups however the buff stacking system doesnt seem to work with it currently- also this method allows pvp checks and you dont have to modify the spell value.
also updated the previous code for zone/spells.cpp to include a few more things and updated it since i learned a little more of the way spells are handled. case SE_CurrentHP that is. added code to place a cap on pvp damage of 70% for a single spell like live used to be, if you want it 40% like live is currently youll have to do it yourself. added cleric fury and fury of magic mastery, im not too sure of the exact values of these AAs so i just guessed that its a little behind the other versions. also added quick damage, quick evacuation and spell casting deftness. i think theres another spell haste AA but cant think of it currently. will update whenever i do also swarm pets are still killing exsisting pets and i have yet to find a way around this but im working on it. zone/spells.cpp right below case SE_CurrentHP youll find case: SE_CurrentHPOnce- replace exsisting with this- Code:
case SE_CurrentHPOnce: // used in buffs usually, see Courage Code:
if (amount < 0) Code:
// we know our mana cost now |
updated my little checklist of whats broken in my first post, you dont need to do anything with that i simply did it in hopes that someone will pick one of the none working one and start hacking at it with me.
also updated the flurry code from an earlier post, the part in client_process.cpp due to the message being displayed at incorrect times such as when the target was out of range and the skill triggered. updated SE_CurrentHP in spells.cpp from an earlier post due to something allowing a warrior to get an exceptional heal....only happened onces and i dont really know why but i cleaned it up a little and it hasnt happened since. updated the lifetap code in attack.cpp from an earlier post due to once again something without the skill got the benefit and a necro pet this time had an exceptional heal... anyone see something obviously wrong im missing? so! ive spent a ton of time with swarm pets and and have yet to get them perfect, so im posting the progress ive made with them currently in hopes that someone will help finish up, the current minor issues are commented in the code for things like incorrect textures/models or details i dont know of them, the only magor issue at the moment is that after the swarm pets despawn if you had a pet already you no longer see the pet in the group window or in the pet information window, however all command line instructions work perfectly still, this one is driving me insane as ive tried just about everything i believe to be possible. also since this isnt exactly finished im not removing my comment or custom pets i threw in for fun. wake the dead and doppelganger, these both require getting textures from pop+ which ive been unable to do and havent spent much time looking into yet. so doppelganger only trys to reproduce the primary item slot from the caster and i just gave it a kedge robe for the time being. wake the dead, again with the textures thing, it works out nicely for NPC corpses but its far from perfect with clients. fading memories and escape, the invisibility effect on these isnt working correctly since i dont yet understand how to make a client use their hide skill by code, and when i just flagged the player invisable the effect doesnt fade thus every mob in the zone cons indifferent after the skill had been used, as a temporary solution i added the spell improved invis to the skills and plan on coming back to this later, also when i know for sure if fading memories uses 900 mana or only checks that the player has 900 mana. rampage...well it works perfectly, but i added an area message to it just as i did with flurry, just cause well i think its more fun that way~ ae taunt... see rampage the god swarm pets i havent been able to get much information on, i know the shaman swarm pets from god proc a 640 poison based DD however i havent been able to figure out what spell this is. swarm of decay, again with the freakin texture thing, their bows are not the correct model, i also had to guess as to their attack animation speed since it seems no one has seen it enough to remember. anyway i think thats the magority of it and instead of posting the code per skill im just lumping it all together here, also keep in mind this is a work in progress so dont expect perfection with this just yet. zone\MobAI.cpp search for "Mob::AI_Process" then scroll down a few lines till you see the bit saying "if (CombatRange(target))" then ABOVE THAT LINE add. Code:
if((GetBodyType()==63)&&(GetClass()==4) Code:
Mob* EntityList::GetMobInZoneByRange(Mob *client, int type, int range) //Dook- AA skills Code:
Mob* GetMobInZoneByRange(Mob* client, int type, int range);//Dook- For AA skills etc "attack_timer_dw = new Timer(2000);" then below this line add the following. Code:
swarm_timer = new Timer(0); //Dook- swarm pets Code:
safe_delete(swarm_timer); //Dook- swarm pets Code:
Mob* Mob::GetOwnerOrSelf() { Code:
Mob* Mob::GetOwner() { and right below this add. Code:
Timer* swarm_timer; //Dook- swarm pets Code:
if (p_depop) Code:
#define SE_StackingCommand_Block 148 Code:
void Mob::SpellProcess() Code:
|
lovely time for the forums to crash.
so anyway still in spells.cpp now do a search for "case SE_StackingCommand_Block:" and on the line below it and all this. Code:
case SE_TemporaryPets: //Dook- swarms and wards |
I havent checked your post in awhile, and so breifly skimming over it i didnt notice if you had figured out how to get aa_timers to work.
I've been working on some code to get that working right but in all my testing I cannot find any type of logic behind the aa_timer table in my db. It randomly changes when you click an aa and has nothing to do with timeing. It also does not change when a button or something is pressed. I'm still investigateing if i can find out whats going on i can let you know how i fixed the problem nearly all the code is fixed cept about one line of logic i think. Hopefully i will find out soon i'm hopeing lay hands or harm touch will give me some clue. Even though they're not aa's theres a way that they go about triggering off. (Not really sure if that works either hehe) anyways back to codeing. Also after i get this tackled i'll start helping you with the aa's since people on my server want em working. |
Ok after some further investigation heres what i've found. Its still not working just like i want but i'm getting closer.
The way that aa_timers is working atm is: When the effect first goes off it sets begin < end If you click it again it sets begin = end it rotates in this cycle and does not go down in time. The way i have this working now it will go off every other time So i was looking in database::UpdateTimersClientConnected(int32 charid) and heres what i found Code:
if (!RunQuery(query, MakeAnyLenString(&query, "update aa_timers set end=(UNIX_TIMESTAMP(now())+(end-begin)),begin=UNIX_TIMESTAMP(now()) where charid=%i",charid), errbuf)) |
I had AA timers workin perfect, but I lost all the code :(
|
just to let you guys know.
I have been working with cofruben on a persistent timer which he needs for adventure stuff. The result is something which can easily be used for AAs. Right now it automatically takes care of all the database stuff, you just use it like the current timer class, basically, and it is preserved across zones. I dont know/care how the aa_timers stuff worked, because it was kinda klumsy if you ask me. When cofruben gets done testing it, I will hook you up with a patch that should apply to 7-31 CVS... these timers are currently in 5.8, so they will be around for sure. |
Yeah it was set up really wird but i've figured it all out now once i do a little more work today it will be working. Got it down now where the only problem i'm having is the values it sets in aa_timers wont increase over time like it should but thats easy enough to fix i should have my source posted here by the end of today i would think.
**EDIT** Its working now all timers for aa's should be working i will release the source when i get home from work in like 3 hours. Dont have time to do it atm. |
All times are GMT -4. The time now is 12:51 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.