the initial commit to the repo.
This commit is contained in:
parent
025c032b8c
commit
1b757591b9
264 changed files with 21882 additions and 0 deletions
477
stoopid.raw/stupid.solutions.Features/EntityManager.cs
Normal file
477
stoopid.raw/stupid.solutions.Features/EntityManager.cs
Normal file
|
|
@ -0,0 +1,477 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EFT;
|
||||
using EFT.InventoryLogic;
|
||||
using EFT.UI;
|
||||
using stupid.solutions.Data;
|
||||
using stupid.solutions.Utils;
|
||||
using UnityEngine;
|
||||
|
||||
namespace stupid.solutions.Features;
|
||||
|
||||
public static class EntityManager
|
||||
{
|
||||
public static void KillEntity(Player entity)
|
||||
{
|
||||
if (entity != null && !entity.IsYourPlayer)
|
||||
{
|
||||
entity.ActiveHealthController.Kill(EDamageType.Landmine);
|
||||
ConsoleScreen.Log("Killed " + entity.name);
|
||||
}
|
||||
}
|
||||
|
||||
public static void HealEntity(Player entity)
|
||||
{
|
||||
if (entity == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (EBodyPart value in Enum.GetValues(typeof(EBodyPart)))
|
||||
{
|
||||
if (entity.ActiveHealthController.IsBodyPartBroken(value) || entity.ActiveHealthController.IsBodyPartDestroyed(value))
|
||||
{
|
||||
entity.ActiveHealthController.RestoreBodyPart(value, 1f);
|
||||
}
|
||||
entity.ActiveHealthController.RemoveNegativeEffects(value);
|
||||
entity.ActiveHealthController.RemoveNegativeEffects(EBodyPart.Common);
|
||||
entity.ActiveHealthController.RestoreFullHealth();
|
||||
entity.ActiveHealthController.ChangeHealth(value, 1000000f, default(_F167));
|
||||
entity.ActiveHealthController.ApplyDamage(value, 0f, default(_F167));
|
||||
ConsoleScreen.Log("Healed " + entity.name);
|
||||
}
|
||||
}
|
||||
|
||||
public static void TeleportEntityToCrosshair(Player entity)
|
||||
{
|
||||
if (!(entity == null) && !(Main.LocalPlayer == null))
|
||||
{
|
||||
Vector3 position = Main.LocalPlayer.gameObject.transform.position;
|
||||
Vector3 forward = Main.LocalPlayer.gameObject.transform.forward;
|
||||
float num = 5f;
|
||||
Vector3 position2 = position + forward * num;
|
||||
entity.Teleport(position2, onServerToo: true);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ToggleOffEntityObject(Player entity)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (entity.AIData.BotOwner.EnemiesController?.EnemyInfos != null && !(Main.LocalPlayer == null))
|
||||
{
|
||||
if (!entity.AIData.BotOwner.BotsGroup.Allies.Contains(Main.LocalPlayer) && entity.AIData.BotOwner.BotsGroup.Side == entity.Profile.Side)
|
||||
{
|
||||
entity.AIData.BotOwner.BotsGroup.RemoveEnemy(Main.LocalPlayer);
|
||||
entity.AIData.BotOwner.BotsGroup.AddAlly(Main.LocalPlayer);
|
||||
ConsoleScreen.Log($"Now an Ally of : {entity.AIData.BotOwner.BotsGroup.Side} Initial WST :{entity.AIData.BotOwner.BotsGroup.InitialBotType}");
|
||||
}
|
||||
entity.AIData.BotOwner.Memory.GoalTarget.Clear();
|
||||
entity.AIData.BotOwner.Memory.GoalEnemy = null;
|
||||
}
|
||||
}
|
||||
catch (Exception arg)
|
||||
{
|
||||
ConsoleScreen.Log($"Error in Bot Lobotomization code : {arg}");
|
||||
}
|
||||
}
|
||||
|
||||
public static void MakeBotAlly(Player entity)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (entity.AIData.BotOwner.EnemiesController?.EnemyInfos != null && !(Main.LocalPlayer == null) && !entity.AIData.BotOwner.BotsGroup.IsAlly(Main.LocalPlayer) && entity.AIData.BotOwner.BotsGroup.Side == entity.Profile.Side)
|
||||
{
|
||||
entity.AIData.BotOwner.BotsGroup.RemoveEnemy(Main.LocalPlayer);
|
||||
entity.AIData.BotOwner.BotsGroup.AddAlly(Main.LocalPlayer);
|
||||
entity.AIData.BotOwner.Memory.GoalTarget.Clear();
|
||||
entity.AIData.BotOwner.Memory.GoalEnemy = null;
|
||||
}
|
||||
}
|
||||
catch (Exception arg)
|
||||
{
|
||||
ConsoleScreen.Log($"Error in Bot Lobotomization code : {arg}");
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetKnifeOut(Player entity)
|
||||
{
|
||||
foreach (Item item in entity.AIData.BotOwner.InventoryController.Items)
|
||||
{
|
||||
entity.AIData.BotOwner.InventoryController.ThrowItem(item);
|
||||
entity.AIData.BotOwner.ItemDropper.SetItemToDropNext(item);
|
||||
entity.AIData.BotOwner.ItemDropper.TryDoDrop();
|
||||
}
|
||||
}
|
||||
|
||||
private static Item CreateLoadedBlicky()
|
||||
{
|
||||
ItemFactory itemFactory = new ItemFactory();
|
||||
dynamic val = itemFactory.CreateItem("66015072e9f84d5680039678");
|
||||
if (val == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: Failed to create weapon item!");
|
||||
return null;
|
||||
}
|
||||
dynamic val2 = val.AllSlots;
|
||||
foreach (dynamic item3 in val2)
|
||||
{
|
||||
dynamic val3 = item3?.Filters == null;
|
||||
if (val3 || item3.Filters.Length == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (dynamic item4 in item3.Filters)
|
||||
{
|
||||
val3 = item4?.Filter == null;
|
||||
if (val3 || item4.Filter.Length == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
string text = item4.Filter[UnityEngine.Random.Range(0, item4.Filter.Length)].ToString();
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
Item item = itemFactory.CreateItem(text);
|
||||
if (item != null)
|
||||
{
|
||||
item.SpawnedInSession = true;
|
||||
item3.AddWithoutRestrictions(item);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
dynamic currentMagazine = val.GetCurrentMagazine();
|
||||
if (currentMagazine != null)
|
||||
{
|
||||
int num = currentMagazine.Cartridges.MaxCount;
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
Item item2 = itemFactory.CreateItem("6601546f86889319850bd566");
|
||||
if (item2 != null)
|
||||
{
|
||||
item2.SpawnedInSession = true;
|
||||
currentMagazine.Cartridges?.Add(item2, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
public static void GiveBotsBlickyKit(Player entity)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (entity == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: Entity is null!");
|
||||
return;
|
||||
}
|
||||
ConsoleScreen.Log("[GiveBotsBlickyKit] Starting for " + entity.Profile?.Nickname);
|
||||
if (entity.AIData == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: AIData is null!");
|
||||
return;
|
||||
}
|
||||
BotOwner botOwner = entity.AIData.BotOwner;
|
||||
if (botOwner == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: BotOwner is null!");
|
||||
return;
|
||||
}
|
||||
InventoryController inventoryController = botOwner.InventoryController;
|
||||
if (inventoryController == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: InventoryController is null!");
|
||||
return;
|
||||
}
|
||||
InventoryEquipment inventoryEquipment = inventoryController.Inventory?.Equipment;
|
||||
if (inventoryEquipment == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: Equipment is null!");
|
||||
return;
|
||||
}
|
||||
ItemFactory itemFactory = new ItemFactory();
|
||||
Slot slot = inventoryEquipment.GetSlot(EquipmentSlot.FirstPrimaryWeapon);
|
||||
Slot slot2 = inventoryEquipment.GetSlot(EquipmentSlot.SecondPrimaryWeapon);
|
||||
Slot slot3 = inventoryEquipment.GetSlot(EquipmentSlot.Holster);
|
||||
Slot slot4 = inventoryEquipment.GetSlot(EquipmentSlot.Scabbard);
|
||||
Slot slot5 = inventoryEquipment.GetSlot(EquipmentSlot.Headwear);
|
||||
Slot slot6 = inventoryEquipment.GetSlot(EquipmentSlot.TacticalVest);
|
||||
Slot slot7 = inventoryEquipment.GetSlot(EquipmentSlot.FaceCover);
|
||||
inventoryEquipment.GetSlot(EquipmentSlot.Pockets);
|
||||
IEnumerable<Slot> allSlots = inventoryEquipment.GetAllSlots();
|
||||
foreach (Slot item8 in allSlots)
|
||||
{
|
||||
item8?.RemoveItemWithoutRestrictions();
|
||||
}
|
||||
if (slot3 != null && slot3.ContainedItem?.TemplateId != (MongoID?)"66015072e9f84d5680039678")
|
||||
{
|
||||
Item item = CreateLoadedBlicky();
|
||||
slot3.RemoveItemWithoutRestrictions();
|
||||
slot3.AddWithoutRestrictions(item);
|
||||
}
|
||||
if (slot2 != null && slot2.ContainedItem?.TemplateId != (MongoID?)"66015072e9f84d5680039678")
|
||||
{
|
||||
Item item2 = CreateLoadedBlicky();
|
||||
slot2.RemoveItemWithoutRestrictions();
|
||||
slot2.AddWithoutRestrictions(item2);
|
||||
}
|
||||
if (slot != null && slot.ContainedItem?.TemplateId != (MongoID?)"66015072e9f84d5680039678")
|
||||
{
|
||||
Item item3 = CreateLoadedBlicky();
|
||||
slot.RemoveItemWithoutRestrictions();
|
||||
slot.AddWithoutRestrictions(item3);
|
||||
}
|
||||
if (slot4 != null && slot4.ContainedItem?.TemplateId != (MongoID?)"6540d2162ae6d96b540afcaf")
|
||||
{
|
||||
Item item4 = itemFactory.CreateItem("6540d2162ae6d96b540afcaf");
|
||||
slot4.RemoveItemWithoutRestrictions();
|
||||
slot4.AddWithoutRestrictions(item4);
|
||||
}
|
||||
if (slot5 != null && slot5.ContainedItem?.TemplateId != (MongoID?)"60bf74184a63fc79b60c57f6")
|
||||
{
|
||||
dynamic val = itemFactory.CreateItem("60bf74184a63fc79b60c57f6");
|
||||
slot5.RemoveItemWithoutRestrictions();
|
||||
dynamic val2 = val.AllSlots;
|
||||
foreach (dynamic item9 in val2)
|
||||
{
|
||||
dynamic val3 = item9?.Filters == null;
|
||||
if (val3 || item9.Filters.Length == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (dynamic item10 in item9.Filters)
|
||||
{
|
||||
val3 = item10?.Filter == null;
|
||||
if (val3 || item10.Filter.Length == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
string text = item10.Filter[UnityEngine.Random.Range(0, item10.Filter.Length)].ToString();
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
Item item5 = itemFactory.CreateItem(text);
|
||||
if (item5 != null)
|
||||
{
|
||||
item5.SpawnedInSession = true;
|
||||
item9.AddWithoutRestrictions(item5);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
slot5.AddWithoutRestrictions(val);
|
||||
}
|
||||
if (slot6 != null)
|
||||
{
|
||||
slot6.RemoveItemWithoutRestrictions();
|
||||
dynamic val4 = itemFactory.CreateItem("5fd4c4fa16cac650092f6771");
|
||||
if (val4 == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: Failed to create rig!");
|
||||
return;
|
||||
}
|
||||
dynamic val5 = val4.Grids?[0];
|
||||
dynamic val6 = val4.Grids?[1];
|
||||
dynamic val7 = val4.Grids?[2];
|
||||
dynamic val8 = val4?.Grids?[3];
|
||||
if (val5 == null)
|
||||
{
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: rigGrid is null!");
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
Item item6 = itemFactory.CreateItem("6601546f86889319850bd566");
|
||||
if (item6 == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
item6.SpawnedInSession = true;
|
||||
item6.StackObjectsCount = item6.Template.StackMaxSize;
|
||||
LocationInGrid locationInGrid = val5.FindFreeSpace(item6);
|
||||
if (locationInGrid != null)
|
||||
{
|
||||
val5.AddItemWithoutRestrictions(item6, locationInGrid);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!((val6 != null) ? true : false))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
LocationInGrid locationInGrid2 = val6.FindFreeSpace(item6);
|
||||
if (locationInGrid2 != null)
|
||||
{
|
||||
val6.AddItemWithoutRestrictions(item6, locationInGrid2);
|
||||
}
|
||||
else if (val7 != null)
|
||||
{
|
||||
LocationInGrid locationInGrid3 = val7.FindFreeSpace(item6);
|
||||
if (locationInGrid3 != null)
|
||||
{
|
||||
val7.AddItemWithoutRestrictions(item6, locationInGrid3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dynamic val9 = itemFactory.CreateItem("5a0c27731526d80618476ac4");
|
||||
LocationInGrid locationInGrid4 = val8.FindFreeSpace(val9);
|
||||
val8.AddItemWithoutRestrictions(val9, locationInGrid4);
|
||||
slot6.AddWithoutRestrictions(val4);
|
||||
slot6.ApplyContainedItem();
|
||||
}
|
||||
if (slot7 != null)
|
||||
{
|
||||
Item item7 = itemFactory.CreateItem("62a61bbf8ec41a51b34758d2");
|
||||
slot7.RemoveItemWithoutRestrictions();
|
||||
slot7.AddWithoutRestrictions(item7);
|
||||
}
|
||||
ConsoleScreen.Log("GiveBotsBlickyKit: Success!");
|
||||
foreach (Slot item11 in allSlots)
|
||||
{
|
||||
item11.ApplyContainedItem();
|
||||
}
|
||||
entity.AIData.BotOwner.WeaponManager.UpdateWeaponsList();
|
||||
entity.TrySetLastEquippedWeapon();
|
||||
}
|
||||
catch (Exception arg)
|
||||
{
|
||||
ConsoleScreen.Log($"[GiveBotsBlickyKit] Exception: {arg}");
|
||||
}
|
||||
}
|
||||
|
||||
public static (string displayName, Color displayColor) GetEntityDisplayInfo(GamePlayer gamePlayer)
|
||||
{
|
||||
WildSpawnType role = gamePlayer.Player.Profile.Info.Settings.Role;
|
||||
string text = gamePlayer.Player.Profile.Info.Nickname.Localized();
|
||||
Color white = Color.white;
|
||||
if (gamePlayer.Player.Profile.Info.Settings.IsBoss())
|
||||
{
|
||||
if (Main.IsBossByName(text))
|
||||
{
|
||||
text = Main.TranslateBossName(text);
|
||||
white = Settings.BossandGuardColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (role)
|
||||
{
|
||||
case WildSpawnType.shooterBTR:
|
||||
text = "BTR";
|
||||
white = Settings.BTRColor;
|
||||
break;
|
||||
case WildSpawnType.peacefullZryachiyEvent:
|
||||
case WildSpawnType.ravangeZryachiyEvent:
|
||||
text = "Event Zryachiy";
|
||||
white = Settings.BossandGuardColor;
|
||||
break;
|
||||
case WildSpawnType.bossTagillaAgro:
|
||||
text = "Shadow of Tagilla";
|
||||
white = Settings.BossandGuardColor;
|
||||
break;
|
||||
case WildSpawnType.bossKillaAgro:
|
||||
text = "Shadow of Killa";
|
||||
white = Settings.BossandGuardColor;
|
||||
break;
|
||||
case WildSpawnType.tagillaHelperAgro:
|
||||
text = "Guard";
|
||||
white = Settings.GuardColor;
|
||||
break;
|
||||
case WildSpawnType.infectedTagilla:
|
||||
text = "Zombie Tagilla";
|
||||
white = Settings.BossandGuardColor;
|
||||
break;
|
||||
case WildSpawnType.exUsec:
|
||||
text = "Rogue";
|
||||
white = Settings.RogueColor;
|
||||
break;
|
||||
case WildSpawnType.pmcUSEC:
|
||||
text = "[USEC] " + text;
|
||||
white = Settings.USECColor;
|
||||
break;
|
||||
case WildSpawnType.pmcBEAR:
|
||||
text = "[BEAR] " + text;
|
||||
white = Settings.BEARColor;
|
||||
break;
|
||||
case WildSpawnType.followerZryachiy:
|
||||
case WildSpawnType.bossBoarSniper:
|
||||
text = "Guard";
|
||||
white = Settings.GuardColor;
|
||||
break;
|
||||
case WildSpawnType.pmcBot:
|
||||
text = "Raider";
|
||||
white = Settings.RaiderColor;
|
||||
break;
|
||||
case WildSpawnType.sectantPriest:
|
||||
case WildSpawnType.sectactPriestEvent:
|
||||
case WildSpawnType.sectantPredvestnik:
|
||||
case WildSpawnType.sectantPrizrak:
|
||||
case WildSpawnType.sectantOni:
|
||||
text = "Cultist";
|
||||
white = Settings.CultistColor;
|
||||
break;
|
||||
case WildSpawnType.marksman:
|
||||
case WildSpawnType.assault:
|
||||
case WildSpawnType.assaultGroup:
|
||||
text = "Scav";
|
||||
white = Settings.ScavColor;
|
||||
break;
|
||||
case WildSpawnType.infectedAssault:
|
||||
case WildSpawnType.infectedPmc:
|
||||
case WildSpawnType.infectedCivil:
|
||||
case WildSpawnType.infectedLaborant:
|
||||
text = "Zombie";
|
||||
white = Settings.ZombieColor;
|
||||
break;
|
||||
default:
|
||||
text = "Unknown Boss: " + text;
|
||||
white = Color.red;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (role)
|
||||
{
|
||||
case WildSpawnType.sectantWarrior:
|
||||
text = "Cultist";
|
||||
white = Settings.CultistColor;
|
||||
break;
|
||||
case WildSpawnType.marksman:
|
||||
text = "Scav Sniper";
|
||||
white = Settings.ScavColor;
|
||||
break;
|
||||
case WildSpawnType.shooterBTR:
|
||||
text = "BTR";
|
||||
white = Settings.BTRColor;
|
||||
break;
|
||||
case WildSpawnType.infectedAssault:
|
||||
case WildSpawnType.infectedPmc:
|
||||
case WildSpawnType.infectedCivil:
|
||||
case WildSpawnType.infectedLaborant:
|
||||
text = "Zombie";
|
||||
white = Settings.ZombieColor;
|
||||
break;
|
||||
case WildSpawnType.arenaFighter:
|
||||
text = "Arena Fighter";
|
||||
white = Settings.RaiderColor;
|
||||
break;
|
||||
default:
|
||||
if (role != WildSpawnType.marksman && role != WildSpawnType.assault)
|
||||
{
|
||||
text = "Guard";
|
||||
white = Settings.GuardColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
text = "Scav";
|
||||
white = Settings.ScavColor;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (displayName: text, displayColor: white);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue