trap_rabbitsnare.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. class Trap_RabbitSnare extends TrapSpawnBase
  2. {
  3. override void InitTrapValues()
  4. {
  5. super.InitTrapValues();
  6. m_DefectRate = 2.5; //Added damage after trap activation
  7. m_InitWaitTimeMin = 120;
  8. m_InitWaitTimeMax = 180;
  9. m_UpdateWaitTime = 30;
  10. m_SpawnUpdateWaitTime = 30;
  11. m_MaxActiveTime = 1200;
  12. m_IsFoldable = true;
  13. m_MinimalDistanceFromPlayersToCatch = 15;
  14. m_AnimationPhaseSet = "inventory";
  15. m_AnimationPhaseTriggered = "placing";
  16. m_AnimationPhaseUsed = "triggered";
  17. }
  18. override bool CanBePlaced(Man player, vector position)
  19. {
  20. if (m_IsBeingPlaced)
  21. return true;
  22. int liquidType;
  23. string surfaceType;
  24. g_Game.SurfaceUnderObject(PlayerBase.Cast(player).GetHologramLocal().GetProjectionEntity(), surfaceType, liquidType);
  25. return g_Game.IsSurfaceDigable(surfaceType);
  26. }
  27. override void SetupTrap()
  28. {
  29. if ( GetGame().IsServer() )
  30. {
  31. if ( GetHierarchyRootPlayer().CanDropEntity( this ) )
  32. {
  33. if ( IsRuined() )
  34. {
  35. PlayerBase player = PlayerBase.Cast( GetHierarchyRootPlayer() );
  36. }
  37. else
  38. {
  39. PlayerBase owner_player = PlayerBase.Cast( GetHierarchyRootPlayer() );
  40. //GetDirection
  41. vector trapPos = owner_player.GetDirection();
  42. trapPos[1] = 0;
  43. SetPosition( owner_player.GetPosition() + trapPos );
  44. SetActive();
  45. SetOrientation( owner_player.GetOrientation() );
  46. }
  47. }
  48. }
  49. }
  50. override void InitCatchingComponent()
  51. {
  52. if (!m_CatchingContext)
  53. {
  54. int updateCount = m_MaxActiveTime/m_UpdateWaitTime;
  55. Param2<EntityAI,int> par = new Param2<EntityAI,int>(this,updateCount);
  56. m_CatchingContext = new CatchingContextTrapLandSnare(par);
  57. }
  58. }
  59. //================================================================
  60. // ADVANCED PLACEMENT
  61. //================================================================
  62. override void OnPlacementComplete( Man player, vector position = "0 0 0", vector orientation = "0 0 0" )
  63. {
  64. super.OnPlacementComplete( player, position, orientation );
  65. SetOrientation(orientation);
  66. }
  67. override bool IsDeployable()
  68. {
  69. return true;
  70. }
  71. override string GetDeploySoundset()
  72. {
  73. return "placeRabbitSnareTrap_SoundSet";
  74. }
  75. override string GetLoopDeploySoundset()
  76. {
  77. return "rabbitsnare_deploy_SoundSet";
  78. }
  79. override void SetActions()
  80. {
  81. super.SetActions();
  82. // We remove the hunting trap deploy action in order to all advanced placement
  83. RemoveAction(ActionDeployHuntingTrap);
  84. AddAction(ActionTogglePlaceObject);
  85. AddAction(ActionDeployObject);
  86. }
  87. // ===============================================================
  88. // ===================== DEPRECATED ============================
  89. // ===============================================================
  90. override void AlignCatch( ItemBase obj, string catch_name )
  91. {
  92. if ( catch_name == "Animal_LepusEuropaeus" )
  93. {
  94. obj.SetOrientation( GetOrientation() );
  95. vector forward_vec = GetDirection();
  96. vector side_vec = forward_vec.Perpend( ) * -0.22;
  97. forward_vec = forward_vec * -0.3;
  98. vector chatch_pos = obj.GetPosition() + forward_vec + side_vec;
  99. obj.SetPosition( chatch_pos );
  100. }
  101. }
  102. }
  103. class RabbitSnareTrap extends Trap_RabbitSnare
  104. {
  105. }