* Fixed a bug preventing the player from attacking, blocking or grabbing after blocking and catching an unequippable item (pills, slo-mo, strength boost, etc.)
ScriptAPI:
* Added IPlayer.IsHoldingActiveThrowable, IPlayer.GetActiveThrowableWeaponItem(), IPlayer.SetActiveThrowableTimer(..), IPlayer.DisarmActiveThrowable(..) to be able to read and disarm current active throwables on a player.
* Updated IPlayer.Disarm(..). It will now disarm any active throwables first. Also included an optional parameter 'out IObject disarmedActiveThrowable' to be able to read the disarmed active throwable (if any). This returns the same object as calling IPlayer.DisarmActiveThrowable() first. This is done to keep backwards compatibility with existing code.
* Added IObjectGrenadeThrown.GetExplosionTimer(), IObjectGrenadeThrown.SetExplosionTimer() to be able to change the explosion timer on thrown grenades (and "reactivate" duds by calling SetExplosionTimer after the first timer runs out).
* Added IPlayer.GetCorpseHealth(), SetCorpseHealth(float value), GetCorpseMaxHealth() to be able to update the durability of a dead player's corpse.
* Added IObjectWeaponItem.GetCurrentAmmo(), IObjectWeaponItem.GetMaxAmmo() to be able to read ammo from current item.
* Added IObjectWeaponItem.RifleWeapon|HandgunWeapon|RangedWeapon|ThrownWeapon|PowerupItem|InstantPickupWeaponItem which returns the item information struct about the specified item.
* Added MeleeWeaponItem.CurrentValue, CurrentValue.MaxValue to read durability (0-100).
* Updated ProjectileHitCallback to handle deflections by:
- Adding ProjectileHitArgs.IsDeflection, ProjectileHitArgs.DeflectionNormal to be able to read if a projectile hit is a deflection.
- Updating ProjectileHitArgs.RemoveFlag so it's now false during deflections.
- Updating ProjectileHitCallback so it's now fired when projectiles are blocked or deflected by players and deflected on ProjectileDeflectZone.
* Added IProjectile.PowerupTotalBounces to read projectile's maximum total bounces that can be performed. IProjectile.BounceCount can now be written to to change current amount of bounces.
* Players deflecting a bullet now counts towards the bullet's total bounce count as if it bounced on a wall.
* Moved IPlayer.DealDamage() to base IObject.DealDamage() and added bool IObject.Destructable readonly property to be able to deal damage to objects in a more convenient way.
* Added IPlayer.CurrentPrimaryRangedWeapon and IPlayer.CurrentSecondaryRangedWeapon. Both return a RangedWeaponItem struct containing the same properties as RifleWeaponItem and HandgunWeaponItem.
* Added LazerEquipped property to RangedWeaponItem, RifleWeaponItem and HandgunWeaponItem to be able to read if a ranged weapon has a lazer upgrade attached.
* Removed IGame.WriteToConsole(string text) in favor of the new IGame.WriteToConsole(object param[] args) to avoid ambiguous calls between the two.
* IGame.WriteToConsole now prints <null> for null values.
* IGame.WriteToConsoleF no longer crashes if you input an invalid format, instead a default format will be generated and used.
* Fixed a bug where SupplyCrates created in the editor or ScriptAPI would show the wrong category icon for lazer, bouncing fire and explosive fire powerups.
* Fixed Events.PlayerWeaponRemovedActionCallback not running correctly when a player gets gibbed or removed in certain situations.
* Fixed a bug where projectiles created inside ProjectileCreatedCallbackEvent wouldn't work properly.
* Fixed a bug causing IGame.GetColorPackage() to always return null.
* Fixed a bug that showed the wrong exception when a stacktrace from map scripts couldn't be parsed correctly.
* Fixed a bug with IObjectPlayerSpawnTrigger.SetSpawnWeaponItem*(..) causing exceptions when calling Trigger().