PDA

View Full Version : Combat Window Patch Submitted



faustus
02-04-2002, 08:21 PM
I just submitted a patch that adds a new 'Combat Window' to ShowEQ. The information tracked by the Combat Window is very melee-centric. Sorry casters, maybe I'll get around to parsing spells sometime later. Also, you need to have 'My Misses' and 'Atkr Missing Me' set to ON in the Chat Filter in order for everything to work properly. Apparently, this stuff is serverfiltered regardless of the status of the /serverfilter command. Yay spam!

The Combat Window has 3 tabs:

Offense
Defense
Mobs

The content of these tabs should be relatively self explanatory, but I'll document it here anyway.

Offense Tab

The Offense tab contains a list box that tracks each of your combat "types", such as 1HBlunt, Hand to Hand, Backstab, etc. For each type it records:

* Hits
* Misses
* Ratio (X hits to 1 miss)
* Avg Damage / Hit
* Min Damage
* Max Damage
* Total Damage

It also has a summary section which lists:

* Total Damage
* % of the damage from Special Attacks
* % of the damage from NonMelee
* Avg Melee Damage
* Avg Special Damage
* Avg NonMelee Damage

Melee Damage is damage from:
1H Blunt
1H Slashing
2H Blunt
2H Slashing
Hand To Hand
Piercing

Special Damage is damage from:
Archery
Backstab
Bash
Dragon Punch
Eagle Strike
Flying Kick
Kick
Round Kick
Throwing
Tiger Claw

NonMelee Damage is damage from:
Anything Else =)

Defense Tab

The Defense tab displays information about how well you defend yourself from melee attacks. Damage taken from spells is not calculated in this tab.

The Defense tab is categorized into three sections:

Avoidance
Misses
Blocks
Parries
Ripostes
Dodges
Total Avoided
Mitigation
Avg Damage per Hit
Min Damage taken
Max Damage taken
Summary
Number of Mob Attacks
Percent of Attacks Avoided
Total Damage Taken (melee only!)

Mobs Tab

The Mobs tab contains a listbox that tracks your performance versus mobs. For each mob it lists:

* Mob Name
* Mob ID
* Duration of the fight (in seconds)
* Damage Given
* Damage Per Second (DPS)
* Damage Taken
* Mob DPS

The Mobs tab also contains a summary section that lists:

* Total Mobs fought
* Avg overall DPS
* Current DPS (see below)
* Last DPS

The 'Current DPS' section of the Mobs tab is especially cool. It shows your current DPS. This number is reset by one of two things: (1) 10 seconds of no fighting or (2) considering a mob. I put in the special reset-DPS-when-considering-a-mob so you can reset the DPS if you switch weapons, get a buff, etc. without having to stand around for 10 seconds.

Known Bugs

1) The 'Name' field on the Mobs tab is only displaying the Mob ID.
2) Mobs are identified by their ID only. This might cause problems if you fight a mob with the same ID in different zones.

TODO

* Put the DPS-timeout as an option in showeq.conf
* Put 'Reset DPS on Consider' as an option in showeq.conf
* Add new entries to the Mob list, instead of wiping the entire list and rebuilding each time. This will keep new mobs at the bottom.
* Figure out a way to uniquely identify mobs across zones to avoid bug #2
* Add support for Spells (those cast by you, and those that hit you)
* Add support for players other than yourself (see how much damage your friends do!)

mbozio
02-05-2002, 02:57 AM
i never find any way to use ur diff file...
Maybe i'm a noob but usualy i am able to apply a patch :confused:
or it is very late and i need to sleep...

fryfrog
02-05-2002, 03:16 AM
well, i downloaded your patch and did what i could to apply it. i took the showeq.conf.dist part out of the .diff file, and added it manually just to simplify things. it seems to go okay except for one part. see below :) perhaps you patched against a slightly less than most current cvs? anyway, i'm not a genious with .diff files, but i manage usually. i spose adding the borked stuff by hand is an option eh? :)



[root@mystique src]# patch <combatwindow.diff
patching file Makefile.am
patching file everquest.h
patching file interface.cpp
Hunk #1 succeeded at 109 with fuzz 2.
Hunk #4 succeeded at 915 with fuzz 2.
Hunk #7 FAILED at 1706.
1 out of 9 hunks FAILED -- saving rejects to file interface.cpp.rej
patching file interface.h
patching file packet.cpp
patching file packet.h
Hunk #1 succeeded at 597 with fuzz 2.

faustus
02-05-2002, 03:21 AM
First of all, I'm not good with diffing or patching either. Sorry :)

Second, It should be the latest code from cvs, as I did 'cvs -z3 diff -bc' to generate the diff file.

Third, hunk #7 is pretty straightforward, go ahead and fix it by hand. It's the code for saving the Combat Window positioning. It works just like the Experience Window positioning.


--faustus

fryfrog
02-05-2002, 03:23 AM
haha, i manually put it in (the interface.cpp.rej has what failed) and it was actually very easy to put in. it is compiling right now, but since i'm not at my box i won't be able to play with it, booo hooo. it is DEFINATLY going to SUCK to have to turn on my misses, attakcer misses and so forth... that is just gonna be TONS of spam. wish everquest would make TWO windows. one for chat and one for combat. doesn't seem like it would be THAT hard to do.

window one has all combat, and window two has all chat! please! anyway, looking forward to a successful compile and playing with dmg output.

**damn, quick ass response. anyway, compiling again now. i had diffed but i forgot to get your files (.cpp and .h). still looking forward to it :)

and yes, the by hand part was very easy.

faustus
02-05-2002, 03:28 AM
Fool around with misses on and off, and /serverfilter on and off. I didn't test it thoroughly. If you can figure out a way to get the CombatWindow to work without spamming yourself out, that'd be awesome.

--faustus

fryfrog
02-05-2002, 03:32 AM
grrr, ONE more time :)

i didn't have my pico session wide enough so part of the interface.cpp.rej was of course cut off. compiling NOW. i hope this one doesn't have any stupid mistakes. i think this is one the devs definatly need to look over and merge :)

personally, i'd be happier without the damage output of those around me, just seems like it would be TMI. maybe if it was JUST like the DPS of each group member, and no more info than that. that would be pretty cool :)

it would just be 6 slots, and it woudl have your group members names in it and their dps... or maybe an option for those around you (which would suck with lots of people, spam would be massive).

faustus
02-05-2002, 03:41 AM
One of the reasons it'd be cool to see everyone's damage output is 'ubermob' fights. I'm real curious to know how much damage the rogues really do.

Once I get all the melee stuff working the way I want it, I'm going to look into spells. I don't know for sure, but if the packet that informs you that someone is nuking has the damage that nuke did, then we could see how much damage the wizzies are doing, too. But that's all part of the Spells section I eventually want to add, and it's lower on the list than all the melee fixes I want to make.

--faustus

fryfrog
02-05-2002, 03:56 AM
as for spells, i think that only the attacker themselves know the actual damage. of course, if you are the target i think you get the actual value of dmg... but that doesn't really take into account dots on you. also, i don't think that YOU get to see the amount of damage shield damage you take when fighting a ds'd mob.

it might be interesting to see a statistic for DS damage / mob. it would be nice to know if being ds'd was worth it in some situations. ie, if it only does 100dmg it might be a waste, but if its doing say 500dmg... see what i mean?

personally, i'd skip the dmg done by spells just because of the dot factor. the only class that would really benefit from direct dmg spell tracking woudl be wizards, as i don't think they have (m)any dots :) the rest of us use dots a lot.

also, for mages pet dps parsing might be cool. (same with other pet classes i guess too).

Cryonic
02-05-2002, 11:31 AM
cvs -z3 diff -bc
--------------^-
That b might be why some people are having some minor problems patching. It tells diff to ignore changes in whitespace. In another post you said that casey told you what to use:

cvs -z3 diff -c
--------------^-
notice the lack of the b.

oh well, back to other things.

faustus
02-05-2002, 11:35 AM
Yeah, that -b is indeed why the patch is having problems. I had to put it in there because I used a Windows text editor to do my code editing, and it saves with different whitespaces than linux editors. If I hadn't used the -b, the diff file would have been enormous.

Anyway, floyd was working with me on IRC last night to get this fixed up, and he's told me that this patch should be incorporated into cvs very soon, so I'm not going to sweat it.

In the interim, applying the failed hunk by hand in interface.cpp is no big deal. :)

--faustus

crazdefool
02-07-2002, 06:47 AM
I love this!!

It is interesting to see which mobs your dps is lower on (higher ac?) and which mobs do more damage to you..

Once the names are in there it will be very valuable!

One thing I would like to see added is the level of the mob your fighting..

Crazdefool

maco2580
02-14-2002, 07:29 AM
I have to say, this is a great feature, and I would like to personally thank those that put in the hard work on both SEQ as a whole, and all the various updates!

sequser
02-14-2002, 08:13 AM
1) Missing critical hits, assassinate, finishing blow, slay undead, hmm what else?

2) add non-melee categories for damage shield, mark of resolution?

S_B_R
02-14-2002, 10:05 AM
I'd like to thank faustus for this GREAT addition to the utility of SEQ. AWESOME PATCH MAN!!!

But I also have a few suggestions:

we need that reset button badly ;)
on the "Mobs" tab could you add another column for the time. The time could either be the time of the start of the battle, or the time at the death of the mob. This would make it SO much easier to sort through that list.
Also it seems that the sorting is not quite right. for example if you sort by DPS, in decending order, under the mobs tab a DPS value of 9 would be higher on the list then a DPS value of 80.


I wish I knew enough C to help out on this project. "Hello World!" is about as far as I got... My Forté is Shell scripts. Lotta good it does here ;)