public static void ApplyEffect(Actor target, WeaponSkills weaponSkill, bool verbose, EffectSnapshot effectSnapshot = null)
 {
     switch (weaponSkill)
     {
         case WeaponSkills.HeavyThrust:
             ApplyEffect(target, StatusEffects.HeavyThrust, 24, verbose);
             break;
         case WeaponSkills.Disembowel:
             ApplyEffect(target, StatusEffects.Disembowel, 30, verbose);
             break;
         case WeaponSkills.ChaosThrust:
             Debug.Assert(effectSnapshot != null, "effectSnapshot != null");
             effectSnapshot.Duration = (long) TimeSpan.FromSeconds(30).TotalMilliseconds;
             ApplyDamageOverTime(target, StatusEffects.ChaosThrust, effectSnapshot, verbose);
             break;
         case WeaponSkills.Phlebotomize:
             Debug.Assert(effectSnapshot != null, "effectSnapshot != null");
             effectSnapshot.Duration = (long)TimeSpan.FromSeconds(24).TotalMilliseconds;
             ApplyDamageOverTime(target, StatusEffects.Phlebotomize, effectSnapshot, verbose);
             break;
     }
 }
        private static void ApplyDamageOverTime(Actor target, StatusEffects statusEffect, EffectSnapshot effectSnapshot, bool verbose)
        {
            if (!(target.DamageOverTimeEffects.ContainsKey(statusEffect)))
            {
                if (verbose)
                {
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine($"{statusEffect} applied!");
                }

                target.DamageOverTimeEffects.Add(statusEffect, effectSnapshot);
            }
            else
            {
                if (verbose)
                {
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine($"{statusEffect} refreshed!");
                }

                target.DamageOverTimeEffects[statusEffect] = effectSnapshot;
            }
        }