예제 #1
0
 void Start()
 {
     m_setWave = GameObject.Find("Additional Camera").GetComponent <WaterWaveEffect>();
     m_waterL  = GameObject.Find("Water_Left").GetComponent <ParticleSystem>();
     m_waterR  = GameObject.Find("Water_Right").GetComponent <ParticleSystem>();
     m_waterM  = GameObject.Find("Water_Mid").GetComponent <ParticleSystem>();
     m_time    = 0f;
     m_stop    = false;
 }
예제 #2
0
        public void WaterBreath()
        {
            //List<Mobile> buffer = new List<Mobile>();

            TimeSpan timeout = TimeSpan.FromSeconds(60);

            var fx = new WaterWaveEffect(Location, Map, Direction, 20, 0, TimeSpan.FromMilliseconds(1))
            {
                EffectHandler = e =>
                {
                    if (e.ProcessIndex != 0)
                    {
                        return;
                    }

                    DateTime now = DateTime.UtcNow;

                    foreach (Mobile t in AcquireAllTargets(e.Source.Location, 0) /*.Not(buffer.Contains)*/)
                    {
                        //buffer.Add(t);

                        if (_FireBreathAffectedMobs.Remove(t))
                        {
                            t.SendMessage(54, "The Hydra's water breath has doused the flames covering your body!");
                        }

                        _WaterBreathAffectedMobs.AddOrReplace(t, o => (o != null ? o.Value : now) + timeout);

                        if (t is BaseCreature)
                        {
                            t.Damage(200, this);
                        }
                        else
                        {
                            t.Damage(50, this);
                        }

                        t.SolidHueOverride = 1266;
                    }
                },
                Callback = () =>
                {
                    //buffer.Clear();
                    CantWalk = false;
                }
            };

            fx.Send();
        }