Thrown weapon combat: Difference between revisions

m
Added a line about possible missing info
(Work In Progress)
 
m (Added a line about possible missing info)
 
(24 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.


Certain items are specifically designed for throwing. These [[:Category:Thrown Weapons|thrown weapons]] will often have higher penetration and deal more damage or cause special effects when thrown. See the [[#List_of_Thrown_Weapons|List of Thrown Weapons]] section below for a full list of thrown weapons.
Certain items are specifically designed for throwing. These [[:Category:Thrown Weapons|thrown weapons]] will often have higher penetration and deal more damage or cause special effects when thrown. See the [[#List_of_Thrown_Weapons|List of Thrown Weapons]] section below for a full list of thrown weapons.


Some items, like grenades and tonics, are designed as thrown weapons, but most of their damage is actually caused by scripted effects. The actual thrown combat hit will do little damage compared to the other effects that these items cause. Other items, such as the {{favilink|throwing axe}} or {{favilink|large boulder}}, are specifically designed to deal high damage when used in thrown weapon combat.
Some items, like grenades and tonics, are designed as thrown weapons, but most of their damage is caused by scripted effects. The actual thrown combat hit itself will do little damage compared to the other effects that these items cause. Other items, such as the {{favilink|throwing axe}} or {{favilink|large boulder}}, are specifically designed to deal high damage when used in thrown weapon combat.


= 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 17: Line 17:


This maximum throwing range can be further increased by any of the following:
This maximum throwing range can be further increased by any of the following:
* [[Deft Throwing]]: Increases your overall throwing range by 3.
* [[Deft Throwing]]: Increases maximum throwing range by 3.
* {{favilink|parabolic muscular subroutine}}: Increases your overall 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 ==
== Accuracy (Aim Variance) ==
If the player has the {{qud text|&Yparabolic muscular subroutine}} installed, and the target is within the maximum throwing range as calculated above, the throw will have 100% accuracy.


Otherwise, accuracy is determined as follows:
=== Distance Variance ===
* The selected throw target distance is adjusted by {{dice tooltip|1d3-2}} cells.
If both of the following are true, the throw will always go the intended distance:
** This means that, if you aim directly at your target, there is always a 33% chance of the thrown object stopping 1 tile short. It may be preferable to aim one tile beyond your target to improve the chance of hitting it. NPCs will not be smart enough to overcome this limitation.
* The targeted location is less than or equal to the maximum throwing range as calculated above.
* The thrower has the '''parabolic muscular subroutine''' installed, or the '''Deft Throwing''' skill.


{{Missing info| This is a work in progress. Additional information (such as details about Aim Variance) will be added soon.}}
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 is calculated by:
# Taking a random number from -10° to 10°
# Adjusting that number toward zero based on the thrower's agility modifier.
#* If the number is positive, the thrower's agility modifier is subtracted from the result, to a minimum of 0
#* If the number is negative, the thrower's agility modifier is added to the result, to a maximum of 0
 
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 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.
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.<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 12: 84%
* Thrower Agility 14: 86%
* Thrower Agility 17: 88%
* Thrower Agility 20: 90%
* Thrower Agility 25: 92%
* 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 45: 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 60: 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 72: 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 86: Line 148:
<references />
<references />


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

edits