/// <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); }
/// <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; } }