示例#1
0
 public void ProcessScoutAttack(DamageShipEvent e)
 {
     if (_shipAttackedThisRound)
     {
         ProcessDamage(e);
     }
 }
示例#2
0
        public void ProcessDamage(DamageShipEvent e)
        {
            _shipAttackedThisRound = true;
            if (e.IgnoreShields || Shields == 0)
            {
                Hull -= e.Damage;
                Hull  = Math.Max(0, Hull);
                string msg = $"{e.Message} and caused {e.Damage} hull damage. ";
                _eventManager.Trigger("AppendMessage", new DefaultEvent(msg));
                return;
            }
            string message = "";


            Shields -= e.Damage;
            if (Shields < 0)
            {
                Hull   -= Math.Abs(Shields);
                Hull    = Math.Max(0, Hull);
                message = $"{e.Message} which destroyed our shields and caused {Math.Abs(Shields)} hull damage. ";
                Shields = 0;
            }
            else
            {
                message = $"{e.Message} and caused {e.Damage} damage to our shields. ";
            }

            _eventManager.Trigger("AppendMessage", new DefaultEvent(message));
        }
示例#3
0
        public override void Activate(EventManager eventManager)
        {
            if (IsDisabled)
            {
                return;
            }
            var damageEvent = new DamageShipEvent(Name, Damage, $"{Name} opened fire");

            eventManager.Trigger("ScoutAttack", damageEvent);
        }
        public override void OnDestroy(EventManager eventManager = null)
        {
            if (IsDisabled)
            {
                eventManager.Trigger("AppendMessage", new DefaultEvent($"{SoundFx.ThreatDestroyed()}{Name} exploded, but our stasis beam prevented damage to our ship. "));
                return;
            }

            eventManager.Trigger("AppendMessage", new DefaultEvent($"{SoundFx.ThreatDestroyed()} "));
            var eventArgs = new DamageShipEvent(Name, Damage, $"{Name} exploded");

            eventManager.Trigger("DamageShip", eventArgs);
        }
示例#5
0
        public override void Activate(EventManager eventManager)
        {
            if (IsDisabled)
            {
                return;
            }

            eventManager.Trigger("AppendMessage", new DefaultEvent(SoundFx.SolarWinds));

            var eventArgs = new DamageShipEvent(Name, 5, $"The extreme heat from  the {Name} affected the ship systems");

            eventManager.Trigger("DamageShip", eventArgs);
            eventManager.Trigger("DiscardThreat", new DefaultThreatEvent(this));
        }
示例#6
0
        public void InitializeEvents(EventManager eventManager)
        {
            _eventManager = eventManager;
            // create events
            _eventManager.On("ScannerDrawThreatCard", (e) =>
            {
                // scanners detected a threat, draw a card
                if (ThreatDeck.Count < 1)
                {
                    // if threat deck is empty deal 1 damage to the player ship
                    var damageEvent = new DamageShipEvent(string.Empty, 1, $"We have three locked threats in our scanners, but the threat deck is empty. An unknown entity opened fire");
                    eventManager.Trigger("DamageShip", damageEvent);
                    return;
                }
                _eventManager.Trigger("AppendMessage", new DefaultEvent("Our scanners are detecting a new threat. "));
                DrawThreat();
            });
            _eventManager.On("DiscardThreat", (e) =>
            {
                var threat = ((DefaultThreatEvent)e).Threat;
                threat.OnDestroy(_eventManager);
                _eventManager.Trigger("MissionCleanup", (DefaultThreatEvent)e);
                if (threat is InternalThreat it)
                {
                    InternalThreats.Remove(it);
                }
                else if (threat is ExternalThreat et)
                {
                    ExternalThreats.Remove(et);
                }
            });

            _eventManager.On("CloakedThreatsActivated", (e) => _rollThreatDieAgain = true);

            _eventManager.On("RemoveCrewFromMission", (e) => RemoveCrewFromMission((RemoveCrewFromMissionEvent)e));
            _eventManager.On("TimeWarpActivated", (e) => HealExternalThreats());
        }