barbedwiretrigger.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //! DEPRECATED UNUSED prototype for damage by BarbedWire, do not use as example
  2. class BarbedWireTrigger : Trigger
  3. {
  4. ItemBase m_ParentBarbedWire;
  5. const static int SOUNDS_COLLISION_COUNT = 4;
  6. const static int SOUNDS_SHOCK_COUNT = 4;
  7. const static string m_SoundsCollision[SOUNDS_COLLISION_COUNT] = {"barbedFenceCollision1", "barbedFenceCollision2", "barbedFenceCollision3", "barbedFenceCollision4"};
  8. const static string m_SoundsShock[SOUNDS_SHOCK_COUNT] = {"electricFenceShock1", "electricFenceShock2", "electricFenceShock3", "electricFenceShock4"};
  9. // When a player / AI touches the Barbed Wire
  10. override void OnEnter( Object obj )
  11. {
  12. if ( g_Game.IsServer() )
  13. {
  14. if ( m_ParentBarbedWire )
  15. {
  16. if ( obj.IsInherited(PlayerBase) )
  17. {
  18. // When a player touches the barbed wire
  19. string cfg = "CfgVehicles BarbedWire barbedWireShockEnergyConsumption";
  20. float needed_energy = GetGame().ConfigGetFloat(cfg);
  21. bool energy_consumed = m_ParentBarbedWire.GetCompEM().ConsumeEnergy(needed_energy);
  22. PlayerBase player = PlayerBase.Cast( obj );
  23. if ( energy_consumed )
  24. {
  25. // TO DO:
  26. // -Do electrical damage.
  27. // -Cause bleeding?
  28. // -Do some damage!
  29. player.MessageImportant( "*SCRATCH and ELECTROCUTION*" );
  30. // Play sound
  31. SoundCollision();
  32. SoundElectricShock();
  33. }
  34. else
  35. {
  36. // TO DO:
  37. // -Cause bleeding?
  38. // -Do some damage!
  39. player.MessageImportant( "*SCRATCH*" );
  40. // Play sound
  41. SoundCollision();
  42. }
  43. }
  44. else
  45. {
  46. // When an AI Agent touches the barbed wire
  47. if ( obj.IsInherited(ManBase) )
  48. {
  49. ManBase AI_unit = ManBase.Cast( obj );
  50. AI_unit.SetHealth("", "", 0);
  51. }
  52. }
  53. }
  54. }
  55. }
  56. // Sets parent object for this trigger
  57. void SetParentObject( ItemBase wire )
  58. {
  59. if ( g_Game.IsServer() )
  60. {
  61. m_ParentBarbedWire = wire;
  62. }
  63. }
  64. // Plays an electric shock sound
  65. void SoundElectricShock()
  66. {
  67. int random_index = Math.RandomInt(0, SOUNDS_SHOCK_COUNT);
  68. string sound_type = m_SoundsShock[random_index];
  69. PlaySound(sound_type, 50);
  70. }
  71. // Plays a collision sound
  72. void SoundCollision()
  73. {
  74. int random_index = Math.RandomInt(0, SOUNDS_COLLISION_COUNT);
  75. string sound_type = m_SoundsCollision[random_index];
  76. PlaySound(sound_type, 50);
  77. }
  78. }