mirror of
https://github.com/MSWS/TTT.git
synced 2025-12-07 06:46:59 -08:00
Compare commits
10 Commits
0.22.3-dev
...
1.0.1-dev.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e0ee4bf325 | ||
|
|
4a4c7e0782 | ||
|
|
d4f67ced0c | ||
|
|
33ca0c8385 | ||
|
|
ff2e97a3ce | ||
|
|
a56cdc1285 | ||
|
|
ceda5cba64 | ||
|
|
7c203bcd91 | ||
|
|
f91fc54897 | ||
|
|
7ca4a6bef4 |
@@ -16,7 +16,9 @@ survive while eliminating the traitors among them.
|
||||
- [X] Innocents
|
||||
- [X] Shop
|
||||
- [X] Karma
|
||||
- [ ] Statistics
|
||||
- [X] Statistics
|
||||
- [X] Map Integrations
|
||||
- [X] Special Rounds
|
||||
|
||||
## Versioning
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace SpecialRoundAPI;
|
||||
|
||||
public record SpeedRoundConfig : SpecialRoundConfig {
|
||||
public override float Weight { get; init; } = 0.5f;
|
||||
public override float Weight { get; init; } = 0.6f;
|
||||
|
||||
public TimeSpan InitialSeconds { get; init; } = TimeSpan.FromSeconds(40);
|
||||
public TimeSpan SecondsPerKill { get; init; } = TimeSpan.FromSeconds(10);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace SpecialRoundAPI;
|
||||
|
||||
public record VanillaRoundConfig : SpecialRoundConfig {
|
||||
public override float Weight { get; init; } = 0.3f;
|
||||
public override float Weight { get; init; } = 0.2f;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using ShopAPI;
|
||||
using ShopAPI.Configs;
|
||||
using ShopAPI.Configs.Detective;
|
||||
using ShopAPI.Configs.Traitor;
|
||||
@@ -63,6 +64,8 @@ public static class CS2ServiceCollection {
|
||||
collection
|
||||
.AddModBehavior<IStorage<OneHitKnifeConfig>, CS2OneHitKnifeConfig>();
|
||||
collection.AddModBehavior<IStorage<SilentAWPConfig>, CS2SilentAWPConfig>();
|
||||
collection
|
||||
.AddModBehavior<IStorage<HealthshotConfig>, CS2HealthshotConfig>();
|
||||
|
||||
// TTT - CS2 Specific optionals
|
||||
collection.AddScoped<ITextSpawner, TextSpawner>();
|
||||
|
||||
@@ -63,21 +63,19 @@ public class CS2GameConfig : IStorage<TTTConfig>, IPluginModule {
|
||||
|
||||
public static readonly FakeConVar<string> CV_TRAITOR_WEAPONS = new(
|
||||
"css_ttt_roleweapons_traitor",
|
||||
"Weapons available to traitors at start of round",
|
||||
"weapon_knife,weapon_glock", ConVarFlags.FCVAR_NONE,
|
||||
new ItemValidator(allowMultiple: true));
|
||||
"Weapons available to traitors at start of round", "",
|
||||
ConVarFlags.FCVAR_NONE, new ItemValidator(allowMultiple: true));
|
||||
|
||||
public static readonly FakeConVar<string> CV_DETECTIVE_WEAPONS = new(
|
||||
"css_ttt_roleweapons_detective",
|
||||
"Weapons available to detectives at start of round",
|
||||
"weapon_knife,weapon_taser,weapon_m4a1,weapon_revolver",
|
||||
ConVarFlags.FCVAR_NONE, new ItemValidator(allowMultiple: true));
|
||||
"weapon_taser,weapon_m4a1_silencer,weapon_revolver", ConVarFlags.FCVAR_NONE,
|
||||
new ItemValidator(allowMultiple: true));
|
||||
|
||||
public static readonly FakeConVar<string> CV_INNOCENT_WEAPONS = new(
|
||||
"css_ttt_roleweapons_innocent",
|
||||
"Weapons available to innocents at start of round",
|
||||
"weapon_knife,weapon_glock", ConVarFlags.FCVAR_NONE,
|
||||
new ItemValidator(allowMultiple: true));
|
||||
"Weapons available to innocents at start of round", "",
|
||||
ConVarFlags.FCVAR_NONE, new ItemValidator(allowMultiple: true));
|
||||
|
||||
public static readonly FakeConVar<int> CV_TIME_BETWEEN_ROUNDS = new(
|
||||
"css_ttt_time_between_rounds", "Time to wait between rounds in seconds", 1,
|
||||
|
||||
43
TTT/CS2/Configs/ShopItems/CS2HealthshotConfig.cs
Normal file
43
TTT/CS2/Configs/ShopItems/CS2HealthshotConfig.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Cvars;
|
||||
using CounterStrikeSharp.API.Modules.Cvars.Validators;
|
||||
using ShopAPI;
|
||||
using TTT.API;
|
||||
using TTT.API.Storage;
|
||||
|
||||
namespace TTT.CS2.Configs.ShopItems;
|
||||
|
||||
public class CS2HealthshotConfig : IStorage<HealthshotConfig>, IPluginModule {
|
||||
public static readonly FakeConVar<int> CV_PRICE = new(
|
||||
"css_ttt_shop_healthshot_price", "Price of the Healthshot item", 40,
|
||||
ConVarFlags.FCVAR_NONE, new RangeValidator<int>(0, 10000));
|
||||
|
||||
public static readonly FakeConVar<int> CV_MAX_PURCHASES = new(
|
||||
"css_ttt_shop_healthshot_max_purchases",
|
||||
"Maximum number of times a player can purchase the Healthshot per round", 2,
|
||||
ConVarFlags.FCVAR_NONE, new RangeValidator<int>(1, 100));
|
||||
|
||||
public static readonly FakeConVar<string> CV_WEAPON = new(
|
||||
"css_ttt_shop_healthshot_weapon", "Weapon entity name for the Healthshot",
|
||||
"weapon_healthshot");
|
||||
|
||||
public void Dispose() { }
|
||||
|
||||
public void Start() { }
|
||||
|
||||
public void Start(BasePlugin? plugin) {
|
||||
ArgumentNullException.ThrowIfNull(plugin, nameof(plugin));
|
||||
plugin.RegisterFakeConVars(this);
|
||||
}
|
||||
|
||||
public Task<HealthshotConfig?> Load() {
|
||||
var cfg = new HealthshotConfig {
|
||||
Price = CV_PRICE.Value,
|
||||
MaxPurchases = CV_MAX_PURCHASES.Value,
|
||||
Weapon = CV_WEAPON.Value
|
||||
};
|
||||
|
||||
return Task.FromResult<HealthshotConfig?>(cfg);
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ namespace TTT.CS2.Configs.ShopItems;
|
||||
|
||||
public class CS2StickersConfig : IStorage<StickersConfig>, IPluginModule {
|
||||
public static readonly FakeConVar<int> CV_PRICE = new(
|
||||
"css_ttt_shop_stickers_price", "Price of the Stickers item (Detective)", 35,
|
||||
"css_ttt_shop_stickers_price", "Price of the Stickers item (Detective)", 45,
|
||||
ConVarFlags.FCVAR_NONE, new RangeValidator<int>(0, 10000));
|
||||
|
||||
public void Dispose() { }
|
||||
|
||||
@@ -51,7 +51,9 @@ public class PropMover(IServiceProvider provider) : IPluginModule {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!pressed.HasFlag(PlayerButtons.Use)) return;
|
||||
if (!pressed.HasFlag(PlayerButtons.Use)
|
||||
&& !pressed.HasFlag(PlayerButtons.Inspect))
|
||||
return;
|
||||
|
||||
onStartUse(player);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using JetBrains.Annotations;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using ShopAPI.Configs.Traitor;
|
||||
@@ -73,8 +74,10 @@ public class DamageStation(IServiceProvider provider)
|
||||
.ToList();
|
||||
|
||||
foreach (var (player, dist, gamePlayer) in playerDists) {
|
||||
gamePlayer.EmitSound("Player.DamageFall", null, 0.2f);
|
||||
if (Roles.GetRoles(player).Any(r => r is TraitorRole)) continue;
|
||||
if ((gamePlayer.Buttons & PlayerButtons.Walk) != PlayerButtons.Walk) {
|
||||
gamePlayer.EmitSound("Player.DamageFall", null, 0.2f);
|
||||
if (Roles.GetRoles(player).Any(r => r is TraitorRole)) continue;
|
||||
}
|
||||
|
||||
var healthScale = 1.0 - dist / _Config.MaxRange;
|
||||
var damageAmount =
|
||||
|
||||
@@ -19,20 +19,24 @@ public class MapHookListener(IServiceProvider provider)
|
||||
[UsedImplicitly]
|
||||
[EventHandler(Priority = Priority.MONITOR, IgnoreCanceled = true)]
|
||||
public void OnRoleAssign(PlayerRoleAssignEvent ev) {
|
||||
var player = converter.GetPlayer(ev.Player);
|
||||
if (player == null) return;
|
||||
Server.NextWorldUpdate(() => {
|
||||
var player = converter.GetPlayer(ev.Player);
|
||||
if (player == null) return;
|
||||
|
||||
switch (ev.Role) {
|
||||
case TraitorRole:
|
||||
player.Pawn.Value?.AcceptInput("AddContext", null, null, "TRAITOR:1");
|
||||
break;
|
||||
case DetectiveRole:
|
||||
player.Pawn.Value?.AcceptInput("AddContext", null, null, "DETECTIVE:1");
|
||||
break;
|
||||
case InnocentRole:
|
||||
player.Pawn.Value?.AcceptInput("AddContext", null, null, "INNOCENT:1");
|
||||
break;
|
||||
}
|
||||
switch (ev.Role) {
|
||||
case TraitorRole:
|
||||
player.Pawn.Value?.AcceptInput("AddContext", null, null, "TRAITOR:1");
|
||||
break;
|
||||
case DetectiveRole:
|
||||
player.Pawn.Value?.AcceptInput("AddContext", null, null,
|
||||
"DETECTIVE:1");
|
||||
break;
|
||||
case InnocentRole:
|
||||
player.Pawn.Value?.AcceptInput("AddContext", null, null,
|
||||
"INNOCENT:1");
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
[UsedImplicitly]
|
||||
|
||||
@@ -3,7 +3,7 @@ using System.Drawing;
|
||||
namespace ShopAPI.Configs;
|
||||
|
||||
public record BodyPaintConfig : ShopItemConfig {
|
||||
public override int Price { get; init; } = 40;
|
||||
public override int Price { get; init; } = 30;
|
||||
public int MaxUses { get; init; } = 4;
|
||||
public Color ColorToApply { get; init; } = Color.GreenYellow;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace ShopAPI.Configs.Traitor;
|
||||
|
||||
public record CompassConfig : ShopItemConfig {
|
||||
public override int Price { get; init; } = 70;
|
||||
public override int Price { get; init; } = 60;
|
||||
public float MaxRange { get; init; } = 10000;
|
||||
public float CompassFOV { get; init; } = 120;
|
||||
public int CompassLength { get; init; } = 64;
|
||||
|
||||
Reference in New Issue
Block a user