//-----------------------------------------------------------------------------
// Torque Game Engine 
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------

// Inventory items.  These objects rely on the item & inventory support
// system defined in item.cs and inventory.cs

//-----------------------------------------------------------------------------
// Health kits can be added to your inventory and used to heal up.
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Audio profiles
//-----------------------------------------------------------------------------
datablock AudioProfile(HealthUseSound)
{
   filename = "~/data/sound/health_mono_01.ogg";
   description = AudioClose3d;
	preload = true;
};
//------------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Health Kits are designed to be picked up and stored in the player's
// inventory until they "use" it. This differs from the Health Patches below
// that apply immediately on collision with a wounded player.
//-----------------------------------------------------------------------------

datablock ItemData(HealthKit)
{
   // Mission editor category, this datablock will show up in the
   // specified category under the "shapes" root category.
   category = "Health";

   // Basic Item properties
   shapeFile = "~/data/shapes/items/healthKit.dts";
   mass = 1;
   friction = 1;
   elasticity = 0.3;
   emap = true;

   // Dynamic properties defined by the scripts
   pickupName = "a health kit";
   repairAmount = 50;
};

function HealthKit::onUse(%this,%user)
{
   // Apply some health to whoever uses it, the health kit is only
   // used if the user is currently damaged.
   if (%user.getDamageLevel() != 0) {
      %user.decInventory(%this,1);
      %user.applyRepair(%this.repairAmount);
      if (%user.client)
         messageClient(%user.client, 'MsgHealthKitUsed', '\c2Health Kit Applied');
   }
}


//-----------------------------------------------------------------------------
// Health Patchs cannot be picked up and are not meant to be added to 
// inventory.  Health is applied automatically when an objects collides
// with a patch.
//-----------------------------------------------------------------------------

datablock ItemData(HealthPatch)
{
   // Mission editor category, this datablock will show up in the
   // specified category under the "shapes" root category.
   category = "Health";

   // Basic Item properties
   shapeFile = "~/data/shapes/items/healthPatch.dts";
   mass = 1;
   friction = 1;
   elasticity = 0.3;
   emap = true;

   // Dynamic properties defined by the scripts
   repairAmount = 20;
   maxInventory = 0; // No pickup or throw
};

function HealthPatch::onCollision(%this,%obj,%col)
{
   // Apply health to colliding object if it needs it.
   // Works for all shapebase objects.
   if (%col.getDamageLevel() != 0 && %col.getState() !$= "Dead" ) {
      %col.applyRepair(%this.repairAmount);
      %obj.respawn();
      if (%col.client)
         messageClient(%col.client, 'MsgHealthPatchUsed', '\c2Health Patch Applied');
         serverPlay3D(HealthUseSound,%obj.getTransform());
   }
}
