public void DelayedInit() { if (template != null) { TNHTweakerLogger.Log("TNHTweaker -- Delayed init of sosig: " + DisplayName, TNHTweakerLogger.LogType.Character); TNHTweakerUtils.RemoveUnloadedObjectIDs(this); template.SosigPrefabs = SosigPrefabs.Select(o => IM.OD[o]).ToList(); template.WeaponOptions = WeaponOptions.Select(o => IM.OD[o]).ToList(); template.WeaponOptions_Secondary = WeaponOptionsSecondary.Select(o => IM.OD[o]).ToList(); template.WeaponOptions_Tertiary = WeaponOptionsTertiary.Select(o => IM.OD[o]).ToList(); foreach (OutfitConfig outfit in OutfitConfigs) { outfit.DelayedInit(); } if (DroppedObjectPool != null) { DroppedObjectPool.DelayedInit(); } //Add the new sosig template to the global dictionaries ManagerSingleton <IM> .Instance.odicSosigObjsByID.Add(template.SosigEnemyID, template); ManagerSingleton <IM> .Instance.odicSosigIDsByCategory[template.SosigEnemyCategory].Add(template.SosigEnemyID); ManagerSingleton <IM> .Instance.odicSosigObjsByCategory[template.SosigEnemyCategory].Add(template); } }
/// <summary> /// Loads the sprites used in secondary panels in TNH /// </summary> private void LoadPanelSprites(SetupStage stage) { IFileHandle file = Source.Resources.GetFile("mag_dupe_background.png"); Sprite result = TNHTweakerUtils.LoadSprite(file); MagazinePanel.background = result; file = Source.Resources.GetFile("ammo_purchase_background.png"); result = TNHTweakerUtils.LoadSprite(file); AmmoPurchasePanel.background = result; file = Source.Resources.GetFile("full_auto_background.png"); result = TNHTweakerUtils.LoadSprite(file); FullAutoPanel.background = result; file = Source.Resources.GetFile("fire_rate_background.png"); result = TNHTweakerUtils.LoadSprite(file); FireRatePanel.background = result; file = Source.Resources.GetFile("minus_icon.png"); result = TNHTweakerUtils.LoadSprite(file); FireRatePanel.minusSprite = result; file = Source.Resources.GetFile("plus_icon.png"); result = TNHTweakerUtils.LoadSprite(file); FireRatePanel.plusSprite = result; }
void OnDestroy() { if (dontDrop) { return; } TNHTweakerLogger.Log("TNHTweaker -- Lootable link was destroyed!", TNHTweakerLogger.LogType.TNH); List <EquipmentGroup> selectedGroups = group.GetSpawnedEquipmentGroups(); string selectedItem; int spawnedItems = 0; foreach (EquipmentGroup selectedGroup in selectedGroups) { for (int itemIndex = 0; itemIndex < selectedGroup.ItemsToSpawn; itemIndex++) { if (selectedGroup.IsCompatibleMagazine) { FVRObject mag = FirearmUtils.GetAmmoContainerForEquipped(selectedGroup.MinAmmoCapacity, selectedGroup.MaxAmmoCapacity); if (mag != null) { selectedItem = mag.ItemID; } else { TNHTweakerLogger.Log( "TNHTweaker -- Spawning nothing, since group was compatible magazines, and could not find a compatible magazine for player", TNHTweakerLogger.LogType.TNH); return; } } else { selectedItem = selectedGroup.GetObjects().GetRandom(); } if (LoadedTemplateManager.LoadedVaultFiles.ContainsKey(selectedItem)) { AnvilManager.Run(TNHTweakerUtils.SpawnFirearm(LoadedTemplateManager.LoadedVaultFiles[selectedItem], transform.position + (Vector3.up * 0.1f * spawnedItems), transform.rotation)); } else { Instantiate(IM.OD[selectedItem].GetGameObject(), transform.position + (Vector3.up * 0.1f * spawnedItems), transform.rotation); } spawnedItems += 1; } } }
public static void CreateTNHFiles(string path) { //Create files relevant for character creation TNHTweakerLogger.Log("TNHTweaker -- Creating character creation files", TNHTweakerLogger.LogType.General); TNHTweakerUtils.CreateDefaultSosigTemplateFiles(LoadedTemplateManager.DefaultSosigs, path); TNHTweakerUtils.CreateDefaultCharacterFiles(LoadedTemplateManager.DefaultCharacters, path); TNHTweakerUtils.CreateIconIDFile(path, LoadedTemplateManager.DefaultIconSprites.Keys.ToList()); TNHTweakerUtils.CreateObjectIDFile(path); TNHTweakerUtils.CreateSosigIDFile(path); TNHTweakerUtils.CreateJsonVaultFiles(path); TNHTweakerUtils.CreateGeneratedTables(path); TNHTweakerUtils.CreatePopulatedCharacterTemplate(path); }
public static void LoadTNHTemplates(TNH_CharacterDatabase CharDatabase) { TNHTweakerLogger.Log("TNHTweaker -- Performing TNH Initialization", TNHTweakerLogger.LogType.General); //Load all of the default templates into our dictionaries TNHTweakerLogger.Log("TNHTweaker -- Adding default sosigs to template dictionary", TNHTweakerLogger.LogType.General); LoadDefaultSosigs(); TNHTweakerLogger.Log("TNHTweaker -- Adding default characters to template dictionary", TNHTweakerLogger.LogType.General); LoadDefaultCharacters(CharDatabase.Characters); LoadedTemplateManager.DefaultIconSprites = TNHTweakerUtils.GetAllIcons(LoadedTemplateManager.DefaultCharacters); TNHTweakerLogger.Log("TNHTweaker -- Delayed Init of default characters", TNHTweakerLogger.LogType.General); InitCharacters(LoadedTemplateManager.DefaultCharacters, false); TNHTweakerLogger.Log("TNHTweaker -- Delayed Init of custom characters", TNHTweakerLogger.LogType.General); InitCharacters(LoadedTemplateManager.CustomCharacters, true); TNHTweakerLogger.Log("TNHTweaker -- Delayed Init of custom sosigs", TNHTweakerLogger.LogType.General); InitSosigs(LoadedTemplateManager.CustomSosigs); }
public IEnumerator SpawnRounds(FVRObject bullet, int count) { GameObject bulletObject = bullet.GetGameObject(); return(TNHTweakerUtils.InstantiateMultiple(bulletObject, original.Spawnpoint_Mag.position, count));; }
public void LoadAsset(SetupStage stage, Mod mod, IHandle handle) { if (handle is not IDirectoryHandle dir) { throw new ArgumentException("Could not load character! Character should point to a folder holding the character.json and thumb.png"); } try { CustomCharacter character = null; Sprite thumbnail = null; foreach (IFileHandle file in dir.GetFiles()) { if (file.Path.EndsWith("character.json")) { string charString = stage.ImmediateReaders.Get <string>()(file); JsonSerializerSettings settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; character = JsonConvert.DeserializeObject <CustomCharacter>(charString, settings); } else if (file.Path.EndsWith("thumb.png")) { thumbnail = TNHTweakerUtils.LoadSprite(file); } } if (character == null) { TNHTweakerLogger.LogError("TNHTweaker -- Failed to load custom character! No character.json file found"); return; } else if (thumbnail == null) { TNHTweakerLogger.LogError("TNHTweaker -- Failed to load custom character! No thumb.png file found"); return; } //Now we want to load the icons for each pool foreach (IFileHandle iconFile in dir.GetFiles()) { foreach (EquipmentPool pool in character.EquipmentPools) { if (iconFile.Path.EndsWith(pool.IconName)) { pool.GetPoolEntry().TableDef.Icon = TNHTweakerUtils.LoadSprite(iconFile); } } } TNHTweakerLogger.Log("TNHTweaker -- Character loaded successfuly : " + character.DisplayName, TNHTweakerLogger.LogType.File); LoadedTemplateManager.AddCharacterTemplate(character, thumbnail); } catch (Exception e) { TNHTweakerLogger.LogError("Failed to load setup assets for character! Caused Error: " + e.ToString()); } }