Author Topic: Combat Skills Thread Dump  (Read 10619 times)

0 Members and 2 Guests are viewing this topic.

Offline Once

  • Full Member
  • ***
  • Posts: 203
    • View Profile
Combat Skills Thread Dump
« on: November 24, 2011, 07:47:30 pm »
This is about equalizing the value of attack skills to the "tier level" (skill level * tier) of the skill itself so we have an actual rationale for balance.            

Here we see some bonuses that cleave and a couple similar skills get:
Code: [Select]
               case SKILL_CLEAVE:
                        return cleave_mult ( HPLEFT ( vict ), tier ) + ( total_chance ( ch, SKILL_CLEAVE ) /100.0f );
                case SKILL_BEHEAD:
                        return cleave_mult ( HPLEFT ( vict ), tier ) + ( total_chance ( ch, SKILL_BEHEAD ) /100.0f );
                case SKILL_THRUST:
                        return cleave_mult ( HPLEFT ( vict ), tier ) + ( total_chance ( ch, SKILL_THRUST ) /100.0f );

total_chance appears to add up your skill in the skill and any pre-requisites and then divide by the number of skills/pre-reqs. So if you have Dropkick which is based off of kick you have both at 100 that's 100 total_chance. If kick is at 100 and dropkick is at 50 though that'd be 75.  Of course this is documented no-where, just had to go look up the code ;)


HPLEFT is: #define HPLEFT(vict) ((GET_HIT(vict)*100)/GET_MAX_HIT(vict))  but is only used for this particular function for some reason.
 

Here we see the actual cleave formula:
Code: [Select]
float cleave_mult ( int level, int tier )
{

        switch ( tier )
        {
                default:
                        return 1.1f + ( level < 10 );
                case 1:
                        return 1.55f + ( level < 10 );
                case 2:
                        return 1.7f + ( level < 10 );
                case 3:
                        return 1.9f + ( level < 10 );
                case 4:
                        return 2.0f + ( level < 10 );  
}
}


This is all used in:  dam = FTOI ( dam * ( GET_SKILLMULTI ( ch ) = skill_type_multi ( ch, vict, type ) ) );


Which is saying that the damage is current damage times multiplier.




-----

So with the current system cleave_mult will return a multiplier based on your current tier, if you're tier4 you get a 2.0 multiplier, if you're tier1 in your current class you get a 1.55f multiplier. This is also given an extra 1x if your opponent is below 10% hp left.


As we can see from this, the actual bonus from these skills has nothing to do with the level or tier they're set at, but with your own particular tier. It also looks so far like each skill is as valuable as the other, so most the perceived differences are likely either defined elsewhere, or are based on the accuracy or damage bonuses that individual classes get either by virtue of being a class, or from class mastery (which is another ball of wax altogether ;)).


More research shortly.
« Last Edit: November 24, 2011, 07:58:24 pm by Once »

Offline Jaros

  • Full Member
  • ***
  • Posts: 234
    • View Profile
    • Email
Re: Combat Skills Thread Dump
« Reply #1 on: November 24, 2011, 08:56:35 pm »
I think that skill proficiency should affect stamina cost rather than chance of success and practice points rationed such that no one can just max all of their skills.  Then we have a choice between concentrating on a narrow range of efficient skills or a broader range of more expensive ones.  Efficiency vs range.  It could also mean that even skills at 0 can be used but at a prohibitive cost: something like 2-10x more stamina than a 100% skill.

Offline Once

  • Full Member
  • ***
  • Posts: 203
    • View Profile
Re: Combat Skills Thread Dump
« Reply #2 on: November 26, 2011, 02:27:30 pm »
Yeah, that's actually a pretty useful idea. It also then gives more of a reason for dropping cash on a skill. You want to improve your stamina usage and reduce the drain you get from using it.

Offline Once

  • Full Member
  • ***
  • Posts: 203
    • View Profile
Re: Combat Skills Thread Dump
« Reply #3 on: November 26, 2011, 04:27:21 pm »
I think the cost goes up by .5% per skillpoint you're missing.  So at 1% in a tier 1 level 30 skill (15 stamina) you have (float)((100-SkillPercent)/2)/100*skill_level*skill_tier/2  or 100-1/2/100*30*1/2 (aka, 14.85) + skill_level*skill_tier/2  (aka 15)  for a total of 29.85 or 30 stamina. 

If we take that same formula and assume you're at 70% in skill, we're looking at 100-70/2/100*30*1/2  or 2.25 for a total of 17 stamina.


We should also add in some bonuses for being over certain ranks. I'm thinking through what that looks like now. I wrote up a lot of formulas but realized they seemed a little overly complex and also didn't want to go too into the nitty gritty here.