spookyarea.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // The base area for Spooky land, spooky particles and spooky triggers for a spooky halloween
  2. class SpookyArea : EffectArea
  3. {
  4. // ----------------------------------------------
  5. // INITIAL SETUP
  6. // ----------------------------------------------
  7. override void EEInit()
  8. {
  9. if (!m_ToxicClouds)
  10. m_ToxicClouds = new array<Particle>();
  11. SetSynchDirty();
  12. super.EEInit();
  13. }
  14. override void DeferredInit()
  15. {
  16. super.DeferredInit();
  17. InitZone();
  18. }
  19. override void InitZoneServer()
  20. {
  21. super.InitZoneServer();
  22. // We create the trigger on server
  23. if ( m_TriggerType != "" )
  24. CreateTrigger(m_PositionTrigger, m_Radius);
  25. }
  26. override void InitZoneClient()
  27. {
  28. super.InitZoneClient();
  29. // We spawn VFX on client
  30. PlaceParticles(m_Position, m_Radius, m_InnerRings, m_InnerSpacing, m_OuterRingToggle, m_OuterSpacing, m_OuterRingOffset, m_ParticleID);
  31. }
  32. }
  33. class SpookyArea23 : SpookyArea
  34. {
  35. override void OnPlayerEnterServer(PlayerBase player, EffectTrigger trigger)
  36. {
  37. super.OnPlayerEnterServer(player, trigger);
  38. EntityAI spookyEntity = EntityAI.Cast(GetGame().CreateObjectEx("SpookyPlayerStalker","0 0 0",ECE_SETUP));
  39. int boneIdx = player.GetBoneIndexByName("Head");
  40. player.AddChild(spookyEntity,boneIdx,true);
  41. }
  42. override void OnPlayerExitServer(PlayerBase player, EffectTrigger trigger)
  43. {
  44. super.OnPlayerExitServer(player, trigger);
  45. array<typename> types = {SpookyPlayerStalker};
  46. MiscGameplayFunctions.DeleteAttachedChildrenByTypename(player,types);
  47. }
  48. }