# Title

Name of this Description:
Attacker:
Target:
Weapon(s):
Description on Miss:
Description on Critical Hit:
Description on Hit:
Description on Knocked Down:
Description on Knocked Off:
Description on Killed:

    (new CombatDescription(""))
        .setDescriptionFunction((actor, target, weapons, markers) => {
            let say = new Say();

            if (markers.includes(CombatHit.MISS)) {
                say.add();
            } else if (markers.includes(CombatHit.HIT)) {
                say.add();
            } else if (markers.includes(CombatHit.CRITICAL)) {
                say.add();
            }

            say.add(" ");

            if (markers.includes(CombatResult.KILLED)) {
                say.add();
            } else if (markers.includes(CombatResult.KNOCKED_OFF)) {
                say.add();
            } else if (markers.includes(CombatResult.KNOCKED)) {
                say.add();
            }

            return say;
        })
        .addUnit()
            .setActor()
            .setTarget()
            .setWeapon()
            .addMarker(AdaptiveDifferential.FULLYADAPTIVE(CombatHit.MISS, CombatHit.HIT, CombatHit.CRITICAL))
            .addMarker(AdaptiveDifferential.FULLYADAPTIVE(CombatResult.KNOCKED, CombatResult.KILLED, CombatResult.KNOCKED_OFF))
    ;