Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 09-05-2012, 09:44 AM
jsr
Hill Giant
 
Join Date: Aug 2008
Location: melbourne
Posts: 187
Default

Can only speak for myself but I'm not interested in data which isn't coming from tightly controlled testing. Going to pass (no pun intended) on this one for now.
Reply With Quote
  #2  
Old 09-05-2012, 10:34 AM
Cowboy6534
Sarnak
 
Join Date: Jul 2007
Posts: 59
Default

Here is the same data that I first posted with the large scorps and the militia skel removed

/GU Tanking summary for: Zial --- Total damage: 3307 --- Avg hit: 1 --- Swings: 3970 --- Defended: 0 (0%) --- Hit: 1849 (46.6%) --- Missed: 2121 (53.4%) --- Accuracy: 46.6% --- Dodged: 0 (0%) --- Parried: 0 (0%) --- Blocked: 0 (0%) --- Riposted: 0 (0%) --- Absorbed: 0 (0%)


Zial - vs - Combined: A scaled wolf pup
Attempts 3970 100%
Missed 2121 53.43%
Dodged 0 0%
Parried 0 0%
Blocked 0 0%
Riposted 0 0%
Absorbed 0 0%
1 1223 30.81%
2 243 6.12%
3 134 3.38%
4 135 3.4%
5 67 1.69%
6 20 0.5%
7 16 0.4%
8 10 0.25%
9 1 0.03%

The fact is at level 1 the difference is negligible. Also this is with a solo war. The data is going to be skewed at higher levels unless you have a group because fights will take longer with a solo warrior than with say an sk pally mnk zerker rog. The warrior will take more damage because they cant dps to save their life.

You can see that with those 5 mobs removed the percentages are off by +- two. So if you actually knew how to do this mathmatically you would know how to spot outliers and remove them.

Any body who has ever played live can tell that levels 1-5 even db and yellow mobs are very similar but once you pass lvl10 they start to scale more. You are making the assumption that all of the data will be this way. When in fact at later levels the warrior wont be able to solo even con mobs unless heavily twinked in which case the whole problem to begin with is that the current system is based on being raid geared which messes up the everything that isnt a raid target and anyone who isnt in raid gear. You have to balance raid mobs seperately from the rest of the npcs because they are the minority and they have special combat flags that normal mobs do not get.

You balance group npcs with group gear. Then you balance raid npcs with raid gear. This is how sony had the game balanced until they started throwing out all of the all all op raid gear starting with velious. Then everyone who had raid gear from that era on could easily take down previous raid targets very few peoeple. It wasn't until they started make class specific and set gear that it came back into a better balance.
Reply With Quote
  #3  
Old 09-05-2012, 10:55 AM
Caryatis
Dragon
 
Join Date: May 2009
Location: Milky Way
Posts: 539
Default

Quote:
The data is going to be skewed at higher levels unless you have a group because fights will take longer with a solo warrior than with say an sk pally mnk zerker rog. The warrior will take more damage because they cant dps to save their life.
You don't really understand the point of this. The length of fight, etc doesn't matter. You are parsing the incoming damage, everything else is irrelevant.

Balancing does not enter the equation yet, you find the formulas and correct combat and then the server ops balance their content.

Really you want something like 3 or 4 hours(absolute min) at each data point(which may be around 250 mobs, maybe less maybe more). But the real key here is that the people in charge of committing your change, agree with your methodology. You can waste all that time if people think your data is useless so there is no point until a process is solidified.
Reply With Quote
  #4  
Old 09-05-2012, 03:21 PM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,742
Default

Quote:
Originally Posted by Cowboy6534 View Post
So if you actually knew how to do this mathmatically you would know how to spot outliers and remove them.
Stuff like this isn't going to help you sell your idea to anyone.
Reply With Quote
  #5  
Old 09-05-2012, 09:55 PM
chrsschb's Avatar
chrsschb
Dragon
 
Join Date: Nov 2008
Location: GA
Posts: 904
Default

Quote:
Originally Posted by Cowboy6534 View Post
Any body who has ever played live can tell that levels 1-5 even db and yellow mobs are very similar but once you pass lvl10 they start to scale more. You are making the assumption that all of the data will be this way. When in fact at later levels the warrior wont be able to solo even con mobs unless heavily twinked in which case the whole problem to begin with is that the current system is based on being raid geared which messes up the everything that isnt a raid target and anyone who isnt in raid gear. You have to balance raid mobs seperately from the rest of the npcs because they are the minority and they have special combat flags that normal mobs do not get.

You balance group npcs with group gear. Then you balance raid npcs with raid gear. This is how sony had the game balanced until they started throwing out all of the all all op raid gear starting with velious. Then everyone who had raid gear from that era on could easily take down previous raid targets very few peoeple. It wasn't until they started make class specific and set gear that it came back into a better balance.
You're so lost it's insane. Just stop now, please.
Reply With Quote
  #6  
Old 09-05-2012, 08:24 PM
jsr
Hill Giant
 
Join Date: Aug 2008
Location: melbourne
Posts: 187
Default

Quote:
Any body who has ever played live can tell that levels 1-5 even db and yellow mobs are very similar but once you pass lvl10 they start to scale more. You are making the assumption that all of the data will be this way. When in fact at later levels the warrior wont be able to solo even con mobs unless heavily twinked in which case the whole problem to begin with is that the current system is based on being raid geared which messes up the everything that isnt a raid target and anyone who isnt in raid gear. You have to balance raid mobs seperately from the rest of the npcs because they are the minority and they have special combat flags that normal mobs do not get.

You balance group npcs with group gear. Then you balance raid npcs with raid gear. This is how sony had the game balanced until they started throwing out all of the all all op raid gear starting with velious. Then everyone who had raid gear from that era on could easily take down previous raid targets very few peoeple. It wasn't until they started make class specific and set gear that it came back into a better balance.
Ok so the problem I have now is that not only are you not interested in following any sort of instruction as to how to source data, but now there is this spectre of scope creep looming. If you want to make changes to to the emu code I think you're going to have to do them yourself.
Reply With Quote
  #7  
Old 09-05-2012, 10:25 PM
sorvani
Dragon
 
Join Date: May 2010
Posts: 965
Default

but he had pretty pictures!
Reply With Quote
  #8  
Old 09-05-2012, 10:30 PM
Akkadius's Avatar
Akkadius
Administrator
 
Join Date: Feb 2009
Location: MN
Posts: 2,072
Default

Reply With Quote
  #9  
Old 09-07-2012, 04:08 AM
jsr
Hill Giant
 
Join Date: Aug 2008
Location: melbourne
Posts: 187
Default

Personally I'd just use the existing fields.. e.g. if you want them to hit harder give them higher combat stats

An easy way to do this is to create a separate table with all the NPC_ID's for 'raid mobs'. Then you can run a query with an = or join on the NPC_ID.. For example,
Code:
update npc_types set npc_types.atk = 2 billion, npc_types.accuracy = 3 billion where npc_types.id = raidmobs.id
would give 2 billion attack and 3 billion accuracy to mobs whose ID you've put in your raidmobs table.

I use something similar to balance non-boss mobs by their level.
Reply With Quote
  #10  
Old 09-07-2012, 08:50 AM
chrsschb's Avatar
chrsschb
Dragon
 
Join Date: Nov 2008
Location: GA
Posts: 904
Default

The hell with all this fancy mumbo-jumbo, I just let the raid mob beat the shit out of me for a few hours while I fine tune his stats
Reply With Quote
  #11  
Old 09-07-2012, 08:59 AM
Cowboy6534
Sarnak
 
Join Date: Jul 2007
Posts: 59
Default

Code:
if(RuleB(Combat, UseIntervalAC)) {
		
		int32 con = GetLevelCon(GetLevel());
		
			int32 randDmg = MakeRandomInt(0,99); // (0,99) because we want 100%
			int32 min = 0; 
			int32 mid = 0;
			int32 mid2 = 0;
			int32 mid3 = 0;
			int32 mid4 = 0;
			int32 mid5 = 0;
			
			switch (con) {
				case CON_RED: {
					min = 19; // 20% of the time hit for min dmg
					mid = 59; // 40% of the time hit for everything between min and max
					}
					break; 
				case CON_YELLOW: {
					min = 29;
					mid = 57;
					mid2 = 75; 		// we want half of our mid to be divided by 2 to smooth out our curve but we dont want it to be too intense on our yellow mobs
					}		   		// as we get lower in con we want it to be even more of a slope start from left high going to right low on a graph.
					break;	   		
				case CON_WHITE: {
					min = 39;
					mid = 59;
					mid2 = 79;
					}
					break;
				case CON_BLUE: {
					min = 49;
					mid = 61;
					mid2 = 73;
					mid3 = 85;
					}
					break;
				case CON_LIGHTBLUE: {
					min = 57;
					mid = 65;
					mid2 = 73;
					mid3 = 81;
					mid4 = 89;
					}
					break;
				default: {
					min = 65;
					mid2 = 73;
					mid3 = 81;
					mid4 = 89;
					mid5 = 97;
					}
					break;				
				}
				if (randDmg <= min)
					damage = (min_dmg+eleBane); 
				else if (randDmg <= mid)
					damage = MakeRandomInt((min_dmg+eleBane+1),(max_dmg+eleBane-1));
				else if (randDmg <= mid2)
					damage = MakeRandomInt ((min_dmg+eleBane+1),(max_dmg+eleBane-1))/2;
				else if (randDmg <= mid3)
					damage = MakeRandomInt ((min_dmg+eleBane+1),(max_dmg+eleBane-1))/2.5;
				else if (randDmg <= mid4)
					damage = MakeRandomInt ((min_dmg+eleBane+1),(max_dmg+eleBane-1))/3;
				else if (randDmg <= mid5)
					damage = MakeRandomInt ((min_dmg+eleBane+1),(max_dmg+eleBane-1))/3.5;					
				else
					damage = (max_dmg+eleBane);
				}
As you can see the CON_RED is what current raid mobs would fall in and probably be fine but any old raid mobs wouldnt behave right because they would fall into the lower categories and would be much easier. So a seperate raid check would need to be added and its own case. So far this is working out great on my server. The only problem ive run into besides raid mobs is that all of the low level mobs on EQEMU have the wrong min max in the tables. Currently lvl1 mobs that are not in tutorialb hit for a max of 2 per the table. When I log into live into innothule swamp the decaying skeletons hit me for a max of 6 unless they hold a wep in which case it is 8 or 10 depending on the weapon they hold. So I have started to go back and readjust all of the npc min max to reflect live.

Edit: I commented out the current code in my attack.cpp starting at line 1870 and end at line 1874 then pasted the above at line 1875.
Reply With Quote
  #12  
Old 09-07-2012, 09:03 AM
Cowboy6534
Sarnak
 
Join Date: Jul 2007
Posts: 59
Default

And obviously this values I just made up with what I have seen from all of the parses I have done. They need to be fine tuned to really get it right. I stopped at dividing the mid by 5 at green con because I think that if you go any more you would defeat the purpose of AC. Right now though you dont get hit for continue top end without a ton of AC and if you have a ton AC you still get hit hard on occasion. The most testing I have done so far has been in CoM and EJ with a 50monk wearing gear only from kunark and classic. So far I am not getting completely owned like normal and I still have to stop and bw to keep fighting like it should be for dark blue and light blue mobs. If I use a fungi I have to do this less. Or just wait a bit for the regen to do it. Much like my experiences on live eqmac and p99.
Reply With Quote
  #13  
Old 09-07-2012, 09:21 AM
Cowboy6534
Sarnak
 
Join Date: Jul 2007
Posts: 59
Default

For the raid check I was thinking of something along the lines of

if(RuleB(Combat, UseIntervalAC) && raid check) {.....

copy paste the rest and then that could be adjusted to what you want raid mobs to reflect =)
Reply With Quote
  #14  
Old 09-07-2012, 09:57 AM
jsr
Hill Giant
 
Join Date: Aug 2008
Location: melbourne
Posts: 187
Default

Assuming I am reading this right, this will get screwy when mobs have a relatively high min hit. For argument's sake consider a green mob, that hits for 50-100 damage

65% of the time it hits for 50 (unmitigated)
8 % of the time it hits for 25-50 (unmitigated)
8% of the time it hits for 20-40 (unmitigated)
8% of the time it hits for 16-33 (unmitigated)
8% of the time it hits for 14-28 (unmitigated)

In all the latter cases, the max hit is at or below min hit. Once damage is calculated by this code it will go through the mitigation function. At which point damage will be set to min_hit (as it is lower than min_hit). So the final result will be a 97% chance for any green mob with comparably high min_hit a to hit for minimum.

Feel free to correct me if I've missed something.
Reply With Quote
  #15  
Old 09-07-2012, 10:15 AM
Cowboy6534
Sarnak
 
Join Date: Jul 2007
Posts: 59
Default

I see what you're saying but at the same time I know of no mobs with a min hit of 50 that their max hit is only 100 or their min_hit multiplied by 2 to get the max_hit. Most of the time the max is x4 or more than what the min is. So if you had some custom mobs on your server that had only a dmg range of minx2 for max this could be a problem. But just looking through the npc_types, min_hit max_hit, nothing is set at a multiplier of x2 from min to max. Except like I said the level one mobs in the classic zones. In which case they aren't even what live is currently and need to be adjusted to reflect live.

Edit: Also these values are not set in stone. They can be adjusted to anything you want them to be.
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 12:55 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