- Oct 24, 2015
-
-
DarkGod authored
-
Samuel Wegner authored
-
Simon André Curtis authored
-
Samuel Wegner authored
-
Samuel Wegner authored
-
Samuel Wegner authored
1. Since the customizable table cloning function may be useful for other purposes than just making Chronomancy clones, I moved it to engine/class.lua and renamed it cloneCustom(). It works like cloneFull(), but allows specifying a table of keys/values to skip or replace in the clone table. If desired, I could instead just modify cloneFull() to have an optional parameter for the "alt_nodes" table, but I didn't want to mess with it without permission. There could be a conditional statement to pick between two different recursive functions so the optional param doesn't impact performance, if that's a concern. 2. Updated comments for cloneFull() and related functions for clarity. The comment originally said it returns the clone and the number of objects cloned, but it actually only returns the clone. I think the comment may have been copied from somewhere else and not updated. 3. Renamed the "t" param from cloneFull() to "post_copy" to be more descriptive and to be consistent with cloneCustom(). This has no functional impact. 4. Significantly expanded the number of properties which are skipped when making Chronomancy clones of an actor. Hopefully this will improve performance and maybe even help with the memory leak. I didn't see any errors during brief testing, but it probably merits more testing.
-
Simon André Curtis authored
-
- Oct 23, 2015
-
-
Samuel Wegner authored
-
Samuel Wegner authored
-
Samuel Wegner authored
Changed Arcane Combat's description generator to use table.concat, to avoid making temporary string objects that need garbage collection.
-
- Oct 22, 2015
-
-
Simon André Curtis authored
-
Simon André Curtis authored
-
Samuel Wegner authored
I just remembered why I originally designed it this way: We only want to skip if neither 'k' nor 'v' is specified in alt_nodes since we want to allow substituting user-specified values for either.
-
- Oct 21, 2015
-
-
Samuel Wegner authored
-
Samuel Wegner authored
-
Samuel Wegner authored
-
Samuel Wegner authored
Fix 1: Improve cloning function Previously, makeParadoxClone() temporarily cleared the actor's particles and main inventory so that they wouldn't be copied by cloneFull() when making Warden's Call clones. However, this resulted in some players losing their inventory, probably due to some race condition during lag caused by the Warden's Call memory leak. Now, makeParadoxClone() has its own recursive table cloning function with options for skipping specific nodes or assigning them a different value from the source table. This way, we can clone an actor without modifying that actor's table. Fix 2: Create cleanup function for Warden's Call Added a basic cleanup function for Warden's Call clones. Currently, it just makes sure they're dead and replaces references in timed effects with references to the player, so the clones can be freed by the garbage collector. More features will likely be added as I find other causes of the memory leak. NOTE: These changes don't fix the memory leak. It may help a little, but that issue needs more investigation. It's probably worth pushing these changes back to v1.3.X in a minor update to fix the issue with missing player inventory. Completely fixing the memory leak may take a while.
-
- Oct 20, 2015
-
-
DarkGod authored
Simplified support of double shields by enhancing actor:hasShield()
-
- Oct 18, 2015
- Oct 09, 2015
-
-
DarkGod authored
-
- Oct 08, 2015
-
-
DarkGod authored
-
Hachem_Muche authored
Randbosses get their class inscriptions (allows gunslingers to get steam implants) and get general resource boosts. Weapon tooltips show extra precision for resource costs. Fixed a bug in tooltips for projectiles in cheat mode. Dug sandwalls have a tooltip. Charactersheet: fixed a bug that could cause the equip button to be labeled incorrectly in the equipdoll. Shield damage correctly reflects no off-hand penalty. The lightning overload quest only shows up for Maj'Eyal campaign.
-
- Oct 05, 2015
-
-
Samuel Wegner authored
-
Alex Ksandra authored
-
- Sep 30, 2015
-
-
Samuel Wegner authored
-
- Sep 29, 2015
-
-
DarkGod authored
fix typos
-
Hachem_Muche authored
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 (separate MR forthcoming). 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: <weapon icon> iron, ego Off : <shield icon> 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.
-
- Sep 27, 2015
-
-
Samuel Wegner authored
-The only visible change in the core game is that Arcane Combat now interacts correctly with the Hidden Resources prodigy. The rest of the changes are for addon support. -Previously, Arcane Combat on_trigger function assumed that allowed talents cost mana and not other resources. This is fine in the core game, but if an addon wants to allow triggering a talent that costs Vim or Paradox, for example, the logic was not appropriate. Now, all resource types should be handled correctly. -Added some sanity checks to the allowed talent filtering in case addon developers set "allow_for_arcane_combat" on inappropriate talents.
-
- Sep 24, 2015
-
-
DarkGod authored
Weapons can now have the "double_weapon" property to enable two handed weapons to count as dual wielding
-
- Sep 23, 2015
- Sep 22, 2015
-
-
Samuel Wegner authored
-Arcane Combat talent now opens a dialog upon activation to allow selecting which spell will be triggered. A "Random spells" option is also available, which uses the existing behavior. The dialog and related code are based on the Contingency dialog. -NPCs automatically use the random spell selection mode. Players will use random selection if a selected talent is not stored. -If the selected spell is not valid (unlearned, not enough mana, etc.) when Arcane Combat triggers, then we default to using random spell selection. Let me know if you think this should be changed, but I thought it would be better than just failing to trigger. -Rather than having the Arcane Combat logic directly list which talents can be triggered, it now checks a property "allow_for_arcane_combat" in the talent definition; allowed talents should have the property set to true. This paradigm makes it easier for addons to modify the logic. -Arcane Combat talent description dynamically lists the allowed talents and (if sustained) which spell is currently selected. The description is getting a bit long, so let me know if you have any suggestions for making it more concise. -Added Pulverizing Auger to the allowed spells. Since players can now choose which spell is triggered, this won't be a problem for builds that leave Auger at level 1 for utility. I thought this would be a good change to allow a non-elemental proc before unlocking Spell/Stone. Let me know if you have any objections.
-
- Sep 16, 2015
-
-
Samuel Wegner authored
-
Samuel Wegner authored
-Will replace an existing damage shield entirely if both the shield value and duration would be greater on the new shield. -Will update the current shield value (but not max value) of an existing shield if the new value would be greater. We keep the old max value because the player may want to buff their shield with Aegis. -If we updated an existing shield, we will refresh the duration to 3 turns unless the duration has already been refresh 20 times. This checks the same property used by Weapon of Light and Bathe in Light, which is why I allowed refreshing 20 times instead of a smaller amount. -It's unlikely that an existing shield would be refreshed many times by Arcane Shield, but I implemented this limitation to avoid refreshing the same shield indefinitely. T think Aegis is the only talent that benefits from refreshing an existing shield versus creating a new one, so there shouldn't be any real abuse potential here. -Note that this will never update or replace an existing shield if the current duration is greater than Arcane Shield's default duration. We can't know whether the player values shield value or duration more, and updating the shield value of an existing damage shield with greater duration would introduce power creep.
-
- Sep 12, 2015
-
-
Alex Ksandra authored
don't try to curse items on the offchance that the tree is granted to some class on birth (thx astralInferno)
-
Alex Ksandra authored
-
- Sep 10, 2015
-
-
Hachem_Muche authored
-
- Aug 30, 2015
-
-
HousePet authored
-
- Jul 24, 2015
-
-
DarkGod authored
-