/// <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); }
/// <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); }
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)); }
/// <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); }
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; } }
public static ItemAbstract newItem(WeaponItem.WeaponType type, int tier) { return(new WeaponItem(type, tier)); }
public static ItemAbstract newItem(WeaponItem.WeaponType type) { return(new WeaponItem(type)); }