Skip to content
Snippets Groups Projects
  1. Oct 24, 2015
    • DarkGod's avatar
      stuff · f85f439c
      DarkGod authored
      f85f439c
    • Samuel Wegner's avatar
      Fix comment wording · 59367ea6
      Samuel Wegner authored
      59367ea6
    • Simon André Curtis's avatar
    • Samuel Wegner's avatar
      Set minimum duration · 8fcfd0a1
      Samuel Wegner authored
      8fcfd0a1
    • Samuel Wegner's avatar
      Remove debugging code · dd24e023
      Samuel Wegner authored
      dd24e023
    • Samuel Wegner's avatar
      Restructure cloning code and more · 878cd840
      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.
      878cd840
    • Simon André Curtis's avatar
  2. Oct 23, 2015
  3. Oct 22, 2015
  4. Oct 21, 2015
    • Samuel Wegner's avatar
      Improve efficiency · 33f94dd8
      Samuel Wegner authored
      33f94dd8
    • Samuel Wegner's avatar
      Fix coding style · e66fe05c
      Samuel Wegner authored
      e66fe05c
    • Samuel Wegner's avatar
      Fix comment formatting · a5d7126d
      Samuel Wegner authored
      a5d7126d
    • Samuel Wegner's avatar
      Fix some issues with Warden's Call · e42cbd0a
      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.
      e42cbd0a
  5. Oct 20, 2015
  6. Oct 18, 2015
  7. Oct 09, 2015
  8. Oct 08, 2015
    • DarkGod's avatar
      wut ? how did this break ? · 4de90017
      DarkGod authored
      4de90017
    • Hachem_Muche's avatar
      Randbosses get their class inscriptions (allows gunslingers to get steam... · 66da71ee
      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.
      66da71ee
  9. Oct 05, 2015
  10. Sep 30, 2015
  11. Sep 29, 2015
    • DarkGod's avatar
      fix iamges · 1ff17945
      DarkGod authored
      fix typos
      1ff17945
    • Hachem_Muche's avatar
      Reworked interface Archery to properly handle multiple missile launchers. · caacb202
      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.
      caacb202
  12. Sep 27, 2015
    • Samuel Wegner's avatar
      Support multiple resources for Arcane Combat · b79a55e5
      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.
      b79a55e5
  13. Sep 24, 2015
  14. Sep 23, 2015
  15. Sep 22, 2015
    • Samuel Wegner's avatar
      Allow selecting spell for Arcane Combat · d6dbcd52
      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.
      d6dbcd52
  16. Sep 16, 2015
    • Samuel Wegner's avatar
      Clarify Arcane Shield talent description · 19836c23
      Samuel Wegner authored
      19836c23
    • Samuel Wegner's avatar
      Allow Arcane Shield to overwrite existing shield · 06803119
      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.
      06803119
  17. Sep 12, 2015
  18. Sep 10, 2015
  19. Aug 30, 2015
  20. Jul 24, 2015
Loading