Ejemplo n.º 1
0
        private static string RestoreTimeLeft(CharacterMotherClass player, bool isHP)
        {
            double restores = RestorePerSeconds(player.stats.GetDEX(), isHP);
            double totalSeconds;

            if (isHP)
            {
                long   mhp  = player.Health();
                double hpps = mhp * restores;
                totalSeconds = (mhp - player.health) / hpps;
            }
            else
            {
                int    shp  = player.Stamina();
                double spps = shp * restores;
                totalSeconds = (shp - player.stamina) / spps;
            }

            double vagueMinutes = totalSeconds / 60.00;
            double hours        = Math.Floor(vagueMinutes / 60);
            double minutes      = Math.Floor(vagueMinutes - (hours * 60));

            return((hours > 0 ? $"{hours}h " : "") +
                   (minutes > 0 ? $"{minutes}m " : "") +
                   $"{Math.Floor(totalSeconds - (Math.Floor(vagueMinutes) * 60))}s ");
        }
Ejemplo n.º 2
0
        public static List <string> AllArmorCND(CharacterMotherClass user)
        {
            List <string> results = new List <string>();

            for (int i = 2; i <= Equipment.gearCount; i++)
            {
                Item gear = user.equipment.GetGear(i);
                if (gear != null && (i > 7 || i < 5))
                {
                    Condition(gear, user.stats.endurance);
                    if (VerifyOnBreak(gear, user))
                    {
                        results.Add($"{gear.name} has broken");
                    }
                }
            }
            return(results);
        }
Ejemplo n.º 3
0
        public static bool VerifyOnBreak(this Item item, CharacterMotherClass character)
        {
            if (item.condition < 1)
            {
                Item equipped = character.equipment.GetGear(item.type);
                if (equipped != item)
                {
                    return(false);
                }

                character.equipment.Unequip(item.type);

                character.inventory.Add(item, 1, -1);

                return(true);
            }

            return(false);
        }
Ejemplo n.º 4
0
        private static EmbedFieldBuilder RestRecover(CharacterMotherClass character, double totalSeconds)
        {
            long maxHealth  = character.Health();
            int  maxStamina = character.Stamina();

            int dex = character.stats.GetDEX();

            double hpps       = RestorePerSeconds(dex, true);
            long   hpRestored = Math.Min(maxHealth - character.health,
                                         NumbersM.FloorParse <long>(maxHealth * hpps * totalSeconds));

            character.health += hpRestored;

            double spps       = RestorePerSeconds(dex, false);
            int    spRestored = Math.Min(maxStamina - character.stamina,
                                         NumbersM.FloorParse <int>(maxStamina * spps * totalSeconds));

            character.stamina += spRestored;

            return(DUtils.NewField(character.name,
                                   $"Restored {hpRestored} Health and {spRestored} Stamina", true));
        }
Ejemplo n.º 5
0
 internal static object[] CheckPerks(CharacterMotherClass player,
                                     Perk.Trigger trigger, params object[] arguments)
 {
     return(CheckPerksM(player, trigger, arguments));
 }
Ejemplo n.º 6
0
        }//*/

        internal static T CheckPerks <T>(CharacterMotherClass player,
                                         Perk.Trigger trigger, T arguments)
        {
            return((T)CheckPerksM(player, trigger, arguments)[0]);
        }
Ejemplo n.º 7
0
 internal static object[] CheckPerksM(CharacterMotherClass player,
                                      Perk.Trigger trigger, params object[] arguments)
 {
     if (player.perks != null && player.perks.Count > 0)
     {
         for (int i = 0; i < player.perks.Count; i++)
         {
             Perk p = player.perks[i];
             try
             {
                 if (p.trigger == trigger)
                 {
                     arguments = p.Run(player, false, arguments);
                 }
                 if (p.end != Perk.Trigger.Null && p.end == trigger)
                 {
                     arguments = p.Run(player, true, arguments);
                 }
             }
             catch (Exception e)
             {
                 _ = Handlers.UniqueChannels.Instance.SendToLog(e, $"Error in perk {p.name}");
             }
         }
     }
     for (int i = 0; i < Equipment.gearCount; i++)
     {
         var gear = player.equipment.GetGear(i);
         if (gear?.perk != null)
         {
             try
             {
                 if (gear.perk.trigger == trigger)
                 {
                     arguments = gear.perk.Run(player, false, arguments);
                 }
                 if (gear.perk.end != Perk.Trigger.Null && gear.perk.end == trigger)
                 {
                     arguments = gear.perk.Run(player, true, arguments);
                 }
             }
             catch (Exception e) { _ = Handlers.UniqueChannels.Instance.SendToLog(e, $"Error in equipment perk {gear?.perk?.name}"); }
         }
     }
     if (player.status != null)
     {
         for (int i = 0; i < player.status.Count;)
         {
             var p = player.status[i];
             try
             {
                 if (p.trigger == trigger)
                 {
                     arguments = p.Run(player, false, arguments);
                 }
                 if (p.end != Perk.Trigger.Null && p.end == trigger)
                 {
                     arguments = p.Run(player, true, arguments);
                 }
             }
             catch (Exception e) { _ = Handlers.UniqueChannels.Instance.SendToLog(e, $"Error in status {p.name}"); }
             //
             if (p.rank <= 0)
             {
                 player.status.RemoveAt(i);
             }
             else
             {
                 i++;
             }
         }
     }
     return(arguments);
 }//*/
Ejemplo n.º 8
0
 private static EmbedFieldBuilder PlayerRestField(CharacterMotherClass player)
 => DUtils.NewField(player.name, $"Full health in {RestoreTimeLeft(player, true)}"
                    + Environment.NewLine + $"Fill stamina in {RestoreTimeLeft(player, false)}", true);