84 lines
2.8 KiB
C#
84 lines
2.8 KiB
C#
using CounterStrikeSharp.API;
|
|
using CounterStrikeSharp.API.Core;
|
|
using CounterStrikeSharp.API.Modules.Utils;
|
|
using Cs2SuperPowers.Players;
|
|
using Cs2SuperPowers.Players.PlayerValidations;
|
|
|
|
namespace Cs2SuperPowers.Powers;
|
|
|
|
public class Rambo(IPlayerHud playerHud) : BasePower(playerHud)
|
|
{
|
|
public override int Id => 5;
|
|
public override string Name => "John Rambo";
|
|
|
|
public override string Description => $"You start with additional random health, negev, kevlar and hand grenades. Enemy team gets 5000 cash.";
|
|
|
|
public override char ChatColor => ChatColors.Green;
|
|
|
|
public override string HtmlColor => "#009905";
|
|
public override int MinimumPlayersRequired => 4;
|
|
|
|
protected override void OnInitialize()
|
|
{
|
|
RegisterEventHandler<EventRoundStart>(OnRoundStart);
|
|
}
|
|
|
|
private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _)
|
|
{
|
|
var random = new Random();
|
|
var ramboPlayers = PlayerPowers.Instance.GetPlayersWithPower(this).ToList();
|
|
var validPlayerCount = Utilities.GetPlayers().Count(player =>
|
|
player.IsValid && player.Team != CsTeam.None && player.Team != CsTeam.Spectator);
|
|
if (validPlayerCount < MinimumPlayersRequired)
|
|
{
|
|
return HookResult.Continue;
|
|
}
|
|
|
|
// If there are any Rambo players, give enemy team 5000 cash
|
|
if (ramboPlayers.Count > 0)
|
|
{
|
|
var ramboTeam = ramboPlayers.First().Team;
|
|
foreach (var player in Utilities.GetPlayers())
|
|
{
|
|
if (!Ensure.Player(player).IsValid().Check())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (player.Team != ramboTeam && player.Team != CsTeam.None && player.Team != CsTeam.Spectator)
|
|
{
|
|
Server.NextFrame(() =>
|
|
{
|
|
if (player.InGameMoneyServices != null)
|
|
{
|
|
player.InGameMoneyServices.Account += 5000;
|
|
Utilities.SetStateChanged(player, "CCSPlayerController", "m_pInGameMoneyServices");
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach (var player in ramboPlayers)
|
|
{
|
|
if (!Ensure.Player(player).IsValid().Check())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
Server.NextFrame(() =>
|
|
{
|
|
var newHealth = 100 + random.Next(150, 400);
|
|
|
|
player.GiveNamedItem("weapon_negev");
|
|
player.GiveNamedItem("item_assaultsuit");
|
|
player.GiveNamedItem("weapon_hegrenade");
|
|
|
|
player.SetNewHealth(newHealth);
|
|
});
|
|
}
|
|
|
|
return HookResult.Continue;
|
|
}
|
|
}
|