weaponejectcasingandchamberfromattmag.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. class WeaponEjectCasing extends WeaponStateBase
  2. {
  3. void WeaponEjectCasing (Weapon_Base w = NULL, WeaponStateBase parent = NULL) { }
  4. override void OnEntry (WeaponEventBase e)
  5. {
  6. super.OnEntry(e);
  7. if (e)
  8. {
  9. if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing"); }
  10. int mi = m_weapon.GetCurrentMuzzle();
  11. if(m_weapon.IsChamberFiredOut(mi))
  12. {
  13. m_weapon.EjectCasing(mi);
  14. }
  15. m_weapon.EffectBulletHide(mi);
  16. m_weapon.SelectionBulletHide();
  17. }
  18. }
  19. };
  20. class WeaponEjectCasingMultiMuzzle extends WeaponStateBase
  21. {
  22. void WeaponEjectCasingMultiMuzzle (Weapon_Base w = NULL, WeaponStateBase parent = NULL) { }
  23. override void OnEntry (WeaponEventBase e)
  24. {
  25. super.OnEntry(e);
  26. if (e)
  27. {
  28. if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing multi muzzle"); }
  29. for( int i = 0; i < m_weapon.GetMuzzleCount(); i++ )
  30. {
  31. if(m_weapon.IsChamberFiredOut(i))
  32. {
  33. m_weapon.EjectCasing(i);
  34. m_weapon.EffectBulletHide(i);
  35. m_weapon.HideBullet(i);
  36. }
  37. }
  38. }
  39. }
  40. override bool IsWaitingForActionFinish()
  41. {
  42. return false;
  43. }
  44. };
  45. class WeaponEjectCasing_W4T extends WeaponEjectCasingMultiMuzzle
  46. {
  47. override bool IsWaitingForActionFinish () { return true; }
  48. };
  49. class WeaponEjectAllMuzzles extends WeaponStateBase
  50. {
  51. Magazine m_dstMagazine;
  52. void WeaponEjectAllMuzzles (Weapon_Base w = NULL, WeaponStateBase parent = NULL) { }
  53. override void OnEntry (WeaponEventBase e)
  54. {
  55. super.OnEntry(e);
  56. if (e)
  57. {
  58. Magnum_Cylinder cylinder = Magnum_Cylinder.Cast(m_weapon.GetAttachmentByType(Magnum_Cylinder));
  59. if(cylinder)
  60. {
  61. cylinder.HideSelection("bullet");
  62. cylinder.HideSelection("bullet_2");
  63. cylinder.HideSelection("bullet_3");
  64. cylinder.HideSelection("bullet_4");
  65. cylinder.HideSelection("bullet_5");
  66. cylinder.HideSelection("bullet_6");
  67. cylinder.HideSelection("bullet_nose");
  68. cylinder.HideSelection("bullet_nose_2");
  69. cylinder.HideSelection("bullet_nose_3");
  70. cylinder.HideSelection("bullet_nose_4");
  71. cylinder.HideSelection("bullet_nose_5");
  72. cylinder.HideSelection("bullet_nose_6");
  73. }
  74. if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected bullets from all muzzles"); }
  75. for( int i = 0; i < m_weapon.GetMuzzleCount(); i++ )
  76. {
  77. if(m_weapon.IsChamberFiredOut(i))
  78. {
  79. m_weapon.EjectCasing(i);
  80. m_weapon.EffectBulletHide(i);
  81. m_weapon.HideBullet(i);
  82. continue;
  83. }
  84. if(!m_weapon.IsChamberEmpty(i))
  85. {
  86. DayZPlayer p = e.m_player;
  87. if(m_dstMagazine && m_dstMagazine.GetAmmoCount() < m_dstMagazine.GetAmmoMax() )
  88. {
  89. m_weapon.CreateRound(i);
  90. ejectBulletAndStoreInMagazine(m_weapon,i,m_dstMagazine,p);
  91. }
  92. else
  93. {
  94. m_weapon.CreateRound(i);
  95. ejectBulletAndStoreInMagazine(m_weapon,i,null,p);
  96. }
  97. m_weapon.EffectBulletHide(i);
  98. m_weapon.HideBullet(i);
  99. }
  100. }
  101. m_weapon.SetWeaponOpen(false);
  102. m_weapon.SetCharged(true);
  103. }
  104. //m_weapon.SelectionBulletHide();
  105. }
  106. override bool IsWaitingForActionFinish ()
  107. {
  108. return false;
  109. }
  110. };
  111. // eject casing and load bullet from att mag (no anim)
  112. class WeaponEjectCasingAndChamberFromAttMag extends WeaponEjectCasing
  113. {
  114. override void OnEntry (WeaponEventBase e)
  115. {
  116. super.OnEntry(e);
  117. if (e)
  118. {
  119. int mi = m_weapon.GetCurrentMuzzle();
  120. pushToChamberFromAttachedMagazine(m_weapon, mi);
  121. }
  122. }
  123. override void OnExit (WeaponEventBase e)
  124. {
  125. super.OnExit(e);
  126. }
  127. };
  128. class WeaponEjectCasingAndChamberFromAttMag_W4T extends WeaponEjectCasingAndChamberFromAttMag
  129. {
  130. override bool IsWaitingForActionFinish () { return true; }
  131. };