static void Postfix(Character __instance, ref ZNetView ___m_nview) { if (MobConfigManager.IsControllableMob(__instance.name)) { string uniqueId = GetOrCreateUniqueId(___m_nview); var mobInfo = MobConfigManager.GetMobConfig(__instance.name); Tameable tameable = GetOrAddTameable(__instance); tameable.m_tamingTime = mobInfo.TamingTime; tameable.m_commandable = true; AddVisualEquipmentCapability(__instance); ___m_nview.Register <string, string>(Constants.Z_UpdateCharacterHUD, RPC_UpdateCharacterName); var ai = __instance.GetBaseAI() as MonsterAI; if (__instance.IsTamed()) { try { MobManager.RegisterMob(__instance, uniqueId, mobInfo.AIType, mobInfo.AIConfig); } catch (ArgumentException e) { Debug.LogError($"Failed to register Mob AI ({mobInfo.AIType}). {e.Message}"); return; } __instance.m_faction = Character.Faction.Players; ai.m_consumeItems.Clear(); ai.m_consumeItems.AddRange(mobInfo.PostTameConsumables); ai.m_consumeSearchRange = mobInfo.AIConfig.Awareness * 5; ai.m_randomMoveRange = mobInfo.AIConfig.Mobility * 2; ai.m_randomMoveInterval = 15 - mobInfo.AIConfig.Mobility; string givenName = ___m_nview?.GetZDO()?.GetString(Constants.Z_GivenName); if (!string.IsNullOrEmpty(givenName)) { __instance.m_name = givenName; } } else { tameable.m_fedDuration = mobInfo.PreTameFeedDuration; ai.m_consumeItems.Clear(); ai.m_consumeItems.AddRange(mobInfo.PreTameConsumables); } } }
static void Postfix(MonsterAI __instance, ZNetView ___m_nview, Character ___m_character) { if (MobConfigManager.IsControllableMob(__instance.name)) { var mobInfo = MobConfigManager.GetMobConfig(__instance.name); __instance.m_consumeItems.Clear(); __instance.m_consumeItems.AddRange(mobInfo.PostTameConsumables); __instance.m_consumeSearchRange = 50; ___m_character.m_faction = Character.Faction.Players; try { var uniqueId = ___m_nview.GetZDO().GetString(Constants.Z_CharacterId); MobManager.RegisterMob(___m_character, uniqueId, mobInfo.AIType, mobInfo.AIConfig); } catch (ArgumentException e) { Debug.LogError($"Failed to register Mob AI ({mobInfo.AIType}). {e.Message}"); return; } } }