Книга некроманта 1.0 — первая публичная версия
Мод для 7 Days to Die 3.2: навык «Некромантия», растущий от счётчика убитых зомби, тёмное оружие с шестью собственными модами, призывная нежить, пирамида духов и сюжетный финал через Чёрный портал. Локализация на 13 языках. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MaNro5hAGTzcQ7rJNN2tCX
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
using System.Reflection;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NecromancerTome
|
||||
{
|
||||
/// <summary>
|
||||
/// Mod entry point. The game finds this by scanning every assembly dropped in a
|
||||
/// Mods/<ModFolder>/ directory for a type implementing IModApi.
|
||||
/// </summary>
|
||||
public class ModEntry : IModApi
|
||||
{
|
||||
public void InitMod(Mod _modInstance)
|
||||
{
|
||||
var harmony = new Harmony("necromancertome.harmony");
|
||||
harmony.PatchAll(Assembly.GetExecutingAssembly());
|
||||
PetFollowPatch.Init();
|
||||
// PyramidWardPatch.cs's TEFeaturePyramidWard needs no Init() call - it's discovered
|
||||
// automatically by the engine's own TileEntityCompositeData reflection scan (see that
|
||||
// file's class doc comment), not registered here like PetFollowPatch's UnityUpdate hook.
|
||||
|
||||
// Diagnostic-only, added 2026-08-28 while chasing "VictimPatch never logs anything at
|
||||
// all for dropItemOnDeath, even though decompiling EntityAlive.OnEntityDeath()
|
||||
// confirms it's called unconditionally right after the 'killed by' line seen in the
|
||||
// log". This checks, at load time, whether Harmony actually attached our Prefix to
|
||||
// that method at all - rules "patch never applied" in or out without waiting on
|
||||
// another in-game death.
|
||||
VerifyPrefixAttached(typeof(EntityAlive), "dropItemOnDeath");
|
||||
VerifyPrefixAttached(typeof(Entity), "DropBagServer");
|
||||
}
|
||||
|
||||
public static void VerifyPrefixAttached(System.Type type, string methodName)
|
||||
{
|
||||
MethodBase method = AccessTools.Method(type, methodName);
|
||||
if (method == null)
|
||||
{
|
||||
Debug.LogWarning("[NecromancerTome] ModEntry: could not resolve " + type.Name + "." + methodName + " via AccessTools - method not found");
|
||||
return;
|
||||
}
|
||||
Patches info = Harmony.GetPatchInfo(method);
|
||||
int prefixCount = info != null && info.Prefixes != null ? info.Prefixes.Count : 0;
|
||||
Debug.Log("[NecromancerTome] ModEntry: " + type.Name + "." + methodName + " resolved, has " + prefixCount + " prefix patch(es) attached after PatchAll");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user