public bool CanAttack(L2Character target = null, bool moveIfTooFar = true) { if (target == null) { target = _target; } if (target == null || target.Dead) // TODO: add check for immune/abnormal/GM { return(false); } if (_character is L2Player) { L2Player player = (L2Player)_character; if (player.Movement.IsSitting) { return(false); } } // TODO: Move to config _character.SendMessageAsync($"[attack]distance to target is {(int)_character.Movement.DistanceTo(target)}"); if (_character.Movement.DistanceToSquared(target) > 50 * 50 + 10) // TODO : use Weapon range { if (moveIfTooFar) { _character.SendMessageAsync("[attack]targer is too far, moving for it"); _character.Movement.MoveToAndHit(target, 50); } return(false); } return(true); }
private void affect(L2Character target) { target.SendMessageAsync("u can feel defence."); //Random rn = new Random(); //if (Zone._skills != null) //{ // foreach (L2Skill sk in Zone._skills) // { // if (rn.Next(0, 100) > Zone._skill_prob) // continue; // target.addAbnormal(sk, null, true, false); // } //} //if (Zone._skill != null) //{ // if (rn.Next(0, 100) > Zone._skill_prob) // return; // target.addAbnormal(Zone._skill, null, true, false); //} }
public async Task CastBuffForQuestRewardAsync(L2Character cha, int skillId) { await cha.SendMessageAsync($"L2Npc.CastBuffForQuestReward {skillId}"); }