Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Harmony/Harmony_ConsoleCmdKillAll.cs
Nathaniel Cosford 062dfab2cd Patched
2025-05-30 01:04:40 +09:30

145 lines
7.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
namespace Harmony.ConsoleCmdKillAllPatches
{
[HarmonyPatch(typeof(ConsoleCmdKillAll))]
[HarmonyPatch("Execute")]
public class ExecutePatch
{
public static void Kill(Entity entity)
{
entity.DamageEntity(new DamageSource(EnumDamageSource.Internal, EnumDamageTypes.Suicide), 99999, false);
SingletonMonoBehaviour<SdtdConsole>.Instance.Output("Gave " + 99999.ToString() + " damage to entity " + entity.GetDebugName());
}
public static bool Prefix(ConsoleCmdKillAll __instance, List<string> _params, CommandSenderInfo _senderInfo)
{
bool flag1 = _params.Count > 0 && RebirthUtilities.ConvertStringToInt(_params[0]) != -1;
int distanceParameter = -1;
if (flag1)
{
distanceParameter = RebirthUtilities.ConvertStringToInt(_params[0]);
}
//Log.Out("ConsoleCmdKillAllPatches-Execute distanceParameter: " + distanceParameter);
bool flag2 = _params.Count > 0 && _params[0].EqualsCaseInsensitive("all");
bool flag3 = _params.Count > 0 && _params[0].EqualsCaseInsensitive("vehicles");
bool flag4 = _params.Count > 0 && _params[0].EqualsCaseInsensitive("turrets");
bool flag5 = _params.Count > 0 && _params[0].EqualsCaseInsensitive("whiteriver");
bool flag6 = _params.Count > 0 && _params[0].EqualsCaseInsensitive("bandits");
bool flag7 = _params.Count > 0 && _params[0].EqualsCaseInsensitive("loot");
//Log.Out("ConsoleCmdKillAllPatches-Execute flag1: " + flag1);
//Log.Out("ConsoleCmdKillAllPatches-Execute flag2: " + flag2);
//Log.Out("ConsoleCmdKillAllPatches-Execute flag3: " + flag3);
//Log.Out("ConsoleCmdKillAllPatches-Execute flag4: " + flag4);
//Log.Out("ConsoleCmdKillAllPatches-Execute flag5: " + flag5);
//Log.Out("ConsoleCmdKillAllPatches-Execute flag6: " + flag6);
//Log.Out("ConsoleCmdKillAllPatches-Execute flag7: " + flag7);
List<Entity> entityList = new List<Entity>((IEnumerable<Entity>)GameManager.Instance.World.Entities.list);
for (int index = 0; index < entityList.Count; ++index)
{
Entity entity = entityList[index];
if (entity != null && !(entity is EntityPlayer))
{
//Log.Out("ConsoleCmdKillAllPatches-Execute entity: " + entity.EntityClass.entityClassName);
if (entity is EntityAlive && !flag7)
{
//Log.Out("ConsoleCmdKillAllPatches-Execute IS ENTITYALIVE");
switch (entity)
{
case EntityVehicle _:
if (flag3)
{
//Log.Out("ConsoleCmdKillAllPatches-Execute IS VEHICLE");
Kill(entity);
}
break;
case EntityTurret _:
if (flag4)
{
//Log.Out("ConsoleCmdKillAllPatches-Execute IS TURRET");
Kill(entity);
}
break;
default:
//Log.Out("ConsoleCmdKillAllPatches-Execute DEFAULT");
if (EntityClass.list[entity.entityClass].bIsEnemyEntity)
{
//Log.Out("ConsoleCmdKillAllPatches-Execute IS ENEMY");
if (flag1)
{
int playerId = GameManager.Instance.World.GetPrimaryPlayerId();
if (_senderInfo.RemoteClientInfo != null)
playerId = _senderInfo.RemoteClientInfo.entityId;
//Log.Out("ConsoleCmdKillAllPatches-Execute playerId: " + playerId);
if (playerId == -1)
{
break;
}
Vector3i playerPosition = new Vector3i(GameManager.Instance.World.Players.list.FirstOrDefault<EntityPlayer>((Func<EntityPlayer, bool>)(d => d.entityId == playerId)).GetPosition());
//Log.Out("ConsoleCmdKillAllPatches-Execute playerPosition: " + playerPosition);
//Log.Out("ConsoleCmdKillAllPatches-Execute entity.position: " + entity.position);
float distance = Vector3.Distance(entity.position, playerPosition);
//Log.Out("ConsoleCmdKillAllPatches-Execute distance: " + distance);
if (distance <= distanceParameter)
{
Kill(entity);
continue;
}
continue;
}
Kill(entity);
}
else
{
//Log.Out("ConsoleCmdKillAllPatches-Execute 1");
if (flag2)
{
//Log.Out("ConsoleCmdKillAllPatches-Execute 2");
Kill(entity);
}
string faction = "";
if (entity.EntityClass.Properties.Values.TryGetValue("Faction", out faction))
{
//Log.Out("ConsoleCmdKillAllPatches-Execute 3");
if (flag5 && faction.ToLower() == "whiteriver")
{
//Log.Out("ConsoleCmdKillAllPatches-Execute 4");
Kill(entity);
}
else if (flag6 && faction.ToLower() == "bandits")
{
//Log.Out("ConsoleCmdKillAllPatches-Execute 5");
Kill(entity);
}
}
}
break;
}
}
else if (entity is EntityLootContainer && flag7 && !(entity is EntityAlive))
{
//Log.Out("ConsoleCmdKillAllPatches-Execute 6");
Kill(entity);
}
}
}
return false;
}
}
}