contaminatedarea.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. class ContaminatedArea_Base : EffectArea
  2. {
  3. override void OnPlayerEnterServer(PlayerBase player, EffectTrigger trigger)
  4. {
  5. super.OnPlayerEnterServer(player, trigger);
  6. player.IncreaseContaminatedAreaCount();
  7. }
  8. override void OnPlayerExitServer(PlayerBase player, EffectTrigger trigger)
  9. {
  10. super.OnPlayerExitServer(player, trigger);
  11. player.DecreaseContaminatedAreaCount();
  12. }
  13. override void InitZoneClient()
  14. {
  15. super.InitZoneClient();
  16. g_Game.GetMission().GetDynamicMusicPlayer().RegisterDynamicLocation(this, DynamicMusicLocationTypes.CONTAMINATED_ZONE, m_Radius);
  17. }
  18. override void EEDelete(EntityAI parent)
  19. {
  20. super.EEDelete(parent);
  21. if (!g_Game.IsServer())
  22. g_Game.GetMission().GetDynamicMusicPlayer().UnregisterDynamicLocation(this);
  23. }
  24. }
  25. class ContaminatedArea_Static : ContaminatedArea_Base
  26. {
  27. // ----------------------------------------------
  28. // INITIAL SETUP
  29. // ----------------------------------------------
  30. override void SetupZoneData( EffectAreaParams params )
  31. {
  32. super.SetupZoneData( params );
  33. }
  34. override void EEInit()
  35. {
  36. // We make sure we have the particle array
  37. if ( !m_ToxicClouds )
  38. m_ToxicClouds = new array<Particle>;
  39. SetSynchDirty();
  40. #ifdef DEVELOPER
  41. // Debugs when placing entity by hand using internal tools
  42. if ( GetGame().IsServer() && !GetGame().IsMultiplayer() )
  43. {
  44. Debug.Log("YOU CAN IGNORE THE FOLLOWING DUMP");
  45. InitZone();
  46. Debug.Log("YOU CAN USE FOLLOWING DATA PROPERLY");
  47. }
  48. #endif
  49. if ( GetGame().IsClient() && GetGame().IsMultiplayer() )
  50. InitZone();
  51. super.EEInit();
  52. }
  53. override void InitZoneServer()
  54. {
  55. super.InitZoneServer();
  56. // We create the trigger on server
  57. if ( m_TriggerType != "" )
  58. CreateTrigger( m_Position, m_Radius );
  59. }
  60. override void InitZoneClient()
  61. {
  62. super.InitZoneClient();
  63. // We spawn VFX on client
  64. PlaceParticles( GetWorldPosition(), m_Radius, m_InnerRings, m_InnerSpacing, m_OuterRingToggle, m_OuterSpacing, m_OuterRingOffset, m_ParticleID );
  65. }
  66. }