Beispiel #1
0
        public static void OnInterruptableSpell(Obj_AI_Base sender, Interrupter.InterruptableSpellEventArgs args)
        {
            if (sender.IsMe || sender.IsAlly || !Config.IsChecked(Config.Interrupter, "bInterrupt"))
            {
                return;
            }

            switch (Config.GetComboBoxValue(Config.Interrupter, "dangerL"))
            {
            case 0:
                wantedLevel = DangerLevel.Low;
                break;

            case 1:
                wantedLevel = DangerLevel.Medium;
                break;

            case 2:
                wantedLevel = DangerLevel.High;
                break;
            }

            if (Spells.E.CanCast() && Spells.E.IsInRange(sender) && args.DangerLevel == wantedLevel)
            {
                var delay = RDelay.Next(100, 120);
                Core.DelayAction(() => Spells.E.Cast(sender), delay);
            }
        }
Beispiel #2
0
        internal static void OnInterruptableSpell(Obj_AI_Base sender, Interrupter.InterruptableSpellEventArgs e)
        {
            if (sender.IsMe || sender.IsAlly || !Config.IsChecked(Config.InterrupterMenu, "br"))
            {
                return;
            }

            switch (Config.GetComboBoxValue(Config.InterrupterMenu, "dangerL"))
            {
            case 0:
                wanteDangerLevel = DangerLevel.Low;
                break;

            case 1:
                wanteDangerLevel = DangerLevel.Medium;
                break;

            case 2:
                wanteDangerLevel = DangerLevel.High;
                break;

            default:
                wanteDangerLevel = DangerLevel.High;
                break;
            }

            if (Spells.R.CanCast() && sender.IsValidTarget(Spells.R.Range) && e.DangerLevel == wanteDangerLevel)
            {
                var delay = Computed.RDelay.Next(100, 120);
                Core.DelayAction(() => Spells.R.Cast(sender), delay);
            }
        }
Beispiel #3
0
        public static void OnInterruptableSpell(Obj_AI_Base sender, Interrupter.InterruptableSpellEventArgs e)
        {
            if (!sender.IsEnemy || Player.Instance.IsRecalling() || !Config.IsChecked(Config.Misc, "useInterrupt"))
            {
                return;
            }

            switch (Config.GetComboBoxValue(Config.Misc, "dangerL"))
            {
            case 0:
                wanteDangerLevel = DangerLevel.Low;
                break;

            case 1:
                wanteDangerLevel = DangerLevel.Medium;
                break;

            case 2:
                wanteDangerLevel = DangerLevel.High;
                break;

            default:
                wanteDangerLevel = DangerLevel.High;
                break;
            }

            if (Spells.R.CanCast() && sender.IsValidTarget(Spells.R.Range) && e.DangerLevel == wanteDangerLevel)
            {
                Spells.R.Cast();
            }
        }
Beispiel #4
0
 public Cell(DangerLevel cellLevel, int index, GameObject block, int spt, SCP cellInhabitant = null)
 {
     this.cellLevel      = cellLevel;
     this.cellInhabitant = cellInhabitant;
     this.index          = index;
     this.cellBlock      = block;
     this.spot           = spt;
     isFilled            = false;
 }
Beispiel #5
0
 /// <summary>
 /// Interrupter menu info
 /// </summary>
 public InterrupterMenuInfo(Champion champion, SpellSlot spellSlot, bool enabled, int percentHp, int enemiesNear, int delay, DangerLevel dangerLevel)
 {
     Champion    = champion;
     SpellSlot   = spellSlot;
     Enabled     = enabled;
     PercentHp   = percentHp;
     EnemiesNear = enemiesNear;
     Delay       = delay;
     DangerLevel = dangerLevel;
 }
 /// <summary>
 ///     Interruptable Target Data internal constructor
 /// </summary>
 /// <param name="sender">Sender or classifed Target</param>
 /// <param name="dangerLevel">Danger Level</param>
 /// <param name="endTime">Ending time of the spell</param>
 /// <param name="movementInterrupts">Does Movement Interrupts the spell</param>
 internal InterruptableTargetEventArgs(Obj_AI_Hero sender,
                                       DangerLevel dangerLevel,
                                       float endTime,
                                       bool movementInterrupts)
 {
     Sender             = sender;
     DangerLevel        = dangerLevel;
     EndTime            = endTime;
     MovementInterrupts = movementInterrupts;
 }
Beispiel #7
0
 internal static void RegisterSpell(string champName, SpellSlot slot, DangerLevel dangerLevel)
 {
     if (!SpellDatabase.ContainsKey(champName))
     {
         SpellDatabase.Add(champName, new List <InterruptableSpell>());
     }
     SpellDatabase[champName].Add(new InterruptableSpell {
         SpellSlot = slot, DangerLevel = dangerLevel
     });
 }
Beispiel #8
0
 /// <summary>
 /// Gapcloser menu info
 /// </summary>
 public GapcloserMenuInfo(string champion, string spellName, bool enabled, int percentHp, int enemiesNear, int delay, DangerLevel dangerLevel)
 {
     Champion    = champion;
     SpellName   = spellName;
     Enabled     = enabled;
     PercentHp   = percentHp;
     EnemiesNear = enemiesNear;
     Delay       = delay;
     DangerLevel = dangerLevel;
 }
Beispiel #9
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableSpellData" /> class.
 /// </summary>
 /// <param name="name">
 ///     Spell Name
 /// </param>
 /// <param name="dangerLevel">
 ///     Danger Level
 /// </param>
 /// <param name="slot">
 ///     The slot.
 /// </param>
 /// <param name="movementInterrupts">
 ///     Does movement interrupt the spell
 /// </param>
 public InterruptableSpellData(
     string name,
     DangerLevel dangerLevel,
     SpellSlot slot          = SpellSlot.Unknown,
     bool movementInterrupts = true)
 {
     this.Name               = name;
     this.DangerLevel        = dangerLevel;
     this.Slot               = slot;
     this.MovementInterrupts = movementInterrupts;
 }
Beispiel #10
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableTargetEventArgs" /> class.
 /// </summary>
 /// <param name="sender">
 ///     Sender or classified Target
 /// </param>
 /// <param name="dangerLevel">
 ///     Danger Level
 /// </param>
 /// <param name="endTime">
 ///     Ending time of the spell
 /// </param>
 /// <param name="movementInterrupts">
 ///     Does Movement Interrupts the spell
 /// </param>
 internal InterruptableTargetEventArgs(
     AIHeroClient sender,
     DangerLevel dangerLevel,
     float endTime,
     bool movementInterrupts)
 {
     this.Sender             = sender;
     this.DangerLevel        = dangerLevel;
     this.EndTime            = endTime;
     this.MovementInterrupts = movementInterrupts;
 }
Beispiel #11
0
 public InterrupterEventArgs(GameObject target, SpellSlot spellSlot, DangerLevel dangerLevel, string spellName, Vector3 start, Vector3 end, int delay, int enemies, int healthPercent, float gameTime)
 {
     Target        = target;
     SpellSlot     = spellSlot;
     DangerLevel   = dangerLevel;
     SpellName     = spellName;
     Start         = start;
     End           = end;
     Delay         = delay;
     Enemies       = enemies;
     HealthPercent = healthPercent;
     GameTime      = gameTime;
 }
Beispiel #12
0
        public static void InitializeModes()
        {
            switch (SpellsMenu.GetComboBoxValue("chance"))
            {
            case 0:
            {
                hitchance = HitChance.High;
            }
            break;

            case 1:
            {
                hitchance = HitChance.Medium;
            }
            break;

            case 2:
            {
                hitchance = HitChance.Low;
            }
            break;
            }

            switch (SpellsMenu.GetComboBoxValue("Intdanger"))
            {
            case 0:
            {
                Intdanger = DangerLevel.High;
            }
            break;

            case 1:
            {
                Intdanger = DangerLevel.Medium;
            }
            break;

            case 2:
            {
                Intdanger = DangerLevel.Low;
            }
            break;
            }
            Game.OnUpdate                    += Game_OnTick;
            Gapcloser.OnGapcloser            += Gapcloser_OnGapcloser;
            Interrupter.OnInterruptableSpell += Interrupter_OnInterruptableSpell;
        }
Beispiel #13
0
    //constructor for the SCP, defines all necessary parameters
    public SCP(int escapeChance, string name, string number, DangerLevel dl, bool contained)
    {
        this.escapeChance = escapeChance;
        this.name         = name;
        this.number       = number;
        this.dl           = dl;
        this.contained    = contained;

        if (!contained)
        {
            //capture difficulty
            captureDifficulty = 0;
            switch (DL)
            {
            case DangerLevel.keter:
                captureDifficulty += 100;
                break;

            case DangerLevel.euclid:
                captureDifficulty += 60;
                break;

            case DangerLevel.safe:
                captureDifficulty += 30;
                break;
            }
            if (captureDifficulty > GameManager.Instance.GetStaff(StaffType.security).Count * 2)
            {
                captureDifficulty -= GameManager.Instance.GetStaff(StaffType.security).Count * 2;
            }
            else
            {
                captureDifficulty = 1;
            }
        }
    }
Beispiel #14
0
        public static void OnInterruptableSpell(Obj_AI_Base sender, Interrupter.InterruptableSpellEventArgs args)
        {
            if (sender.IsMe || sender.IsAlly || !Config.IsChecked(Config.Interrupter, "bInterrupt"))
            {
                return;
            }

            switch (Config.GetComboBoxValue(Config.Interrupter, "dangerL"))
            {
            case 0:
                wanteDangerLevel = DangerLevel.Low;
                break;

            case 1:
                wanteDangerLevel = DangerLevel.Medium;
                break;

            case 2:
                wanteDangerLevel = DangerLevel.High;
                break;

            default:
                wanteDangerLevel = DangerLevel.High;
                break;
            }

            if (Spells.R.IsReady() && sender.IsValidTarget(Spells.R.Range) && args.DangerLevel == wanteDangerLevel)
            {
                var rPred = Spells.R.GetPrediction(sender);
                if (rPred.HitChancePercent >= 90)
                {
                    var delay = Mainframe.RDelay.Next(100, 120);
                    Core.DelayAction(() => Spells.R.Cast(rPred.CastPosition), delay);
                }
            }
        }
Beispiel #15
0
 public InterruptableTargetEventArgs(DangerLevel dangerLevel, float endTime, bool movementInterrupts)
 {
     DangerLevel = dangerLevel;
     EndTime = endTime;
     MovementInterrupts = movementInterrupts;
 }
Beispiel #16
0
 /// <summary>
 /// Gapcloser menu info
 /// </summary>
 public GapcloserMenuInfo(string champion, string spellName, bool enabled, int percentHp, int enemiesNear, int delay, DangerLevel dangerLevel)
 {
     Champion = champion;
     SpellName = spellName;
     Enabled = enabled;
     PercentHp = percentHp;
     EnemiesNear = enemiesNear;
     Delay = delay;
     DangerLevel = dangerLevel;
 }
Beispiel #17
0
 /// <summary>
 /// Gapcloser info
 /// </summary>
 /// <param name="dangerLevel">Spell's danger level</param>
 /// <param name="enemiesNear">Trigger only if x or less enemies are near</param>
 /// <param name="delay">Spell's delay</param>
 public GapcloserInfo(DangerLevel dangerLevel, int enemiesNear, int delay)
 {
     DangerLevel = dangerLevel;
     EnemiesNear = enemiesNear;
     Delay = delay;
 }
Beispiel #18
0
 /// <summary>
 /// Used to get the SCP by the name and the DangerLevel
 /// </summary>
 /// <param name="dangerLevel">The type that the SCP is</param>
 /// <param name="name">The name of the given SCP</param>
 /// <returns>Returns a given SCP object</returns>
 public SCP GetSCP(DangerLevel dangerLevel, string name)
 => scps[dangerLevel].Find(scp => scp.Name == name);
Beispiel #19
0
 /// <summary>
 /// Used to add a new SCP object to the room
 /// </summary>
 /// <param name="scpType">The type that the new SCP is</param>
 /// <param name="newSCP">The actual scp object</param>
 public void AddScp(DangerLevel scpType, SCP newSCP)
 => scps[scpType].Add(newSCP);
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableSpellData" /> class.
 /// </summary>
 /// <param name="slot">
 ///     Spell Slot
 /// </param>
 /// <param name="dangerLevel">
 ///     Danger Level
 /// </param>
 /// <param name="movementInterrupts">
 ///     Does movement interrupt the spell
 /// </param>
 public InterruptableSpellData(SpellSlot slot, DangerLevel dangerLevel, bool movementInterrupts = true)
 {
     this.Slot = slot;
     this.DangerLevel = dangerLevel;
     this.MovementInterrupts = movementInterrupts;
 }
Beispiel #21
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableSpell" /> class.
 /// </summary>
 /// <param name="slot">The slot.</param>
 /// <param name="dangerLevel">The danger level.</param>
 /// <param name="movementInterrupts">if set to <c>true</c> [movement interrupts].</param>
 public InterruptableSpell(SpellSlot slot, DangerLevel dangerLevel, bool movementInterrupts = true)
 {
     Slot               = slot;
     DangerLevel        = dangerLevel;
     MovementInterrupts = movementInterrupts;
 }
Beispiel #22
0
 /// <summary>
 /// Gapcloser info
 /// </summary>
 /// <param name="dangerLevel">Spell's danger level</param>
 /// <param name="enemiesNear">Trigger only if x or less enemies are near</param>
 /// <param name="delay">Spell's delay</param>
 public GapcloserInfo(DangerLevel dangerLevel, int enemiesNear, int delay)
 {
     DangerLevel = dangerLevel;
     EnemiesNear = enemiesNear;
     Delay       = delay;
 }
Beispiel #23
0
 /// <summary>
 /// Interrupter info
 /// </summary>
 /// <param name="dangerLevel">Spell's danger level</param>
 /// <param name="spellSlot">Spell's slot</param>
 public InterrupterInfo(DangerLevel dangerLevel, SpellSlot spellSlot)
 {
     DangerLevel = dangerLevel;
     SpellSlot   = spellSlot;
 }
Beispiel #24
0
 public InterruptableSpell(SpellSlot slot, DangerLevel dangerLevel, bool movementInterrupts = true)
 {
     Slot = slot;
     DangerLevel = dangerLevel;
     MovementInterrupts = movementInterrupts;
 }
Beispiel #25
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableTargetEventArgs" /> class.
 /// </summary>
 /// <param name="dangerLevel">The danger level.</param>
 /// <param name="endTime">The end time.</param>
 /// <param name="movementInterrupts">if set to <c>true</c> [movement interrupts].</param>
 public InterruptableTargetEventArgs(DangerLevel dangerLevel, float endTime, bool movementInterrupts)
 {
     DangerLevel        = dangerLevel;
     EndTime            = endTime;
     MovementInterrupts = movementInterrupts;
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableTargetEventArgs" /> class.
 /// </summary>
 /// <param name="sender">
 ///     Sender or classified Target
 /// </param>
 /// <param name="dangerLevel">
 ///     Danger Level
 /// </param>
 /// <param name="endTime">
 ///     Ending time of the spell
 /// </param>
 /// <param name="movementInterrupts">
 ///     Does Movement Interrupts the spell
 /// </param>
 internal InterruptableTargetEventArgs(
     Obj_AI_Hero sender, 
     DangerLevel dangerLevel, 
     float endTime, 
     bool movementInterrupts)
 {
     this.Sender = sender;
     this.DangerLevel = dangerLevel;
     this.EndTime = endTime;
     this.MovementInterrupts = movementInterrupts;
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableSpellData" /> class.
 /// </summary>
 /// <param name="name">
 ///     Spell Name
 /// </param>
 /// <param name="dangerLevel">
 ///     Danger Level
 /// </param>
 /// <param name="slot">
 ///     The slot.
 /// </param>
 /// <param name="movementInterrupts">
 ///     Does movement interrupt the spell
 /// </param>
 public InterruptableSpellData(
     string name,
     DangerLevel dangerLevel,
     SpellSlot slot = SpellSlot.Unknown,
     bool movementInterrupts = true)
 {
     this.Name = name;
     this.DangerLevel = dangerLevel;
     this.Slot = slot;
     this.MovementInterrupts = movementInterrupts;
 }
Beispiel #28
0
        public DetectionResult DetermineCancerOrWarningOrHealthy(out int Range, out DangerLevel DangerLevel, List <double> Currents, double[] Voltages, int IndexOfMax, Spec spec, int index)
        {
            DangerLevel = DangerLevel.free;

            DetectionResult Res = DetectionResult.Warning;

            Range = 100;

            var MaxValue = Currents[IndexOfMax];

            spec.MaxVoltage = Voltages[IndexOfMax];

            spec.voltageDelta1 = spec.MaxVoltage;
            double MinimumCurrentBeforeMax = 1000000;
            double MinimumCurrentAfterMax  = 1000000;

            //  spec =new Spec();
            spec.delta1 = 0;
            spec.delta2 = 0;

            for (int i = IndexOfMax; i > 0; i--)
            {
                if (MinimumCurrentBeforeMax > Currents[i])
                {
                    MinimumCurrentBeforeMax = Currents[i];
                }
                if (Voltages[i] < 0)
                {
                    break;
                }
            }

            for (int i = IndexOfMax; i < Currents.Count; i++)
            {
                if (MinimumCurrentAfterMax > Currents[i])
                {
                    MinimumCurrentAfterMax = Currents[i];
                    spec.voltageDelta2     = Voltages[i];
                }

                if (Voltages[i] > Voltages[i + 1])
                {
                    break;
                }
            }


            double DeltaCurrent1 = MaxValue;
            double DeltaCurrent2 = MaxValue - MinimumCurrentAfterMax;

            spec.delta1 = DeltaCurrent1;
            spec.delta2 = DeltaCurrent2;

            var Threshold = ConstantThreshold.GetInstance();

            double percent;
            var    dangerLavel = GetDangerLevel(spec.delta1, spec.delta2, out percent, index);


            spec.DangerLevel = dangerLavel;

            switch (dangerLavel)
            {
            case DangerLevel.free:
            case DangerLevel.free_warning:
                Res = DetectionResult.Healthy;
                break;

            case DangerLevel.danger:
                Res = DetectionResult.Cancer;
                break;


            case DangerLevel.warning:
            case DangerLevel.warning_danger:
                Res = DetectionResult.Warning;
                break;
            }


            return(Res);
        }
Beispiel #29
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="InterruptableSpellData" /> class.
 /// </summary>
 /// <param name="slot">
 ///     Spell Slot
 /// </param>
 /// <param name="dangerLevel">
 ///     Danger Level
 /// </param>
 /// <param name="movementInterrupts">
 ///     Does movement interrupt the spell
 /// </param>
 public InterruptableSpellData(SpellSlot slot, DangerLevel dangerLevel, bool movementInterrupts = true)
 {
     this.Slot               = slot;
     this.DangerLevel        = dangerLevel;
     this.MovementInterrupts = movementInterrupts;
 }
Beispiel #30
0
 public AnimalSafetyRules(string safetyRules, DangerLevel level)
 {
     SafetyRules  = safetyRules;
     CautionLevel = level;
 }