Professional Documents
Culture Documents
SBH-SOLO-MicroAIs-v1.10
1.1 General
SBH-SOLO-Player-aids-v1.05
SBH-SOLO is a set of rules that enables solitaire play of
the miniature skirmish wargame Song of Blades and
Heroes published by Ganesha Games. 3 DEFINITIONS
The author of SBH-SOLO is not, in any way, affiliated
[SBH p.X – ZZZ] A rules reference to the Song of
with Ganesha Games. SBH-SOLO is a product that adds
Blades and Heroes rulebook,
logic on top of the Song of Blades and Heroes
where X is the page number, and
foundation. Thus, a copy of the Song of Blades and
ZZZ is the title of the rule section.
Heroes ruleset is required to use SBH-SOLO. A
recommended place to obtain such copy is at the BAD marker A marker for indicating an
Ganesha website at http://www.ganeshagames.net/. ENEMY model in an
unfavourable situation.
If anyone believes SBH-SOLO violates any kind of
copyright, please let the SBH-SOLO author know (see Commands An action that ENEMY models
contact information below) and the author will make sure perform.
to withdraw this product from all download sites. Conditions Pre-conditions that must be
fulfilled before Commands may
SBH-SOLO is free of charge, and will always be.
be executed.
Furthermore, SBH-SOLO is released under the Creative
Commons BY-NC-SA 3.0 license ENEMY By the SBH-SOLO rules, this is
(http://creativecommons.org/licenses/by-nc-sa/3.0/). In the automated player. The
English it means that the product may be opponent of the human player
altered/transformed/tweaked for non-commercial (see PLAYER).
purposes, as long as the author of SBH-SOLO is
game session A complete playthrough, from the
attributed.
first turn, to the last.
This entire product was created using the OpenOffice.org Logic The main part of a MicroAI
3 program suite. consisting of an algorithm
showing what actions an ENEMY
The author gladly accepts any kind of comments,
model will take.
questions, improvement proposals and/or complaints
regarding this product. See contact information below. MicroAI The brain of an ENEMY model.
model Commonly refered to as a
1.2 Acknowledgement physical miniature or a figure.
Without JF at the SoloNexus blog OPPORTUNITY A marker for indicating an
(http://solonexus.blogspot.com/), this product would not marker ENEMY model in a favourable
exist. Thanks to JF's November event of 2011, the Solo situation.
Tabletop Gaming Appreciation Month, the PLAYER The human player. The opponent
encouragement was big enough to create SBH-SOLO. of the automated player (see
So, thanks JF! ENEMY).
A thank you also goes to Aleksandar Šaranac at turn Either the ENEMY taking actions
http://battreps.blogspot.com/ for providing valuable input. or the PLAYER. An ENEMY turn
consists of phases.
1.3 About the author Unacted An ENEMY model that has not
Name: Mats Lintonsson performed any actions the
current turn.
Location: Borås, Sweden xDy Roll x number of y-sided dice.
E-mail: mats.lintonsson@gmail.com phase One part of the ENEMY turn.
Blog: http://monodesire.blogspot.com/
• Allocate MicroAIs to ENEMY models (→ 6.1). Look at the board and the situations of the individual
ENEMY models. Are there any ENEMY models in big
trouble? Perhaps surrounded by three PLAYER models
6.1 Allocate MicroAIs to ENEMY models in a hand-to-hand combat? A fallen or transfixed ENEMY
Before starting the game session, each and every model? Basically any situation where the survival of an
ENEMY model in the ENEMY warband, must have one ENEMY model is in doubt.
MicroAI assigned to it. For an ENEMY model identifed as having an extra tough
The PLAYER chooses MicroAIs and makes a note which time, place a BAD marker next to it.
MicroAI belongs to which ENEMY model. The maximum number BAD markers that may be placed
Several ENEMY models may have the same MicroAI in this phase is calculated by this formula:
assigned to them. [ENEMY_MODELS] / 4
The PLAYER needs to pay attention to any requirements
Where [ENEMY_MODELS] is equal to the total number of
listed on the MicroAI, and make sure the ENEMY model
fulfills those requirements. ENEMY models currently on the board. The result is
rounded up to the nearest integer.
More about MicroAIs in chapter 8.
A single ENEMY cannot have more than one BAD
Example: An ENEMY warband consists of 1 Goblin marker.
Commander (assigned to the THE CHIEF MicroAI), 9 Goblin
Not all BAD markers must be placed on the board. If immediately proceed with (2). If no Unacted ENEMY
there aren't any ENEMY models in particularly bad models could be identified in (2), immediately proceed
situations, then none needs to be marked. Or if just one with (3). And so on.
ENEMY model is in trouble, mark that single ENEMY
model, even if there are more BAD markers available. Remember, when leaving this step, exactly one ENEMY
model must have been nominated. Not more, not less.
Refer to [SBH p.4 – Activation] for more information.
7.1.2 OPPORTUNITY markers
Placing OPPORTUNITY markers is similar to placing Example: In the first ENEMY turn, step (1) is considered. There
are no Unacted ENEMY models with both a BAD and an
BAD markers, but instead of looking for vulnerable OPPORTUNITY marker. Immediately go to the next step, (2).
ENEMY models, look for ENEMY models with special or There are two Unacted ENEMY models with an
extra good opportunities. Could be an ENEMY model OPPORTUNITY marker each, and they both have the same
with Special Rule Shooter within range of a PLAYER Quality value. Use random to choose just one of them.
model. Or an ENEMY model with Special Rule Mounted Nomination of turn one is done. In the second ENEMY turn,
that potentially could move into hand-to-hand combat start at step (3). There are no Unacted ENEMY models with
with a weak PLAYER model. Or an ENEMY model with BAD markers. Jump to the next step, (4), and find the one
Special Rule Leader with the possibility of giving a group ENEMY model with the lowest Quality by looking at all currently
order. In other words, an opportunity for an ENEMY Unacted ENEMY models. There are five Unacted ENEMY
models in total, and three of them have Quality value 3+, which
model to do something good for the warband within too is lowest at the moment. Random is used to select to one of
much risk. them. Nomination of turn two done. In the third ENEMY turn,
start at instance (5), which in practice means (1), and therefore
The maximum number OPPORTUNITY markers that may look for Unacted ENEMY models with both a BAD and an
be placed is the same as the maximum number of BAD OPPORTUNITY marker. But since there were no such models,
markers (see 7.1.1 for information how to calculate this go to next step, (2), and so on...
maximum).
An ENEMY model with a BAD marker already, could as 7.3 Number of activation dice
well get an OPPORTINTY marker too. At this point, one ENEMY model has been nominated
Appart from the above, the same placing restrictions (using the rules in 7.2). Now it is time to find out how
apply to OPPORTINTY markers as for BAD markers. many activation dice this ENEMY model is entitled to.
Refer to [SBH p.4 – Activation].
7.2 Nominate an ENEMY model The algorithm for calculating the number of activation
dice, is the following:
The purpose of this phase is to nominate one single
ENEMY model (that in later phases will throw the 1D10 + [MODIFIERS]
activation dice and perform actions).
Where [MODIFIERS] consists of cumulative negative
The following nomination sequence is used to determine and/or positive modifications to the die roll, defined as
which ENEMY model to nominate: follows:
(1) BAD + OPPORTUNITY
• -4 if the total number of Unacted ENEMY models
(2) OPPORTUNITY
for this ENEMY turn is equal or less than half of
(3) BAD
the total number of ENEMY models currently on
(4) LOWEST QUALITY VALUE
(5) GO TO (1) the board
After the ENEMY model is finsished performing actions, A sequence of blocks is read starting from the top and
proceed to the next phase in the ENEMY turn sequence. processed downwards.
Before starting a new game, each ENEMY model has to It is possible to combine more than one Condition using
be assigned to a MicroAI (→ 6.1). OR and AND. See these definitions:
[Condition1] OR [Condition2]
The content of a MicroAI is small enough to fit into a
normal-sized playing card. The document SBH-SOLO- [Condition1] AND [Condition2]
MicroAIs-vX.XX contains a number of MicroAIs. It is
recommended to print and cut them, and even put them In the case of OR, at least one of the Conditions must be
into plastic card sleeves. true, for the entire IF/ELSEIF block to be true.
A MicroAI is built-up by a name, which is stated in the top In the case of AND, all of the Conditions must be true, for
of the card. (The name does not affect game play in any the entire IF/ELSEIF block to be true.
way.) If the MicroAI requires anything particular of the The broken down syntax of a Command looks like this:
ENEMY model (usually Special Rules), such
requirements are written in italic below the MicroAI name. Command: <tag>
Then, in non-italic text, a short description of the MicroAI
follows, giving a breif, high-level explanation of the The actual Command keyword represents an action,
MicroAI. (The description does not affect game play in describing what kind of action the ENEMY model shall
any way.) perform (see 8.3 for more info about Commands) and
<tag> is a keyword related to the Command, it will tell
Below the name and description is the actual brain of the the PLAYER how to implement the Command. Not all
MicroAI – the Logic. It is a structure similar to pseudo- Commands have a tag (chapter 8.3 contains more
code, giving the PLAYER instructions how the ENEMY information about tags and how to use them).
model shall act in certain situations. For more details how
to read and understand the Logic, see next chapter, 8.1. A may be followed by the syntax {A-B}, which is a
random selector. A 1D10 will decide if/which Command to
Anyone trying out SBH-SOLO is encouraged to write new perform. The random selector definition looks like this:
MicroAIs. Since an unlimited number of variations could
be put into the MicroAIs, e.g. by utilizing different {A-B} Command1
combinations of Special Rules and by writing the Logic so {C-D} Command2
that the ENEMY models behave differently, there is no :
way the pre-made MicroAIs attached with this product {Y-Z} CommandX
could cover all those variations.
The ranges of A-B, C-D, Y-Z etc must not be overlapping,
Example: There is a model in the ENEMY warband that has the
Special Rules Flying and Forester, and the model is supposed and A cannot be lower than 1, and Z cannot be higher
to defend a certain position on the board. No such specialized than 10.
MicroAI within this product. The PLAYER must create one
before play. When encountering a Command with a random selector,
the PLAYER rolls 1D10.
Command1 is performed if the 1D10 result is within A and 8.3 Commands
B, Command2 is performed if the 1D10 result is within C
This chapter explains Commands, that are present in the
and D, and so on.
Logic of a MicroAI, and how to understand them.
In some cases, there are two Commands listed right after
A Command is an action that the ENEMY model shall
each other (without the random selector), in the same
perform. See Appendix B for a full list of all available
block. If that is the case, try spend as few actions as
Commands.
possible in the first Command, so that the second
Command could be executed as well. If it is not possible Each Command has a description attached to it. The
to execute both Commands, then it's no big deal. The description instructs the PLAYER what kind of action to
general rule is to spend as few actions as possible in all do with the ENEMY model. The goal is to stay as close to
cases but still be able to fulfill the Command, unless the description as possible when performing the action.
stated otherwise in the Command description or in the
tag description. Some of the Commands are straightforward and are easy
to implement.
Example: Refer to APPENDIX C, and the MicroAI shown there.
The meanings of the Conditions and Commands mentioned in Example: The Command STAND_UP obviously means that the
this example, can be ignored for the time being. ENEMY models shall stand up, from its fallen state. No
variation can be put into this Command.
Starting from the top, there is an IF block with the condition
TRANSFIXED. If the ENEMY model in question fulfills that Other Commands are more complicated, and may need
Condition, perform the Command BREAK_SPELL. If not, interpretation by the PLAYER. As stated earlier in these
continue downwards to the next block, in this case one more IF
rules, use best judgement and be quick.
block, with the Condition
HAZARDOUS_H2H_ATTACK_POSSIBILITY. If that Condition Example: The Command FLEE is of a complicated nature. The
is fulfilled, perform Command H2H_ATTACK (and obey the tag PLAYER needs to follow the description of the Command and
given after the Command). If not, move on downwards... the tag (if any) in the best possible way. No catastrophe if there
are minor deviations though.
Let's jump down to the IF block with the Condition
THREATENED. Let say this Condition is fulfilled. In that block Some Commands are using a tag (briefly introduced in
there are two Commands with a random selector each. The
chapter 8.1 and refered to as <tag>). If so, it will be
PLAYER needs to roll a 1D10 to determine which one of the
Commands to execute. If the result is in the 1-7 range, perform stated in the Command's description, and a list of all
the FLEE Command (and obey its tag), or if the result is in the possible tags (with corresponding descriptions) is
8-10 range, perform the STANDBY Command. If the presented.
THREATENED Condition is not true, enter the ELSE block in the
bottom of the algorithm. Example: The Command CHARGE has 'closest', 'weakest',
'most supported' plus some more tags.
10 FUTURE
The author of SBH-SOLO intend to continue developing
and fine-tuning this product, and there are a number of
areas that would need an overhaul and new areas to
explore:
TRANSFIXED
The ENEMY model is transfixed, see [SBH p.10 – Transfixed Models].
B2B_CONTACT
The ENEMY model is in base-to-base contact with at least one PLAYER model.
THREATENED
The ENEMY model is (for example) involved in hand-to-hand combat where it has a huge disadvantage, the
ENEMY model is in range of shooters that potentially could perform a concentrated shooting, the ENEMY
model is surrounded by several bigger/faster/stronger models etc. In other words, if it stays, there is a big
chance that it will be killed in the next PLAYER turn.
HAZARDOUS_H2H_ATTACK_POSSIBILITY
The ENEMY model is assumed to be in B2B_CONTACT and if it goes for an attack, the outcome is very
uncertain. The ENEMY could win or lose. Impossible to tell. This Condition includes the statement of
SAFE_H2H_ATTACK_POSSIBILITY.
STRONG_RANGED_ATTACK_POSSIBILITY
Special Rule Shooter [SBH p.14 – Shooter] is required to use this Condition. If the ENEMY model performes
a ranged attack, it will be a good one. There is a big chance of inflicting damage to a PLAYER model.
WEAK_RANGED_ATTACK_POSSIBILITY
Special Rule Shooter [SBH p.14 – Shooter] is required to use this Condition. If the ENEMY model performs a
ranged attack, it might or might not inflict damage to a PLAYER model. Reasons could be long range, low
combat value of the ENEMY model, target behind cover etc. This Condition includes the statement of
STRONG_RANGED_ATTACK_POSSIBILITY.
RANGED_SPELL_POSSIBILITY
Special Rule Magic User [SBH p.14 – Magic User] is required to use this Condition. If the ENEMY model
would cast a spell as a ranged attack (at any multiple of the basic range), there is a chance (no matter how
small) that the spell could inflict damage on a PLAYER model.
TRANSFIX_SPELL_POSSIBILITY
Special Rule Magic User [SBH p.14 – Magic User] is required to use this Condition. If the ENEMY model
would cast a spell for transfixing, there is a chance (no matter how small) that the PLAYER model would end
up transfixed as a result of the spell.
ENTANGLE_POSSIBILITY
Special Rule Entangle [SBH p.12 – Entangle] is required to use this Condition. If the ENEMY model would try
to entangle a PLAYER model, there is a chance (no matter how small) that the PLAYER model would end up
entangled.
HEALING_POSSIBILITY
Special Rule Cleric [SBH p.12 – Cleric] is required to use this Condition. The ENEMY model is assumed to
be B2B_CONTACT with at least one ENEMY model in need of healing or a fallen ENEMY model.
GROUP_POSSIBILITY
Special Rule Leader [SBH p.13 – Leader] is required by the ENEMY model for use of this Condition. The
ENEMY model has an opportunity to either Group [SBH p.16 – Group Activations], Regroup [SBH p.16 –
Regroup] or give a Concentraded Shooting order [SBH p.16 – Concentraded Shooting]. In other words, there
are Unacted ENEMY models within its long range, that fulfill the requirements for at least one of the three
group orders (Group, Regroup or Concentraded Shooting).
NON-FLYING_OPPONENTS
None of the ENEMY model's opponents (i.e. PLAYER models) in the hand-to-hand combat (i.e. currently in
base-to-base contact) has the Flying [SBH p.13 – Flying] Special Rule.
APPENDIX B — COMMANDS
A list of Commands.
Movements
MOVE
Move the ENEMY model closer to something. That "something" is specified by the tag, see below:
large group of allies = move closer and preferable end movement within long range of a large group
of other ENEMY models (i.e. a group of more than one ENEMY model); if it's not possible to
distinguish a group of ENEMY models (because they are too spread out over the board), consider
this tag being a closest ally tag
closest ally = move closer towards the closest ENEMY model; in case of no other ENEMY models,
move towards the center of the board
object x = move closer to object x, where x is an object defined before game session start; could be
a treasure located somewhere on the board, a certain location/area, an ENEMY model (to protect
that particular ally), a PLAYER model (to hunt and kill a particular PLAYER model) etc
CHARGE
Move the ENEMY model closer to a PLAYER model. The goal is to make the ENEMY model end up in hand-
to-hand combat, or if it has Shooter Special Rule, in range for firing its ranged weapon, or if it has Magic User
Special Rule, in range of casting a spell. Move the ENEMY model according to the tags below:
closest = charge the PLAYER model that is closest
weakest = if more than one PLAYER model is at about the same distance, charge the weakest
PLAYER model (i.e. the PLAYER model with the lowest Combat value, fewest dangerous Special
Rules, fallen, transfixed etc)
most supported = if more than one PLAYER model is at about the same distance , charge a
PLAYER model that is currently under attack from most ENEMY models; if no such PLAYER models,
consider this tag being a closest tag
non-mounted = if more than one PLAYER model is at about the same distance, charge a PLAYER
model without the Special Rule Mounted; if no such PLAYER model, consider this tag being a closest
tag
random = if more than one PLAYER model is at about the same distance, use random to choose a
PLAYER model
FLEE
Make the ENEMY model move away from the hot and dangerous area where it is currently located. It could
mean a disengage from a hand-to-hand combat. Do whatever it takes – just get away! Avoid ending up in
hand-to-hand combat. Move the ENEMY model according to the tags below:
minimal = make a minimal movement of the ENEMY model, just enough so that it escapes the worst
vulnerableness, in a direction towards most other ENEMY models
farthest = move the ENEMY model the farthest possible distance from as many PLAYER models as
possible; spend all remaining actions
most cover = end the ENEMY model movement in a position where it is in most cover from most
PLAYER models; if no cover within movement range, consider this tag a farthest tag
broken terrain = end the ENEMY model movement in broken terrain (e.g. wood); if in broken terrain
already, or if there are no broken terrain within movement tange, consider this tag a farthest tag
Attacks
H2H_ATTACK
Let the ENEMY model perform a hand-to-hand attack [SBH p.6 – Hand-to-hand Combat]. Always make it
Powerful [SBH p.5 – Activated Figures] if possible. What PLAYER model to attack (if in base-to-base contact
with more than one PLAYER model), is decided using the tags below:
weakest = the PLAYER model with the lowest Combat value, fewest dangerous Special Rules,
fallen, transfixed etc
fallen = a PLAYER model that is fallen
transfixed = a PLAYER model that is transfixed
standing = a PLAYER model that is standing
mounted = a PLAYER model that has the Special Rule Mounted [SBH p.14 – Mounted]
non-mounted = a PLAYER model that does not have the Special Rule Mounted [SBH p.14 –
Mounted]
magic user = a PLAYER model that has the Special Rule Magic User [SBH p.14 – Magic User]
random = a random PLAYER model
RANGED_ATTACK
Special Rule Shooter [SBH p.14 – Shooter] is required by the ENEMY model for use of this Command. Let
the ENEMY model perform a ranged attack [SBH p.8 – Ranged Combat]. Always make it Aimed [SBH p.5 –
Activated Figures] if possible. If the closest PLAYER model can be ignored, see [SBH p.8 – Target
Restrictions], then use the given tag to prioritize what alternative PLAYER model to attack. See below for a
list of possible tags:
weakest = the PLAYER model with the lowest Combat value, fewest dangerous Special Rules,
fallen, transfixed etc
fallen = a PLAYER model that is fallen
transfixed = a PLAYER model that is transfixed
standing = a PLAYER model that is standing
mounted = a PLAYER model that has the Special Rule Mounted [SBH p.14 – Mounted]
big/huge = a PLAYER model that has either Big [SBH p.12 – Big] or Huge [SBH p.13 – Huge]
Special Rules
undead = a PLAYER model that has the Undead [SBH p.15 – Undead] Special Rule
CAST_RANGED_SPELL
Special Rule Magic User [SBH p.14 – Magic User] is required to use this Command. Let the ENEMY model
cast a spell as a ranged attack [SBH p.10 – Spells as Ranged Attacks]. The ENEMY model will use any
range multiple. The same tags (and restrictions) as for RANGED_ATTACK apply.
CAST_TRANSFIX_SPELL
Special Rule Magic User [SBH p.14 – Magic User] is required to use this Command. Let the ENEMY model
cast a spell to try transfix a PLAYER model [SBH p.10 – Transfix]. The target PLAYER model must be within
range of the magic power, and the exact PLAYER model is determined by the tag attached to this Command.
Here's a list of all possible tags:
worst quality = the PLAYER model with the worst/highest Quality value
closest = the PLAYER that is closest
h2h = a PLAYER model in hand-to-hand combat
ENTANGLE
Special Rule Entangle [SBH p.12 – Entangle] is required to use this Command. Let the ENEMY model
entangle a PLAYER model [SBH p.12 – Entangle]. The same description and tags are applicable for
thisCommand as for CAST_TRANSFIX_SPELL.
CONCENTRADED_SHOOTING
Special Rule Leader [SBH p.13 – Leader] is required by the ENEMY model for use of this Command. Issue a
concentraded shooting order to all (if more than five, make a random selection) Unacted ENEMY models with
Special Rule Shooter but without a BAD and/or OPPORTUNITY marker, currently not engaged in hand-to-
hand combat and with a target (following the fules in [SBH p.16 – Concentraded Shooting]). Always use two
activation dice for the group of ENEMY models. The target for the ENEMY models is always the closest
PLAYER model.
Misc
STAND_UP
Raise the ENEMY model [SBH p.7 – Fallen Models] from its fallen state.
BREAK_SPELL
Let the ENEMY model break free [SBH p.10 – Transfix] from its transfixed state.
STANDBY
The ENEMY model does nothing.
HEAL
Special Rule Cleric [SBH p.12 – Cleric] is required by the ENEMY model for use of this Command. Try heal
or raise a fallen ENEMY model (whatever applicable; prioritize heal before raise if both are applicable for the
same ENEMY model). Use the number of dice available to get the wounded/fallen ENEMY model as restored
as possible, see [SBH p.12 – Cleric] for details. Available tags for priorization of ENEMY model if more than
one:
most wounded = an ENEMY model with most wounds
fallen = a fallen ENEMY model
GROUP
Special Rule Leader [SBH p.13 – Leader] is required by the ENEMY model for use of this Command. Try
make a group activation for all Unacted ENEMY models within long range according to [SBH p.16 – Group
Activations]. If the worst Quality value in the group is ≤ 2, use three activation dice; if 3-4, use two activation
dice; or if ≥ 5, use one activation die. If the group activation was successful, perform actions with each of the
activated ENEMY models in any order, using the ENEMY model's corresponding MicroAIs.
REGROUP
Special Rule Leader [SBH p.13 – Leader] is required by the ENEMY model for use of this Command. Issue a
regroup order to all Unacted ENEMY models without a BAD and/or OPPORTUNITY marker and currently not
engaged in hand-to-hand combat (following the rules in [SBH p.16 – Regroup]). Move the regrouped ENEMY
models into base-to-base contact where it seems most approriate, i.e. where they will have the best
opportunities next turn, and, for the moment, in a position where they are least vulnerable.
APPENDIX C — EXAMPLE 1
Example of a MicroAI.
SBH-SOLO • MicroAI
POWER FIGHTER
Suites an ENEMY model that enjoys hand-to-hand combat.
IF [TRANSFIXED]
BREAK_SPELL
IF [HAZARDOUS_H2H_ATTACK_POSSIBILITY]
H2H_ATTACK: standing
IF [FALLEN]
STAND_UP
IF [THREATENED]
{1-7} FLEE: minimal
{8-10} STANDBY
ELSE
CHARGE: weakest
IF [HAZARDOUS_H2H_ATTACK_POSSIBILITY]
H2H_ATTACK: standing