actiondefibrilatebase.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. class ActionDefibrilateBase: ActionContinuousBase
  2. {
  3. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  4. {
  5. Defibrillator defib;
  6. Class.CastTo(defib, item);
  7. return CanDefibrillate(defib);
  8. }
  9. bool CanDefibrillate(Defibrillator defib)
  10. {
  11. if ( defib.IsCharged() )
  12. {
  13. return true;
  14. }
  15. else
  16. {
  17. return false;
  18. }
  19. }
  20. void DefibrillateClient(PlayerBase player, Defibrillator defib)
  21. {
  22. defib.DischargeClient(player);
  23. }
  24. void DefibrillateServer(PlayerBase player, Defibrillator defib)
  25. {
  26. if ( defib.IsCharged() )
  27. {
  28. defib.DischargeServer(player);
  29. float regain_energy = defib.GetEnergyNeededToCharge();
  30. regain_energy = defib.GetEnergyNeededToCharge() - regain_energy;
  31. ItemBase battery;
  32. if (Class.CastTo(battery, defib.GetCompEM().GetEnergySource()))
  33. {
  34. battery.GetCompEM().AddEnergy( regain_energy );
  35. }
  36. else
  37. {
  38. DPrint("ERROR! Defibrillator has no battery! Defibrillator softskill bonus can't be applied!");
  39. }
  40. }
  41. }
  42. };