Exemple #1
0
 public override void OnUse(ref CPet user, ref CMonster opponent)
 {
     opponent.Info.DownDur(1, true);
     ConsoleUtil.WriteColor($"{opponent.Name}의 물리 방어력이 감소 했습니다. {opponent.Info.curAdDurDown}");
     opponent.Info.DownDur(1, false);
     ConsoleUtil.WriteColor($"{opponent.Name}의 마법 방어력이 감소 했습니다. {opponent.Info.curApDurDown}");
 }
Exemple #2
0
        public override void OnUse(ref CPet user, ref CMonster opponent)
        {
            user.Info.DownDur(-1, true);
            user.Info.DownDur(-1, false);

            ConsoleUtil.WriteColor("방어력이 증가했습니다.");
        }
Exemple #3
0
    public void OnTriggerEnter(Collider other)
    {
        CMonster monster = game.getLevel().getMonster();

        if (other.gameObject == monster.getGameObject())
        {
            monster.detectedPlayerAudio();
        }
    }
Exemple #4
0
        public override void OnUse(ref CPet user, ref CMonster opponent)
        {
            var dmg = BattleManager.CalDamage(
                this.Damage,
                EntityTypeExtension.CheckCompacity(user.Type, opponent.Type),
                user.Info.AdAtk,
                user.Info.ApAtk,
                DmgType.ATTACK_DAMAGE
                );

            opponent.Info.DealDmg(dmg);
            this.Point--;
        }
Exemple #5
0
    /// <summary>
    /// Initializes a new instance of the <see cref="CLevel"/> class.
    /// </summary>
    public CLevel()
    {
        game = GameObject.Find("_Game").GetComponent <CGame>();
        Vector2 posPlayer  = new Vector2(0.0f, 0.0f);
        Vector2 posMonster = new Vector2(100.0f, 0.0f);

        m_Player = new CPlayer(posPlayer, true);
        //m_Player2 =  new CPlayer();
        //m_Player3 =  new CPlayer();
        m_Monster           = new CMonster(posMonster);
        m_bTimerLightSwitch = 0;

        // all game elements ?
        m_pElement = new List <CElement>();
    }
    private void InitTheGame()
    {
        CMonster curMonster = null;
        Random   rnd        = new Random();

        //sample random
        if ((rnd.Next() % 2) == 0)
        {
            curMonster = new CGollum();
        }
        else
        {
            curMonster = new CUgly_Spider();
        }
        curMonster.Run();       //when (rnd.Next() % 2) == 0 then the Gollum is doing else the Ugly_Spider
        curMonster.Attach();    //when (rnd.Next() % 2) == 0 then the Gollum is doing else the Ugly_Spider
        curMonster.CastSpell(); //when (rnd.Next() % 2) == 0 then the Gollum is doing else the Ugly_Spider
    }
Exemple #7
0
        public override IPositionable CreateUnit(XElement traderData)
        {
            if (traderData == null)
            {
                throw new ArgumentNullException(nameof(traderData));
            }

            XElement itemsData = traderData.Element("items");

            var traderItems = new List <IInventoryItem>();

            if (itemsData != null)
            {
                traderItems = itemsData.Elements("item")
                              .Select(itemElement =>
                {
                    String type = itemElement.Attribute("type")?.Value;

                    var itemType = (EItemTypes)Enum.Parse(typeof(EItemTypes), type, true);
                    CItemFactoryMethod itemFactory = CItemFactoryMethod.GetFactory(itemType);

                    return(itemFactory.Create(itemElement));
                })
                              .ToList();
            }


            var maxHpData = traderData.Element("MaxHp")?.Value ?? throw new Exception("Element 'MaxHp' must by on Monster");
            var maxHp     = Int32.Parse(maxHpData);

            var damageData = traderData.Element("Damage")?.Value ?? throw new Exception("Element 'Damage' must by on Monster");
            var damage     = Int32.Parse(damageData);


            var trader = new CMonster(maxHp, damage);

            return(trader);
        }
Exemple #8
0
 public RoadMonster(CMonster monster, double frequency)
 {
     this.monster   = monster;
     this.frequency = frequency;
 }
Exemple #9
0
        protected void AddMonster(CMonster monster, double frequency)
        {
            var rm = new RoadMonster(monster, frequency);

            Monsters.Add(rm);
        }
Exemple #10
0
 public abstract void OnUse(ref CPet user, ref CMonster opponent);
Exemple #11
0
        public static void StartBattle(CMonster opponent, double expCoe = 1.15)
        {
            if (CurrentPlayer.Pets.Length < 1 || CurrentPlayer.IsAllPetDead)
            {
                ConsoleUtil.WriteColor("전투가능한 펫이 없슴니다.");
                ConsoleUtil.Pause();
                return;
            }

            var random   = new Random();
            var firstAtk = random.Next(0, 2) == 0;

            Console.Clear();
            ConsoleUtil.WriteColor("전투가 시작되었습니다.");
            ConsoleUtil.WriteColor(opponent.ToString());
            ConsoleUtil.Pause();

            var pet = SelectPet();

            if (pet == -1)
            {
                return;
            }

            CurrentPlayer.Pets[pet].Info.Reset();
            opponent.Info.Reset();

            do
            {
                if (CurrentPlayer.Pets[pet].IsDead)
                {
                    int switched;
                    do
                    {
                        switched = SelectPet();
                    }while (CurrentPlayer.Pets[switched].IsDead);

                    pet = switched;
                }

                Console.Clear();

                ShowRound(pet, opponent);

                int action = -1;
                while (true)
                {
                    action = SelectAction();

                    if (
                        (action == 1 && CurrentInventory.Items.Count < 1) ||
                        (action == 2 && CurrentPlayer.GetPetsCount() < 2)
                        )
                    {
                        ConsoleUtil.WriteColor("불가능한 선택입니다.");
                        ConsoleUtil.Pause();
                    }
                    else
                    {
                        break;
                    }
                }

#nullable enable
                SSkill?skill = null;

                switch (action)
                {
                case 0: // Attack
                    skill = SelectSkill(pet);
                    break;

                case 1: // Use Item
                    var result = false;
                    do
                    {
                        var item   = SelectItem();
                        var usable = CurrentInventory.Items[item].Item as IUsableItem;
                        result = usable !.OnUse(CurrentPlayer.Pets[pet], opponent);
                        CurrentInventory.MinusItem(CurrentInventory.Items[item].Item, 1);

                        if (!result)
                        {
                            ConsoleUtil.WriteColor("아이템 사용에 실패했습니다.");
                            ConsoleUtil.Pause();
                        }
                        else
                        {
                            ConsoleUtil.WriteColor("아이템을 사용했습니다.");
                            ConsoleUtil.Pause();
                        }
                    }while (!result);

                    break;

                case 2: // Swap Pet
                    int switched;
                    do
                    {
                        switched = SelectPet();
                    }while (pet == switched);

                    pet = switched;

                    ConsoleUtil.WriteColor($"펫을 {CurrentPlayer.Pets[switched].Name}으로 교체했습니다.");
                    ConsoleUtil.Pause(true);
                    break;
                }

                if (firstAtk)
                {
                    if (action == 0)
                    {
                        PetAttack(pet, opponent, skill !);
                    }

                    if (opponent.IsDead)
                    {
                        break;
                    }
                    MonsterAttack(pet, opponent);
                }
                else
                {
                    MonsterAttack(pet, opponent);
                    if (CurrentPlayer.Pets[pet].IsDead)
                    {
                        return;
                    }
                    if (action == 0)
                    {
                        PetAttack(pet, opponent, skill !);
                    }
                }
            }while (!CurrentPlayer.IsAllPetDead && !opponent.IsDead);