Archery update+
- Reworked interface Archery to properly handle multiple missile launchers. This can now handle mainhand/offhand/psionic focus simultaneously. (So, a gunslinger/mindslayer randboss can theoretically triple shoot.) Includes updates to hasArcheryWeapon(type, quickset), archeryAcquireTargets(tg, params), archery_projectile(tx, ty, tg, self, tmp) and archeryShoot(targets, talent, tg, params). These are still compatible with existing talents but some of the new orcs talents need tweaking (orcs MR: http://git.net-core.org/tome/tome-orcs/merge_requests/8). Double weapons are supported for both archery and melee combat.
Weapon resource costs are standardized with a new general function Actor:useResources(costs, check). This is used to check for a weapon.combat.use_resources list of resources to be deducted to perform the attack. (checks all regularly defined resources, not paradox). This can be easily adapted to other actions (resources to use (or regen) with movement, or to use an object, for example. Resource costs to attack are correctly supported for each attack performed: Archery (shooters and ammo, per shot, including bomardment), melee weapons (including shields), and unarmed combat. Insufficient resources causes ranged attack(s) to be canceled (message to player) and melee attacks to attempt an unarmed attack or cancel the attack completely (if the unarmed attack also needs unavailable resources).
Archery will use the correct archery training talents (based on the shooter), to determine combat damage. Mixed shooter/ammo combos are now fully supported: Each shot will have the correct speed and range for its shooter/ammo combination, and, by default, archeryAcquireTargets will not assign shots for shooters that cannot reach the target. (i.e. range 10 steamgun + range 6 sling, with swift ammo will be properly resolved to have different travel speeds and maximum ranges, and only the steamgun will fire at a range 8 target.) The archery_range(t, type) function returns the maximum range of eligible weapons instead of the minimum. and archeryAcquireTargets will cancel if the target is out of range of all shooters.
Archery targeting for the player with mixed range shooters now highlights the ranges (blue/yellow/red for all/some/none within range) to warn the player if some of the shooters are out of range. All weapons can be forced to fire by holding ctrl while targeting. (ctrl_SPACE, ctrl_RETURN, and ctrl_KP_ENTER bound to accept in game targeting.) Archery messages for the player are updated to be more clear and distinct. ("Your steel steamgun CANNOT SHOOT (Resource: Steam)"). Combat log messages for archery damage are more clear "player's SHOOT misses target." rather than "player misses target."
Added a new hook to archeryShoot to apply transient actor effects to the projectiles at the point of creation.
Added more code comments to make this relatively opaque part to the code more comprehensible for addon-developers.
Beyond the flesh now works with all archery weapons, which will attempt to fire at the appropriate target when an archery talent is used (not autonomously). This is an interesting new ranged option for Mindslayers, though not terribly effective without additional archery skills. A new attribute "psi_focus_combat" enables combat with the psionic focus separate from "use_psi_combat" which affects all combat stats.
This is followed through for quick sets, including Warden switching checks.
Updated the character sheet (shows accurate damage and more complete info, including weapon type by skill and ammo range and speed). Actor tooltips now show each weapon equipped (short name), instead of a combined list of keywords. (i.e. Main: iron, ego // Off : thick coral plate )
Projectile tooltips now display speed and direction, and more than one will show up within a tile. Object descriptions and tooltips have been updated to show resource costs.