示例#1
0
        public static void randomColors()
        {
            // 発生確率
            int random = rnd.Next(100);

            if (random > probability)
            {
                return;
            }

            var         allPlayers   = PlayerControl.AllPlayerControls;
            List <byte> alivePlayers = new List <byte>();
            List <int>  tempList     = new List <int>();

            foreach (var p in allPlayers)
            {
                if (p.PlayerId == PlayerControl.LocalPlayer.PlayerId)
                {
                    continue;
                }
                if (p == Puppeteer.dummy)
                {
                    continue;
                }
                if (p.isAlive())
                {
                    alivePlayers.Add(p.PlayerId);
                }
            }
            alivePlayers.shuffle();
            List <byte> shuffleTargets = alivePlayers.Count > numShufflePlayers?alivePlayers.Take(numShufflePlayers).ToList() : alivePlayers;

            foreach (byte id in shuffleTargets)
            {
                if (id == PlayerControl.LocalPlayer.PlayerId)
                {
                    continue;
                }
                var p = Helpers.playerById(id);
                int rnd;
                int coutner = 0;
                while (true)
                {
                    rnd = TheOtherRoles.rnd.Next(shuffleTargets.Count);
                    if (shuffleTargets[rnd] == PlayerControl.LocalPlayer.PlayerId)
                    {
                        continue;
                    }
                    if (!tempList.Contains(rnd))
                    {
                        tempList.Add(rnd);
                        break;
                    }
                    coutner++;
                }
                var to = Helpers.playerById((byte)shuffleTargets[rnd]);
                MorphHandler.morphToPlayer(p, to);
            }
            randomColorFlag = true;
        }
示例#2
0
        public static void resetColors()
        {
            var allPlayers = PlayerControl.AllPlayerControls;

            foreach (var p in allPlayers)
            {
                MorphHandler.morphToPlayer(p, p);
            }
            randomColorFlag = false;
        }
示例#3
0
 public override void OnMeetingStart()
 {
     HudManager.Instance.StartCoroutine(Effects.Lerp(3f, new Action <float>((p) =>
     { // Delayed action
         if (p == 1f)
         {
             MorphHandler.resetMorph(player);
         }
     })));
 }
示例#4
0
 public override void OnKill(PlayerControl target)
 {
     // 死体を消す
     DeadBody[] array = UnityEngine.Object.FindObjectsOfType <DeadBody>();
     for (int i = 0; i < array.Length; i++)
     {
         if (GameData.Instance.GetPlayerById(array[i].ParentId).PlayerId == target.PlayerId)
         {
             array[i].gameObject.active = false;
         }
     }
     MorphHandler.morphToPlayer(player, target);
 }