Difference between revisions of "Targets and Scoring Guide"

From Wildermyth Wiki
 
(2 intermediate revisions by the same user not shown)
Line 145: Line 145:
====Theme Eligibility====
====Theme Eligibility====


'''Theme Eligibility''' is ubiquitous in almost any event where a [[theme]] (transformation, pet) is given. '''Theme eligibility''' is quirky. The Content Editor blurb states:
'''Theme Eligibility''' is ubiquitous in almost any event where a [[theme]] (transformation, pet) is given. '''Theme eligibility''' imposes the following requirements:


''Must be able to get the given theme (doesn't already have the theme, no conflicting themes, has an available slot for one of the theme pieces to go in, and no other heroes already have that theme).''
*No member of the company may have the same theme.
*The hero must not have [[Theme conflicts guide|conflicting themes]].
*The hero must have an empty slot for a theme piece.


This means there are quite a few checks to pass when an '''Eligible for Theme''' is present in hero targeting.
This means there are quite a few checks to pass when an '''Eligible for Theme''' is present in hero targeting.
Line 154: Line 156:


=====Conflicting Themes=====
=====Conflicting Themes=====
Perhaps the trickiest feature is that there is no way of telling which [[theme]]s conflict with each other without referral to the game files.
{{Main|Theme conflicts guide}}
Perhaps the trickiest feature is that there is no way of telling which [[theme]]s conflict with each other. For example, themes may conflict because of defined [[Theme conflicts guide#Detailed Discussion: Forbid Combine With|forbidden combinations]] in the game files. Or themes may be in practical conflict because events target the same theme slots. See the [[Theme conflicts guide|theme conflicts guide]] for further information.


The '''.json files''' for [[theme]]s are located in Wildermyth > assets > data > themes.
Unlike [[aspect]]s, [[stat]]s, and [[relationship]]s, '''theme eligibility''' does not appear in '''score functions'''. It does appear along side of '''score functions''', similar to lists of aspects discussed above.
 
Each theme '''.json''' has a '''"forbidCombineWith":''' [] line that defines conflicting themes:
 
'''Example:''' "forbidCombineWith": ["bear", "wolf", "crow", "fire", "skeleton"]
::''This is an example of the '''tree.json''' ([[Elmsoul]]). It conflicts with [[beartouched]], [[wolftouched]], [[crowtouched]], [[flamesoul]], and [[skeletal]] transformations.
::''Note! The '''forbidCombineWith:''' is not the same as '''Eligible for Theme Piece'''. Many themes are in practical conflict despite not being specified with the '''forbidCombineWith:''' because the events they are received in target the same theme slot, most commonly the head.


Unlike [[aspect]]s, [[stat]]s, and [[relationship]]s, '''theme eligibility''' does not appear in '''score functions'''. It does appear along side of '''score functions''', similar to lists of aspects discussed above.
=====Example of Hero Theme Eligibility=====
=====Example of Hero Theme Eligibility=====


Line 172: Line 166:
::'''Eligible for Theme:''' bear
::'''Eligible for Theme:''' bear
::'''Eligible for Theme Piece:''' tattoo
::'''Eligible for Theme Piece:''' tattoo
::''For a hero to match this target role, no hero in the company must have the bear theme. The hero must not have conflicting themes with the bear theme (wolf), the hero must be eligible for a head slot theme piece.''
::''For a hero to match this target role, no hero in the company must have the bear theme. The hero must not have conflicting themes with the bear theme, the hero must be eligible for a head slot theme piece. A list of coded and practical conflicts for the bear theme: ({{Theme conflicts|bear}})''


====Forbidden Roles====
====Forbidden Roles====
Line 443: Line 437:
::''The '''lover''' and '''rival''' roles are optional roles with a '''score function''' and a '''score threshold'''. Note that these roles do not draw '''fromRoles:''' party. This means they will target any hero in the company who is a lover or rival of the '''romantic''' role. In this specific example, these two optional roles are only used in dialogue of the event, so comic panels will know the names of the lover and rival of the hero matched in the '''romantic''' role.''
::''The '''lover''' and '''rival''' roles are optional roles with a '''score function''' and a '''score threshold'''. Note that these roles do not draw '''fromRoles:''' party. This means they will target any hero in the company who is a lover or rival of the '''romantic''' role. In this specific example, these two optional roles are only used in dialogue of the event, so comic panels will know the names of the lover and rival of the hero matched in the '''romantic''' role.''
|}
|}
==Campaign Specific Event Blocks==
Some campaigns block events. Most notably, the [[Troygan the Enchanger|event]] for [[Mortificial Enhancements]] is blocked in [[The Enduring War| the Enduring War]] campaign.
Below is a list of campaign specific blocked events.
=====All the Bones of Summer=====
* [[The Abandoned]]
* [[Terms of Endearment]]
=====Eluna and the Moth=====
* [[Peripheral Views]]
* [[Necessary Evil]]
* [[What May Hatch]]
=====Monarchs Under the Mountain=====
* [[By Hoof and Horn]]
*[[Misgivings]]
=====The Enduring War=====
*[[Troygan the Enchanger]]
*[[Threshing Machine]]
*[[Mark of the Times]]
*[[The Clockwork Tower]]
*[[Pursuit Of Knowledge]]


== Checking Event Failures ==
== Checking Event Failures ==

Latest revision as of 23:26, 3 February 2022

This is an overview to help understand an event's targets requirements, and why the event might occur (or fail). For more technical details, see Effects or Story Inputs and Outputs.

A Note on Role Names

A frequent source of confusion in understanding the wiki's event targeting arises when role names are confused with hero stats or aspects:

RoleTutorial1.png

RoleTutorial2.png

A role name is just a name.

Company and Chapter Targeting

The most common requirement for the default company target is a chapter threshold.

Chapter is stored as an aspect called chapterNumber in company. All aspects have value.

The value for chapter is equal to the chapter of the game.

Examples of Company and Chapter Targeting
Target (role): company
Aspects: chapterNumber >= 2
This aspect threshold requires the aspect called chapterNumber to be greater than or equal to 2.
An event with this requirement will only trigger in Chapter 2 or above.
Target (role): company
Forbidden Aspects: seenEvent|encounter_heroesArriveAtSite_answertoAusterity
This forbidden aspect list forbids the aspect seenEvent|encounter_heroesArriveAtSite_answertoAusterity. The seenEvent aspects are gained upon encountering events.
This particular aspect refers to the event Answer to Austerity.
If the company has seen the event, the company target role can not be matched, and the event will not be able to trigger.

Overland Tile Biome and Site Targeting

Biome Targeting

Events may have requirements for the overland tile. The most common requirement for an overland tile is a certain type of biome. By default, these are targeted in a required role called overlandTile, but there can be exceptions.

Example of Biome Targeting
Target (role): overlandTile
Biome: swamp, forestDeciduous, forestConiferous
An event with this target role will require the overland tile to be a swamp, broadleaf forest, or pine forest.

Site targeting

Sites are towns and stations on the overland map tiles. By default, a role named site is targeted in hostile site encounters.

Site targeting can have additional requirements, such as the type of station, and other aspects of the site.

Note that events can also target sites that are not on the tile the current party is on (see example B below).

Examples of Site Targeting
A) Target (role): site
Station: tannery
An event with this target role will require the event to take place on a site with a tannery station.
B) Target (role): site
Aspects: town, VISIBLE_TILE
This is an example from the Star Dance event. The event is a wilderness scouting event, where, by default, site roles (these are called injected roles, because they are injected into the event) are not targeted.
In this example, the role site targets one random town that is on a tile that is visible to the player. In this specific example, the site target role is an event mechanic used in the event's outcomes.
For the event to be able to trigger, the company must have at least one town visible on the overland map.

Enemy and Dead Enemy Targeting

Similarly to biomes and sites, events can also target specific factions of enemies. Mission victory or mission defeat events may target defeated enemy units from a target role of deadFoe.

Examples of Enemy Targeting
Target (role): foes
Aspects: drauven
An event with this target role requires the enemy at a hostile site to be drauven.
Target (role): deadFoe
Aspects: drauven_skysinger
A mission victory/defeat event with this target role requires an enemy with the drauven_skysinger aspect (Deeven) to have been defeated in the previous mission.

Hero Targeting

Almost all events require heroes to be targeted for roles. Furthermore, many events require heroes to match roles with specific criteria. There are three main types of roles to consider:

  1. Required Roles
  2. Optional Roles
  3. Forbidden Roles

Required roles are mandatory. If no hero matches a particular required role, the event targeting will fail, and the event will not be in the pool of possible events for the encounter. Optional roles are not mandatory. An event may trigger even if an optional role is not matched. Forbidden roles are forbidden. If a forbidden role is matched to a hero, the event targeting will fail, and the event will not be in the pool of possible events for the encounter.

Note, to make matters more complicated, required roles may have optional targeting preferences, and optional roles may have required score thresholds.

This guide attempts to show both (required) and (optional) roles in the examples. They do, however, operate on the exact same principles. Case Studies in the final section showcase some interesting examples.

For current purposes, the sub-sections in this section will briefly explain hero scoring, aspects, tests, and theme eligibility.

Hero Scoring

Required and optional roles are the most common roles to come across in hero targeting. They typically choose their matches by the hero scoring the highest score of a score function.

Note! There do exist other choosing methods for targets (for example, one random, but for the sake of clarity, this guide will discuss the by score method as default).

A score function is a function of criteria and their values for the role. These score functions may include, for example, personality or experience stats, specific relationships between heroes, and aspects such as hooks or items.

Examples of Score Functions
Role: hero (required)
Score Function: LEADER >= 50
This score function only targets the LEADER stat, and has a score threshold of 50 or above. For a hero to match this role, they must have a LEADER stat of 50 or above.
Role: hero (optional)
Score Function: LEADER+HOTHEAD >= 100
This score function targets the sum of the LEADER and HOTHEAD stats of a hero, and has a score threshold of 100 or above. For a hero to match this role, the sum of their LEADER and HOTHEAD stats must be 100 or above.
Note that this role is (optional). Even if no hero is matched to this role, the event can still trigger.
Why would this role be optional? The event might use it for specific dialogue, or to enable extra choices, for example.
Role: hero (required)
Score Function: ((30*hunter) + (30*hook_weird)) + LEADER
This slightly more complicated score function uses both aspects and stats. All aspects have value. The most common aspects in hero targeting include class aspects and hook aspects.
For heroes with the hunter aspect (hunter class) the value of the aspect is 1, for others, the value is 0. For heroes with the hook weird, the value of the hook_weird aspect is 1.
For example, for a hunter hero who does not have the WEIRD hook, the scoring would read ((30*1) + (30*0)) + LEADER
The score function lacks a score threshold. This role will target a hero with the highest score of the sum of the aspect parentheses and the LEADER stat. That is to say, the hunter and hook aspects are not required, but will add to the score.
Note! There are aspects that may have more value than 1.

Hero Aspects

Another common requirement in hero targeting is the listing of Required or Forbidden Aspects. Listed Aspects are required for a hero to match the target role, whereas Forbidden Aspects make a hero with those aspects ineligible for the role.

A less common variant of Aspects is Aspects (One of). This variant requires the target to have at least one of the listed aspects.

Continuing with our previous example, lets add a Required and Forbidden Aspect to the role.

Example of Aspects and Score Functions
Role: hero (required)
Score Function: LEADER >= 50
Aspects: theme_crow
Forbidden Aspects: mystic
This score function only targets the LEADER stat, and has a score threshold of 50 or above. The Aspects lists a required aspect called theme_crow (the aspect for the crow transformation). The Forbidden Aspects lists an aspect called mystic (the hero class). Now, for a hero to match this role, they must have a LEADER stat of 50 or above, have the crow transformation, and not be a mystic.
Note! A similar effect to the Forbidden Aspects example above could be achieved with a Aspects (One of): hunter, warrior.

Hero Tests

A less common requirement is Tests. They are primarily used, when two stats do not want to be mixed in score functions.

Example of Test, Aspect, and Score Function
Role: hero (optional)
Score Function: LEADER >= 50
Aspects: theme_crow
Test: AGE <= 35
This score function only targets the LEADER stat, and has a score threshold of 50 or above. The Aspects lists a required Aspect called theme_crow (the aspect for the crow transformation). The Test requires the hero's age to be less than or equal to 35. Now, for a hero to match this role, they must have a LEADER stat of 50 or above, have the crow transformation, and be 35 years of age or younger.
Note that this hero role is now (optional), an event can trigger even if this role is not matched to a hero.

Theme Eligibility

Theme Eligibility is ubiquitous in almost any event where a theme (transformation, pet) is given. Theme eligibility imposes the following requirements:

  • No member of the company may have the same theme.
  • The hero must not have conflicting themes.
  • The hero must have an empty slot for a theme piece.

This means there are quite a few checks to pass when an Eligible for Theme is present in hero targeting.

Important! No member of the company may have the theme that is tested for in Eligible for Theme.

Conflicting Themes

Perhaps the trickiest feature is that there is no way of telling which themes conflict with each other. For example, themes may conflict because of defined forbidden combinations in the game files. Or themes may be in practical conflict because events target the same theme slots. See the theme conflicts guide for further information.

Unlike aspects, stats, and relationships, theme eligibility does not appear in score functions. It does appear along side of score functions, similar to lists of aspects discussed above.

Example of Hero Theme Eligibility
Role: target (required)
Eligible for Theme: bear
Eligible for Theme Piece: tattoo
For a hero to match this target role, no hero in the company must have the bear theme. The hero must not have conflicting themes with the bear theme, the hero must be eligible for a head slot theme piece. A list of coded and practical conflicts for the bear theme: (Botanical, Celestial, Child of the Hills, Crystalline, Deepist Spy, Elmsoul, Flamesoul, Frogtouched, Gorgonoid, Mark of the Horn, Shadow, Skeletal, Sylvan, Vulture Acolyte, Wolftouched)

Forbidden Roles

Forbidden roles are far less common. If a forbidden role is matched, the event will not be in the pool of eligible encounter events triggered.

Example of a Forbidden Role
Role: hero (required)
Forbidden Role: hero2
This event would fail to trigger if the hero2 was matched, in this case, we might assume the event is only available to a one hero party.

Role Names

Important! When reading event targets, the name of a role is just a name. How the role is defined with scoring, aspects, tests, and theme eligibility, introduced above, determines if a hero can be matched to the role. Typical role names for heroes used in event targets include hero, hero2, personality names (goofball, healer, etc.), hook, rival, lover, volunteer, and so forth.

With this in mind, a role named rival may well only require a certain personality threshold, or alternatively, it may not have any specific requirements at all. Consider the following quiz:

Quiz: Roles Named Rival
Role name: hero (required)
Let's first assume this role named hero will match any hero.
Question: Which One of the Roles Named Rival Requires a Rival?
A) Role name: rival (required)
Aspects: mystic
B) Role name: rival (required)
Score Function: GOOFBALL >= 80
C) Role name: rival (required)
Score Function: RIVAL_WITH.hero
D) Role name: rival (required)
Score Function: RIVAL_WITH.hero >= 1
Answer: D. The score function in C. does not specify a score threshold. This means the role will prefer to target a rival of hero, but it is not mandatory.

Special Cases of Hero Targeting

In straightforward encounter events, a hero is selected for a single role from the party that triggered the event.

However, there are various special cases, where heroes may be targeted for more than one role, as well as cases, where heroes may be targeted from outside the party.

These special cases are typically used for selecting specific heroes for event choice panels, dialogue, and enabling special choices for heroes with specific requirements. An example of the latter, many transformations have unique choices in certain events, and these are targeted with an optional role, that may well target a hero already matched to another role.

Important! This may result in confusion when interpreting hero targeting. There may be more required roles, than there are required heroes.

Is it possible for an event to require more heroes than there are required roles? Yes. Circumstantially. (Here is a Case Study)

Why is this? There are simply more mechanics involved to hero targeting. At the time of writing, the Wiki event targets do not account for definitions such as fromRoles, notAlreadyMatchedAs, and alreadyMatchedAs in Event Targeting, or the method by which a role chooses its target.

The fromRoles definition defines from which roles the role is drawn. The MatchedAs definitions are used to make sure that the same entity is either matched or not matched in another role.

These definitions can currently only be found in the Content Editor. Below, an example is given of what a special case might look like:

Example of a Special Case
Role: hero (required)
Score Function: LEADER >= 50
fromRoles: party
Role: rival (required)
Score Function: RIVAL_WITH.hero >= 1
fromRoles: party
notAlreadyMatchedAs: hero
Role: hero2 (required)
Forbidden Aspects: mystic
fromRoles: party
notAlreadyMatchedAs: hero, rival
Role: greedy (required)
Score Function: max(GREEDY, SNARK)
fromRoles: hero, hero2
This example shows four required roles, but, in fact, only requires three heroes. As we have learned, hero requires a LEADER stat threshold, rival is required to be a rival of hero, and hero2 is required to not be a mystic. Unlike the previous three roles, the greedy role is drawn fromRoles: hero, hero2 and does not have a notAlreadyMatchedAs definition. The score function in greedy role will target the hero with the highest GREEDY or SNARK stat, but only from the roles hero and hero2.

Further Targeting Examples

Campaign Specific Event Blocks

Some campaigns block events. Most notably, the event for Mortificial Enhancements is blocked in the Enduring War campaign.

Below is a list of campaign specific blocked events.

All the Bones of Summer
Eluna and the Moth
Monarchs Under the Mountain
The Enduring War

Checking Event Failures

If an event does not seem to ever occur even though you think it should, you can enable dev mode and the Pick Events cheat, then scroll down in the list of events to see why a particular event failed.

ArriveAtHostileSiteFailedEvent.PNG

In that case, no eligible hero had a (required) bookish score of at least 80.

A few other reasons why an event might fail or not occur are:

  • Wrong event type. The event you're trying to trigger is an 'Arrive at hostile site' type, but your party is 'Wilderness scouting.' (You wouldn't find a hostile site event in the wilderness scouting Pick Events list.)
  • Event only occurs once per campaign. (The event already happened in the current campaign. Pick Events will show that reason for the event failure.)
  • Eligible for theme failure. The event won't happen if you already have a hero with that theme in your company (or your existing theme conflicts with your desired theme). (You can wait to recruit another hero with that theme, until your current hero gets the desired theme.)