No announcement yet.

New Game Feature: MCombat 4

  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    • Tweaked damage formulae again. All offensive martial skill levels now passively increase all damage dealt for all attacks by a small percentage per skill level. Max fatigue and fatigue recover rate significantly increased to keep up with the new increased damage output.
    • Experimenting with two identically skilled test dummy characters with top skills in the Senior Artisan area and low end skills in the Fellowcraft to Journeyman area, getting in 3 to 4 attacks per turn in which about 50% of those attacks were parried, my test fights were lasting about 5 turn sequences. We'll see how the new numbers hold up in less controlled environments.
    • Fixed a bug that was causing successful MCombat special attacks to deal 0 damage.
    • Fixed a bug causing counterattacks to break combat.
    • Worked on the MCombat "UI" a bit to try to condense and smoothen the information you get and make it a bit less spammy.
    • The emits of some moves were changed. A success hitroll that drains fatigue but does not strike your character will now emit you staggering back instead of dodging, and perhaps desperately parrying or blocking as you stumble. This is not to be confused with a "flawless parry/block", which shows a different emit and deals no damage.
    • Looked into a bug where @style was not working but could not reproduce. Make sure you have the necessary style skill that you're trying to activate, and also that the necessary weapon to use that style is currently equipped.
    • Fixed a bug that would error out MCombat if using the feint attack while dual wielding with the dual striking passive skill.
    Last edited by Kurzon; 10-11-2017, 08:21 PM.
    StoryHost Kurzon
    Castle Marrach Staff

    The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.


    • #17

      After gutting and rebuilding the entire hit formula script, I think I've finally found the sweet spot for hitroll balance. To do this, I've switched the script from a d20 system to a straight up hit% formula ranging from 1 to 100, which allows me more room to manually toy with hit chances.

      Having 5 mock battles using this new formula, with two characters of identical skills set to the soft skillcap (BG Preceptor/Duelist Senior/Corporal in martial guidelines) and each combatant using different weapons during each battle, all 5 battles went to 5 rounds before one combatant or the other dropped, with the victor a swing or two away from going down himself. No special moves were used during these test battles, but if special moves significantly change the outcome, then its likely those abilities that need to be tweaked, not the overall hitroll script.

      Matches will probably be quicker than the 5-round goal if fought between new or non-martial characters, even if evenly skilled, because of much lower max fatigue cap and fatigue recovery rate. However the lower damage output may counteract that to an extent as well.

      Other than the completely rebuilt hitroll script, updates are as follows:

      • The amount by which your offensive dueling skill (cut, thrust or feint depending on the attack) increases attack damage is now 10% per skill level, up from 5% in the old system.
      • The base chance to flawlessly defend against an attack by a character of equal skill to you is 30%, down from 50% in the old system.
      • The minimum chance you can possibly have to flawlessly defend against an attack is 10%. There was no minimum chance prior.
      • The maximum chance you can possibly have to flawlessly defend against an attack is 65%, though achieving thus number would require some combination of higher skills, bonuses from weapon type such as the "long" trait in polearms and longswords, and/or defensive bonuses granted by styles or special abilities like shield guardian. There was no maximum defense chance prior.
      • The chance to neutralize a cut or thrust attack using the sentinel, warding, lightfoot or strafing styles is now significantly decreased if the attacker is wielding a sword type weapon. These styles are primarily meant to be used against non-sword weapons, to represent the "control" that a sword has over less versatile weapons in real life weapons combat. The chance to neutralize attacks from swords still makes the styles worthwhile using against swords, but not to such an extent where sword vs sword matches are a guessing game of "which style is he using this turn?"

      • Fixed a bug where extra attacks procced by the dual wielding "dual strike" passive were doing 0 damage.
      • Fixed a bug where AP reducing abilities "whirling assault" and "rapid style" were not properly reducing AP cost.
      • Fixed a bug where shield and dagger abilities were not registering.

      • Some tweaks have been made to emits.
      • Neutralizing a thrust type attack via the sentinel style or ward style now appears as: You deflect X's <attacktype>
      • Neutralizing a cut type attack via the lightfoot style or strafing style now appears as: You sidestep X's <attacktype>
      • You can now disable your mcombat style using @style "none"

      • Area attacks such as shaft sweep seem to be suffering targeting issues.
      • The shield wall style isn't working, this was broken when the hitroll formula was gutted and needs to be rebuilt now.
      • Some weirdness is occurring when people join fights already in progress, particularly if some combatants have set a team and others have not. Not entirely sure the cause for this yet but I assume it's some oversight in the script that determines what team a character should be on.

      StoryHost Kurzon
      Castle Marrach Staff

      The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.


      • #18
        Hey all.

        MCombat will be down'ish for the next day or so while I implement a series of bug fixes, a large balancing update to fatigue and damage output, and to implement MCombat Sorcery.

        During this 'downtime' it will still be accessible but may not function properly while in the process of being updated.
        StoryHost Kurzon
        Castle Marrach Staff

        The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.


        • #19
          Hello everyone,

          I have completed the revised stat weighting for MCombat. This is a concerted re-assigning of the values of different stats and skills in MCombat that will affect your character's combat performance. The re-weighting was done based on data pulled on how well characters perform in MCombat based on their skill levels, against characters of both similar and varying skill levels, and employs a formula I wrote that aims to forcibly keep characters within the general strength values I desire them to be at for their skill levels.

          The formula aims to weight stats such that a fight between two evenly skilled characters will last for approximately 5 to 7 turns. This is assuming both fighters are using basic attacks only and using a one handed sword only, varying circumstances will alter the average result (ie: two fighters using two handed weapons will likely end their fight quicker than above due to increased damage output, whereas two fighters using shields will likely take longer than above, though a fighter with a two hander versus a fighter with a shield should average out about the same). This formula factors in the total health of both combatants, along with their average damage per turn after calculating in likely damage reduction from parries, and also factoring in average fatigue restored by rest per turn.

          The first difference that you will immediately notice is that numbers are a lot higher. New characters who previously started around 150 combat fatigue are now sitting around 800, higher end player characters further towards the current player plateau are looking at numbers closer to 6000, and some will be higher than that for those few pushing on Master level defensive skills and/or possessing a higher-then-normal fatigue stat. Damage likewise has been scaled with the new health values, sitting around 450 for a thrust and 700 for a cut on a Senior Artisan'ish character (one third of which, on average, will be parried each turn and another one-third which would be rested back, assuming combat against a character of the same skill levels as you, this makes the average damage per attack sequence

          Changes from the previous version of MCombat include:

          * Fatigue is now calculated by an accumulation of your five defensive dueling skills: Guard, Recover, Attacking, Rest and Dodge.
          * The scaling of these skills is no longer linear. What this means is that the difference between Artisan (6) and Senior Artisan (7) Rest is bigger than the difference between Senior Apprentice (3) and Fellowcraft (4). Each skill-up in a defensive skill increases your MCombat fatigue by more than the previous skill-up.
          * The weightings of these skills are no longer identical. Guard makes the biggest contribution to your total fatigue per skill level, followed by Rest (Rest however overtakes Guard in total fatigue value once you factor in the fatigue that Rest grants you each turn - roughly about one third of the damage you can expect to take per turn fighting a character of equal skill to yours).
          * Your weapon skill level in the weapon you are using now also affects your damage output, instead of just giving you additional skills to use. Your base damage is determined 50/50 by your dueling skill being used for that ability (ie: cut or thrust) and your weapon skill (ie: polearm, dualwield). These two stats now combine to create your base damage INSTEAD OF your weapon being the base damage.
          * Weapons now serve as a damage multiplier. One handed weapons do 1.0x base damage, two handed weapons now do 1.5x base damage, and shields grant a 33% chance to block all damage. This in mind, a character using a two handed sword against a character using a sword and shield would both be doing roughly the same amount of damage to each other (the one-third block chance on the shield negates the one-third extra damage on the two handed weapon).
          * The functionality for dodge has been changed. Dodge no longer acts as a general damage reduction stat, but now acts as a defensive roll that triggers only against attacks that cannot be parried. If attacked with an ability that cannot be parried, you will instead attempt to dodge it using the same formula as other defensive rolls. This makes dodge particularly useful when fighting ranged characters (including if you're a ranged character yourself).

          OTHER FIXES

          * Looked into a bug about knockdown not wearing off after 1 turn, was not able to replicate this bug. If it happens to you please file an assist and include the names of both the attacker and target and what weapon(s) they were wielding.
          * Finally narrowed down a bug with @interrupt not working in cases where two combatants were using different weapon types, @interrupt appears to be fully functional now.
          * Weapon inspection has been updated and should now display some weapon traits it did not used to show if the weapon has them (such as functioning as a silver weapon).


          Sorcery should be right around the corner. I have to individually update a lot of spells to get them working with MCombat 4, but the framework and formulae are in place (in fact if you enter MCombat as a sorcerer you will get some unusual stat readings that non sorcerers don't get, this is because the code is mostly in place).
          StoryHost Kurzon
          Castle Marrach Staff

          The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.


          • #20
            I've made some updates this afternoon to MCombat, particularly insofar as CNPC functionality is concerned.

            Monsters and other AI will no longer force you into an MCombat confrontation on sight. Instead, when encountering a monster, you will use @mcombat 'fight to start a battle as usual, or @mcombat 'join to join a battle already in progress. While encountering a CNPC won't automatically initiate MCombat anymore, the CNPC will still prevent you from leaving the room until you fight it, forcing you to deal with it or wait for help.

            A large part of this decision stemmed from how un-smoothly the old method was working from a coding perspective. Particularly when large groups of players on follow chains would encounter other groups of monsters, we were suffering a lot of errors with characters not getting into combat in the same round due to lag, or some properties not being read properly which was causing a lot of the bugs and MCombat crashes we were suffering with CNPCs.

            The decision isn't entirely for code purposes, however; it allows us to add some conveniences too. Characters who wouldn't normally be fighting now no longer have to. Witnesses, people being escorted, bystanders hiding under the table as monsters attack, etc, no longer get pulled into MCombat automatically, meaning they don't have to constantly @pass their turn (and those fighting don't have to wait for them to do so).

            It's also allowed me to implement a limit on how many people can be in combat at a time. Currently, each mcombat team is capped out at a maximum 5 members in combat at a time (so in most cases, 5 monsters and 5 players at a time). This should reduce the amount of waiting for turns to pass, but it also makes it easier for Staff to create balanced enemies by knowing how many players we'll be dealing with (it's hard to gauge how much health a monster should have if it could end up fighting anywhere between 4 and 25 players at a time). As characters get defeated in combat they can still be swapped mid-fight; if a group of 8 player characters runs into a group of 4 monsters, only 5 players can fight at once, but if one gets injured or weaken, he can step out and withdraw and let another player take his spot, using the normal @mcombat 'withdraw and @mcombat 'join commands.

            Lastly, since combat doesn't start immediately, ranged characters can set their ranged combat area before each fight starts using @area. This would allow you to, for example, set your bow wielding character to start this fight in the southern end of the room so that CNPCs on the north end have to cross the room to you before attacking. Or, when fighting in large groups, send the appropriate characters to face the current challenge (eg: if fighting a number of CNPCs with heavy armor, send your characters with armor-piercing weapons into the fight first).

            I've tested these changes and they seem functional from the couple fights I had. However, a good part of the overall mcombat code was written assuming X rules would apply, when you change those base rules from X to Y there's a reasonable chance that something unforseen that was dependant on X rules might malfunction. As always, if something odd occurs please file an assist.
            Last edited by Kurzon; 02-06-2018, 07:32 AM.
            StoryHost Kurzon
            Castle Marrach Staff


            The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.


            • #21
              Good morning,

              Today I have added the @ability command as a convenience-of-life feature for MCombat 4. The @ability command can be used to call any existing MCombat ability and return that ability's stats and functions to you in a small reference guide. Information pulled includes the ability's name, associated skills, action point cost, focus point cost, cooldowns, effects and other parameters. Hopefully this will make it quicker/easier for you to determine your character's next move without a lengthy pause to review the MCombat how-to post.

              Note that some abilities with special scripts (anything with an area-wide effect like shaft sweep) won't quite correctly read out their effects, as the script can only detect the normal properties that determines an ability's function, and cannot read through custom scripts to translate what an ability does.

              Thanks and happy gaming!
              StoryHost Kurzon
              Castle Marrach Staff


              The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.


              • #22
                MCOMBAT UPDATES 06 MAR 2018
                • Fixed a bug where the last fighter in a turn sequence would not progress their debuffs, resulting in them suffering their debuffs for the rest of the fight (eg. indefinite knock down).
                • Knockdown abilities should now (finally) function on CNPCs/monsters without breaking on their turn.
                • The @guard command should now properly work for shield bearing fighters with the shield guardian ability.
                • Fatigue no longer immediately recovers after a real/live MCombat fight, even if not in a survival area. Fatigue instead now slowly regenerates after any live fight and should automatically start recovering slowly whenever not in combat, until full.

                StoryHost Kurzon
                Castle Marrach Staff


                The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.


                • #23
                  Updates 2018-12-04


                  A number of changes have been made to try to increase the speed of MCombat matches between players, in particular by lowering some of the defenses granted by shields.

                  - Blocking an attack no longer halts it outright, but instead reduces the amount of fatigue damage taken by the target.
                  - Chance to block is no longer reduced by the target's offensive skill level. Block chance starts at a base of 25% and is increased by 5% per skill level in the Guard dueling skill. Block chance is increased by 15% if using the 'shield cover style'. Block chance cannot exceed 75% total.
                  - Damage reduction from blocking starts at 20% and is increased by 5% per skill level in the Shield weapon skill. Damage reduction cannot exceed 50% total.
                  - This means at rough skill cap (level 7 in Guard and Shield) a shield reduces incoming damage by 30% (60% chance to reduce damage by 50%).
                  - Likewise, to compensate, damage of hand-and-half weapons when used in two hands (presently longsword or spear) has been reduced to 130% (was 150%). When used in one hand, hand-and-half weapon damage has been raised to 90% (was 80%) to make them more viable in one hand while still slightly less effective than true onehanders that can only be used single handed.
                  - True two handed weapons which cannot be used in one hand now deal 143% damage (was 150%). This means that two handed bludgeons and axes (which cannot parry) do more damage than longswords and spears (which can).
                  - A fully two handed weapon at 143% damage having its damage reduced by a shield's 30% reduction (30% of 143 not of 100) should therefore deal the same amount of damage to the shield wielder as the shield wielder's one-handed weapon deals back (143*0.7 = 100).


                  A few changes to the user interface during MCombat have been made to attempt to assist players in more quickly choosing their abilities, as the vast majority of delay during MCombat matches seems to come from players trying to figure out what abilities to use.

                  - Current and maximum fatigue are now displayed to a character at the start of their turn.
                  - A new command, @abilities, gives the user a quick reference guide of all abilities that can currently used based on currently equipped weapons and learned skills. Includes a quick listing of AP and FP costs, along with a one sentence description of what that ability does when used. Note that not every ability has a description in this library yet - it's a work in progress, but because of how the library is being written, the descriptions for abilities are generated dynamically by reading the properties of an ability - this means this command will always be accurate; changing how an ability works, should I need to, will change the information @abilities sees when scanning that ability and update automatically.
                  - Typing @combatants will now also list people in the room who have readied for combat if combat is not taking place. This should hopefully make it easier to start group combat without accidentally missing people.


                  - Numerous AI related bug fixes were implemented that should make MCombat vs CNPCs crash less often.

                  My hope with these changes it to make MCombat smoother and less time intensive than it presently is, both by reducing defenses and also cleaning up the UI for quicker player decision making. Admittedly a large part of the MCombat time sink is user error, people are going to have to practice with the system to get it moving more quickly, and large scale 4v4 battles (and bigger) that it often gets used for are always going to be much longer than 1v1 duels. But I think that the above changes will help both with balancing and with speed of combat. Barring that, I can simply implement an across-the-board damage increase down the road to shorten matches. However, many of the observations of fights taking "too long" right now are taking too long because groups of characters are fighting defensively using shields and longspears whereas the system was balanced for "tanks" to do low damage but take a lot of it before they fall, a fight between two shield users is always going to take longer than a fight between two longsword users.
                  StoryHost Kurzon
                  Castle Marrach Staff


                  The destiny of the world is determined less by the battles that are lost and won than by the stories it loves and believes in.