<spanid="evennia-contrib-tutorials-evadventure-combat-turnbased"></span><h1>evennia.contrib.tutorials.evadventure.combat_turnbased<aclass="headerlink"href="#module-evennia.contrib.tutorials.evadventure.combat_turnbased"title="Permalink to this headline">¶</a></h1>
<p>EvAdventure turn-based combat</p>
<p>This implements a turn-based combat style, where both sides have a little longer time to
choose their next action. If they don’t react before a timer runs out, the previous action
will be repeated. This means that a ‘twitch’ style combat can be created using the same
mechanism, by just speeding up each ‘turn’.</p>
<p>The combat is handled with a <strong>Script</strong> shared between all combatants; this tracks the state
of combat and handles all timing elements.</p>
<p>Unlike in base _Knave_, the MUD version’s combat is simultaneous; everyone plans and executes
their turns simultaneously with minimum downtime.</p>
<p>This version is simplified to not worry about things like optimal range etc. So a bow can be used
the same as a sword in battle. One could add a 1D range mechanism to add more strategy by requiring
optimizal positioning.</p>
<p>The combat is controlled through a menu:</p>
<p>——————- main menu
Combat</p>
<p>You have 30 seconds to choose your next action. If you don’t decide, you will hesitate and do
nothing. Available actions:</p>
<p>1. [A]ttack/[C]ast spell at <target> using your equipped weapon/spell
3. Make [S]tunt <target/yourself> (gain/give advantage/disadvantage for future attacks)
4. S[W]ap weapon / spell rune
5. [U]se <item>
6. [F]lee/disengage (takes two turns)
7. [B]lock <target> from fleeing
8. [H]esitate/Do nothing</p>
<p>You can also use say/emote between rounds.
As soon as all combatants have made their choice (or time out), the round will be resolved
simultaneusly.</p>
<p>——————– attack/cast spell submenu</p>
<p>Choose the target of your attack/spell:
0: Yourself 3: <enemy 3> (wounded)
1: <enemy 1> (hurt)
2: <enemy 2> (unharmed)</p>
<p>——————- make stunt submenu</p>
<p>Stunts are special actions that don’t cause damage but grant advantage for you or
an ally for future attacks - or grant disadvantage to your enemy’s future attacks.
The effects of stunts start to apply <em>next</em> round. The effect does not stack, can only
be used once and must be taken advantage of within 5 rounds.</p>
<p>Choose stunt:
1: Trip <target> (give disadvantage DEX)
2: Feint <target> (get advantage DEX against target)
3: …</p>
<p>——————– make stunt target submenu</p>
<p>Choose the target of your stunt:
0: Yourself 3: <combatant 3> (wounded)
1: <combatant 1> (hurt)
2: <combatant 2> (unharmed)</p>
<p>——————- swap weapon or spell run</p>
<p>Choose the item to wield.
1: <item1>
2: <item2> (two hands)
3: <item3>
4: …</p>
<p>——————- use item</p>
<p>Choose item to use.
1: Healing potion (+1d6 HP)
2: Magic pebble (gain advantage, 1 use)
3: Potion of glue (give disadvantage to target)</p>
<p>——————- Hesitate/Do nothing</p>
<p>You hang back, passively defending.</p>
<p>——————- Disengage</p>
<p>You retreat, getting ready to get out of combat. Use two times in a row to
leave combat. You flee last in a round. If anyone Blocks your retreat, this counter resets.</p>
<p>——————- Block Fleeing</p>
<p>You move to block the escape route of an opponent. If you win a DEX challenge,
you’ll negate the target’s disengage action(s).</p>
<emclass="property">exception </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatFailure</code><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatFailure"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatFailure"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatAction</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Action'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = 'Option text'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = []</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = 'Combat action to perform.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_select_action'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">max_uses</code><emclass="property"> = None</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.max_uses"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = 0</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
<codeclass="sig-name descname">msg</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">message</span></em>, <emclass="sig-param"><spanclass="n">broadcast</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction.msg"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.msg"title="Permalink to this definition">¶</a></dt>
<dd><p>Convenience route to the combathandler msg-sender mechanism.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>message</strong> (<em>str</em>) – Message to send; use <strong>$You()</strong> and <strong>$You(other.key)</strong>
to refer to the combatant doing the action and other combatants,
<codeclass="sig-name descname">get_help</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction.get_help"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.get_help"title="Permalink to this definition">¶</a></dt>
<dd><p>Allows to customize help message on the fly. By default, just returns <strong>.help_text</strong>.</p>
<codeclass="sig-name descname">can_use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction.can_use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.can_use"title="Permalink to this definition">¶</a></dt>
<dd><p>Determine if combatant can use this action. In this implementation,
it fails if already used up all of a usage-limited action.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>*args</strong>– Any optional arguments.</p></li>
<li><p><strong>**kwargs</strong>– Any optional keyword arguments.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><p><em>tuple</em>–</p>
<dlclass="simple">
<dt>(bool, motivation) - if not available, will describe why,</dt><dd><p>if available, should describe what the action does.</p>
<codeclass="sig-name descname">pre_use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction.pre_use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.pre_use"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.use"title="Permalink to this definition">¶</a></dt>
<dd><p>Main activation of the action. This happens simultaneously to other actions.</p>
<codeclass="sig-name descname">post_use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatAction.post_use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatAction.post_use"title="Permalink to this definition">¶</a></dt>
<dd><p>Called just after the action has been taken.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatActionAttack</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionAttack"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Attack or Cast'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = '[A]ttack/[C]ast spell at <target>'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ('a', 'c', 'attack', 'cast')</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = 'Make an attack using your currently equipped weapon/spell rune'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_select_enemy_target'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = 1</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">defender</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionAttack.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionAttack.use"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatActionStunt</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionStunt"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Perform a Stunt'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = 'Make [S]tunt against <target>'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ('s', 'stunt')</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_select_enemy_target'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">give_advantage</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.give_advantage"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">max_uses</code><emclass="property"> = 1</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.max_uses"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = -1</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">attack_type</code><emclass="property"> = 'dexterity'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.attack_type"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">defense_type</code><emclass="property"> = 'dexterity'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.defense_type"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = 'Perform a stunt against a target. This will give you an advantage or an enemy disadvantage on your next action.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">defender</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionStunt.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionStunt.use"title="Permalink to this definition">¶</a></dt>
<dd><p>Main activation of the action. This happens simultaneously to other actions.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatActionUseItem</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionUseItem"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Use Item'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = '[U]se item'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ('u', 'item', 'use item')</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = 'Use an item from your inventory.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_select_friendly_target'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_help</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">item</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionUseItem.get_help"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.get_help"title="Permalink to this definition">¶</a></dt>
<dd><p>Allows to customize help message on the fly. By default, just returns <strong>.help_text</strong>.</p>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">item</span></em>, <emclass="sig-param"><spanclass="n">target</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionUseItem.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.use"title="Permalink to this definition">¶</a></dt>
<dd><p>Main activation of the action. This happens simultaneously to other actions.</p>
<codeclass="sig-name descname">post_use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">item</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionUseItem.post_use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionUseItem.post_use"title="Permalink to this definition">¶</a></dt>
<dd><p>Called just after the action has been taken.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatActionSwapWieldedWeaponOrSpell</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionSwapWieldedWeaponOrSpell"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionSwapWieldedWeaponOrSpell"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Swap weapon/rune/shield'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionSwapWieldedWeaponOrSpell.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = 'Swap currently wielded weapon, shield or spell-rune.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionSwapWieldedWeaponOrSpell.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = 'Draw a new weapon or spell-rune from your inventory, replacing your current loadout'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionSwapWieldedWeaponOrSpell.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_select_wield_from_inventory'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionSwapWieldedWeaponOrSpell.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">_</span></em>, <emclass="sig-param"><spanclass="n">item</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionSwapWieldedWeaponOrSpell.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionSwapWieldedWeaponOrSpell.use"title="Permalink to this definition">¶</a></dt>
<dd><p>Main activation of the action. This happens simultaneously to other actions.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatActionFlee</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionFlee"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Flee/Disengage'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = '[F]lee/disengage from combat (takes two turns)'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ('d', 'disengage', 'flee')</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_confirm_register_action'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = 'Disengage from combat. Use successfully two times in a row to leave combat at the end of the second round. If someone Blocks you successfully, this counter is reset.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = -5</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionFlee.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionFlee.use"title="Permalink to this definition">¶</a></dt>
<dd><p>Main activation of the action. This happens simultaneously to other actions.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatActionBlock</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionBlock"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Block'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = '[B]lock <target> from fleeing'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ('b', 'block', 'chase')</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = "Move to block a target from fleeing combat. If you succeed in a DEX vs DEX challenge, they don't get away."</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_select_enemy_target'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">priority</code><emclass="property"> = -1</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.priority"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">attack_type</code><emclass="property"> = 'dexterity'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.attack_type"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">defense_type</code><emclass="property"> = 'dexterity'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.defense_type"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">fleeing_target</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionBlock.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionBlock.use"title="Permalink to this definition">¶</a></dt>
<dd><p>Main activation of the action. This happens simultaneously to other actions.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">CombatActionDoNothing</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combathandler</span></em>, <emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionDoNothing"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionDoNothing"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'Hesitate'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionDoNothing.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = 'Do [N]othing/Hesitate'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionDoNothing.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_text</code><emclass="property"> = 'Hold you position, doing nothing.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionDoNothing.help_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_menu_node</code><emclass="property"> = 'node_confirm_register_action'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionDoNothing.next_menu_node"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">post_action_text</code><emclass="property"> = '{combatant} does nothing this turn.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionDoNothing.post_action_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">use</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#CombatActionDoNothing.use"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.CombatActionDoNothing.use"title="Permalink to this definition">¶</a></dt>
<dd><p>Main activation of the action. This happens simultaneously to other actions.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">EvAdventureCombatHandler</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">stunt_duration</code><emclass="property"> = 3</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.stunt_duration"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">combatants</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.combatants"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">combatant_actions</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.combatant_actions"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">action_queue</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.action_queue"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">turn_stats</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.turn_stats"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">turn</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.turn"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">advantage_matrix</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.advantage_matrix"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">disadvantage_matrix</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.disadvantage_matrix"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">fleeing_combatants</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.fleeing_combatants"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">defeated_combatants</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.defeated_combatants"title="Permalink to this definition">¶</a></dt>
<dd><p>Attribute property descriptor. Allows for specifying Attributes as Django-like ‘fields’
on the class level. Note that while one can set a lock on the Attribute,
there is no way to <em>check</em> said lock when accessing via the property - use
the full AttributeHandler if you need to do access checks.</p>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>Only called once, when script is first created.</p>
<codeclass="sig-name descname">at_repeat</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.at_repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.at_repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>Called every self.interval seconds. The main tick of the script.</p>
<codeclass="sig-name descname">add_combatant</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em>, <emclass="sig-param"><spanclass="n">session</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.add_combatant"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.add_combatant"title="Permalink to this definition">¶</a></dt>
<dd><p>Add combatant to battle.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>combatant</strong> (<em>Object</em>) – The combatant to add.</p></li>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – Session to use.</p></li>
</ul>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This adds them to the internal list and initiates
all possible actions. If the combatant as an Attribute list
<strong>custom_combat_actions</strong> containing <strong>CombatAction</strong> items, this
will injected and if the <strong>.key</strong> matches, will replace the
<codeclass="sig-name descname">remove_combatant</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.remove_combatant"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.remove_combatant"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove combatant from battle.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>combatant</strong> (<em>Object</em>) – The combatant to remove.</p>
<codeclass="sig-name descname">start_combat</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.start_combat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.start_combat"title="Permalink to this definition">¶</a></dt>
<dd><p>Start the combat timer and get everyone going.</p>
<codeclass="sig-name descname">stop_combat</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.stop_combat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.stop_combat"title="Permalink to this definition">¶</a></dt>
<dd><p>This is used to stop the combat immediately.</p>
<p>It can also be called from external systems, for example by
monster AI can do this when only allied players remain.</p>
<codeclass="sig-name descname">get_enemy_targets</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em>, <emclass="sig-param"><spanclass="n">excluded</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">all_combatants</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.get_enemy_targets"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.get_enemy_targets"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all valid targets the given combatant can target for an attack. This does not apply for
‘friendly’ targeting (like wanting to cast a heal on someone). We assume there are two types
of combatants - PCs (player-controlled characters and NPCs (AI-controlled). Here, we assume
npcs can never attack one another (or themselves)</p>
<p>For PCs to be able to target each other, the <strong>allow_pvp</strong>
Attribute flag must be set on the current <strong>Room</strong>.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>combatant</strong> (<em>Object</em>) – The combatant looking for targets.</p></li>
<li><p><strong>excluded</strong> (<em>list</em><em>, </em><em>optional</em>) – If given, these are not valid targets - this can be used to
avoid friendly NPCs.</p></li>
<li><p><strong>all_combatants</strong> (<em>list</em><em>, </em><em>optional</em>) – If given, use this list to get all combatants, instead
of using <strong>self.combatants</strong>.</p></li>
<codeclass="sig-name descname">get_friendly_targets</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em>, <emclass="sig-param"><spanclass="n">extra</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">all_combatants</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.get_friendly_targets"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.get_friendly_targets"title="Permalink to this definition">¶</a></dt>
<dd><p>Get a list of all ‘friendly’ or neutral targets a combatant may target, including
themselves.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>combatant</strong> (<em>Object</em>) – The combatant looking for targets.</p></li>
<li><p><strong>extra</strong> (<em>list</em><em>, </em><em>optional</em>) – If given, these are additional targets that can be
considered target for allied effects (could be used for a friendly NPC).</p></li>
<li><p><strong>all_combatants</strong> (<em>list</em><em>, </em><em>optional</em>) – If given, use this list to get all combatants, instead
of using <strong>self.combatants</strong>.</p></li>
<codeclass="sig-name descname">get_combat_summary</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.get_combat_summary"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.get_combat_summary"title="Permalink to this definition">¶</a></dt>
<dd><p>Get a summary of the current combat state from the perspective of a
given combatant.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>combatant</strong> (<em>Object</em>) – The combatant to get the summary for</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>str</em>– The summary.</p>
</dd>
</dl>
<pclass="rubric">Example</p>
<p>You (5/10 health)
Foo (Hurt) [Running away - use ‘block’ to stop them!]
<codeclass="sig-name descname">msg</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">message</span></em>, <emclass="sig-param"><spanclass="n">combatant</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">broadcast</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.msg"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.msg"title="Permalink to this definition">¶</a></dt>
<dd><p>Central place for sending messages to combatants. This allows
for adding any combat-specific text-decoration in one place.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>message</strong> (<em>str</em>) – The message to send.</p></li>
<li><p><strong>combatant</strong> (<em>Object</em>) – The ‘You’ in the message, if any.</p></li>
<li><p><strong>broadcast</strong> (<em>bool</em>) – If <strong>False</strong>, <strong>combatant</strong> must be included and
will be the only one to see the message. If <strong>True</strong>, send to
everyone in the location.</p></li>
</ul>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>If <strong>combatant</strong> is given, use <strong>$You/you()</strong> markup to create
a message that looks different depending on who sees it. Use
<strong>$You(combatant_key)</strong> to refer to other combatants.</p>
<codeclass="sig-name descname">gain_advantage</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em>, <emclass="sig-param"><spanclass="n">target</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.gain_advantage"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.gain_advantage"title="Permalink to this definition">¶</a></dt>
<dd><p>Gain advantage against target. Spent by actions.</p>
<codeclass="sig-name descname">gain_disadvantage</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em>, <emclass="sig-param"><spanclass="n">target</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.gain_disadvantage"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.gain_disadvantage"title="Permalink to this definition">¶</a></dt>
<dd><p>Gain disadvantage against target. Spent by actions.</p>
<codeclass="sig-name descname">flee</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.flee"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.flee"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">unflee</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.unflee"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.unflee"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">register_action</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em>, <emclass="sig-param"><spanclass="n">action_key</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.register_action"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.register_action"title="Permalink to this definition">¶</a></dt>
<dd><p>Register an action based on its <strong>.key</strong>.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>combatant</strong> (<em>Object</em>) – The one performing the action.</p></li>
<li><p><strong>action_key</strong> (<em>str</em>) – The action to perform, by its <strong>.key</strong>.</p></li>
<li><p><strong>*args</strong>– Arguments to pass to <strong>action.use</strong>.</p></li>
<li><p><strong>**kwargs</strong>– Kwargs to pass to <strong>action.use</strong>.</p></li>
<codeclass="sig-name descname">get_available_actions</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">combatant</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#EvAdventureCombatHandler.get_available_actions"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.get_available_actions"title="Permalink to this definition">¶</a></dt>
<dd><p>Get only the actions available to a combatant.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>combatant</strong> (<em>Object</em>) – The combatant to get actions for.</p></li>
<li><p><strong>*args</strong>– Passed to <strong>action.can_use()</strong></p></li>
<li><p><strong>**kwargs</strong>– Passed to <strong>action.can_use()</strong></p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><p><em>list</em>–</p>
<dlclass="simple">
<dt>The initiated CombatAction instances available to the</dt><dd><p>combatant right now.</p>
</dd>
</dl>
</p>
</dd>
</dl>
<divclass="admonition note">
<pclass="admonition-title">Note</p>
<p>We could filter this by <strong>.can_use</strong> return already here, but then it would just
be removed from the menu. Instead we return all and use <strong>.can_use</strong> in the menu
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'EvAdventureCombatHandler'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.typename"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_confirm_register_action</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_confirm_register_action"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_confirm_register_action"title="Permalink to this definition">¶</a></dt>
<dd><p>Node where one can confirm registering the action or change one’s mind.</p>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_select_enemy_target</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_select_enemy_target"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_select_enemy_target"title="Permalink to this definition">¶</a></dt>
<dd><p>Menu node allowing for selecting an enemy target among all combatants. This combines
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_select_friendly_target</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_select_friendly_target"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_select_friendly_target"title="Permalink to this definition">¶</a></dt>
<dd><p>Menu node for selecting a friendly target among combatants (including oneself).</p>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_select_wield_from_inventory</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_select_wield_from_inventory"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_select_wield_from_inventory"title="Permalink to this definition">¶</a></dt>
<dd><p>Menu node allowing for wielding item(s) from inventory.</p>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_select_use_item_from_inventory</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_select_use_item_from_inventory"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_select_use_item_from_inventory"title="Permalink to this definition">¶</a></dt>
<dd><p>Menu item allowing for using usable items (like potions) from inventory.</p>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_select_action</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_select_action"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_select_action"title="Permalink to this definition">¶</a></dt>
<dd><p>Menu node for selecting a combat action.</p>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_wait_turn</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_wait_turn"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_wait_turn"title="Permalink to this definition">¶</a></dt>
<dd><p>Menu node routed to waiting for the round to end (for everyone to choose their actions).</p>
<p>All menu actions route back to the same node. The CombatHandler will handle moving everyone back
to the <strong>node_select_action</strong> node when the next round starts.</p>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">node_wait_start</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">raw_string</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#node_wait_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.node_wait_start"title="Permalink to this definition">¶</a></dt>
<dd><p>Menu node entered when waiting for the combat to start. New players joining an existing
combat will end up here until the previous round is over, at which point the combat handler
will goto everyone to <strong>node_select_action</strong>.</p>
<codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.combat_turnbased.</code><codeclass="sig-name descname">join_combat</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">targets</span></em>, <emclass="sig-param"><spanclass="n">session</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/combat_turnbased.html#join_combat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.combat_turnbased.join_combat"title="Permalink to this definition">¶</a></dt>
<dd><p>Join or create a new combat involving caller and at least one target. The combat
is started on the current room location - this means there can only be one combat
in each room (this is not hardcoded in the combat per-se, but it makes sense for
this implementation).</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>caller</strong> (<em>Object</em>) – The one starting the combat.</p></li>
<li><p><strong>*targets</strong> (<em>Objects</em>) – Any other targets to pull into combat. At least one target
is required if <strong>combathandler</strong> is not given (a new combat must have at least
one opponent!).</p></li>
</ul>
</dd>
<dtclass="field-even">Keyword Arguments</dt>
<ddclass="field-even"><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – A player session to use. This is useful for multisession modes.</p>
</dd>
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>EvAdventureCombatHandler</em>– A created or existing combat handler.</p>