1.7.11 Using Combat Commands EffectivelyNOTE: 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
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,
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.
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