public override bool CheckFly(ref NLPointF position, ref int angle) { if (target == null || !target.IsAlive || parent == null || !parent.IsAlive) { return(false); } if (FlyProc(target.Position, ref position, ref angle) == FlyCheckType.EndPoint) { parent.HitTarget(target, false); BattleManager.Instance.EffectQueue.Add(new ActiveEffect(EffectBook.GetEffect(config.EffName), target, false)); return(false); } return(true); }
public override bool CheckFly(ref NLPointF position, ref int angle) { if (parent == null || !parent.IsAlive) { return(false); } if (FlyProc(targetPos, ref position, ref angle) == FlyCheckType.EndPoint) { var mon = BattleLocationManager.GetPlaceMonster(targetPos.X, targetPos.Y); if (mon != null) { parent.HitTarget(mon, false); BattleManager.Instance.EffectQueue.Add(new ActiveEffect(EffectBook.GetEffect(config.EffName), mon, false)); } return(false); } return(true); }
private void CheckFight(LiveMonster nearestEnemy) { if (monster.RealRange <= GameConstants.MaxMeleeAtkRange) { monster.HitTarget(nearestEnemy, true); //近战 BattleManager.Instance.EffectQueue.Add(new ActiveEffect(EffectBook.GetEffect(monster.Arrow), nearestEnemy, false)); } else { BasicMissileControler controler = new TraceMissileControler(monster, nearestEnemy); Missile mi = new Missile(monster.Arrow, monster.Position.X, monster.Position.Y, controler); BattleManager.Instance.MissileQueue.Add(mi); } if (monster.RealSpd != 0) //会返回一些ats { monster.AddActionRate((float)(monster.RealSpd) * GameConstants.SpdToRate / 100); } monster.MovRound = 0; }