123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- using CommonAI.Zone;
- using CommonAI.Zone.ZoneEditor;
- using CommonLang;
- using CommonLang.Log;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using static CommonAI.Zone.LaunchSpell;
- using static CommonAI.Zone.SpellTemplate;
- using static CommonAI.Zone.UnitActionData;
- namespace xmds_battle_server.JSGModule
- {
- /**
- * 检测战斗服配置模块
- */
- class CheckConfigModule
- {
- public static Logger log = LoggerFactory.GetDefLogger();
- //检测技能攻击异常
- public static void CheckActiveSkillAttackRange(EditorTemplates Templates)
- {
- HashMap <int, SkillTemplate> skills = Templates.Templates.getAllSkillData();
- foreach(SkillTemplate skillItem in skills.Values)
- {
- foreach (UnitActionData skillAction in skillItem.ActionQueue)
- {
- if(skillAction.IsJumpToTarget) { continue; }
- foreach(UnitActionData.KeyFrame actionFrame in skillAction.KeyFrames)
- {
- if(actionFrame.Spell == null || actionFrame.Spell.SpellID <= 0 || actionFrame.Move != null ||
- (actionFrame.Spell.PType == PosType.POS_TYPE_RANDOM_FOR_SPELL || actionFrame.Spell.PType == PosType.POS_TYPE_RANDOM_POS))
- {
- continue;
- }
- SpellTemplate spellData = Templates.Templates.getSpell(actionFrame.Spell.SpellID);
- if (spellData == null)
- {
- log.Error("技能:" + skillItem.ID + "-" + skillItem.Name + ", 配置了不存在的法术:" + actionFrame.Spell.SpellID);
- continue;
- }
- if (!skillItem.IsLaunchBody)
- {
- continue;
- }
- CheckSpellRange(Templates, skillItem, spellData);
- }
- }
- }
- }
- private static bool CheckSpellRange(EditorTemplates Templates, SkillTemplate skillItem, SpellTemplate spellData, int baseID = 0)
- {
- //无伤害的不判断
- if (spellData.HitIntervalKeyFrame == null && spellData.HitOnExplosionKeyFrame == null)
- {
- bool isAllNull = true;
- foreach (SpellTemplate.KeyFrame spellFrame in spellData.KeyFrames)
- {
- if (spellFrame.Attack != null)
- {
- isAllNull = false;
- }
- if (spellFrame.Spell != null && spellFrame.Spell.SpellID > 0 && baseID != spellFrame.Spell.SpellID)
- {
- if (!CheckSpellRange(Templates, skillItem, Templates.Templates.getSpell(spellFrame.Spell.SpellID), baseID))
- {
- baseID = spellFrame.Spell.SpellID;
- }
- }
- }
- if (isAllNull)
- {
- return true;
- }
- }
- if (spellData.MType == MotionType.Missile || spellData.MType == MotionType.Straight || spellData.MType == MotionType.StraightAndStop ||
- spellData.MType == MotionType.SeekerMissile)
- {
- if ((spellData.MSpeedAdd + spellData.MSpeedSEC) * spellData.LifeTimeMS * 0.001f + spellData.BodySize < skillItem.AttackRange)
- {
- log.Error("A技能:" + skillItem.ID + "-" + skillItem.Name + ", 的法术:" + spellData.ID + ", 范围异常!");
- return false;
- }
- }
- else if (spellData.MType == MotionType.Immovability || spellData.MType == MotionType.Binding || spellData.MType == MotionType.Straight)
- {
- if (spellData.BodySize < skillItem.AttackRange)
- {
- log.Error("B技能:" + skillItem.ID + "-" + skillItem.Name + ", 的法术:" + spellData.ID + ", 范围异常!");
- return false;
- }
- }
- return true;
- }
- }
- }
|