Ejemplo n.º 1
0
        public List <string> Get()
        {
            if ((Price > 0) && (Character.Protagonist.Tanga >= Price))
            {
                Character.Protagonist.Tanga -= Price;

                Game.Option.Trigger(RemoveTrigger, remove: true);

                if (Benefit != null)
                {
                    Benefit.Do();
                }
            }
            else if (StatToMax && (Character.Protagonist.MaxBonus > 0))
            {
                Character.Protagonist.GetType().GetProperty(Stat).SetValue(Character.Protagonist, 12);
                Character.Protagonist.MaxBonus = 0;
            }
            else if (Character.Protagonist.StatBonuses >= 0)
            {
                int currentStat = (int)Character.Protagonist.GetType().GetProperty(Stat).GetValue(Character.Protagonist, null);

                currentStat += (StatStep > 1 ? StatStep : 1);

                Character.Protagonist.GetType().GetProperty(Stat).SetValue(Character.Protagonist, currentStat);
                Character.Protagonist.StatBonuses -= 1;
            }

            return(new List <string> {
                "RELOAD"
            });
        }
Ejemplo n.º 2
0
        public List <string> Get()
        {
            if ((Price > 0) && (Character.Protagonist.Tanga >= Price))
            {
                Character.Protagonist.Tanga -= Price;

                Used = true;

                if (Benefit != null)
                {
                    Benefit.Do();
                }
            }

            else if (Character.Protagonist.StatBonuses >= 0)
            {
                int currentStat = (int)Character.Protagonist.GetType().GetProperty(Stat).GetValue(Character.Protagonist, null);

                currentStat += 1;

                Character.Protagonist.GetType().GetProperty(Stat).SetValue(Character.Protagonist, currentStat);

                Character.Protagonist.StatBonuses -= 1;
            }

            return(new List <string> {
                "RELOAD"
            });
        }
Ejemplo n.º 3
0
        public List <string> Get()
        {
            if (!String.IsNullOrEmpty(RemoveTrigger))
            {
                Game.Option.Trigger(RemoveTrigger, remove: true);
            }

            if ((Price > 0) && (Character.Protagonist.Cents >= Price))
            {
                Character.Protagonist.Cents -= Price;

                if (!Multiple)
                {
                    Used = true;
                }

                if (Benefit != null)
                {
                    Benefit.Do();
                }
            }

            return(new List <string> {
                "RELOAD"
            });
        }
Ejemplo n.º 4
0
        public List <string> Get()
        {
            if (ThisIsSpell && (Character.Protagonist.SpellSlots >= 1))
            {
                Character.Protagonist.Spells.Add(Text);
                Character.Protagonist.SpellSlots -= 1;
            }
            else if ((Price > 0) && (Character.Protagonist.Gold >= Price))
            {
                Character.Protagonist.Gold -= Price;

                if (!Multiple)
                {
                    Used = true;
                }

                if (Benefit != null)
                {
                    Benefit.Do();
                }
            }

            return(new List <string> {
                "RELOAD"
            });
        }
Ejemplo n.º 5
0
        public List <string> GetSomething()
        {
            if (Benefit != null)
            {
                Benefit.Do();
            }

            Used = true;

            return(new List <string> {
                "RELOAD"
            });
        }
Ejemplo n.º 6
0
        public List <string> Get()
        {
            if (ThisIsSpell && (Character.Protagonist.Magicpoints >= 1))
            {
                Character.Protagonist.Spells.Add(Text);
                Character.Protagonist.SpellsReplica.Add(Text);
                Character.Protagonist.Magicpoints -= 1;
            }

            else if ((Specialization != null) && (Character.Protagonist.Specialization == Character.SpecializationType.Nope))
            {
                Character.Protagonist.Specialization = Specialization ?? Character.SpecializationType.Nope;

                if (Specialization == Character.SpecializationType.Warrior)
                {
                    Character.Protagonist.Strength += 1;
                }

                else if (Specialization == Character.SpecializationType.Thrower)
                {
                    Character.Protagonist.Magicpoints += 1;
                }

                else
                {
                    Character.Protagonist.Magicpoints    += 2;
                    Character.Protagonist.Transformation += 2;
                }
            }

            else if ((Price > 0) && (Character.Protagonist.Gold >= Price))
            {
                Character.Protagonist.Gold -= Price;
                Used = true;
            }

            if (!String.IsNullOrEmpty(OnlyOne))
            {
                Game.Option.Trigger(OnlyOne);
            }

            if (Benefit != null)
            {
                Benefit.Do();
            }

            return(new List <string> {
                "RELOAD"
            });
        }
Ejemplo n.º 7
0
        public List <string> Get()
        {
            if ((Price > 0) && (Character.Protagonist.Creds >= Price))
            {
                Character.Protagonist.Creds -= Price;

                if (Benefit != null)
                {
                    Benefit.Do();
                }
            }

            return(new List <string> {
                "RELOAD"
            });
        }
Ejemplo n.º 8
0
        public List <string> Reaction()
        {
            List <string> reaction = new List <string>();

            bool goodReaction = GoodReaction(ref reaction);

            reaction.Add(goodReaction ? "BIG|GOOD|СРЕАГИРОВАЛИ :)" : "BIG|BAD|НЕ СРЕАГИРОВАЛИ :(");

            if (goodReaction && (Benefit != null))
            {
                Benefit.Do();
            }

            if (!goodReaction && (Damage != null))
            {
                Damage.Do();
            }

            return(reaction);
        }
Ejemplo n.º 9
0
        public List <string> Fight()
        {
            List <string> fight = new List <string>();

            Dictionary <int, string> rangeType = Constants.GetRangeTypes();

            List <int>    myCombination     = new List <int>();
            List <string> myCombinationLine = new List <string>();

            int combinationLength = 6 + Character.Protagonist.Fury;

            for (int i = 0; i < combinationLength; i++)
            {
                int dice = Game.Dice.Roll();
                myCombination.Add(dice);
                myCombinationLine.Add(Game.Dice.Symbol(dice));
            }

            fight.Add(String.Format("Ваша комбинация: {0}", String.Join(String.Empty, myCombinationLine.ToArray())));

            List <int>    enemyCombination     = new List <int>();
            List <string> enemyCombinationLine = new List <string>();

            foreach (string dice in EnemyCombination.Split('-'))
            {
                enemyCombinationLine.Add(Game.Dice.Symbol(int.Parse(dice)));
            }

            fight.Add(String.Format("Его комбинация: {0}", String.Join(String.Empty, enemyCombinationLine.ToArray())));

            if (Upgrade(ref myCombination, ref myCombinationLine, ref fight))
            {
                fight.Add(String.Format("Теперь ваша комбинация: {0}", String.Join(String.Empty, myCombinationLine.ToArray())));
            }

            bool birds = Birds;

            while (true)
            {
                if (myCombination.Contains(1))
                {
                    fight.Add(String.Empty);
                    fight.Add("BOLD|МАНЕВРИРОВАНИЕ");

                    int  maneuvers     = CountInCombination(myCombination, 1);
                    bool failManeuvers = true;

                    foreach (int dice in new int[] { 6, 5, 4 })
                    {
                        for (int i = 0; i < enemyCombination.Count; i++)
                        {
                            if ((enemyCombination[i] == dice) && (maneuvers > 0))
                            {
                                fight.Add(String.Format("Убираем у противника {0}-ку за ваше маневрирование", dice));
                                enemyCombination[i] = 0;
                                maneuvers          -= 1;
                                failManeuvers       = false;
                            }
                        }
                    }

                    if (failManeuvers)
                    {
                        fight.Add("Маневрирование ничего не дало противникам");
                    }
                }

                foreach (int range in new int[] { 6, 5, 4 })
                {
                    fight.Add(String.Empty);
                    fight.Add(String.Format("BOLD|{0}", rangeType[range]));

                    int roundResult = 0;

                    if (!myCombination.Contains(range) && !enemyCombination.Contains(range))
                    {
                        fight.Add("Противникам нечего друг другу противопоставить");
                    }

                    else if (myCombination.Contains(range) && !enemyCombination.Contains(range))
                    {
                        roundResult = 1;

                        if (range == 4)
                        {
                            fight.Add("BIG|GOOD|Вы уничтожили противника тараном, оружием героев :)");

                            if (Benefit != null)
                            {
                                Benefit.Do();
                            }

                            return(fight);
                        }
                        else
                        {
                            fight.Add("GOOD|Вы накрыли противника огнём");
                        }
                    }
                    else if (!myCombination.Contains(range) && enemyCombination.Contains(range))
                    {
                        roundResult = -1;

                        if (range == 4)
                        {
                            fight.Add("BIG|BAD|Противник уничтожил вас тараном :(");
                            Character.Protagonist.Hitpoints = 0;
                            return(fight);
                        }
                        else
                        {
                            fight.Add("BAD|Противник накрыл вас огнём");
                        }
                    }
                    else
                    {
                        fight.Add(range == 4 ? "Взаимные манёвры:" : "Перестрелка:");

                        while (roundResult == 0)
                        {
                            string bonuses = String.Empty;

                            int myDice   = Game.Dice.Roll();
                            int myBonus  = CountInCombination(myCombination, range);
                            int myAttack = myDice + myBonus;

                            if (myBonus > 0)
                            {
                                bonuses = String.Format(", +{0} за {1}-ки, итого {2}", myBonus, range, myAttack);
                            }

                            fight.Add(String.Format("Ваша атака: {0}{1}", Game.Dice.Symbol(myDice), bonuses));

                            bonuses = String.Empty;

                            int enemyDice   = Game.Dice.Roll();
                            int enemyBonus  = CountInCombination(enemyCombination, range);
                            int enemyAttack = enemyDice + enemyBonus;

                            if (enemyBonus > 0)
                            {
                                bonuses = String.Format(", +{0} за {1}-ки, итого {2}", enemyBonus, range, enemyAttack);
                            }


                            fight.Add(String.Format("Атака противника: {0}{1}", Game.Dice.Symbol(enemyDice), bonuses));

                            if ((myAttack > enemyAttack) && (range == 4))
                            {
                                fight.Add("BIG|GOOD|Вы уничтожили противника тараном, оружием героев :)");

                                if (Benefit != null)
                                {
                                    Benefit.Do();
                                }

                                return(fight);
                            }
                            else if ((myAttack < enemyAttack) && (range == 4))
                            {
                                fight.Add("BIG|BAD|Противник уничтожил вас тараном :(");
                                Character.Protagonist.Hitpoints = 0;
                                return(fight);
                            }
                            else if (myAttack > enemyAttack)
                            {
                                roundResult = 1;
                                fight.Add("GOOD|Вы подавили противника огнём");
                            }
                            else if (myAttack < enemyAttack)
                            {
                                roundResult = -1;
                                fight.Add("BAD|Противник подавил вас огнём");
                            }
                            else
                            {
                                fight.Add("Перестрелка продолжается:");
                            }
                        }
                    }

                    if (roundResult == 1)
                    {
                        string bonuses = String.Empty, penalties = String.Empty;

                        int myDice       = Game.Dice.Roll();
                        int myBonus      = CountInCombination(myCombination, 3);
                        int myPenalty    = CountInCombination(enemyCombination, 2);
                        int enemyEvasion = myDice + myBonus - myPenalty;

                        if (myBonus > 0)
                        {
                            bonuses = String.Format(", +{0} за ваши 3-ки", myBonus);
                        }

                        if (myPenalty > 0)
                        {
                            penalties = String.Format(", -{0} за его 2-ки", myPenalty);
                        }

                        fight.Add(String.Format("Противник пытется уклониться: {0}{1}{2}, итого {3} - это {4} порогового значения '2'",
                                                Game.Dice.Symbol(myDice), bonuses, penalties, enemyEvasion, Game.Other.Сomparison(enemyEvasion, 2)));

                        if (enemyEvasion > 2)
                        {
                            if (birds)
                            {
                                fight.Add("GOOD|Вы уничтожили одну из птиц");

                                birds = false;

                                foreach (int dice in new int[] { 5, 4, 3 })
                                {
                                    enemyCombination.RemoveAt(dice);
                                }
                            }
                            else
                            {
                                fight.Add("BIG|GOOD|Вы уничтожили противника :)");

                                if (Benefit != null)
                                {
                                    Benefit.Do();
                                }

                                return(fight);
                            }
                        }
                        else
                        {
                            fight.Add("Противник смог уклониться");
                        }
                    }
                    else if (roundResult == -1)
                    {
                        string bonuses = String.Empty, penalties = String.Empty;

                        int enemyDice    = Game.Dice.Roll();
                        int enemyBonus   = CountInCombination(enemyCombination, 3);
                        int enemyPenalty = CountInCombination(myCombination, 2);
                        int myEvasion    = enemyDice + enemyBonus - enemyPenalty;

                        if (enemyBonus > 0)
                        {
                            bonuses = String.Format(", +{0} за его 3-ки", enemyBonus);
                        }

                        if (enemyPenalty > 0)
                        {
                            penalties = String.Format(", -{0} за ваши 2-ки", enemyPenalty);
                        }

                        fight.Add(String.Format("Вы пытется уклониться: {0}{1}{2}, итого {3} - это {4} порогового значения '2'",
                                                Game.Dice.Symbol(enemyDice), bonuses, penalties, myEvasion, Game.Other.Сomparison(myEvasion, 2)));

                        if (myEvasion > 2)
                        {
                            fight.Add("BIG|BAD|Противник уничтожил вас :(");
                            Character.Protagonist.Hitpoints = 0;
                            return(fight);
                        }
                        else
                        {
                            fight.Add("Вы смогли уклониться");
                        }
                    }
                }

                fight.Add("BOLD|Бой окончился ничьёй");

                return(fight);
            }
        }