Upload from upload_mods.ps1
This commit is contained in:
61
Harmony/Harmony_GameUtils.cs
Normal file
61
Harmony/Harmony_GameUtils.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace Harmony.GameUtilsPatches
|
||||
{
|
||||
[HarmonyPatch(typeof(GameUtils))]
|
||||
[HarmonyPatch("collectHarvestedItem")]
|
||||
public class collectHarvestedItem
|
||||
{
|
||||
private static bool Prefix(GameUtils __instance, ItemActionData _actionData, ItemValue _iv, int _count, float _prob, bool _bScaleCountOnDamage,
|
||||
ref GameRandom ___random
|
||||
)
|
||||
{
|
||||
//Log.Out("GameUtilsHarmony-collectHarvestedItem itemName: " + _iv.ItemClass.GetItemName());
|
||||
bool downgradeBlock = RebirthVariables.customReplantTrees;
|
||||
|
||||
if (downgradeBlock && _iv.ItemClass.GetItemName().Contains("treePlanted"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (___random == null)
|
||||
{
|
||||
___random = GameRandomManager.Instance.CreateGameRandom();
|
||||
___random.SetSeed((int)Stopwatch.GetTimestamp());
|
||||
}
|
||||
if (_bScaleCountOnDamage)
|
||||
{
|
||||
float num = (float)_actionData.attackDetails.damageMax / (float)_count;
|
||||
int num2 = (int)((Utils.FastMin(_actionData.attackDetails.damageTotalOfTarget, (float)_actionData.attackDetails.damageMax) - (float)_actionData.attackDetails.damageGiven) / num + 0.5f);
|
||||
int num3 = Mathf.Min((int)(_actionData.attackDetails.damageTotalOfTarget / num + 0.5f), _count);
|
||||
int b = _count;
|
||||
_count = num3 - num2;
|
||||
if (_actionData.attackDetails.damageTotalOfTarget > (float)_actionData.attackDetails.damageMax)
|
||||
{
|
||||
_count = Mathf.Min(_count, b);
|
||||
}
|
||||
}
|
||||
if (___random.RandomFloat <= _prob && _count > 0)
|
||||
{
|
||||
ItemStack itemStack = new ItemStack(_iv, _count);
|
||||
LocalPlayerUI uiforPlayer = LocalPlayerUI.GetUIForPlayer(_actionData.invData.holdingEntity as EntityPlayerLocal);
|
||||
|
||||
EntityPlayerLocal player = (EntityPlayerLocal)_actionData.invData.holdingEntity;
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
int randomInt = RebirthUtilities.GetQualityFromLootstage(player);
|
||||
itemStack.itemValue.Quality = (ushort)randomInt;
|
||||
}
|
||||
|
||||
if (!uiforPlayer.xui.PlayerInventory.AddItem(itemStack))
|
||||
{
|
||||
GameManager.Instance.ItemDropServer(new ItemStack(_iv, itemStack.count), GameManager.Instance.World.GetPrimaryPlayer().GetDropPosition(), new Vector3(0.5f, 0.5f, 0.5f), GameManager.Instance.World.GetPrimaryPlayerId(), 60f, false);
|
||||
}
|
||||
uiforPlayer.entityPlayer.Progression.AddLevelExp((int)(itemStack.itemValue.ItemClass.MadeOfMaterial.Experience * (float)_count), "_xpFromHarvesting", global::Progression.XPTypes.Harvesting, true);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user