public EquipmentItemBasis removeEquipment(EquipmentItemBasis equip,bool playsound,bool forcedremove)
 {
     EquipmentItemBasis ret=null;
     Debug.logger.LogFormat(LogType.Log, "Remove {0}", equip.Name);
     switch (equip.Code) {
         case ItemBasis.ItemCode.WEAPON:
             ret = Weapon;
             break;
         case ItemBasis.ItemCode.SHIELD:
             ret = Shield;
             break;
         case ItemBasis.ItemCode.SHOTITEM:
            ret = ShotItem;
             break;
         case ItemBasis.ItemCode.BANGLE:
             int idx = Array.IndexOf(Bangles, equip as BangleBasis);
             Debug.logger.LogFormat(LogType.Log, "Remove {0}:{1}", equip.Name, idx);
             idx = idx >= 0 ? idx : nextbanglepos;
             Debug.logger.LogFormat(LogType.Log, "Remove {0}:{1}", equip.Name, idx);
             ret = Bangles[idx];
             break;
     }
     if (ret != null)
     {
         if (ret.IsCursed && !forcedremove)
         {
             GameController.PlayingLogger.addLogFormat("{0} は呪われていて外せない!",ret.Name);
             return null;
         }
         else
         {
             ret.remove();
             switch (ret.Code)
             {
                 case ItemBasis.ItemCode.WEAPON:
                     Weapon = WeaponBasis.Dummy;
                     break;
                 case ItemBasis.ItemCode.SHIELD:
                     Shield = ShieldBasis.Dummy;
                     break;
                 case ItemBasis.ItemCode.SHOTITEM:
                     ShotItem = ShotItemBasis.Dummy;
                     break;
                 case ItemBasis.ItemCode.BANGLE:
                     int idx = Array.IndexOf(Bangles, ret);
                     Bangles[idx] = BangleBasis.Dummy;
                     break;
             }
         }
         if (playsound) GameController.SoundController.playSE(SoundNameList.Player_Equip);
         return ret;
     }
     else {
         return null;
     }
 }
 public void reset(bool retire)
 {
     base.reset();
     Controller.isDead = false;
     MaxHunger = BasisParameter.InitHunger;
     CurrentHunger = MaxHunger;
     CurrentHungerSpeed = BasisParameter.InitHugerSpeed;
     NextHungerCount = InitHunger;
     AutoHealSpeed = DefaultAutoHealSpeed;
     NextAutoHealCount = DefaultAutoHealSpeed;
     setLelelAtk();
     if (retire)
     {
         Inventory.clear();
         Weapon = WeaponBasis.Dummy;
         Shield = ShieldBasis.Dummy;
         ShotItem = ShotItemBasis.Dummy;
         Bangles = new BangleBasis[] { BangleBasis.Dummy, BangleBasis.Dummy };
         Pocket /= 10;
     }
 }
 public void equip(EquipmentItemBasis equipment,bool playsound = true,bool fromsavedata = false)
 {
     Debug.LogFormat("{0}",equipment.Name);
     equipment.equip(this.Controller as PlayerController,fromsavedata);
     if (equipment is WeaponBasis) { Weapon = equipment as WeaponBasis; }
     else if (equipment is ShieldBasis) { Shield = equipment as ShieldBasis; }
     else if (equipment is ShotItemBasis) { ShotItem = equipment as ShotItemBasis; }
     else if (equipment is BangleBasis) {
         Bangles[nextbanglepos] = equipment as BangleBasis;
         nextbanglepos = (nextbanglepos + 1) % Bangles.Length;
     }
     if(playsound) GameController.SoundController.playSE(SoundNameList.Player_Equip);
 }