示例#1
0
        /// <summary>
        /// カバン内の弓矢を自動スタック処理
        /// </summary>
        /// <param name="arrow"></param>
        private void AddArrow(ConsumptionItem arrow)
        {
            foreach (Item i in bag)
            {
                if ((!(i is ConsumptionItem)))
                {
                    continue;
                }

                if (((ConsumptionItem)i).GetItemID() != arrow.GetItemID())
                {
                    continue;
                }

                int leftStock = ((ConsumptionItem)i).GetAmountLimit() - ((ConsumptionItem)i).GetStack();
                if (arrow.GetStack() <= leftStock)
                {
                    ((ConsumptionItem)i).AddStack(arrow.GetStack());
                    return;
                }
                else
                {
                    ((ConsumptionItem)i).AddStack(leftStock);
                    arrow.AddStack(-leftStock);
                }
            }

            bag.Add(arrow);
        }
示例#2
0
        /// <summary>
        /// ステータスを加算して返す
        /// </summary>
        /// <param name="power">攻撃力</param>
        /// <param name="defence">防御力</param>
        /// <param name="weight">重量</param>
        public void GetStatus(ref int power, ref int defence, ref float weight)
        {
            power   = 0;
            defence = 0;
            weight  = 0;

            foreach (Item i in bag)               //ItemListの重量計算
            {
                if (i != null)
                {
                    if (i is ConsumptionItem)
                    {
                        weight += i.GetItemWeight() * ((ConsumptionItem)i).GetStack();
                    }
                    else
                    {
                        weight += i.GetItemWeight();
                    }
                }
            }

            foreach (ProtectionItem p in armor)   //防具の計算
            {
                if (p == null)
                {
                    continue;
                }
                power   += p.GetPower();
                defence += p.GetDefense();
                weight  += p.GetItemWeight() * 1.2f;
            }

            if (leftHand != null)                 //左手のものを計算
            {
                float increaseRate = 1.2f;
                if (leftHand.GetWeaponType() == WeaponItem.WeaponType.Dagger)
                {
                    increaseRate = -1.2f;
                }

                power   += leftHand.GetPower();
                defence += leftHand.GetDefense();
                weight  += leftHand.GetItemWeight() * increaseRate;
            }

            if (rightHand != null)
            {
                                                 //右手のものを計算
                {
                    float increaseRate = 1.2f;

                    if (rightHand.GetWeaponType() == WeaponItem.WeaponType.Dagger)
                    {
                        increaseRate = -1.2f;
                    }

                    power   += rightHand.GetPower();
                    defence += rightHand.GetDefense();
                    weight  += rightHand.GetItemWeight() * increaseRate;
                }
            }

            if (arrow != null)
            {
                ArrowEffect effect = (ArrowEffect)arrow.GetItemEffect();
                power  += effect.GetPower();
                weight += arrow.GetItemWeight() * arrow.GetStack();
            }

            if (accessary != null)
            {
                weight += accessary.GetItemWeight();
            }

            if (weight < 0)                        //ダガーのスピード増加に対応
            {
                weight = 0;
            }
        }