/// <summary> /// 根据战斗技能数据穿件buff控制列表 /// </summary> /// <param name="each">战斗技能数据</param> public int createBuffCtrlList(BattleSkillErlang each) { //buff if (each.skillMsg.operationType == BattleReportService.ATTR_CHANGE || each.skillMsg.operationType == BattleReportService.BUFFER_ADD || each.skillMsg.operationType == BattleReportService.BUFFER_REPLACE || each.skillMsg.operationType == BattleReportService.BUFFER_REMOVE) { //如果没有上次技能,说明第一个是buff,不合格式,跳过 BuffCtrl newBuff = new BuffCtrl(); if (lastSkill == null) { Debug.Log("error format!!!!!"); return(0); } //关于Hp的buff if (each.skillMsg.operationType == BattleReportService.ATTR_CHANGE && each.skillMsg.valueType == StringKit.toInt(BattleReportService.HP)) { each.skillMsg.skillSID = BuffSampleManager.SID_HP; } //关于怒气的buff if (each.skillMsg.operationType == BattleReportService.ATTR_CHANGE && each.skillMsg.valueType == StringKit.toInt(BattleReportService.ANGER)) { each.skillMsg.skillSID = BuffSampleManager.SID_ANGER; } //如果伤害类型是召唤兽怒气 if (each.skillMsg.valueType == StringKit.toInt(BattleReportService.ANGER)) { newBuff.init(BattleManager.Instance.getBattleCharacterData(each.skillMsg.targets [0]), lastSkill.user, BuffManager.Instance.CreateBuffData(each.skillMsg.skillSID, each.skillMsg.damage, lastSkill.serverData.sample.getDamageEffect()), false, each.skillMsg.skillID, lastSkill); lastSkill.AddBuffCtrl(newBuff); } else { CharacterData buffOwner; if (lastSkill.serverData.sample.getType() == SkillType.HelpOther) { //如果是援护 buffOwner = BattleManager.Instance.getBattleCharacterData(each.skillMsg.targets [0]); newBuff.init(buffOwner, lastSkill.trigger, BuffManager.Instance.CreateBuffData(each.skillMsg.skillSID, each.skillMsg.damage, lastSkill.serverData.sample.getDamageEffect()), false, each.skillMsg.skillID, lastSkill); lastSkill.triggerSkill.AddBuffCtrl(newBuff); newBuff.serverData.sample.changeDamageType(BuffDamageType.beIntervene); } else if (lastSkill.serverData.sample.getType() == SkillType.GroupAttack) { buffOwner = BattleManager.Instance.getBattleCharacterData(each.skillMsg.targets [0]); newBuff.init(buffOwner, lastSkill.user, BuffManager.Instance.CreateBuffData(each.skillMsg.skillSID, each.skillMsg.damage, lastSkill.serverData.sample.getDamageEffect()), false, each.skillMsg.skillID, lastSkill); lastSkill.AddBuffCtrl(newBuff); } else if (lastSkill.serverData.sample.getType() == SkillType.ComboAttack) { buffOwner = BattleManager.Instance.getBattleCharacterData(each.skillMsg.targets [0]); newBuff.init(buffOwner, lastSkill.user, BuffManager.Instance.CreateBuffData(each.skillMsg.skillSID, each.skillMsg.damage, lastSkill.serverData.sample.getDamageEffect()), false, each.skillMsg.skillID, lastSkill); lastSkill.AddBuffCtrl(newBuff); } else { //普通伤害buff buffOwner = BattleManager.Instance.getBattleCharacterData(each.skillMsg.targets [0]); // MonoBase.print("skillMsg.skillID:"+each.skillMsg.skillID); //Debug.LogError("lastSkill==="+lastSkill.serverData.sample.sid); newBuff.init(buffOwner, lastSkill.user, BuffManager.Instance.CreateBuffData(each.skillMsg.skillSID, each.skillMsg.damage, lastSkill.serverData.sample.getDamageEffect()), false, each.skillMsg.skillID, lastSkill); lastSkill.AddBuffCtrl(newBuff); if (lastSkill.serverData.sample.getType() == SkillType.FightBack) { newBuff.serverData.sample.changeDamageType(BuffDamageType.beRebound); } if (lastBuff != null) { if (lastBuff.option == buff_option.Add || lastBuff.option == buff_option.active) { //如果上个buff操作类型是增加buff //检查是否为特殊伤害类型,比如毒 newBuff.serverData.sample.changeDamageType(lastBuff.serverData.sample.getDamageType()); } } } } //lastSkill.AddBuffCtrl(newBuff); //根据操作类型不同做不同操作 switch (each.skillMsg.operationType) { case BattleReportService.ATTR_CHANGE: addBuff(newBuff); newBuff.option = buff_option.none; break; case BattleReportService.BUFFER_REPLACE: newBuff.serverData.replaceID = each.skillMsg.oldSkillID; newBuff.option = buff_option.Replace; // replaceBuff (newBuff); break; case BattleReportService.BUFFER_REMOVE: addBuff(newBuff); // MonoBase. print(newBuff.buffData.database.buffType); newBuff.option = buff_option.Remove; break; case BattleReportService.BUFFER_ADD: // newBuff.buffData.IsDurationBuff = true; newBuff.option = buff_option.Add; addBuff(newBuff); newBuff.serverData.serverAttr_attack = each.skillMsg.getValueByEffectType(BuffEffectType.ATTACK); newBuff.serverData.serverAttr_defend = each.skillMsg.getValueByEffectType(BuffEffectType.DEFENSE); newBuff.serverData.serverAttr_magic = each.skillMsg.getValueByEffectType(BuffEffectType.MAGIC); newBuff.serverData.serverAttr_dex = each.skillMsg.getValueByEffectType(BuffEffectType.AGILE); break; case BattleReportService.BUFFER_ABILITY: // newBuff.buffData.IsDurationBuff = true; newBuff.option = buff_option.active; addBuff(newBuff); newBuff.serverData.serverAttr_attack = each.skillMsg.getValueByEffectType(BuffEffectType.ATTACK); newBuff.serverData.serverAttr_defend = each.skillMsg.getValueByEffectType(BuffEffectType.DEFENSE); newBuff.serverData.serverAttr_magic = each.skillMsg.getValueByEffectType(BuffEffectType.MAGIC); newBuff.serverData.serverAttr_dex = each.skillMsg.getValueByEffectType(BuffEffectType.AGILE); break; default: addBuff(newBuff); break; } lastBuff = newBuff; //下一个skill return(1); } //继续往下 return(2); }