Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff > Flyff Private Server
You last visited: Today at 16:57

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



About the Block Rate.

Discussion on About the Block Rate. within the Flyff Private Server forum part of the Flyff category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
About the Block Rate.

Hi elitepvpers,

We all know that the Max Block Rate is 80% correct?

Now i have looked arround the source where the BlockRate is calculated

I have this


Now if i read the first couple of lines correctly
Then xRandom(80) should be the Max BlockRate
And if the number is lower or equal to 5 it will block else it will not block correct?

However i have an an Blade with max Block Rate Some other players only see Block / Miss an lot.

So according to the calculation it will do more Block then something else what i find ridicules. Or do i miss something else to.

With kind regards.
raventh1984 is offline  
Old 09/18/2013, 15:59   #2
 
Mognakor's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 598
Received Thanks: 465
The max block rate of players is 75/80 or 15/16 =93.75%
Max block of a monster is 95%

The issue with blockrate is that there is no way to bypass it, while on the other hand there is no way to bypass hitrate granted by items (not via DEX).

And it's no surprise that Flyff has a bunch of weird mechanics.
Mognakor is offline  
Old 09/18/2013, 16:13   #3
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
Hmm yeah its indeed no surprise.

But what i was wondering is if i changed the calculation to reduce the ammount of block Rate. Should it be done inside that function?

So lets say something like this

int r = xRandom( 70); //This will give an random number up to 70
if( r <= 10 )
return 1.0f //I believe this will tell to block or not
if( r => 60 )
return 0.1f //Not block

Is this correct?
Or is it the other way arround
so 1.0f // Is not block and 0.1f is block
raventh1984 is offline  
Old 09/18/2013, 23:57   #4
 
Mognakor's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 598
Received Thanks: 465
It returns a value that is multiplied with the damage taken.
1.0 means no block
0.1 and 0.2 means block

The easiest way to set a max/min-blockrate is to make it xRandom(100) and then make it %. Like 5< is 5% same as <95 is 5%.
Mognakor is offline  
Thanks
2 Users
Old 09/19/2013, 07:48   #5
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
Would it not be easier to do something else
Cause i also see this

BOOL CMover::IsBlocking( CMover* pAttacker )

So i think its calculating it 2 times
First is the calculation and the 2nd time its telling either to block or not to block

If i removed the
float CMover::GetBlockFactor( CMover* pAttacker, ATTACK_INFO* pInfo )

And only use the
BOOL CMover::IsBlocking( CMover* pAttacker )

And inside that function i will do the common calculation
to let it also read the Block rate from propjob.inc?

Or is the first function necessary?

Oke i have made some changes inside the Calculation function.
Before i test it i want to ask if i have the caluclation right

PHP Code:
float CMover::GetBlockFactorCMoverpAttackerATTACK_INFOpInfo )
{
    if( 
IsPlayer() ) //Player Block Rate Calculation
    
{
        if( 
pInfo->pDefender->IsPlayer() )
        {
            
// Calculating the BlockRate of an player
            // Block Rate is BLOCKING devided by 100 times the BLOCKING inside PropJob
            // Example if an player has 50 dex it will be divided by 100 that is 0.5 that times 1.5 is the BlockRate of an Mercenary total Block rate = 0.75%
            // Since the Minimum Block Rate is 10% we start of with that.
            // Maximum Block Rate is set to 80% so you cant block everything
            
int nBR = (int) ( ( GetDex() / 100.0f ) * GetJobPropFactorJOB_PROP_BLOCKING ) );

            
//If both players are in GuildSiege then reduce the Max Block Rate
            
if( pInfo->pAttacker->IsPlayer() && pInfo->pDefender->IsPlayer() && GetWorld()->GetID() == WI_WORLD_GUILDWAR )
            {
                if( 
nBR 70.0f )
                {
                    
nBR 70.0f;
                }
            }
            else
            {
                if( 
nBR 10.0f )
                {
                    
nBR 10.0f;
                }
                if( 
nBR 80.0f )
                {
                    
nBR 80.0f;
                }
            }
            
int block xRandom100 );
            if( 
nBR block )
                return 
1.0f//Dont Block the Attack
            
if( nBR block )
                return 
0.1f//Block the Attack
        
}

    }
    else 
//Mob Block Rate Calculation
    
{
        
    }


raventh1984 is offline  
Old 09/19/2013, 13:25   #6
 
Mognakor's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 598
Received Thanks: 465
I'm not sure if both functions are necessary.


Apart from the fact that 0.75% blockrate for 50 dex is low, it seems fine.

If you want proper calculations you could add a interaction between blockrate and critrate.

For example:

Blockrate=Blockrate-(Critrate/2)

and

Critrate=Critrate-(Blockrate/2)
Mognakor is offline  
Old 09/19/2013, 13:47   #7
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
Thanks i will take an further look into it.

The original is divided by 8.0f so that means that it will have this as an blockrate
for 50 dex you have 8.25% block rate Times the propjob blockrate of slayer is total of 9,375 Block rate per 50 dex. And i intend to run an Siege server so player will only have to have 450 dex to get Max Block Rate. Now if i do it may way then they must have 5000Dex to have 75% blockrate

Also i searched for both GetBlockFactor and IsBlocking

I noticed that the GetBlockFactor is used in this function
int CMover::PostCalcGeneric( int nATK, ATTACK_INFO* pInfo )

The IsBlocking function isnt used at all.
I will remove that function to see what the outcome is.

And about the interaction between blockrate and criticalrate
i find it interesting. Maybe i can also use the Hitrate function in it to.
So that if you have more hitrate then the player has blockrate it will bypass the blockrate and still hits.

What do you think of that.

Ok so i have tested it and just as i thought the IsBlocking Function is not in use.
So far this is my code of the GetBlockFactor

PHP Code:
float CMover::GetBlockFactorCMoverpAttackerATTACK_INFOpInfo )
{
    if( 
IsPlayer() ) //Player Block Rate Calculation
    
{
        
//if( pInfo->pDefender->IsPlayer() )
        //{
            // Calculating the BlockRate of an player
            // Block Rate is BLOCKING devided by 100 times the BLOCKING inside PropJob
            // Example if an player has 50 dex it will be divided by 100 that is 0.5 that times 1.5 is the BlockRate of an Mercenary total Block rate = 0.75%
            // Since the Minimum Block Rate is 10% we start of with that.
            // Maximum Block Rate is set to 80% so you cant block everything
            
float fAdd 0.0f;
            
int nBlockmelee;
            
int nBlockRange;

            
nBlockmelee GetParamDST_BLOCK_MELEE);
            
nBlockRange GetParamDST_BLOCK_RANGE);

            
int nBR = (int) ( ( GetDex() / 100.0f ) * GetJobPropFactorJOB_PROP_BLOCKING ) + nBlockmelee nBlockRange );

            
//If both players are in GuildSiege then reduce the Max Block Rate
            
if( pInfo->pAttacker->IsPlayer() && pInfo->pDefender->IsPlayer() && GetWorld()->GetID() == WI_WORLD_GUILDWAR )
            {
                if( 
nBR 70 )
                {
                    
nBR 70;
                }
            }
            else
            {
                if( 
nBR )
                {
                    
nBR 0;
                }
                if( 
nBR 80 )
                {
                    
nBR 80;
                }
            }
            
int block xRandom100 );
            if( 
nBR block )
                return 
1.0f//Dont Block the Attack
            
if( nBR block )
                return 
0.0f//Block the Attack
        //}

    
}
    return 
1.0f;

This time i also included the DST_BLOCK_MELEE and DST_BLOCK_RANGE

I have tested this and its working as it should be. If an player has Max BlockRate (80%)
You will see an lot of blocking instead of hits. No matter what level you are and what your DEX/STR/ATK power is.

I find this more balanced. But maybe anyone of you will have different thoughts about it.
raventh1984 is offline  
Old 09/19/2013, 15:58   #8
 
Mognakor's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 598
Received Thanks: 465
Just because it is a Siege Server there is no need to use extreme numbers. It is far easier to create an interesting, challenging and balanced gameplay with lower numbers for everyone.

Hitrate allready is intended to have a effect on evasion. But the calculation is ofc. also messed up. Hitrate granted as direct effect is not reduced by anything (not even by directly granted evasion). So you might take a look at this calculation,too.


It's nice to see that someone tries to give editing mechanics a shot.


P.S.: If you add interactions like crit vs. block, you should edit the min and max chance for blockrate.
Mognakor is offline  
Thanks
1 User
Old 09/19/2013, 18:47   #9
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
hi Mognakor,

I have taken an closer look to this function
BOOL CMover::GetAttackResult( CMover* pDefender, DWORD dwOption )

Inside here the Hitrate vs the Evasion rate is calculated.
So i also have taken an look in what the mobs are doing and it seems that some mobs have an lot of dwER rate for example Skele General it has 2000 Evasion Rate.

While an Hit Rate must nu be over the 100% Cause 100% means full hitrate.
So in that case i must make the Max Evasion Rate of Mobs about 80%

However based on my formula that i have now its also missing with an aibatt.

Is it wise to use also an xRandom function in here?

Edit
I have done some testing with PHP to see how it would turn out
This is what i have so far i can convert it to c++ however i dont think this will give an good result
PHP Code:
$parry mt_rand(0,10);    //IF the Mob has no higher Evasion then 10%
$nHit mt_rand(0,5); //If the player has no higher Hit Rate then 5%
echo 'Evasion: '.$parry.'<br />';
echo 
'HitRate: '.$nHit.'<br />';

if(
$nHit <= $parry )
{
    echo 
'Miss';
}
if(
$nHit >= $parry )
{
    echo 
'Hit';

Cause if the Mob has 100% Evasion Rate and the player has only 5% HitRate its going to take an long time to hit the mob.

However since many players will upgrade their set to +10 and this will add 45% HitRate the changes are becoming an bit more reliable. Thus it will not take fore ever to hit an mob.

What do you think of it so far.
raventh1984 is offline  
Reply


Similar Threads Similar Threads
About Block Rate
08/05/2010 - Flyff Private Server - 3 Replies
Can I Ask The Max Block Rate Or Block Per Dex? If It Haves Something To Do With Hit Rate Lvl Just Make It Like... PVP Both Hero Max Hit Rate Or Is There An Application To Know The Block rate thanks;)
About Block Rate
08/04/2010 - Flyff - 1 Replies
Can I Ask The Max Block Rate Or Block Per Dex? If It Haves Something To Do With Hit Rate Lvl Just Make It Like... PVP Both Hero Max Hit Rate Or Is There An Application To Know The Block rate thanks;)
WTS 1H Axe lvl130 +9(10% cri rate)& Shield lvl130 +7(38 med & 8% block rate) Siz
07/25/2010 - Dekaron Trading - 5 Replies
L4 AK Helm or they called it WGC helm.. whatever godly stats. $320 AK 1H Lvl 130 Axe +9 (Not DN) (10% critical rate)+(6% Ice Damage)+(2% Attack speed) $250 AK Shield lvl 130 +7 (Not DN) (38 medial x2) + (8% block rate)+ (+16 inc def) $200
R> 100% Block Rate
07/08/2008 - RF Online - 24 Replies
R> 100% Block Rate Can someone please share a link to 100% Block Rate and atk speed for range weapon... thanks........:)
Can anyone find the code for block rate Increase?
05/02/2008 - RF Online - 0 Replies
Is there such thing as increase block rate in CE?:p



All times are GMT +1. The time now is 16:58.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.