예제 #1
0
파일: VSMain.cs 프로젝트: UB1AFU/VSSystem
        // PvP Command execution
        private static void VSExecute(VSPlayer user, VSCommand command, TSPlayer target)
        {
            // Sets command user and target
            command.User = user;
            command.Target = target;

            // Self-use Check & PvP Check
            if (command.UseSelf == 2 && user.TSPlayer == target)
            {
                user.TSPlayer.SendErrorMessage("[PvP] Error: You cannot use this command on yourself!");
                return;
            }
            if (!PVPCheck(target) && !command.BypassPvp)
            {
                user.TSPlayer.SendErrorMessage("[PvP] Error: Target is not hostile!");
                return;
            }

            // Cooldown Check
            if (VSConfig.config.Cooldowns && !user.TSPlayer.Group.HasPermission("vs.ignore.cooldown"))
            {
                if (command.Counter > 0)
                {
                    user.TSPlayer.SendErrorMessage(string.Format("[PvP] Error: You must wait {0} seconds before using {1} again!",
                        command.Counter, command.Name));
                    return;
                }
                else
                {
                    command.Counter = command.Cooldown;
                }
            }

            // Damage Check
            if (command.Damage != 0)
            {
                VSPlayers[target.UserID].DamagePlayer(command.Damage, command, user);
            }
            if (command.DamageToSelf != 0)
            {
                user.DamagePlayer(command.DamageToSelf, command, user);
            }

            // Effect Check
            if (command.Effect != null)
            {
                foreach (Effect eff in command.Effect)
                {
                    Effect.Event(user, target, eff.Type, eff.Parameter, eff.Parameter2, eff.Who, eff.SetState);
                }
            }

            // Timer Check
            if (command.Timer.Interval != 1)
            {
                command.Timer.Start();
            }

            // Messages Check
            if (command.MsgAll != null)
            {
                Message msg = new Message(command.MsgAll.InitMsg, command.MsgAll.UsePlr1 ? command.User.TSPlayer : null,
                    command.MsgAll.MidMsg, command.MsgAll.UsePlr2 ? command.Target : null, command.MsgAll.EndMsg, command.MsgAll.Color);
                TSPlayer.All.SendMessage(msg.Text, msg.Color);
            }
            if (command.MsgSelf != null)
            {
                Message msg = new Message(command.MsgSelf.InitMsg, command.MsgSelf.UsePlr1 ? command.User.TSPlayer : null,
                    command.MsgSelf.MidMsg, command.MsgSelf.UsePlr2 ? command.Target : null, command.MsgSelf.EndMsg, command.MsgSelf.Color);
                user.TSPlayer.SendMessage(msg.Text, msg.Color);
            }
            if (command.MsgPlayer != null)
            {
                Message msg = new Message(command.MsgPlayer.InitMsg, command.MsgPlayer.UsePlr1 ? command.User.TSPlayer : null,
                    command.MsgPlayer.MidMsg, command.MsgPlayer.UsePlr2 ? command.Target : null, command.MsgPlayer.EndMsg, command.MsgPlayer.Color);
                target.SendMessage(msg.Text, msg.Color);
            }
            return;
        }
예제 #2
0
파일: VSTypes.cs 프로젝트: UB1AFU/VSSystem
 public void Timer_Wish(object sender, ElapsedEventArgs e)
 {
     Message msg = new Message("", Target, " received ", User.TSPlayer, "'s Wish!", Color.RoyalBlue);
     VSSystem.VSPlayers[Target.UserID].DamagePlayer(-200);
     TSPlayer.All.SendMessage(msg.Text, msg.Color);
     Timer.Stop();
 }
예제 #3
0
파일: VSTypes.cs 프로젝트: UB1AFU/VSSystem
 public void DamagePlayer(double damage, VSCommand cmd, VSPlayer user)
 {
     if (damage < 0)
     {
         TSPlayer.Heal(VSSystem.Equalize(damage));
     }
     else
     {
         if (cmd.Offensive)
         {
             if (State.ContainsKey(States.BARRIER))
             {
                 Message msg = new Message("Barrier has been disposed!", false, "", false, "", Color.Indigo);
                 RemoveState(States.BARRIER);
                 TSPlayer.SendInfoMessage(msg.Text, msg.Color);
                 return;
             }
             if (State.ContainsKey(States.SHIELD))
             {
                 damage *= 0.8;
             }
             if (State.ContainsKey(States.LOCUS))
             {
                 damage *= 0.5;
             }
         }
         if (user.State.ContainsKey(States.BOOST))
         {
             damage *= 1.2;
         }
         if (user.State.ContainsKey(States.LOCUS))
         {
             damage *= 1.5;
         }
         TSPlayer.DamagePlayer(VSSystem.Equalize(damage, TSPlayer));
     }
 }
예제 #4
0
파일: VSTypes.cs 프로젝트: UB1AFU/VSSystem
 public void Timer_Tickle(object sender, ElapsedEventArgs e)
 {
     Message msg = new Message("", Target, " is no longer being tickled.", null, "", new Color(243, 112, 234));
     TSPlayer.All.SendMessage(msg.Text, msg.Color);
     Timer.Stop();
 }
예제 #5
0
파일: VSTypes.cs 프로젝트: UB1AFU/VSSystem
 public void Timer_Rake(object sender, ElapsedEventArgs e)
 {
     Message msg = new Message("Your bleeding has stopped.", null, "", null, "", Color.Salmon);
     User.TSPlayer.SendMessage(msg.Text, msg.Color);
     Timer.Stop();
 }
예제 #6
0
파일: VSTypes.cs 프로젝트: UB1AFU/VSSystem
 public void Timer_HWish(object sender, ElapsedEventArgs e)
 {
     Message msg = new Message("", Target, " received ", User.TSPlayer, "'s Healing Wish!", Color.SeaGreen);
     VSSystem.VSPlayers[Target.UserID].DamagePlayer(-(double)Target.FirstMaxHP);
     Target.TPlayer.ManaEffect(Target.FirstMaxMP);
     TSPlayer.All.SendMessage(msg.Text, msg.Color);
     Timer.Stop();
 }
예제 #7
0
파일: VSTypes.cs 프로젝트: UB1AFU/VSSystem
 public void Timer_FSight(object sender, ElapsedEventArgs e)
 {
     Message msg = new Message("You received ", User.TSPlayer, "'s Future Sight!", null, "", Color.MediumPurple);
     VSSystem.VSPlayers[Target.UserID].DamagePlayer(250, this, User);
     Target.SendMessage(msg.Text, msg.Color);
     Timer.Stop();
 }
예제 #8
0
파일: VSTypes.cs 프로젝트: UB1AFU/VSSystem
 public void Timer_Doom(object sender, ElapsedEventArgs e)
 {
     Message msg = new Message("", Target, " received his fated Doom!", null, "", Color.Orchid);
     VSSystem.VSPlayers[Target.UserID].DamagePlayer(400, this, User);
     TSPlayer.All.SendMessage(msg.Text, msg.Color);
     Timer.Stop();
 }