Decompiled source of UnlimitedGraffiti v1.0.0

Alternate-UnlimitedGraffiti-1.0.0.dll

Decompiled a week ago
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using HarmonyLib;
using MelonLoader;
using ScheduleOne.Graffiti;
using UnlimitedGraffiti;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(Core), "Unlimited Graffiti", "1.0.0", "GuysWeForgotDre", null)]
[assembly: MelonGame("TVGS", "Schedule I")]
[assembly: AssemblyTitle("Unlimited Graffiti")]
[assembly: AssemblyDescription("Restores the unlimited spray cap to Schedule I graffiti")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Unlimited Graffiti")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: ComVisible(false)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace UnlimitedGraffiti;

public class Core : MelonMod
{
	public const string ModName = "Unlimited Graffiti";

	public const string Version = "1.0.0";

	public const string ModDesc = "Restores the unlimited spray cap to Schedule I graffiti";
}
[HarmonyPatch(typeof(SpraySurfaceInteraction), "FixedUpdate")]
internal static class SpraySurfaceInteractionFixedUpdatePatch
{
	private static void Prefix(SpraySurfaceInteraction __instance)
	{
		object drawing;
		if (__instance == null)
		{
			drawing = null;
		}
		else
		{
			SpraySurface spraySurface = __instance.SpraySurface;
			drawing = ((spraySurface != null) ? spraySurface.Drawing : null);
		}
		UnlimitedSpray.TrySet((Drawing)drawing, 0);
	}
}
internal static class UnlimitedSpray
{
	private static FieldInfo _backingField;

	private static MethodInfo _setter;

	private static void EnsureResolved()
	{
		if (!(_backingField != null) && !(_setter != null))
		{
			_backingField = AccessTools.DeclaredField(typeof(Drawing), "<PaintedPixelCount>k__BackingField");
			if ((object)_backingField == null)
			{
				_setter = AccessTools.PropertySetter(typeof(Drawing), "PaintedPixelCount");
			}
		}
	}

	public static bool TrySet(Drawing drawing, int value)
	{
		if (drawing == null)
		{
			return false;
		}
		EnsureResolved();
		if (_backingField != null)
		{
			_backingField.SetValue(drawing, value);
			return true;
		}
		if (_setter != null)
		{
			_setter.Invoke(drawing, new object[1] { value });
			return true;
		}
		return false;
	}
}

Main-UnlimitedGraffiti-1.0.0.dll

Decompiled a week ago
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using HarmonyLib;
using Il2CppScheduleOne.Graffiti;
using MelonLoader;
using UnlimitedGraffiti;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(Core), "Unlimited Graffiti", "1.0.0", "GuysWeForgotDre", null)]
[assembly: MelonGame("TVGS", "Schedule I")]
[assembly: AssemblyTitle("Unlimited Graffiti")]
[assembly: AssemblyDescription("Restores the unlimited spray cap to Schedule I graffiti")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Unlimited Graffiti")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: ComVisible(false)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace UnlimitedGraffiti;

public class Core : MelonMod
{
	public const string ModName = "Unlimited Graffiti";

	public const string Version = "1.0.0";

	public const string ModDesc = "Restores the unlimited spray cap to Schedule I graffiti";
}
[HarmonyPatch(typeof(SpraySurfaceInteraction), "FixedUpdate")]
internal static class SpraySurfaceInteractionFixedUpdatePatch
{
	private static void Prefix(SpraySurfaceInteraction __instance)
	{
		object drawing;
		if (__instance == null)
		{
			drawing = null;
		}
		else
		{
			SpraySurface spraySurface = __instance.SpraySurface;
			drawing = ((spraySurface != null) ? spraySurface.Drawing : null);
		}
		UnlimitedSpray.TrySet((Drawing)drawing, 0);
	}
}
internal static class UnlimitedSpray
{
	private static FieldInfo _backingField;

	private static MethodInfo _setter;

	private static void EnsureResolved()
	{
		if (!(_backingField != null) && !(_setter != null))
		{
			_backingField = AccessTools.DeclaredField(typeof(Drawing), "<PaintedPixelCount>k__BackingField");
			if ((object)_backingField == null)
			{
				_setter = AccessTools.PropertySetter(typeof(Drawing), "PaintedPixelCount");
			}
		}
	}

	public static bool TrySet(Drawing drawing, int value)
	{
		if (drawing == null)
		{
			return false;
		}
		EnsureResolved();
		if (_backingField != null)
		{
			_backingField.SetValue(drawing, value);
			return true;
		}
		if (_setter != null)
		{
			_setter.Invoke(drawing, new object[1] { value });
			return true;
		}
		return false;
	}
}