public override void HandleSkillActivate(SkillArg arg) { Map.Map map = MapManager.Instance.GetMap(arg.Caster.MapInstanceID); Map.MoveArgument argu = new Map.MoveArgument() { BNSMoveType = MoveType.StepForward }; int distance = arg.Caster.DistanceToActor(arg.Target); int forward = 20; argu.SkillSession = arg.SkillSession; Vec3 vec = -arg.Target.Dir.DirectionToVector(); argu.X = arg.Target.X + (int)(vec.X * forward); argu.Y = arg.Target.Y + (int)(vec.Y * forward); argu.Z = (short)arg.Target.Z; argu.Dir = arg.Target.Dir; map.MoveActor(arg.Caster, argu, true); if (arg.Caster.Tasks.ContainsKey("Stealth")) { Buff buff = arg.Caster.Tasks["Stealth"] as Buff; buff.Deactivate(); } Additions.Stealth add = new Additions.Stealth(arg); arg.Caster.Tasks["Stealth"] = add; add.Activate(); }
public void HandleSkillActivate(SkillArg arg) { if (isBack) { if (arg.Caster.Tasks.ContainsKey("Stealth")) { Buff buff = arg.Caster.Tasks["Stealth"] as Buff; buff.Deactivate(); } Additions.Stealth add = new Additions.Stealth(arg); arg.Caster.Tasks["Stealth"] = add; add.Activate(); Interlocked.Add(ref arg.Caster.MP, 3); } else { Interlocked.Increment(ref arg.Caster.MP); } if (arg.Caster.MP > arg.Caster.MaxMP) { Interlocked.Exchange(ref arg.Caster.MP, arg.Caster.MaxMP); } Network.Client.GameSession client = ((ActorPC)arg.Caster).Client(); client?.SendPlayerMP(); }