void RefreshActivityThread()
        {
            DateTime toEnd = activity.start.AddDays(7);
            long     time  = NumbersM.NParse <long>((toEnd - DateTime.UtcNow).TotalMilliseconds);

            ActivityThread((int)time, (int)(time - int.MaxValue));
        }
Example #2
0
 internal long PercentHealing(double percent, bool canOverheal = false)
 {
     if (percent > 0)
     {
         return(Healing(NumbersM.NParse <long>(Health() * percent), canOverheal));
     }
     return(0);
 }
Example #3
0
 internal long PercentHealing(int percent, bool canOverheal = false)
 {
     if (percent > 0)
     {
         return(Healing(NumbersM.NParse <long>(Health() * (percent / 100.00)), canOverheal));
     }
     return(0);
 }
Example #4
0
        internal int GetAreaFloorLevel(Random rng, int floor = -1)
        {
            double range = 0.20;
            int    fl    = NumbersM.NParse <int>(level * (1 + (floor / (5.00 * level))));

            int min = NumbersM.NParse <int>(fl * (1 - range));
            int max = NumbersM.NParse <int>(fl * (1 + range));

            return(rng.Next(min, max + 1));
        }
        public static string DefeatCost(Player player, NPC mob, double intensity = 1)
        {
            long xpDropped = NumbersM.NParse <long>(player.XPDrop(mob.level) * intensity);

            player.experience -= xpDropped;
            long coinsLost = Verify.Max(NumbersM.NParse <long>(((mob.Rank() + mob.level) * 2) * intensity), player.KCoins);

            player.KCoins -= coinsLost;
            //Log.CombatData(mob, player, xpDropped);
            mob.XpGain(xpDropped);
            return($"{player.name} lost {xpDropped} XP And {coinsLost} Kuts");
        }
Example #6
0
 public object[] SpikedArmor(CombatResult owner, CombatResult enemy)
 {
     if (enemy.abilityUsed != null && enemy.SentHit &&
         enemy.abilityUsed.type == Ability.AType.Martial)
     {
         long reflectedDamage = NumbersM.NParse <long>(enemy.baseDamage[0] *
                                                       Verify.Max(owner.character.stats.GetEND() * 0.01, 0.25));
         if (reflectedDamage > 0)
         {
             enemy.selfDamageTaken[0] += reflectedDamage;
             owner.perkProcs.Add($"{owner.Name} returned {reflectedDamage} to {enemy.Name}");
         }
     }
     return(new object[] { owner, enemy });
 }
        void FollowerCheck(NPC n, Party party, bool allPlayersDead)
        {
            int s = n.HealthStatus(out string status);

            /// >= 0 Is alive
            /// -1 is Down, -2 Fainted, -3 Unconscious, -4 Dead, -5 Vaporized
            if (s < -1 || allPlayersDead)
            {
                if (n.IsPet())
                {
                    if (party != null && s <= -4)
                    {
                        party.Remove(party.NPCMembers.FindIndex
                                         (x => x.origin == n.origin), null);
                    }
                    else
                    {
                        n.health  = n.Health();
                        n.stamina = n.Stamina();
                    }
                }
                else
                {
                    if (party != null)
                    {
                        party.NPCMembers.RemoveAt(party.NPCMembers.FindIndex
                                                      (x => x.displayName == n.displayName));
                    }
                    if (s > -4)
                    {
                        n.Respawn();
                    }
                }
            }
            else if (s >= -1)
            {
                long fullHealthCost = Verify.Max(
                    NumbersM.NParse <long>(100 - (((n.health + 0.00) / n.Health()) * 100))
                    , n.KCoins);
                if (fullHealthCost > 0)
                {
                    n.KCoins -= fullHealthCost;
                    n.health += NumbersM.CeilParse <long>(n.Health() * (fullHealthCost / 100.00));
                }
                n.stamina = n.Stamina();
                n.SelfGear();
            }
        }
Example #8
0
 internal int StaminaE(double percentage)
 {
     if (percentage != 0)
     {
         int maxSP = Stamina();
         if (percentage > 0 && stamina >= maxSP)
         {
             return(0);
         }
         else if (percentage < 0 && stamina <= 0)
         {
             return(0);
         }
         return(StaminaE(Math.Max(1, NumbersM.NParse <int>(maxSP * percentage))));
     }
     return(0);
 }
Example #9
0
        public object[] ToxinFilter(CombatResult owner, CombatResult enemy)
        {
            long toxicdmg = 0;

            if (enemy.SentHit && (toxicdmg = enemy.GetTotalDamage(3)) > 0)
            {
                if (RNG(101) <= 10 + (5 * rank))
                {
                    owner.perkProcs.Add($"Gained " + owner.character.StaminaE(
                                            NumbersM.NParse <int>(toxicdmg * (0.25 + (0.5 * rank)))) +
                                        $" Stamina from Toxin Filter");
                    rank = 0;
                }
                else if (rank < maxRank)
                {
                    rank++;
                }
            }
            return(new object[] { owner, enemy });
        }
Example #10
0
 public static void Heal(CombatResult caster, CombatResult target)
 {
     if (caster.SentHit)
     {
         Ability heal = caster.abilityUsed;
         long    mhp  = target.character.Health();
         if (target.character.HealthStatus(out string status) <= -4)
         {
             caster.perkProcs.Add($"{heal.name} is not powerful enough to have an effect on {status} targets");
         }
         else if (target.character.health >= mhp)
         {
             caster.perkProcs.Add($"Healed {target.Name} for 0HP");
         }
         else
         {
             double percHealing = ((heal.level + 10 + caster.character.stats.GetINT()) / 100.00);
             long   maxOutput   = NumbersM.NParse <long>(mhp * percHealing);
             long   healing     = target.character.Healing(maxOutput, true);
             caster.perkProcs.Add($"Healed {target.Name} for {healing}HP");
         }
     }
Example #11
0
        public long PowerLevel()
        {
            long power = Health() + Stamina() + Agility() + NumbersM.NParse <long>(CritChance() +
                                                                                   CritMult());

            for (int i = 0; i < ReferenceData.DmgType.Length; i++)
            {
                power += Damage(i) + Resistance(i);
            }
            if (stats.intelligence / 2 > 1)
            {
                power *= stats.intelligence / 2;
            }
            power += perks.Count * 20;
            for (int i = 0; i < 9; i++)
            {
                var g = equipment.GetGear(i);
                if (g != null && g.perk != null)
                {
                    power += 20;
                }
            }
            return(power);
        }
Example #12
0
        public long XpGain(double xpgain)
        {
            long xp = NumbersM.NParse <long>(xpgain);

            return(XpGain(xp));
        }
Example #13
0
 internal static int RandomInterval(int i, double m)
 => rng.Next(NumbersM.NParse <int>(i * (1 - m)), NumbersM.NParse <int>(i * (1 + m)));