Ejemplo n.º 1
0
        /// <summary>
        /// 弓矢を装備する
        /// </summary>
        /// <param name="bagIndex"></param>
        /// <returns></returns>
        public bool EquipArrow(int bagIndex)
        {
            Item equipArrow = bag[bagIndex];

            if (!(equipArrow is ConsumptionItem))
            {
                return(false);
            }

            if (((ConsumptionItem)equipArrow).GetTypeText() != "矢")
            {
                return(false);
            }

            if (leftHand == null)
            {
                return(false);
            }

            WeaponItem.WeaponType type = leftHand.GetWeaponType();
            if (type != WeaponItem.WeaponType.Bow)
            {
                return(false);
            }

            if (arrow != null)
            {
                bag.Add(arrow);
            }

            arrow = (ConsumptionItem)equipArrow;
            bag.RemoveAt(bagIndex);
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 右手に装備する
        /// </summary>
        /// <param name="bagIndex">バッグ内のIndex</param>
        public bool EquipRightHand(int bagIndex)
        {
            Item item = bag[bagIndex];

            if (!(item is WeaponItem))             //エラー対策
            {
                return(false);
            }

            WeaponItem.WeaponType type = ((WeaponItem)item).GetWeaponType();
            if (type == WeaponItem.WeaponType.Bow) //右手は弓を装備できない
            {
                return(false);
            }


            if (leftHand != null && leftHand.GetWeaponType() == WeaponItem.WeaponType.Bow) //弓は同時装備できない
            {
                bag.Add(leftHand);                                                         //バッグに戻す
                leftHand = null;
            }

            if (rightHand != null)                 //装備している状態
            {
                bag.Add(rightHand);                //バッグに戻す
            }

            rightHand = (WeaponItem)item;          //装備する
            bag.RemoveAt(bagIndex);
            return(true);
        }
Ejemplo n.º 3
0
 public static ItemAbstract intToItem(int index)
 {
     if (index < WeaponItem.numWeaponTypes)
     {
         if (index == 0)
         {
             return(new WeaponItem(WeaponItem.WeaponType.Error));
         }
         WeaponItem item;
         try
         {
             WeaponItem.WeaponType type = (WeaponItem.WeaponType)Enum.Parse(typeof(WeaponItem.WeaponType),
                                                                            (index / 6).ToString());
             int tier = index % 6 + 1;
             item = new WeaponItem(type, tier);
         }
         catch (ArgumentException err)
         {
             item = new WeaponItem(WeaponItem.WeaponType.Error);
         }
         return(item);
     }
     else if (index <= WeaponItem.numWeaponTypes + EngineItem.numEngineTypes)
     {
         index -= WeaponItem.numWeaponTypes;
         if (index == 0)
         {
             return(new EngineItem(EngineItem.EngineType.Error));
         }
         EngineItem item;
         try
         {
             EngineItem.EngineType type = (EngineItem.EngineType)Enum.Parse(typeof(EngineItem.EngineType),
                                                                            (index / 6).ToString());
             int tier = index % 6 + 1;
             item = new EngineItem(type, tier);
         }
         catch (ArgumentException err)
         {
             item = new EngineItem(EngineItem.EngineType.Error);
         }
         return(item);
     }
     return(new WeaponItem(WeaponItem.WeaponType.Error));
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 左手に装備する
        /// </summary>
        /// <param name="bagIndex">バッグ内のIndex</param>
        public bool EquipLeftHand(int bagIndex)
        {
            Item item = bag[bagIndex];

            if (!(item is WeaponItem))
            {
                                                 //エラー対策
                return(false);
            }


            WeaponItem.WeaponType type = ((WeaponItem)item).GetWeaponType();
            if (type == WeaponItem.WeaponType.Bow)     //弓は両手
            {
                if (rightHand != null && leftHand != null &&
                    bag.Count + 2 > MAX_ITEM_COUNT_BAG)      //両手いっぱいで、弓を装備する場合はカバンの容量をチェック
                {
                    return(false);
                }

                if (leftHand != null)                 //装備している状態
                {
                    bag.Add(leftHand);                //バッグに戻す
                }

                if (rightHand != null)                 //装備している状態
                {
                    bag.Add(rightHand);                //バッグに戻す
                    rightHand = null;
                }
            }
            else
            {
                if (leftHand != null)                 //装備している状態
                {
                    bag.Add(leftHand);                //バッグに戻す
                }
            }

            leftHand = (WeaponItem)item;          //装備する
            bag.RemoveAt(bagIndex);
            return(true);
        }
Ejemplo n.º 5
0
        public override void Attack()
        {
            var lefthand = status.GetInventory().LeftHand();
            var accesary = status.GetInventory().Accessary();

            WeaponItem.WeaponType weapontype = lefthand == null ? WeaponItem.WeaponType.Dagger : lefthand.GetWeaponType();
            string accesaryName = accesary == null ? string.Empty : accesary.GetItemName();

            while (true)
            {
                var attacknum = 10;
                switch (weapontype)
                {
                case WeaponItem.WeaponType.Bow:
                    if (status.GetInventory().IsArrowEquiped())
                    {
                        attacknum = accesaryName == "小綺麗な経典" ? 3 : 7;
                    }
                    else
                    {
                        ui.LogUI.AddLog("矢を装備していません");
                        return;
                    }
                    break;

                case WeaponItem.WeaponType.Sword:
                    attacknum = 4;
                    break;

                case WeaponItem.WeaponType.Shield:
                    attacknum = 10;
                    break;

                case WeaponItem.WeaponType.Dagger:
                    attacknum = 10;
                    break;

                default:
                    break;
                }
                if (accesaryName == "呪われた鞘")
                {
                    attacknum++;
                }
                if (accesaryName == "開かない古書")
                {
                    attacknum += 2;
                }
                if (accesaryName == "狂戦士の首飾り")
                {
                    characterManager.AreaDamage(status.GetPower() / 3);
                }
                attack = characterManager.GetAttack(attacknum).Clone(this, pManager);
                base.Attack();
                if (accesaryName == "四葉のクローバー" && rand.Next(0, 3) == 0)
                {
                    continue;
                }
                if (weapontype == WeaponItem.WeaponType.Bow)
                {
                    status.GetInventory().DecreaseArrow();
                }
                break;
            }
        }
Ejemplo n.º 6
0
 public static ItemAbstract newItem(WeaponItem.WeaponType type, int tier)
 {
     return(new WeaponItem(type, tier));
 }
Ejemplo n.º 7
0
 public static ItemAbstract newItem(WeaponItem.WeaponType type)
 {
     return(new WeaponItem(type));
 }