Commit Graph

4 Commits

Author SHA1 Message Date
Gary Tierney 9f47fae6a9 Fix combat not working after logout; Fix DDS hits
* Removes the use of the MOB_STATE_CACHE and instead monkey patches a
  get_combat_state method onto Mob.
2016-03-16 22:39:33 +00:00
Gary Tierney 3082fade1d Add ranged combat support
* Clean up the CombatAction and Attack code to make it easier to use for
  range.

* Add collision detection to the distance checks before attacking in the
  CombatAction.

* Create a Ruby DSL for defining projectile types and fix the
  ProjectileUpdateOperation so it uses the correct position offset.

* Fix the packet structure of the HintIconMessageEncoder.
2016-02-29 22:24:26 +00:00
Gary Tierney 17e8d02886 Move next_attack logic to CombatState
* Moves the decision of what attack is used next to CombatState and
  defers selecting the attack until the player is actually ready to hit
  their target for damage.

* Adds a distance check so combat is only initiated within the correct
  range. If the player isn't close enough to their target, they will run
  towards it and check every tick if they're close enough to make an
  attack.
2016-02-29 22:21:21 +00:00
Gary Tierney 348e5cc8dc Build a framework for a maintainable combat plugin
* Uses a hierarchy of WeaponClasses -> Weapons for performing attacks,
  with WeaponClass having a set of styles and associated Attacks for
  those styles. Weapons and their classes are built with an easy to use
  and clean DSL.

* Adds a BonusContainer mixin, so that Equipment, Weapons, and
  WeaponClasses can all have their own set of bonuses which apply to the
  player.

* Allows attacks to be queued to the Mobs CombatState instance from
  external code, allowing e.g., NPCs or auto-cast to queue attacks to be
  executed.
2016-02-29 21:27:17 +00:00