do a lot ig
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
using LabApi.Events.Arguments.PlayerEvents;
|
||||
using LabApi.Features.Wrappers;
|
||||
using MapGeneration;
|
||||
using MEC;
|
||||
using Mirror;
|
||||
using PlayerRoles;
|
||||
using Respawning;
|
||||
using UnityEngine;
|
||||
using MicroHIDItem = InventorySystem.Items.MicroHID.MicroHIDItem;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
namespace GamblingCoin;
|
||||
@@ -23,10 +23,15 @@ public class GamblingCoinEventHandler
|
||||
_executor = new WeightedRandomExecutor<PlayerFlippedCoinEventArgs>();
|
||||
|
||||
_executor
|
||||
.AddAction(_ =>
|
||||
.AddAction(x =>
|
||||
{
|
||||
Warhead.DetonationTime += configGameplay.WarheadTimeIncrease;
|
||||
Warhead.Start(suppressSubtitles: true);
|
||||
|
||||
foreach (var player in Player.ReadyList)
|
||||
{
|
||||
player.SendBroadcast($"{x.Player.Nickname} activated the Alpha Warhead through gambling! (coin)", 10);
|
||||
}
|
||||
}, configChances.NukeChance)
|
||||
.AddAction(x =>
|
||||
{
|
||||
@@ -64,23 +69,10 @@ public class GamblingCoinEventHandler
|
||||
|
||||
var itemIndex = Random.Range(0, items.Length);
|
||||
var item = items[itemIndex];
|
||||
|
||||
|
||||
var pickup = Pickup.Create(item, player.Position + new Vector3(0, 1, 0));
|
||||
if (pickup == null) return;
|
||||
|
||||
if (item is ItemType.MicroHID)
|
||||
{
|
||||
var host = Player.List.First(player1 => player1.IsHost);
|
||||
var micro = host.AddItem(pickup)!.Base;
|
||||
|
||||
var microItem = (MicroHIDItem)micro;
|
||||
microItem.EnergyManager.ServerSetEnergy(microItem.ItemId.SerialNumber, 100);
|
||||
|
||||
var newPickup = host.DropItem(micro);
|
||||
newPickup.Position = player.Position + new Vector3(0, 1, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
pickup.Spawn();
|
||||
}, configChances.LegendaryItemChance)
|
||||
.AddAction(x =>
|
||||
@@ -110,7 +102,6 @@ public class GamblingCoinEventHandler
|
||||
var newPos = randomRoom.Position;
|
||||
|
||||
x.Player.Position = newPos + new Vector3(0, configGameplay.TeleportHeightOffset, 0);
|
||||
;
|
||||
}, configChances.RandomTeleportChance)
|
||||
.AddAction(x =>
|
||||
{
|
||||
@@ -130,7 +121,11 @@ public class GamblingCoinEventHandler
|
||||
{
|
||||
x.Player.SendBroadcast(configMessages.AntiMicroMessage, configGameplay.BroadcastDuration);
|
||||
GetPlayers().ForEach(p => { p.RemoveItem(ItemType.MicroHID, configGameplay.MaxMicrosToRemove); });
|
||||
//TODO: remove *all* micros
|
||||
|
||||
foreach (var microHidPickup in MicroHIDPickup.List)
|
||||
{
|
||||
microHidPickup.Destroy();
|
||||
}
|
||||
}, configChances.AntiMicroChance)
|
||||
.AddAction(x =>
|
||||
{
|
||||
@@ -167,42 +162,50 @@ public class GamblingCoinEventHandler
|
||||
}, configChances.AdvancedNegativeEffectChance)
|
||||
.AddAction(x =>
|
||||
{
|
||||
var players = GetPlayers();
|
||||
var players = GetPlayers().Where(player=>player.Team is not Team.Dead and not Team.SCPs).ToArray();
|
||||
|
||||
var randomPlayer = players[Random.Range(0, GetPlayers().Length)];
|
||||
|
||||
while (randomPlayer.RoleBase.Team is Team.Dead or Team.SCPs)
|
||||
randomPlayer = players[Random.Range(0, GetPlayers().Length)];
|
||||
|
||||
x.Player.SendBroadcast(configMessages.SwitchInventoryMessage, configGameplay.BroadcastDuration);
|
||||
randomPlayer.SendBroadcast(configMessages.SwitchInventoryMessage, configGameplay.BroadcastDuration);
|
||||
|
||||
var randomPlayerItems = new List<Item>();
|
||||
randomPlayer.Items.CopyTo(randomPlayerItems);
|
||||
|
||||
List<KeyValuePair<ItemType, ushort>> randomPlayerAmmo = new();
|
||||
randomPlayer.Ammo.CopyTo(randomPlayerAmmo);
|
||||
var items = x.Player.Items;
|
||||
var ammoCount = x.Player.Ammo;
|
||||
|
||||
randomPlayer.ClearInventory();
|
||||
foreach (var itemBase in items) randomPlayer.AddItem(itemBase.Type);
|
||||
foreach (var ammo in ammoCount) randomPlayer.AddAmmo(ammo.Key, ammo.Value);
|
||||
|
||||
x.Player.ClearInventory();
|
||||
foreach (var randomPlayerItem in randomPlayerItems) x.Player.AddItem(randomPlayerItem.Type);
|
||||
foreach (var randomPlayerAmmoItem in randomPlayerAmmo) x.Player.AddAmmo(randomPlayerAmmoItem.Key, randomPlayerAmmoItem.Value);
|
||||
}, configChances.SwitchInventoryChance)
|
||||
.AddAction(x => { x.Player.CurrentItem?.DropItem().Destroy(); }, configChances.RemoveCoinChance)
|
||||
.AddAction(x =>
|
||||
{
|
||||
var spectators = Player.List.Where(player => player.Role == RoleTypeId.Spectator).ToArray();
|
||||
var spectator = spectators[Random.Range(0, spectators.Length)];
|
||||
if(spectators.Length == 0) return;
|
||||
|
||||
spectator.SendBroadcast(configMessages.SpawnZombieMessage, configGameplay.BroadcastDuration);
|
||||
var spectator = spectators[Random.Range(0, spectators.Length-1)];
|
||||
|
||||
x.Player.SendBroadcast(configMessages.SpawnZombieMessage, configGameplay.BroadcastDuration);
|
||||
spectator.SetRole(RoleTypeId.Scp0492);
|
||||
|
||||
var spawnRoom = Map.Rooms.First(room => room.Name == RoomName.HczWarhead);
|
||||
if (Warhead.IsDetonated)
|
||||
|
||||
Timing.CallDelayed(0.5f, () =>
|
||||
{
|
||||
spawnRoom = Map.Rooms.First(room => room.Name == RoomName.Outside);
|
||||
}
|
||||
|
||||
spectator.Position = spawnRoom.Position + new Vector3(0, 1, 0);
|
||||
var spawnRoom = Map.Rooms.First(room => room.Name == RoomName.HczWarhead);
|
||||
if (Warhead.IsDetonated)
|
||||
{
|
||||
spawnRoom = Map.Rooms.First(room => room.Name == RoomName.Outside);
|
||||
}
|
||||
|
||||
spectator.Position = spawnRoom.Position + new Vector3(0, 1, 0);
|
||||
});
|
||||
}, configChances.SpawnZombieChance);
|
||||
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user