/// <summary> /// 使用特殊物品 /// </summary> /// <returns>属性变化</returns> /// <param name="itemForSpecialOperation">进行特殊操作的物品</param> /// <param name="refreshItemDetailCallBack">使用完成后更新物品描述的回调</param> public PropertyChange UseSpecialItem(Item itemForSpecialOperation, CallBackWithItem refreshItemDetailCallBack) { PropertyChange propertyChange = new PropertyChange(); switch (specialItemType) { case SpecialItemType.TuiMoJuanZhou: if (itemForSpecialOperation is Equipment) { Equipment equipment = itemForSpecialOperation as Equipment; // 使用退魔卷轴,移除装备上的所有属性宝石 PropertyGemstone[] propertyGemstones = equipment.RemovePropertyGemstons(); // 属性宝石重新添加进背包 for (int i = 0; i < propertyGemstones.Length; i++) { Player.mainPlayer.AddItem(propertyGemstones[i]); } // 刷新装备详细信息 if (refreshItemDetailCallBack != null) { refreshItemDetailCallBack(equipment); } // 重算人物属性 propertyChange = Player.mainPlayer.ResetBattleAgentProperties(false); GameManager.Instance.soundManager.PlayAudioClip(CommonData.xiaoMoAudioName); } break; case SpecialItemType.ChongZhuShi: if (itemForSpecialOperation is Equipment) { Equipment equipment = itemForSpecialOperation as Equipment; // 重铸装备 equipment.RebuildEquipment(); // 刷新装备详细信息页面 if (refreshItemDetailCallBack != null) { refreshItemDetailCallBack(equipment); } // 重算人物属性 propertyChange = Player.mainPlayer.ResetBattleAgentProperties(false); GameManager.Instance.soundManager.PlayAudioClip(CommonData.chongzhuAudioName); } break; case SpecialItemType.YinShenYuPai: int oriFadeStepLeft = ExploreManager.Instance.battlePlayerCtr.fadeStepsLeft; // 人物隐身20步 ExploreManager.Instance.battlePlayerCtr.fadeStepsLeft = Mathf.Max(oriFadeStepLeft, 20); GameManager.Instance.soundManager.PlayAudioClip(CommonData.yinShenAudioName); // 如果原来人物没有隐身,则播放隐身特效动画 if (oriFadeStepLeft == 0) { ExploreManager.Instance.battlePlayerCtr.SetEffectAnim(CommonData.yinShenEffectName, null, 0, 0); } break; case SpecialItemType.DianJinFuShi: if (itemForSpecialOperation is Equipment) { Equipment equipment = itemForSpecialOperation as Equipment; // 将装备重铸为金色品质 equipment.SetToGoldQuality(); // 刷新装备详细信息页面 if (refreshItemDetailCallBack != null) { refreshItemDetailCallBack(equipment); } // 重算人物属性 propertyChange = Player.mainPlayer.ResetBattleAgentProperties(false); GameManager.Instance.soundManager.PlayAudioClip(CommonData.dianjinAudioName); } break; case SpecialItemType.TieYaoShi: case SpecialItemType.TongYaoShi: case SpecialItemType.JinYaoShi: case SpecialItemType.WanNengYaoShi: case SpecialItemType.QiaoZhen: break; case SpecialItemType.QianDai: // 钱袋开出500金币 Player.mainPlayer.totalGold += 500; GameManager.Instance.soundManager.PlayAudioClip(CommonData.goldAudioName); break; case SpecialItemType.ShenMiYaoJi: // 神秘药剂增加2个技能点 Player.mainPlayer.skillNumLeft += 2; GameManager.Instance.soundManager.PlayAudioClip(CommonData.drinkAudioName); break; case SpecialItemType.ShenMiMianJu: // 神秘面具隐身30步 oriFadeStepLeft = ExploreManager.Instance.battlePlayerCtr.fadeStepsLeft; ExploreManager.Instance.battlePlayerCtr.fadeStepsLeft = Mathf.Max(oriFadeStepLeft, 30); if (oriFadeStepLeft == 0) { ExploreManager.Instance.battlePlayerCtr.SetEffectAnim(CommonData.yinShenEffectName, null, 0, 0); } GameManager.Instance.soundManager.PlayAudioClip(CommonData.yinShenAudioName); break; case SpecialItemType.JingYanZhiShu: // 经验之书直接升一级 Player.mainPlayer.agentLevel++; ExploreManager.Instance.expUICtr.ShowLevelUpPlane(); GameManager.Instance.soundManager.PlayAudioClip(CommonData.levelUpAudioName); break; case SpecialItemType.BaoXiang: // 宝箱开出1-3个高级宝石 int gemstoneCount = Random.Range(1, 4); List <PropertyGemstoneModel> allHighGradeGemstones = GameManager.Instance.gameDataCenter.allPropertyGemstoneModels.FindAll(delegate(PropertyGemstoneModel obj) { return(obj.grade == GemstoneGrade.High); }); for (int i = 0; i < gemstoneCount; i++) { int randomSeed = Random.Range(0, allHighGradeGemstones.Count); PropertyGemstoneModel propertyGemstoneModel = allHighGradeGemstones[randomSeed]; PropertyGemstone propertyGemstone = new PropertyGemstone(propertyGemstoneModel, 1); Player.mainPlayer.AddItem(propertyGemstone); } GameManager.Instance.soundManager.PlayAudioClip(CommonData.gemstoneAudioName); break; case SpecialItemType.CaoYao: // 草药回复40%生命 Player.mainPlayer.health += Mathf.RoundToInt(Player.mainPlayer.maxHealth * 0.4f); GameManager.Instance.soundManager.PlayAudioClip(CommonData.eatAudoiName); break; case SpecialItemType.QuSanChangDi: case SpecialItemType.QuSanLingDang: // 消灭地图上30%的怪物 ExploreManager.Instance.newMapGenerator.SomeMonstersToPool(0.3f); break; case SpecialItemType.HuoBa: case SpecialItemType.YouDeng: // 环境变亮 ExploreManager.Instance.newMapGenerator.SetUpExploreMask(1); break; case SpecialItemType.KaiGuan: ExploreManager.Instance.newMapGenerator.AllTrapsOff(); break; case SpecialItemType.SiYeCao: // 四叶草提升开宝箱是开出好装备的概率 Player.mainPlayer.luckInOpenTreasure = 1; //GameManager.Instance.persistDataManager.SaveCompletePlayerData(); GameManager.Instance.soundManager.PlayAudioClip(CommonData.siYeCaoAudioName); break; case SpecialItemType.XingYunYuMao: // 幸运羽毛提升怪物掉落物品的概率 Player.mainPlayer.luckInMonsterTreasure = 1; //GameManager.Instance.persistDataManager.SaveCompletePlayerData(); GameManager.Instance.soundManager.PlayAudioClip(CommonData.xingYunYuMaoAudioName); break; } return(propertyChange); }