A Razor UI panel for an in-game debug panel. It renders many buttons that call Manager and Player methods to toggle debug settings, spawn enemies/items/effects, and perform actions like kill/chain/level up for the local player.
@namespace Sandbox
@using Sandbox;
@using Sandbox.UI;
@using System;
@using Sandbox.Diagnostics;
@inherits Panel
@attribute [StyleSheet("DebugPanel.razor.scss")]
<root onmouseout=@(() => Manager.Instance.MouseDebugText = "")>
@* <div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => Manager.Instance.ToggleOrthoCamera()) onmousedown=@(() => Manager.Instance.MouseDebugText = "toggle ortho camera")>@($"{(Manager.Instance.IsOrthoCamera ? "📸" : "🎥")}")</button>
</div> *@
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => ToggleSpawnEnemies()) onmousedown=@(() => Manager.Instance.MouseDebugText = "toggle random spawns")>@($"{(Manager.Instance.DontSpawnRandomEnemies ? "🚫" : "✅")}")</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => ToggleGodMode()) onmousedown=@(() => Manager.Instance.MouseDebugText = "toggle god mode")>@($"{(Manager.Instance.GodMode ? "😇" : "😐")}")</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => AlmostKillPlayer()) onmousedown=@(() => Manager.Instance.MouseDebugText = "near death")>😵</button>
<button style="background-color: transparent;" onclick=@(() => KillPlayer()) onmousedown=@(() => Manager.Instance.MouseDebugText = "suicide")>😵</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => ToggleLaunchEnemies()) onmousedown=@(() => Manager.Instance.MouseDebugText = "toggle launch enemies")>@($"{(Manager.Instance.LaunchEnemies ? "🆙" : "🟦")}")</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => TogglePlayerMaxDmg()) onmousedown=@(() => Manager.Instance.MouseDebugText = "toggle player dmg")>@($"{(Manager.Instance.PlayerMaxDmg ? "😈" : "🟣")}")</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => LevelUp()) onmousedown=@(() => Manager.Instance.MouseDebugText = "lvl up")>⬆️</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => ToggleBulletBounce()) onmousedown=@(() => Manager.Instance.MouseDebugText = "bullet bounce")>@($"{(Manager.Instance.DebugBulletBounce ? "🏀" : "⚪")}")</button>
<button style="background-color: transparent;" onclick=@(() => ToggleBulletPierce()) onmousedown=@(() => Manager.Instance.MouseDebugText = "bullet pierce")>@($"{(Manager.Instance.DebugBulletPierce ? "💉" : "⚪")}")</button>
<button style="background-color: transparent;" onclick=@(() => ToggleBulletSplash()) onmousedown=@(() => Manager.Instance.MouseDebugText = "bullet splash")>@($"{(Manager.Instance.DebugBulletSplash ? "💦" : "⚪")}")</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => ResetDebug()) onmousedown=@(() => Manager.Instance.MouseDebugText = "reset debug options")>🔄</button>
</div>
<div class="debug_row">
<button style="background-color: transparent;" onclick=@(() => ToggleShowAllPerks()) onmousedown=@(() => Manager.Instance.MouseDebugText = "show all perks")>🔢</button>
</div>
<div class="debug_row">
<button style="background-color: green;" onclick=@(() => SpawnEnemy("zombie")) onmousedown=@(() => Manager.Instance.MouseDebugText = "zombie")>🧟</button>
<button style="background-color: green;" onclick=@(() => SpawnEnemy("zombie_elite")) onmousedown=@(() => Manager.Instance.MouseDebugText = "zombie elite")>🧟🏿♂️</button>
</div>
<div class="debug_row">
<button style="background-color: red;" onclick=@(() => SpawnEnemy("exploder")) onmousedown=@(() => Manager.Instance.MouseDebugText = "exploder")>🤰</button>
<button style="background-color: red;" onclick=@(() => SpawnEnemy("exploder_elite")) onmousedown=@(() => Manager.Instance.MouseDebugText = "exploder elite")>🤰🏿</button>
<button style="background-color: red;" onclick=@(() => SpawnEnemy("exploder_mini")) onmousedown=@(() => Manager.Instance.MouseDebugText = "exploder mini")>👶</button>
</div>
<div class="debug_row">
<button style="background-color: darkblue;" onclick=@(() => SpawnEnemy("spitter")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter")>🐡</button>
<button style="background-color: blue;" onclick=@(() => SpawnEnemy("spitter_fire")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_fire")>🔥</button>
<button style="background-color: blue;" onclick=@(() => SpawnEnemy("spitter_freeze")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_freeze")>❄️</button>
<button style="background-color: blue;" onclick=@(() => SpawnEnemy("spitter_poison")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_poison")>☣️</button>
<button style="background-color: blue;" onclick=@(() => SpawnEnemy("spitter_acid")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_acid")>🌊</button>
<button style="background-color: blue;" onclick=@(() => SpawnEnemy("spitter_curse")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_curse")>💀</button>
</div>
<div class="debug_row">
<button style="background-color: darkmagenta;" onclick=@(() => SpawnEnemy("spitter_elite")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter elite")>🐳</button>
<button style="background-color: blueviolet;" onclick=@(() => SpawnEnemy("spitter_elite_fire")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_elite_fire")>🔥</button>
<button style="background-color: blueviolet;" onclick=@(() => SpawnEnemy("spitter_elite_freeze")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_elite_freeze")>❄️</button>
<button style="background-color: blueviolet;" onclick=@(() => SpawnEnemy("spitter_elite_poison")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_elite_poison")>☣️</button>
<button style="background-color: blueviolet;" onclick=@(() => SpawnEnemy("spitter_elite_acid")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_elite_acid")>🌊</button>
<button style="background-color: blueviolet;" onclick=@(() => SpawnEnemy("spitter_elite_curse")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spitter_elite_curse")>💀</button>
</div>
<div class="debug_row">
<button style="background-color: purple;" onclick=@(() => SpawnEnemy("spiker")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spiker")>🌂</button>
<button style="background-color: purple;" onclick=@(() => SpawnEnemy("spiker_elite")) onmousedown=@(() => Manager.Instance.MouseDebugText = "spiker elite")>🍆</button>
</div>
<div class="debug_row">
<button style="background-color: orange;" onclick=@(() => SpawnEnemy("charger")) onmousedown=@(() => Manager.Instance.MouseDebugText = "charger")>🐑</button>
<button style="background-color: orange;" onclick=@(() => SpawnEnemy("charger_elite")) onmousedown=@(() => Manager.Instance.MouseDebugText = "charger elite")>🦌</button>
</div>
<div class="debug_row">
<button style="background-color: black;" onclick=@(() => SpawnEnemy("runner")) onmousedown=@(() => Manager.Instance.MouseDebugText = "runner")>🐺</button>
<button style="background-color: black;" onclick=@(() => SpawnEnemy("runner_elite")) onmousedown=@(() => Manager.Instance.MouseDebugText = "runner elite")>🦇</button>
</div>
<div class="debug_row">
<button style="background-color: grey;" onclick=@(() => SpawnEnemy("barrel")) onmousedown=@(() => Manager.Instance.MouseDebugText = "barrel")>🥫</button>
<button style="background-color: grey;" onclick=@(() => SpawnEnemy("barrel_exploding")) onmousedown=@(() => Manager.Instance.MouseDebugText = "barrel exploding")>🛢️</button>
<button style="background-color: grey;" onclick=@(() => SpawnEnemy("chest")) onmousedown=@(() => Manager.Instance.MouseDebugText = "chest")>📦</button>
<button style="background-color: grey;" onclick=@(() => SpawnEnemy("chest_evil")) onmousedown=@(() => Manager.Instance.MouseDebugText = "chest evil")>🧰</button>
</div>
<div class="debug_row">
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_spitter")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss spitter")>🐟</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_sniper")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss sniper")>🐫</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_troll")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss troll")>🧝🏼</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_runner")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss runner")>🧛</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_charger")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss charger")>🐂</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_charger_2")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss charger 2")>🐘</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_slammer")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss slammer")>🥁</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_shielder")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss shielder")>🐢</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_spiker")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss spiker")>🗡️</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_spiker_2")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss spiker 2")>🥕</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_exploder")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss exploder")>💥</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_zapper")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss zapper")>🌩️</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_zapper_2")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss zapper 2")>⚡</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_zoner")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss zoner")>🔵</button>
<button style="background-color: darkslategrey;" onclick=@(() => SpawnEnemy("miniboss_absorber")) onmousedown=@(() => Manager.Instance.MouseDebugText = "miniboss absorber")>🧽</button>
@* <button style="background-color: darkslategrey;" onclick=@(() => SpawnSnaker()) onmousedown=@(() => Manager.Instance.MouseDebugText = "snaker")>🐍</button> *@
<button style="background-color: darkgrey;" onclick=@(() => Manager.Instance.SpawnBoss()) onmousedown=@(() => Manager.Instance.MouseDebugText = "boss")>👑</button>
<button style="background-color: darkgrey;" onclick=@(() => KillBoss()) onmousedown=@(() => Manager.Instance.MouseDebugText = "kill boss")>☠︎︎</button>
<button style="background-color: darkgrey;" onclick=@(() => SpawnSword()) onmousedown=@(() => Manager.Instance.MouseDebugText = "sword")>⚔️</button>
<button style="background-color: darkgrey;" onclick=@(() => SpawnEnemy("boss_invincible_generator")) onmousedown=@(() => Manager.Instance.MouseDebugText = "boss invincible generator")>💎</button>
</div>
<div class="debug_row">
<button style="background-color: darkgreen;" onclick=@(() => SpawnCoin()) onmousedown=@(() => Manager.Instance.MouseDebugText = "coin")>💰</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("health_pack")) onmousedown=@(() => Manager.Instance.MouseDebugText = "healthpack")>➕</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("magnet")) onmousedown=@(() => Manager.Instance.MouseDebugText = "magnet")>🧲</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("revive_soul")) onmousedown=@(() => Manager.Instance.MouseDebugText = "revive soul")>✝️</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("bomb")) onmousedown=@(() => Manager.Instance.MouseDebugText = "bomb")>💣</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("reroll_item")) onmousedown=@(() => Manager.Instance.MouseDebugText = "reroll")>🎲</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("banish_item")) onmousedown=@(() => Manager.Instance.MouseDebugText = "banish")>✂️</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("armor_item")) onmousedown=@(() => Manager.Instance.MouseDebugText = "armor")>🛡️</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnItem("reload_item")) onmousedown=@(() => Manager.Instance.MouseDebugText = "reload pickup")>🔫</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnPerk()) onmousedown=@(() => Manager.Instance.MouseDebugText = "random perk")>🧩</button>
<button style="background-color: darkgreen;" onclick=@(() => FpsPerk()) onmousedown=@(() => Manager.Instance.MouseDebugText = "3rd person perk")>👁️</button>
<button style="background-color: darkgreen;" onclick=@(() => PerspectivePerk()) onmousedown=@(() => Manager.Instance.MouseDebugText = "perspective perk")>👀</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnEnemy("mushroom")) onmousedown=@(() => Manager.Instance.MouseDebugText = "mushroom")>🍄</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnEnemy("tree")) onmousedown=@(() => Manager.Instance.MouseDebugText = "tree")>🌲</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnAcidPuddle()) onmousedown=@(() => Manager.Instance.MouseDebugText = "acid puddle")>🌊</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnFireGround()) onmousedown=@(() => Manager.Instance.MouseDebugText = "ground fire")>🔥</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnLandmine()) onmousedown=@(() => Manager.Instance.MouseDebugText = "landmine")>⚠️</button>
<button style="background-color: darkgreen;" onclick=@(() => SpawnLavaBlob()) onmousedown=@(() => Manager.Instance.MouseDebugText = "lava")>🟠</button>
</div>
<div class="debug_row">
<button style="background-color: darkslategrey;" onclick=@(() => ChainPlayer()) onmousedown=@(() => Manager.Instance.MouseDebugText = "chain")>⛓️</button>
<button style="background-color: transparent;" onclick=@(() => PlayerShield()) onmousedown=@(() => Manager.Instance.MouseDebugText = "player shield")>🟡</button>
<button style="background-color: transparent;" onclick=@(() => FireParticles()) onmousedown=@(() => Manager.Instance.MouseDebugText = "fire particles")>🔥</button>
<button style="background-color: transparent;" onclick=@(() => FreezeParticles()) onmousedown=@(() => Manager.Instance.MouseDebugText = "freeze particles")>❄️</button>
<button style="background-color: transparent;" onclick=@(() => PoisonParticles()) onmousedown=@(() => Manager.Instance.MouseDebugText = "poison particles")>☣️</button>
<button style="background-color: transparent;" onclick=@(() => FearParticles()) onmousedown=@(() => Manager.Instance.MouseDebugText = "fear particles")>😱</button>
<button style="background-color: transparent;" onclick=@(() => StunParticles()) onmousedown=@(() => Manager.Instance.MouseDebugText = "stun particles")>💫</button>
<button style="background-color: transparent;" onclick=@(() => ShockParticles()) onmousedown=@(() => Manager.Instance.MouseDebugText = "shock particles")>⚡</button>
</div>
</root>
@code {
public string TooltipText { get; set; }
protected override int BuildHash()
{
return System.HashCode.Combine(
Manager.Instance.DontSpawnRandomEnemies,
Manager.Instance.GodMode
);
}
void ToggleSpawnEnemies()
{
Manager.Instance.DontSpawnRandomEnemies = !Manager.Instance.DontSpawnRandomEnemies;
GameSettingsSystem.Save();
}
void ToggleGodMode()
{
Manager.Instance.GodMode = !Manager.Instance.GodMode;
GameSettingsSystem.Save();
}
void ToggleLaunchEnemies()
{
Manager.Instance.LaunchEnemies = !Manager.Instance.LaunchEnemies;
GameSettingsSystem.Save();
}
void TogglePlayerMaxDmg()
{
Manager.Instance.PlayerMaxDmg = !Manager.Instance.PlayerMaxDmg;
GameSettingsSystem.Save();
}
void LevelUp()
{
Manager.Instance.LocalPlayer?.LevelUpDebug();
}
void ToggleBulletBounce()
{
Manager.Instance.DebugBulletBounce = !Manager.Instance.DebugBulletBounce;
GameSettingsSystem.Save();
}
void ToggleBulletPierce()
{
Manager.Instance.DebugBulletPierce = !Manager.Instance.DebugBulletPierce;
GameSettingsSystem.Save();
}
void ToggleBulletSplash()
{
Manager.Instance.DebugBulletSplash = !Manager.Instance.DebugBulletSplash;
GameSettingsSystem.Save();
}
void ResetDebug()
{
Manager.Instance.PlayerMaxDmg = false;
Manager.Instance.DebugBulletBounce = false;
Manager.Instance.DebugBulletPierce = false;
Manager.Instance.DebugBulletSplash = false;
Manager.Instance.DontSpawnRandomEnemies = false;
Manager.Instance.GodMode = false;
Manager.Instance.LaunchEnemies = false;
GameSettingsSystem.Save();
}
void ToggleShowAllPerks()
{
Manager.Instance.ShowAllPerks = !Manager.Instance.ShowAllPerks;
}
void SpawnEnemy(string name, float rotAngle = 0f)
{
Manager.Instance.SpawnEnemy(name, Manager.Instance.LocalPlayer.Position2D + Utils.GetRandomVector() * 60f, spawnInstantly: false, rotAngle);
}
void SpawnSword()
{
var player = Manager.Instance.LocalPlayer;
var pos = player.Position2D + player.Velocity * Game.Random.Float(0f, 3f) + Utils.GetRandomVector() * Game.Random.Float(30f, 120f);
Manager.Instance.SpawnEnemy("sword", pos, spawnInstantly: false, rotAngle: 0f);
}
void SpawnCoin()
{
var dir = Utils.GetRandomVector();
Manager.Instance.SpawnCoinRpc( Manager.Instance.LocalPlayer.Position2D + dir * 50f, Game.Random.Int( 1, 3 ), dir );
}
void SpawnItem(string name)
{
Manager.Instance.LocalPlayer.GiveItemRpc(name, Utils.GetRandomVector());
}
void SpawnPerk()
{
Manager.Instance.LocalPlayer.GiveRandomPerkItemWithMessage( sourcePerkType: null, Rarity.None );
}
void FpsPerk()
{
var dir = Utils.GetRandomVector();
Manager.Instance.SpawnPerkItemRpc( PerkManager.TypeToIdentity( TypeLibrary.GetType( typeof( PerkFpsMode ) ) ), Manager.Instance.LocalPlayer.Position2D + dir * 50f, dir );
}
void PerspectivePerk()
{
var dir = Utils.GetRandomVector();
Manager.Instance.SpawnPerkItemRpc(PerkManager.TypeToIdentity(TypeLibrary.GetType(typeof(PerkPerspective))), Manager.Instance.LocalPlayer.Position2D + dir * 50f, dir);
}
void SpawnAcidPuddle()
{
var dir = Utils.GetRandomVector();
Manager.Instance.SpawnAcidPuddleRpc( Manager.Instance.LocalPlayer.Position2D + dir * 100f, lifetime: Game.Random.Float( 24f, 30f ), damage: 5f, scale: Game.Random.Float( 0.5f, 1.8f ), new Color( 0.5f, 0.3f, 0.6f ), new Color( 0.5f, 0.5f, 0.7f ), playerSource: null, enemySource: null, enemyType: EnemyType.None );
}
void SpawnFireGround()
{
var dir = Utils.GetRandomVector();
Manager.Instance.SpawnFireGroundRpc( Manager.Instance.LocalPlayer.Position2D + dir * 100f, player: null, enemySource: null, enemyType: EnemyType.None, damage: 2f, lifetime: 8f, spreadChance: 50f, canStack: false, scale: 1f, colorA: Color.Red, colorB: Color.Yellow );
}
void SpawnLavaBlob()
{
if(Manager.Instance.GetLavaBlobEndPos(Manager.Instance.LocalPlayer.Position2D, out Vector2 endPos))
Manager.Instance.SpawnLavaBlob(Manager.Instance.LocalPlayer.Position2D, endPos, puddleRadius: Game.Random.Float(170f, 250f), enemySource: null, enemyType: EnemyType.None );
}
void SpawnLandmine()
{
var player = Manager.Instance.LocalPlayer;
var dir = Utils.GetRandomVector();
var pos = player.Position2D + dir * Game.Random.Float(50f, 100f);
var damage = 10f;
var landmineGo = GameObject.Clone("prefabs/landmine.prefab", new CloneConfig { StartEnabled = true, Transform = new Transform(new Vector3(pos.x, pos.y, 0f)) });
var landmine = landmineGo.Components.Get<Landmine>(true);
landmine.Damage = damage;
landmine.Shooter = player;
landmineGo.NetworkSpawn(player.Network.Owner);
}
void SpawnSnaker()
{
var dir = Utils.GetRandomVector();
var pos = Manager.Instance.LocalPlayer.Position2D + dir * 50f;
Manager.Instance.SpawnSnaker( pos, numSegments: 12 );
}
void KillBoss()
{
if(!Game.IsEditor)
return;
var boss = Manager.Instance.Boss;
if( !boss.IsValid() )
return;
Manager.Instance.DontSubmitScore = true;
// Manager.Instance.DontFinishGameOnBossKill = true;
var localPlayer = Manager.Instance.LocalPlayer;
var dir = localPlayer.IsValid()
? (boss.Position2D - localPlayer.Position2D).Normal
: Utils.GetRandomVector();
var hitPos = boss.Position2D - dir * boss.Radius;
Manager.Instance.Boss?.DamageRpc(Manager.Instance.Boss.Health - 0f, localPlayer, DamageType.Bullet, hitPos, dir);
}
void ChainPlayer()
{
var player = Manager.Instance.LocalPlayer;
if(!player.IsValid())
return;
var enemy = Manager.Instance.GetClosestEnemy(player.Position2D);
if(!enemy.IsValid())
return;
player.Chain(anchorUnit: enemy, chainPos: enemy.Position2D, chainLength: 150f, lifetime: 10f);
}
void KillPlayer()
{
var player = Manager.Instance.LocalPlayer;
var dir = Utils.GetRandomVector();
var force = 1f;
var upwardAmount = 1f;// Game.Random.Float(0f, 1f);
player?.Damage(999f, DamageType.Self, player.Position2D, dir, upwardAmount, force, ragdollForce: 1f, enemySource: null, enemyType: EnemyType.None);
}
void AlmostKillPlayer()
{
var player = Manager.Instance.LocalPlayer;
player?.Damage(player.Health - 1f, DamageType.Self, player.Position2D, Vector2.Zero, 0f, 0f, ragdollForce: 1f, enemySource: null, enemyType: EnemyType.None);
}
void PlayerShield()
{
var player = Manager.Instance.LocalPlayer;
player.GainShield();
var closestEnemy = Manager.Instance.GetClosestEnemy(player.Position2D, 1000f, onlyCountsAsKill: false);
closestEnemy?.GainShield();
}
void FireParticles()
{
var player = Manager.Instance.LocalPlayer;
player.Ignite(null, null, EnemyType.None, 1f, 30f, 0.1f, false);
var closestEnemy = Manager.Instance.GetClosestEnemy(player.Position2D, 1000f, onlyCountsAsKill: false);
closestEnemy?.Ignite(null, null, EnemyType.None, 1f, 30f, 0.1f, false);
}
void FreezeParticles()
{
var player = Manager.Instance.LocalPlayer;
player.Freeze(null, null, 0.5f, 30f, true);
var closestEnemy = Manager.Instance.GetClosestEnemy(player.Position2D, 1000f, onlyCountsAsKill: false);
closestEnemy?.Freeze(null, null, 0.5f, 30f, true);
}
void PoisonParticles()
{
var player = Manager.Instance.LocalPlayer;
player.Poison(null, null, EnemyType.None, 1, 0f, 0.2f, 1f, false);
var closestEnemy = Manager.Instance.GetClosestEnemy(player.Position2D, 1000f, onlyCountsAsKill: false);
closestEnemy?.Poison(null, null, EnemyType.None, 1, 0f, 0.2f, 1f, false);
}
void FearParticles()
{
var player = Manager.Instance.LocalPlayer;
var closestEnemy = Manager.Instance.GetClosestEnemy(player.Position2D, 1200f, onlyCountsAsKill: false);
closestEnemy?.Fear(null, null, 30f);
}
void StunParticles()
{
var player = Manager.Instance.LocalPlayer;
player.Stun(null, null, 1f);
var closestEnemy = Manager.Instance.GetClosestEnemy(player.Position2D, 1000f, onlyCountsAsKill: false);
closestEnemy?.Stun(null, null, 1f);
}
void ShockParticles()
{
var player = Manager.Instance.LocalPlayer;
player.Shock(null, null, 2f, 0, 5);
var closestEnemy = Manager.Instance.GetClosestEnemy(player.Position2D, 1000f, onlyCountsAsKill: false);
closestEnemy?.Shock(null, null, 2f, 0, 5);
}
}