Example #1
0
        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();
        }
Example #2
0
        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();
        }