Files
zzz_REBIRTH__Utils/Scripts/Network/NetPackageCheckSleeperVolumes.cs
2025-06-04 16:44:53 +09:30

120 lines
5.9 KiB
C#

using UnityEngine.Scripting;
[Preserve]
public class NetPackageCheckSleeperVolumes : NetPackage
{
public NetPackageCheckSleeperVolumes Setup(int _entityPlayerID, int _maxSleeperVolumeCount)
{
this.entityPlayerID = _entityPlayerID;
this.maxSleeperVolumeCount = _maxSleeperVolumeCount;
return this;
}
public override void read(PooledBinaryReader _reader)
{
this.entityPlayerID = _reader.ReadInt32();
this.maxSleeperVolumeCount = _reader.ReadInt32();
}
public override void write(PooledBinaryWriter _writer)
{
base.write(_writer);
_writer.Write(this.entityPlayerID);
_writer.Write(this.maxSleeperVolumeCount);
}
public override void ProcessPackage(World _world, GameManager _callbacks)
{
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage START");
EntityPlayer player = _world.GetEntity(this.entityPlayerID) as EntityPlayer;
if (player != null)
{
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage PLAYER EXISTS");
int totalKills = RebirthManager.GetTotalKills(player.entityId);
player.Buffs.SetCustomVar("$totalPurgeKills", totalKills);
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage totalKills: " + totalKills);
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage $purgeKills: " + player.Buffs.GetCustomVar("$purgeKills"));
int numKills = RebirthManager.AutoRedeemKills(player.entityId);
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage numKills: " + numKills);
if (numKills > 0)
{
player.Buffs.SetCustomVar("$purgeKills", player.Buffs.GetCustomVar("$purgeKills") + numKills);
int numInterations = 0;
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive RebirthVariables.purgeAirDropNumKills: " + RebirthVariables.purgeAirDropNumKills);
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive RebirthVariables.purgeAirDropNumKillsIncrement: " + RebirthVariables.purgeAirDropNumKillsIncrement);
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive A $purgeKillsIncrement: " + __instance.Buffs.GetCustomVar("$purgeKillsIncrement"));
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive compared to: " + RebirthVariables.purgeAirDropNumKills + RebirthVariables.purgeAirDropNumKillsIncrement * (int)__instance.Buffs.GetCustomVar("$purgeKillsIncrement"));
int purgeAirDropNumKills = RebirthVariables.purgeAirDropNumKills - (int)player.Buffs.GetCustomVar("$ModPurge") * 10;
// Enter the while loop as long as the condition holds true
while (player.Buffs.GetCustomVar("$purgeKills") >= (purgeAirDropNumKills + RebirthVariables.purgeAirDropNumKillsIncrement * (int)player.Buffs.GetCustomVar("$purgeKillsIncrement")))
{
// Recalculate target kills for each iteration
int numTargetKills = purgeAirDropNumKills + RebirthVariables.purgeAirDropNumKillsIncrement * (int)player.Buffs.GetCustomVar("$purgeKillsIncrement");
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive numTargetKills: " + numTargetKills);
numInterations++;
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive numInterations: " + numInterations);
float purgeKillsIncrement = player.Buffs.GetCustomVar("$purgeKillsIncrement");
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive purgeKillsIncrement: " + purgeKillsIncrement);
// Reduce $purgeKills by the number of target kills
player.Buffs.SetCustomVar("$purgeKills", player.Buffs.GetCustomVar("$purgeKills") - numTargetKills);
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive B $purgeKills: " + player.Buffs.GetCustomVar("$purgeKills"));
// Check if the incremented kills are below the max and increase accordingly
if ((RebirthVariables.purgeAirDropNumKillsIncrement * purgeKillsIncrement) < RebirthVariables.purgeAirDropNumKillsMax)
{
player.Buffs.SetCustomVar("$purgeKillsIncrement", purgeKillsIncrement + 1);
}
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive B $purgeKillsIncrement: " + player.Buffs.GetCustomVar("$purgeKillsIncrement"));
}
if (numInterations > 0)
{
//Log.Out("EntityPlayerLocalPatches-OnUpdateLive numInterations: " + numInterations);
player.Buffs.SetCustomVar("$numSupplyDrops", numInterations);
}
}
PrefabInstance poiatPosition = RebirthUtilities.GetPrefabAtPosition(player.position); // player.world.GetPOIAtPosition(player.position, false);
if (poiatPosition != null)
{
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage POI EXISTS, prefabName: " + poiatPosition.prefab.PrefabName);
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage POI EXISTS, RebirthVariables.checkSleeperVolumes: " + RebirthVariables.checkSleeperVolumes);
if (!RebirthVariables.checkSleeperVolumes)
{
GameManager.Instance.StartCoroutine(RebirthUtilities.checkSleeperVolumes(poiatPosition, player, this.maxSleeperVolumeCount, true));
}
}
else
{
//Log.Out("NetPackageCheckSleeperVolumes-ProcessPackage POI DOES NOT EXIST, TURN DISPLAY OFF");
SingletonMonoBehaviour<ConnectionManager>.Instance.SendPackage(NetPackageManager.GetPackage<NetPackageSetScenarioDisplay>().Setup(1, false), false, this.entityPlayerID);
}
}
}
public override int GetLength()
{
return 4;
}
private int entityPlayerID;
private int maxSleeperVolumeCount;
}