Skip to content
Snippets Groups Projects
  1. Oct 24, 2015
    • 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
  2. Oct 22, 2015
    • Samuel Wegner's avatar
      Undo last commit · 1246511c
      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.
      1246511c
  3. 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
  4. Oct 07, 2015
  5. Oct 05, 2015
  6. Oct 04, 2015
  7. Oct 01, 2015
  8. Sep 30, 2015
  9. Sep 29, 2015
    • Grayswandir's avatar
      569e4aaa
    • Grayswandir's avatar
      Fix cycling option saving. · b3137802
      Grayswandir authored
      b3137802
    • Grayswandir's avatar
      Fix variable names. · 8d667925
      Grayswandir authored
      8d667925
    • DarkGod's avatar
      fix iamges · 1ff17945
      DarkGod authored
      fix typos
      1ff17945
    • Grayswandir's avatar
      Adds a "center view on player" command. · f4f2171d
      Grayswandir authored
      f4f2171d
    • Hachem_Muche's avatar
      Remove Debugging code. · 865d1042
      Hachem_Muche authored
      865d1042
    • 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
  10. Sep 28, 2015
    • Grayswandir's avatar
      Adds an options menu to the birther dialog. · f2517090
      Grayswandir authored
      This lets addons specify extra options on a player's birth. These are
      treated as normal options, so they are saved in the player's
      profile. However, the value of this option at the player's birth is
      stored on the player itself.
      
      This is to prevent needing to switch options if you switch between save
      files that are using different options.
      
      Adds the ToME:extraBirthOptions hook, as well as a generic OptionTree
      dialog.
      
      Example addon:
      
      function hook(self, data)
      	local options = {
      		{type = "group", path = {"basic"}, name = "Basic", desc = "DESC"},
      		{type = "group", path = {"basic", "basic2"}, name = "Basic 2", desc = "DESC 2"},
      		{type = "boolean", path = {"basic", "basic2", "test"}, id = "test_boolean", name = "Boolean", desc = "Test Option"},
      		{type = "cycling", path = {"basic", "basic2", "test8"}, id = "test_cycle", name = "Cycle", desc = "A cycling test option.", values = {"hello", "goodbye", "???"}},
      		{type = "group", path = {"advanced"}, name = "Advancded", desc = "GROUP DESC"},
      		{type = "numeric", path = {"advanced", "something"}, id = "test_numeric",
      		 name = "Numeric", desc = "A numeric test option.", min = 0, default = 7, max = 10}}
      	for _, option in ipairs(options) do
      		table.insert(data.options, option)
      	end
      end
      self:bindHook("ToME:extraBirthOptions", hook)
      f2517090
  11. 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
  12. Sep 25, 2015
Loading