Add rank, friends, fishing, and camp treasure with T2 studio models and skill presentation.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
udx
2026-10-21 23:01:31 +08:00
co-authored by Cursor
parent 89e0fa246f
commit 079313fb06
677 changed files with 395371 additions and 9692 deletions
+5 -1
View File
@@ -57,14 +57,18 @@ public static class VerifyFormalEnemies
{
foreach (var slot in instance.transform.Find("Enemies").Cast<Transform>())
{
Check(slot.Cast<Transform>().All(c => c.name == "SlowMark" || c.name.StartsWith("Type")), slot.name + " still has primitive parts");
Check(slot.Cast<Transform>().All(c => c.name == "SlowMark" || c.name=="SkillMuzzle" || c.name.StartsWith("Type")), slot.name + " still has primitive parts");
for (int t = 0; t < Types; t++)
{
var visual = slot.Find("Type" + t);
Check(visual != null && PrefabUtility.IsAnyPrefabInstanceRoot(visual.gameObject) && !visual.gameObject.activeSelf, slot.name + " Type" + t + " missing or active");
var actor = new[] { "Hornlet", "Dashlet", "Shellhorn", "HornCaptain", "GreatHorn" }[t];
Check(PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(visual.gameObject) == "Assets/Bundles/Characters/Enemy/" + actor + "Studio/" + actor + "Studio_Enemy.prefab", slot.name + " Type" + t + " still references the old model");
Check(visual.GetComponentsInChildren<Transform>(true).All(x => x.gameObject.layer == 30), slot.name + " Type" + t + " not on battle layer 30");
var animator = visual.GetComponentInChildren<Animator>(true);
Check(animator != null && animator.runtimeAnimatorController != null && !animator.applyRootMotion, slot.name + " Type" + t + " animator missing");
var original = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Bundles/Characters/Enemy/" + actor + "/" + actor + "_Enemy.prefab").GetComponentInChildren<Animator>(true);
Check(animator.avatar == original.avatar && animator.runtimeAnimatorController == original.runtimeAnimatorController, actor + " must reuse original Avatar/controller");
if (slot.name != "Enemy0") continue;
slot.gameObject.SetActive(true); visual.gameObject.SetActive(true);
float min = float.MaxValue, max = float.MinValue; var mesh = new Mesh();