Thrown weapon combat: Difference between revisions

m
Added a line about possible missing info
mNo edit summary
m (Added a line about possible missing info)
 
(20 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{As Of Patch|2.0.201.49}}{{tocright}}
{{As Of Patch|2.0.201.49}}{{Missing info|Are the claims that thrown weapons always show their "maximum possible penetration" and that "thrown weapon penetration will always equal 5 at minimum" still accurate? Seems like this might have changed with the introduction of throwing daggers to the game, and should be reviewed for accuracy. In addition, throwing daggers now break the previous rule of throwing weapons dealing minimal damage when used as melee weapons. Tonics also always penetrate?}}{{tocright}}
Any item in {{gamename}} can be equipped to a creature's '''thrown weapon''' equipment slot and thrown using the {{qud text|&y(&WT&y)hrow}} command.
Any item in {{gamename}} can be equipped to a creature's '''thrown weapon''' equipment slot and thrown using the {{qud text|&y(&WT&y)hrow}} command.


Line 8: Line 8:
= Overview =
= Overview =
The following stats are relevant for thrown weapon combat:{{Code Reference|namespace=XRL.World|class=GameObject|method=PerformThrow|name=PerformThrow}}
The following stats are relevant for thrown weapon combat:{{Code Reference|namespace=XRL.World|class=GameObject|method=PerformThrow|name=PerformThrow}}
* [[Strength]]: Strength bonus affects the maximum throwing range.
* [[Strength]]: Strength bonus affects the maximum throwing range, as well as the throwing penetration.
* [[Agility]]: Affects aim variance (angular accuracy) of thrown weapons.
* [[Agility]]: Affects aim variance (angular accuracy) of thrown weapons.


Line 20: Line 20:
* {{favilink|parabolic muscular subroutine}}: Increases maximum throwing range by 2.
* {{favilink|parabolic muscular subroutine}}: Increases maximum throwing range by 2.
* [[Airfoil]] mod: Increases a ''specific item's'' throwing range by 4.
* [[Airfoil]] mod: Increases a ''specific item's'' throwing range by 4.
* {{favilink|precision force lathe}}: Increases the throw range for fabricated {{favilink|force knife|plural}} by 6.


== Accuracy (Aim Variance) ==
== Accuracy (Aim Variance) ==
Line 28: Line 29:
* The thrower has the '''parabolic muscular subroutine''' installed, or the '''Deft Throwing''' skill.
* The thrower has the '''parabolic muscular subroutine''' installed, or the '''Deft Throwing''' skill.


Otherwise, the throw distance will be adjusted by {{dice tooltip|1d3-2}} cells. This means that, there is a 33% chance for the thrown object to stop one tile short of the target. For this reason, for players without the '''parabolic muscular subroutine''' or '''Deft Throwing''', it is preferable to aim one cell ''beyond'' the target to improve the chance of hitting it. NPCs will not be smart enough to overcome this limitation.
Otherwise, the throw distance will be adjusted by {{dice tooltip|1d3-2}} cells. This means that, there is only a 1 in 3 chance for the thrown object to land in tile aimed for and it will otherwise land behind or in front of the tile.


=== Angular Variance ===
=== Angular Variance ===
Line 39: Line 40:


If the targeted location is less than or equal to the maximum throwing range as calculated above, and the thrower has the '''parabolic muscular subroutine''' installed, or the '''Deft Throwing''' skill, the angular variance will then be further reduced:
If the targeted location is less than or equal to the maximum throwing range as calculated above, and the thrower has the '''parabolic muscular subroutine''' installed, or the '''Deft Throwing''' skill, the angular variance will then be further reduced:
** If the thrower has a '''parabolic muscular subroutine''' installed, angular variance is always set to 0° (ensuring that the throw will be 100% accurate)
* If the thrower has a '''parabolic muscular subroutine''' installed, angular variance is always set to 0° (ensuring that the throw will be 100% accurate)
** If the thrower has the '''Deft Throwing''' skill, the angular variance is divided by 2.
* If the thrower has the '''Deft Throwing''' skill, the angular variance is divided by 2.


== Hit Mechanics ==
== Hit Mechanics ==
Unlike melee weapon attacks and ranged weapon attacks, thrown objects cannot be [[DV|dodged]]. The analogue to dodging in thrown weapon combat is simply the variability with regard to range and accuracy. Since most creatures do not have a method of ensuring 100% throw accuracy (such as a {{qud text|&Yparabolic muscular subroutine}}), there is a reasonable chance for most throw attempts to miss. Players with high throw accuracy can use the fact that throwing ignores [[DV]] to their advantage to hit enemies that otherwise have extremely high dodge values, such as {{favilink|crypt ferret|plural}}.
Unlike melee weapon attacks and ranged weapon attacks, thrown objects cannot be [[DV|dodged]]. The analogue to dodging in thrown weapon combat is simply the variability with regard to range and accuracy. Since most creatures do not have a method of ensuring 100% throw accuracy (such as a {{qud text|&Yparabolic muscular subroutine}}), there is a reasonable chance for most throw attempts to miss. Players with high throw accuracy can use the fact that throwing ignores {{DV}}DV to their advantage to hit enemies that otherwise have extremely high dodge values, such as {{favilink|crypt ferret|plural}}.


If a thrown weapon ultimately lands in the same cell as a creature, it will have a high chance of hitting it. However, there is still a small chance of missing the target, dependent on the thrower's Agility. The base probability for this is determined by the game rolling '''1dA''', where '''A''' is the thrower's full [[Agility]] stat value. If the game rolls the maximum value, it rolls again and continues adding to that value. If the final result is 3 or greater, the thrown weapon hits the target. This roughly translates to the following approximate agility-based hit chances<ref>[https://rextester.com/LES55099 throw hit logic simulation]</ref>, though these values can also be adjusted by other factors in game:
If a thrown weapon ultimately lands in the same cell as a creature, it will have a high chance of hitting it. However, there is still a small chance of missing the target, dependent on the thrower's Agility.<ref name="PerformThrow" /> The base probability for this is determined by the game rolling '''1dA''', where '''A''' is the thrower's full [[Agility]] stat value. If the game rolls the maximum value, it rolls again and continues adding to that value. If the final result is 3 or greater, the thrown weapon hits the target. This roughly translates to the following approximate agility-based hit chances<ref>[https://rextester.com/LES55099 throw hit logic simulation]</ref>, though these values can be modified by other factors in game:<ref>''This particular failure mechanic is not well understood. The "other factors" seem to reduce the chance of missing dependent on target and other details. More research is likely required.''</ref>
** Thrower Agility 10: 80%
* Thrower Agility 10: 80%
** Thrower Agility 12: 84%
* Thrower Agility 12: 84%
** Thrower Agility 14: 86%
* Thrower Agility 14: 86%
** Thrower Agility 17: 88%
* Thrower Agility 17: 88%
** Thrower Agility 20: 90%
* Thrower Agility 20: 90%
** Thrower Agility 25: 92%
* Thrower Agility 25: 92%
** Thrower Agility 34: 94%
* Thrower Agility 34: 94%
 
== Penetration and Damage ==
This section describes how thrown weapon penetration (PV) and damage are determined. For details about how those values are actually used to calculate penetrations and total damage, refer to the [[PV|Penetration]] page. Penetration rolls for thrown weapons are identical to penetration rolls for melee weapons.
 
=== Penetration ===
{{main|PV}}
Dedicated thrown weapons show a penetration value in their displayname (such as the {{favilink|large boulder|possessive}} '''{{PV}}16'''). This value is the weapon's maximum possible penetration, or '''''throwing penetration cap'''''. However, the actual throwing penetration of the weapon will depend upon the thrower's strength. From the perspective of how penetration is displayed in game, thrown weapon penetration will always equal 5 at minimum, and will be increased by the thrower's [[Attributes#Attribute_Modifiers|Strength modifier]] up to, but not exceeding, the weapon's throwing penetration cap.<ref name="PerformThrow" />
 
Any object that is not a dedicated thrown weapon will have the equivalent of a '''{{PV}}6''' throwing penetration cap. For example, if you throw {{favilink|fish jerky}} at your target, it has a default throwing penetration of 5 and can be increased to 6 if you have a Strength modifier of +1 or greater.<ref name="PerformThrow" />
 
'''Important Note:''' Similar to melee weapons, for purposes of internal penetration calculations in the game engine, the penetration value displayed in the UI is reduced by 4 (so, in the case of the '''large boulder''', it's internal penetration actually varies from 1 up to 12 if the thrower has a Strength modifier of +11). This internal penetration value is rolled against the target's [[AV]], as the AV appears in game, for the purposes of calculating penetrations and then applying damage.
 
=== Damage ===
Dedicated thrown weapons show their thrown weapon damage as part of their display name. For example, the {{favilink|medium boulder}} deals '''{{Heart}}{{dice tooltip|2d10+2}}''' when it is thrown.
 
Any object that is not a dedicated thrown weapon will deal '''{{heart}}{{dice tooltip|1d2}}''' damage when thrown.<ref name="PerformThrow" />


= Thrown Weapon Interactions with Melee Skills and Combat =
= Thrown Weapon Interactions with Melee Skills and Combat =
Line 66: Line 83:
= List of Thrown Weapons =
= List of Thrown Weapons =
<div style="display:flex;flex-wrap:wrap;">
<div style="display:flex;flex-wrap:wrap;">
<div style="margin-right: 2.5em;">
=== Thrown Blades ===
{{#cargo_query:
| tables  = GeneralData=GD, ItemsTable=IT, PhysicalProperties=PP
| join on  = GD.JoinKey=IT.JoinKey, GD.JoinKey=PP.JoinKey
| fields  = CONCAT('{{((}}favilink id{{!}}',CONCAT(GD.ObjectID),'{{))}}')=Item,
            CONCAT('{{((}}PV{{))}}',CONCAT(IT.MaxPV))=Max PV,
            CONCAT('{{((}}Heart{{))}}{{((}}dice tooltip{{!}}',CONCAT(IT.Damage),'{{))}}')=Damage
| where    = PP.Throwable='1' AND GD.Categories='Short Blades'
| order by = IT.MaxPV DESC, IT.Damage DESC, GD.PlainName ASC
| format  = table
}}
</div>
<div style="margin-right: 2.5em;">
<div style="margin-right: 2.5em;">


=== Miscellaneous Thrown Items ===
=== Miscellaneous Thrown Items ===
{{#cargo_query:tables=GeneralData,ItemsTable
{{#cargo_query:
| join on=GeneralData.ObjectID=ItemsTable.ObjectID
| tables   = GeneralData=GD, ItemsTable=IT, PhysicalProperties=PP
| fields=CONCAT('{{((}}favilink{{!}}',CONCAT(GeneralData._pageName),'{{))}}')=Item,CONCAT('{{((}}PV{{))}}',CONCAT(ItemsTable.MaxPV))=PV,CONCAT('{{((}}Heart{{))}}{{((}}dice tooltip{{!}}',CONCAT(ItemsTable.Damage),'{{))}}')=Damage
| join on = GD.JoinKey=IT.JoinKey, GD.JoinKey=PP.JoinKey
| where=GeneralData.Categories='Thrown Weapons'
| fields   = CONCAT('{{((}}favilink id{{!}}',CONCAT(GD.ObjectID),'{{))}}')=Item,
| order by=ItemsTable.MaxPV DESC,ItemsTable.Damage DESC
            CONCAT('{{((}}PV{{))}}',CONCAT(IT.MaxPV))=Max PV,
| format=table
            CONCAT('{{((}}Heart{{))}}{{((}}dice tooltip{{!}}',CONCAT(IT.Damage),'{{))}}')=Damage
| where   = PP.Throwable='1' AND GD.Categories<>'Short Blades' AND GD.Categories<>'Tonics' AND GD.Categories<>'Grenades'
| order by = IT.MaxPV DESC, IT.Damage DESC, GD.PlainName ASC
| format   = table
}}
}}


Line 81: Line 116:


=== Tonics ===
=== Tonics ===
{{#cargo_query:tables=GeneralData,ItemsTable
{{#cargo_query:
| join on=GeneralData.ObjectID=ItemsTable.ObjectID
| tables   = GeneralData=GD, ItemsTable=IT, PhysicalProperties=PP
| fields=CONCAT('{{((}}favilink{{!}}',CONCAT(GeneralData._pageName),'{{))}}')=Item,CONCAT('{{((}}PV{{))}}',CONCAT(ItemsTable.MaxPV))=PV,CONCAT('{{((}}Heart{{))}}',CONCAT(ItemsTable.Damage))=Damage
| join on = GD.JoinKey=IT.JoinKey, GD.JoinKey=PP.JoinKey
| where=GeneralData.Categories='Tonics'
| fields   = CONCAT('{{((}}favilink id{{!}}',CONCAT(GD.ObjectID),'{{))}}')=Item,
| order by=Item
            CONCAT('{{((}}PV{{))}}',CONCAT(IT.MaxPV))=Max PV,
| format=table
            CONCAT('{{((}}Heart{{))}}{{((}}dice tooltip{{!}}',CONCAT(IT.Damage),'{{))}}')=Damage
| where   = PP.Throwable='1' AND GD.Categories='Tonics'
| order by = IT.MaxPV DESC, IT.Damage DESC, GD.PlainName ASC
| format   = table
}}
}}


Line 93: Line 131:


=== Grenades ===
=== Grenades ===
{{#cargo_query:tables=GeneralData,ItemsTable
{{#cargo_query:
| join on=GeneralData.ObjectID=ItemsTable.ObjectID
| tables   = GeneralData=GD, ItemsTable=IT, PhysicalProperties=PP
| fields=CONCAT('{{((}}favilink{{!}}',CONCAT(GeneralData._pageName),'{{))}}')=Item,CONCAT('{{((}}PV{{))}}',CONCAT(ItemsTable.MaxPV))=PV,CONCAT('{{((}}Heart{{))}}',CONCAT(ItemsTable.Damage))=Damage
| join on = GD.JoinKey=IT.JoinKey, GD.JoinKey=PP.JoinKey
| where=GeneralData.Categories='Grenades'
| fields   = CONCAT('{{((}}favilink id{{!}}',CONCAT(GD.ObjectID),'{{))}}')=Item,
| order by=Item
            CONCAT('{{((}}PV{{))}}',CONCAT(IT.MaxPV))=Max PV,
| format=table
            CONCAT('{{((}}Heart{{))}}{{((}}dice tooltip{{!}}',CONCAT(IT.Damage),'{{))}}')=Damage
| where   = PP.Throwable='1' AND GD.Categories='Grenades'
| order by = IT.MaxPV DESC, IT.Damage DESC, GD.PlainName ASC
| format   = table
}}
}}


Line 107: Line 148:
<references />
<references />


{{Mechanics Navbox}}
[[Category:Battle Mechanics]]
[[Category:Battle Mechanics]]
6

edits