prev | toc | next
 

1.7.11 Using Combat Commands Effectively

NOTE: The combat system is undergoing revision. This page is outdated.

Having a sense of how the combat program works internally can help you use the system more effectively, so a brief explanation is given here.

Combat is handled by a single, rather large program (asys-combat) that works in conjunction with the event manager (asys-eventmgr) to handle and 'event loop' or 'combat loop', as follows:

    Preprocessor  -?->  Combat   -->  Processor 
                         Loop   <--

The preprocessor interprets commands and sets props that indicate your actions and modes. If the command declares an offensive action, and you are not yet engaged in combat, the preprocessor then initiates a combat loop, a portion of the program that executes repeatedly, once each turn. With each iteration of the loop, the program pauses for one turn, then checks props to determine your current activities. When an activity is determined, execution jumps to the Processor, where the results of the activity are calculated and applied. Execution then jumps back to the loop and pauses for another turn. This cycle (enter loop --> pause --> determine action --> process action --> reenter loop --> pause --> determine action... etc.) will continue until you or combat events interrupt it.

You can only have one combat sequence running at a time, but you can issue additional combat commands at any time. If you have a combat sequence running, additional commands you enter will usually just change the props that indicate what you are doing and how, and leave the loop unaffected. On the next iteration of the loop, these new activities will be executed instead of whatever you were doing before.

The fact that new offensive commands modify what happens in the current combat process rather than starting a new one is significant: once you are in a combat sequence, offensive commands you enter may take effect faster than the initial action that started the sequence. When you start a combat sequence, your first offensive action will occur one turn after you enter the command (30 seconds, say). When you are already in combat, and enter another offensive command, the results of the command will be executed on the next iteration of the loop, which might be coming up in one or two seconds, rather than thirty. You don't get extra turns by entering new commands, and your turns don't go faster, but the results of your commands might be applied more quickly. The moral is: start a combat sequence as immediately if it looks like you may soon be engaged in combat. If you are uncertain of your best offensive action or target, or if you do not want to be the aggressor but nonetheless want to be able to respond quickly, you can initiate a combat sequence with either of the two readiness manuevers, +wait or +target. If you do not have a readied weapon, you should probably do a +ready quite soon as well, although readying a weapon does emit a notice to the room, which might be construed as a threatening gesture. Readying a weapon is treated as an offensive action by the program: it too may be completed more quickly when you are already in a combat sequence rather than starting a new one.

Defensive actions or mode changes are applied immediately, whether you are in a combat sequence or not, and do not emit a notice. So, if you switch from Dodge to Parry and are attacked three seconds later, the roll will be calculated against your Parry result, even if you haven't had a turn since you switched to Parry.


Antar is socializing in the Dansing Damsel Tavern, enjoying himself thoroughly. However, his companion, Althius, gets into an argument with a fellow at the next table, Bjorn, who is known to be short-tempered and violent. The argument grows more heated; Antar doesn't want to aggravate the situation, so he decides not to ready his rapier just yet, but he also wants to be able to help Althius as quickly as possible if things get rough. Bjorn's companions don't seem nearly as threatening as he, so Antar judges that his most likely target — should the situation escalate to combat — would be Bjorn. While continuing to RP his participation in the scene, Antar types +target bjorn. This initiates a combat sequence: Antar now has a combat process running, with his declared action as `wait' and his designated target as Bjorn. Any offensive commands he enters will now be executed at the next iteration of the combat loop, which may give him an edge. His favored mode of defense is a parry, but he can't designate that as his active defense until he has a readied weapon. So, rather than take unnecessary chances, he types +dodge — which does not require a readied weapon or shield — so he'll have at least some defense if events move more quickly than he expects.

You can only have one event loop running at a time, and only one designated action. So, sometimes you need to pay attention to what is happening and change actions as soon as possible. For example, readying a weapon and attacking are both actions... You need to wait until your weapon is readied before doing +attack, unless you want the attack to be figured as unarmed combat.


The scene in the Damsel does indeed escalate. As soon as it becomes apparent that Bjorn and Althius are about to come to blows, Antar types +ready rapier. Bjorn, who had fewer compunctions about becoming the aggressor in this situation, evidently did so sooner, and so did his companion Hengst. Before Antar's rapier is readied, Bjorn and Hengst both get their weapons readied and will no doubt attack soon.

>> Bjorn readies his axe.
>> Hengst readies his mace.

Antar wasn't expecting Hengst to enter the fray so quickly; the situation has changed, but Antar — who's no great shakes as an unarmed fighter — is essentially locked in to his +ready action. He waits impatiently... as soon as Argo notifies him that the rapier is readied, he types +attck hengst and +parry. The next time his turn comes around, he will attack Hengst. He can type +parry without cancelling the attack because +parry (like +block and +dodge) simply designates the way in which he will defend himself, and is not an action. Antar hopes that he will be able to help Althius by tying up one of his two opponents... and that he'll be able to handle Hengst.

prev | toc | top | next