using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using DebugToolkit;
using EntityStates;
using HG;
using HG.GeneralSerializer;
using Microsoft.CodeAnalysis;
using On.EntityStates;
using On.RoR2;
using On.RoR2.Projectile;
using RoR2;
using RoR2.ContentManagement;
using RoR2.ExpansionManagement;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2BepInExPack.GameAssetPathsBetter;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.ResourceManagement.ResourceProviders;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("AssetExtractor")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+2d8462886fbe76bc11a093ffc943412f2f902c4b")]
[assembly: AssemblyProduct("AssetExtractor")]
[assembly: AssemblyTitle("AssetExtractor")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace AssetExtractor
{
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("icebro.assetextractor", "assetextractor", "0.9.0")]
public class AssetExtractor : BaseUnityPlugin
{
public const string PluginGUID = "icebro.assetextractor";
public const string PluginAuthor = "icebro";
public const string PluginName = "assetextractor";
public const string PluginVersion = "0.9.0";
public ConfigEntry<bool> useModnameInFile;
public ConfigEntry<bool> useModnameInDirectory;
public ConfigEntry<bool> trygettingprocs;
public ConfigEntry<bool> logskillprocs;
public ConfigEntry<bool> labelCopies;
private Stopwatch timer = new Stopwatch();
internal static AssetExtractor Instance { get; private set; }
public void Awake()
{
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Expected O, but got Unknown
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Expected O, but got Unknown
//IL_0112: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Expected O, but got Unknown
//IL_0125: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Expected O, but got Unknown
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: Expected O, but got Unknown
//IL_014b: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Expected O, but got Unknown
Instance = this;
Log.Init(((BaseUnityPlugin)this).Logger);
useModnameInFile = ((BaseUnityPlugin)this).Config.Bind<bool>("export options", "use mod name", false, "always modname in file name (useful for conflicts when using single folder; eg ssu chirr and ss2 chirr");
useModnameInDirectory = ((BaseUnityPlugin)this).Config.Bind<bool>("export options", "use mod dir", true, "export everything in a content pack to its own folder (off for monolithic wiki folder with every skill/item/etc in one file/folder");
trygettingprocs = ((BaseUnityPlugin)this).Config.Bind<bool>("export options", "try getting skill procs automatically", false, "attempt to automatically get skill procs from entity state configurations (slow, bad and doesnt work half the time../ just get them from log brah !!");
logskillprocs = ((BaseUnityPlugin)this).Config.Bind<bool>("export options", "log skill procs", true, "log any on hit procs from skills (like 100 leeching seeds but awesome");
labelCopies = ((BaseUnityPlugin)this).Config.Bind<bool>("export options", "add (copy) to copied textures", true, "adds the prefix (copy) when a texture/sprite already exists instead of overwriting., ,. useful for things like allies with different icons but same names !!!");
logskillprocs.SettingChanged += delegate
{
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Expected O, but got Unknown
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Expected O, but got Unknown
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00b6: Expected O, but got Unknown
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Expected O, but got Unknown
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Expected O, but got Unknown
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Expected O, but got Unknown
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Expected O, but got Unknown
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Expected O, but got Unknown
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Expected O, but got Unknown
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Expected O, but got Unknown
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Expected O, but got Unknown
if (logskillprocs.Value)
{
BlastAttack.Fire += new hook_Fire(BlastAttackOnFire);
ProjectileManager.FireProjectileClient += new hook_FireProjectileClient(ProjectileManagerOnFireProjectileClient);
GenericBulletBaseState.GenerateBulletAttack += new hook_GenerateBulletAttack(GenericBulletBaseStateOnGenerateBulletAttack);
BulletAttack.Fire += new hook_Fire(BulletAttackOnFire);
OverlapAttack.Fire += new hook_Fire(OverlapAttackOnFire);
GlobalEventManager.OnHitAll += new hook_OnHitAll(GlobalEventManagerOnOnHitAll);
}
else
{
BlastAttack.Fire -= new hook_Fire(BlastAttackOnFire);
ProjectileManager.FireProjectileClient -= new hook_FireProjectileClient(ProjectileManagerOnFireProjectileClient);
GenericBulletBaseState.GenerateBulletAttack -= new hook_GenerateBulletAttack(GenericBulletBaseStateOnGenerateBulletAttack);
BulletAttack.Fire -= new hook_Fire(BulletAttackOnFire);
OverlapAttack.Fire -= new hook_Fire(OverlapAttackOnFire);
GlobalEventManager.OnHitAll -= new hook_OnHitAll(GlobalEventManagerOnOnHitAll);
}
};
if (logskillprocs.Value)
{
BlastAttack.Fire += new hook_Fire(BlastAttackOnFire);
ProjectileManager.FireProjectileClient += new hook_FireProjectileClient(ProjectileManagerOnFireProjectileClient);
GenericBulletBaseState.GenerateBulletAttack += new hook_GenerateBulletAttack(GenericBulletBaseStateOnGenerateBulletAttack);
BulletAttack.Fire += new hook_Fire(BulletAttackOnFire);
OverlapAttack.Fire += new hook_Fire(OverlapAttackOnFire);
GlobalEventManager.OnHitAll += new hook_OnHitAll(GlobalEventManagerOnOnHitAll);
}
static Result BlastAttackOnFire(orig_Fire orig, BlastAttack self)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
Log.Debug("Firing blast proc " + self.procCoefficient);
return orig.Invoke(self);
}
static void BulletAttackOnFire(orig_Fire orig, BulletAttack self)
{
Log.Debug("Firing bullet proc " + self.procCoefficient);
orig.Invoke(self);
}
static BulletAttack GenericBulletBaseStateOnGenerateBulletAttack(orig_GenerateBulletAttack orig, GenericBulletBaseState self, Ray aimRay)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
Log.Debug("Firing bullet proc " + self.procCoefficient);
return orig.Invoke(self, aimRay);
}
static void GlobalEventManagerOnOnHitAll(orig_OnHitAll orig, GlobalEventManager self, DamageInfo damageInfo, GameObject hitObject)
{
Log.Debug("hit by proc " + damageInfo.procCoefficient);
orig.Invoke(self, damageInfo, hitObject);
}
static bool OverlapAttackOnFire(orig_Fire orig, OverlapAttack self, List<HurtBox> hitResults)
{
Log.Debug("Firing overlap proc " + self.procCoefficient);
return orig.Invoke(self, hitResults);
}
static void ProjectileManagerOnFireProjectileClient(orig_FireProjectileClient orig, ProjectileManager self, FireProjectileInfo fireProjectileInfo, NetworkClient client, double fireTime)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
Log.Debug("Firing projectile" + (object)fireProjectileInfo.projectilePrefab);
ProjectileController val = default(ProjectileController);
if (fireProjectileInfo.projectilePrefab.TryGetComponent<ProjectileController>(ref val))
{
Log.Debug("Firing projectile proc " + val.procCoefficient);
}
else
{
Log.Error("could not get projectile controller out of prefab ! ");
}
orig.Invoke(self, fireProjectileInfo, client, fireTime);
}
}
private void Update()
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_0490: Unknown result type (might be due to invalid IL or missing references)
//IL_0495: Unknown result type (might be due to invalid IL or missing references)
//IL_0499: Unknown result type (might be due to invalid IL or missing references)
//IL_017e: Unknown result type (might be due to invalid IL or missing references)
//IL_0183: Unknown result type (might be due to invalid IL or missing references)
//IL_0187: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
//IL_0215: Unknown result type (might be due to invalid IL or missing references)
//IL_0237: Unknown result type (might be due to invalid IL or missing references)
//IL_0259: Unknown result type (might be due to invalid IL or missing references)
//IL_027d: Unknown result type (might be due to invalid IL or missing references)
//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
//IL_02f9: Unknown result type (might be due to invalid IL or missing references)
if (!Input.GetKeyDown((KeyCode)286))
{
return;
}
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name != "logbook")
{
Log.Error("please go to logbook from mainmenu !!!! exports softlock otherwise .,,.");
return;
}
Log.Info("F5 pressed ,,. extracting !!!!");
long num = 0L;
long num2 = 0L;
long num3 = 0L;
long num4 = 0L;
long num5 = 0L;
long num6 = 0L;
long num7 = 0L;
long num8 = 0L;
WikiFormat.WikiTryGetProcs = trygettingprocs.Value;
Enumerator<ReadOnlyContentPack> enumerator = ContentManager.allLoadedContentPacks.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
ReadOnlyContentPack current = enumerator.Current;
if (useModnameInDirectory.Value)
{
WikiFormat.WikiOutputPath = Path.Combine(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)Instance).Info.Location) ?? throw new InvalidOperationException(), "wiki"), ((ReadOnlyContentPack)(ref current)).identifier);
}
else
{
WikiFormat.WikiOutputPath = Path.Combine(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)Instance).Info.Location) ?? throw new InvalidOperationException(), "wiki"));
WikiFormat.WikiAppend = true;
}
if (useModnameInFile.Value)
{
WikiFormat.WikiModname = "_" + ((ReadOnlyContentPack)(ref current)).identifier;
}
else
{
WikiFormat.WikiModname = "";
}
timer.Start();
WikiFormat.loredefs = new List<string>();
AssetEnumerator<SceneDef> enumerator2 = ((ReadOnlyContentPack)(ref current)).sceneDefs.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
SceneDef current2 = enumerator2.Current;
GameObject val = Addressables.LoadAssetAsync<GameObject>((object)((AssetReference)current2.sceneAddress).AssetGUID).WaitForCompletion();
}
}
finally
{
((IDisposable)enumerator2).Dispose();
}
WikiFormat.FormatItem(current);
num += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatEquipment(current);
num2 += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatSurvivor(current);
num3 += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatSkill(current);
num4 += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatChallenges(current);
num5 += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatBodies(current);
num6 += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatBuffs(current);
num7 += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatStages(current);
num8 += timer.ElapsedMilliseconds;
timer.Restart();
WikiFormat.FormatLore(current);
WikiFormat.exportExpansions(current);
WikiFormat.exportArtifacts(current);
timer.Stop();
try
{
if (Directory.GetFiles(WikiFormat.WikiOutputPath, "*", SearchOption.TopDirectoryOnly).Length == 0)
{
Directory.Delete(WikiFormat.WikiOutputPath);
}
}
catch (Exception data)
{
Log.Debug(data);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
Log.Info("Exported items in " + num + "ms");
Log.Info("Exported equips in " + num2 + "ms");
Log.Info("Exported survivors in " + num3 + "ms");
Log.Info("Exported skills in " + num4 + "ms");
Log.Info("Exported challenges in " + num5 + "ms");
Log.Info("Exported bodies in " + num6 + "ms");
Log.Info("Exported buffs in " + num7 + "ms");
Log.Info("Exported stages in " + num7 + "ms");
Log.Info("complete !!!! located at: " + Path.Combine(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)Instance).Info.Location))));
Addressables.LoadSceneAsync((object)RoR2_Base_title.title_unity, (LoadSceneMode)0, true, 100).WaitForCompletion();
}
}
public static class WikiFormat
{
[CompilerGenerated]
private sealed class <waitingCouroutine>d__12 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <waitingCouroutine>d__12(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(5f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
private static readonly Dictionary<string, string> FormatInteractableNames = new Dictionary<string, string>
{
{ "DuplicatorWild", "3D Printer (Overgrown)" },
{ "DuplicatorMilitary", "Mili-Tech Printer" },
{ "DuplicatorLarge", "3D Printer (Green)" },
{ "Duplicator", "3D Printer (White)" },
{ "Open Large Chest - Utility", "Large Utility Chest" },
{ "Large Chest - Healing", "Large Healing Chest" },
{ "Large Chest - Damage", "Large Damage Chest" },
{ "TripleShopLarge", "Multishop Terminal (Green)" },
{ "TripleShopEquipment", "Multishop Terminal (Equipment)" },
{ "TripleShop", "Multishop Terminal (White)" },
{ "GoldChest", "Legendary Chest" },
{ "ShrineHalcyonite", "Halcyonite Shrine" },
{ "ShrineColossusAccess", "Shrine of Shaping" }
};
private const string WIKI_OUTPUT_FOLDER = "wiki";
private const string WIKI_OUTPUT_ITEM = "Items.txt";
private const string WIKI_OUTPUT_EQUIPMENT = "Equipments.txt";
private const string WIKI_OUTPUT_SURVIVORS = "Survivors.txt";
private const string WIKI_OUTPUT_SKILLS = "Skills.txt";
private const string WIKI_OUTPUT_CHALLENGES = "Challenges.txt";
private const string WIKI_OUTPUT_BODIES = "Bodies.txt";
private const string WIKI_OUTPUT_BUFFS = "Buffs.txt";
private const string WIKI_OUTPUT_STAGES = "Stages.txt";
private const string WIKI_OUTPUT_LORE = "Lore.txt";
public static string WikiOutputPath = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)AssetExtractor.Instance).Info.Location) ?? throw new InvalidOperationException(), "wiki");
public static string WikiModname = "";
public static bool WikiTryGetProcs = false;
public static bool WikiAppend = false;
public static List<string> loredefs = new List<string>();
public static bool loadedScene = false;
private static readonly Dictionary<string, string> FormatR2ToWiki = new Dictionary<string, string>
{
{ "</style>", "}}" },
{ "<style=cStack>", "{{Stack|" },
{ "<style=cIsDamage>", "{{Color|d|" },
{ "<style=cIsHealing>", "{{Color|h|" },
{ "<style=cIsUtility>", "{{Color|u|" },
{ "<style=cIsHealth>", "{{Color|hp|" },
{ "<style=cDeath>", "{{Color|hp|" },
{ "<style=cIsVoid>", "{{Color|v|" },
{ "<style=cIsLunar>", "{{Color|lunar|" },
{ "<style=cHumanObjective>", "{{Color|human|" },
{ "<style=cShrine>", "{{Color|boss|" }
};
public static void exportArtifacts(ReadOnlyContentPack readOnlyContentPack)
{
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
AssetEnumerator<ArtifactDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).artifactDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
ArtifactDef current = enumerator.Current;
string text = WikiOutputPath + "\\artifacts\\";
Directory.CreateDirectory(text);
try
{
if ((Object)(object)current.smallIconSelectedSprite != (Object)null)
{
Log.Debug("item name is blank ! using toke n");
exportTexture(current.smallIconSelectedSprite, Path.Combine(text, Language.GetString(current.nameToken) + " Selected.png"));
exportTexture(current.smallIconDeselectedSprite, Path.Combine(text, Language.GetString(current.nameToken) + " Deselected.png"));
}
else
{
Log.Debug("artifact icon is nul l!!!!!!!!!!");
}
}
catch (Exception data)
{
Log.Debug(data);
Log.Debug("erm ,,.,. failed to export artiact icon with proper name ,,. trying with tokenm !! " + Language.GetString(current.nameToken));
exportTexture(current.smallIconSelectedSprite, Path.Combine(text, current.nameToken + " Selected.png"));
exportTexture(current.smallIconDeselectedSprite, Path.Combine(text, current.nameToken + " Deselected.png"));
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
}
public static void FormatBodies(ReadOnlyContentPack readOnlyContentPack)
{
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0407: Unknown result type (might be due to invalid IL or missing references)
//IL_0411: Unknown result type (might be due to invalid IL or missing references)
//IL_0413: Invalid comparison between Unknown and I4
//IL_042b: Unknown result type (might be due to invalid IL or missing references)
//IL_0435: Unknown result type (might be due to invalid IL or missing references)
//IL_0437: Invalid comparison between Unknown and I4
//IL_044f: Unknown result type (might be due to invalid IL or missing references)
//IL_0459: Unknown result type (might be due to invalid IL or missing references)
//IL_045b: Invalid comparison between Unknown and I4
//IL_0473: Unknown result type (might be due to invalid IL or missing references)
//IL_0479: Unknown result type (might be due to invalid IL or missing references)
//IL_047b: Invalid comparison between Unknown and I4
//IL_0493: Unknown result type (might be due to invalid IL or missing references)
//IL_049d: Unknown result type (might be due to invalid IL or missing references)
//IL_049f: Invalid comparison between Unknown and I4
//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
//IL_04c1: Unknown result type (might be due to invalid IL or missing references)
//IL_04c3: Invalid comparison between Unknown and I4
//IL_04db: Unknown result type (might be due to invalid IL or missing references)
//IL_04e2: Unknown result type (might be due to invalid IL or missing references)
//IL_04e4: Invalid comparison between Unknown and I4
//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0502: Unknown result type (might be due to invalid IL or missing references)
//IL_0504: Invalid comparison between Unknown and I4
//IL_051c: Unknown result type (might be due to invalid IL or missing references)
//IL_0526: Unknown result type (might be due to invalid IL or missing references)
//IL_0528: Invalid comparison between Unknown and I4
//IL_0540: Unknown result type (might be due to invalid IL or missing references)
//IL_054a: Unknown result type (might be due to invalid IL or missing references)
//IL_054c: Invalid comparison between Unknown and I4
//IL_0564: Unknown result type (might be due to invalid IL or missing references)
//IL_056a: Unknown result type (might be due to invalid IL or missing references)
//IL_056c: Invalid comparison between Unknown and I4
//IL_0584: Unknown result type (might be due to invalid IL or missing references)
//IL_058a: Unknown result type (might be due to invalid IL or missing references)
//IL_058c: Invalid comparison between Unknown and I4
//IL_05a4: Unknown result type (might be due to invalid IL or missing references)
//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
//IL_05b0: Invalid comparison between Unknown and I4
//IL_05c8: Unknown result type (might be due to invalid IL or missing references)
//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
//IL_05d1: Invalid comparison between Unknown and I4
//IL_05e9: Unknown result type (might be due to invalid IL or missing references)
//IL_05f0: Unknown result type (might be due to invalid IL or missing references)
//IL_05f2: Invalid comparison between Unknown and I4
//IL_060a: Unknown result type (might be due to invalid IL or missing references)
//IL_0614: Unknown result type (might be due to invalid IL or missing references)
//IL_0616: Invalid comparison between Unknown and I4
//IL_06b7: Unknown result type (might be due to invalid IL or missing references)
//IL_06c6: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Bodies.txt");
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
string text2 = "";
HashSet<DirectorCard> hashSet = new HashSet<DirectorCard>(StringFinder.Instance.GetDirectorCardsFromPartial(text2));
AssetEnumerator<GameObject> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).bodyPrefabs.GetEnumerator();
try
{
CharacterBody val = default(CharacterBody);
ExpansionRequirementComponent val2 = default(ExpansionRequirementComponent);
CharacterMotor val3 = default(CharacterMotor);
while (enumerator.MoveNext())
{
GameObject bodyprefab = enumerator.Current;
try
{
string text3 = "monsters[\"{0}\"] = {{\n";
text3 += "\tInternalName = \"{1}\",\n";
text3 += "\tImage = \"{2}\",\n";
text3 += "\tBaseHealth = {3},\n";
text3 += "\tScalingHealth = {4},\n";
text3 += "\tBaseDamage = {5},\n";
text3 += "\tScalingDamage = {6},\n";
text3 += "\tBaseHealthRegen = {7},\n";
text3 += "\tScalingHealthRegen = {8},\n";
text3 += "\tBaseSpeed = {9},\n";
text3 += "\tBaseArmor = {10},\n";
text3 += "\tMass = {11},\n";
text3 += "\tLocalizationInternalName = \"{12}\",\n";
text3 += "\tColor = \"{13}\",\n";
string text4 = "";
string text5 = "";
string text6 = "";
float num = 1E+14f;
if (SurvivorCatalog.allSurvivorDefs.Any((SurvivorDef survdef) => (Object)(object)survdef.bodyPrefab == (Object)(object)bodyprefab) || !bodyprefab.TryGetComponent<CharacterBody>(ref val))
{
continue;
}
if (val.baseNameToken != null)
{
text4 = val.GetDisplayName();
text3 = text3 + "\tName = \"" + Language.GetString(val.baseNameToken) + "\",\n";
text3 = text3 + "\tLink = \"" + Language.GetString(val.baseNameToken) + "\",\n";
}
float baseMaxHealth = val.baseMaxHealth;
float levelMaxHealth = val.levelMaxHealth;
float baseDamage = val.baseDamage;
float levelDamage = val.levelDamage;
float baseRegen = val.baseRegen;
float levelRegen = val.levelRegen;
float baseMoveSpeed = val.baseMoveSpeed;
float baseArmor = val.baseArmor;
if (!Language.english.TokenIsRegistered(val.baseNameToken.Replace("_NAME", "_LORE")))
{
text3 += "\tNoLogbook = true,\n";
}
else
{
loredefs.Add("Monsters " + val.baseNameToken + " " + val.baseNameToken.Replace("_NAME", "_LORE"));
}
DeathRewards component = ((Component)val).gameObject.GetComponent<DeathRewards>();
text3 = ((!((Object)(object)component != (Object)null) || !Object.op_Implicit((Object)(object)component.bossDropTable)) ? (text3 + "\tType = \"Normal\",\n") : (text3 + "\tType = \"Boss\",\n"));
text3 = text3 + "\tExpansion = \"" + ((ReadOnlyContentPack)(ref readOnlyContentPack)).identifier + "\",\n";
foreach (DirectorCard directorCard in StringFinder.Instance.DirectorCards)
{
if (!hashSet.Contains(directorCard) || !((Object)directorCard.spawnCard.prefab.GetComponent<CharacterMaster>().bodyPrefab).name.Equals(((Object)bodyprefab).name))
{
continue;
}
if (directorCard.cost != 0)
{
text3 += $"\tCreditsCost = {directorCard.cost},\n";
}
if (directorCard.minimumStageCompletions != 0)
{
text3 += $"\tStartingStage = {directorCard.minimumStageCompletions},\n";
}
break;
}
string text7 = "\tCategory = {{ ";
if ((val.bodyFlags & 0x2000) > 0)
{
text7 += "\"Devotion\", ";
}
if ((val.bodyFlags & 0x100) > 0)
{
text7 += "\"HasBackstabImmunity\", ";
}
if ((val.bodyFlags & 0x80) > 0)
{
text7 += "\"HasBackstabPassive\", ";
}
if ((val.bodyFlags & 1) > 0)
{
text7 += "\"IgnoreFallDamage\", ";
}
if ((val.bodyFlags & 0x1000) > 0)
{
text7 += "\"IgnoreItemUpdates\", ";
}
if ((val.bodyFlags & 0x4000) > 0)
{
text7 += "\"IgnoreKnockback\", ";
}
if ((val.bodyFlags & 0x10) > 0)
{
text7 += "\"ImmuneToExecutes\", ";
}
if ((val.bodyFlags & 8) > 0)
{
text7 += "\"ImmuneToGoo\", ";
}
if ((val.bodyFlags & 0x8000) > 0)
{
text7 += "\"ImmuneToLava\", ";
}
if ((val.bodyFlags & 0x800) > 0)
{
text7 += "\"ImmuneToVoidDeath\", ";
}
if ((val.bodyFlags & 4) > 0)
{
text7 += "\"Masterless\", ";
}
if ((val.bodyFlags & 2) > 0)
{
text7 += "\"Mechanical\", ";
}
if ((val.bodyFlags & 0x200) > 0)
{
text7 += "\"OverheatImmune\", ";
}
if ((val.bodyFlags & 0x40) > 0)
{
text7 += "\"ResistantToAOE\", ";
}
if ((val.bodyFlags & 0x20) > 0)
{
text7 += "\"SprintAnyDirection\", ";
}
if ((val.bodyFlags & 0x400) > 0)
{
text7 += "\"Void\", ";
}
if (text7 != "\tCategory = {{ ")
{
text3 = text3 + text7.Substring(0, text7.Length - 2) + " }},\n";
}
if (val.subtitleNameToken != null)
{
string @string = Language.GetString(val.subtitleNameToken);
if (!@string.EndsWith("SUBTITLE") && @string != "")
{
text3 = text3 + "\tBossName = \"" + @string + "\",\n";
}
}
_ = val.bodyColor;
if (true)
{
text6 = ColorUtility.ToHtmlStringRGB(val.bodyColor);
}
if (((Component)val).TryGetComponent<ExpansionRequirementComponent>(ref val2) && (Object)(object)val2 != (Object)null)
{
acronymHelper(Language.GetString(val2.requiredExpansion.nameToken), forceCaps: false);
}
if (val.baseNameToken != null && val.baseNameToken.EndsWith("_NAME"))
{
text5 = val.baseNameToken.Remove(val.baseNameToken.Length - 5);
}
else if (val.baseNameToken != null)
{
text5 = val.baseNameToken;
}
if (((Component)val).TryGetComponent<CharacterMotor>(ref val3))
{
num = (((int)val3.mass >= 99999999) ? 0f : val3.mass);
}
text3 += "\t}}";
string text8 = Language.GetStringFormatted(text3, new object[14]
{
text4,
((Object)bodyprefab).name,
text4.Replace(" ", "_") + WikiModname + ".png",
baseMaxHealth,
levelMaxHealth,
baseDamage,
levelDamage,
baseRegen,
levelRegen,
baseMoveSpeed,
baseArmor,
num,
text5,
"#" + text6
});
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text8 = text8.Replace(item.Key, item.Value);
}
textWriter.WriteLine(text8);
if (!Object.op_Implicit((Object)(object)val.portraitIcon))
{
continue;
}
string text9 = WikiOutputPath + "\\bodies\\";
Directory.CreateDirectory(text9);
try
{
if (text4 == "")
{
Log.Debug("body name is blank ! using toke n");
exportTexture(val.portraitIcon, Path.Combine(text9, text5 + WikiModname + ".png"));
}
else
{
exportTexture(val.portraitIcon, Path.Combine(text9, text4.Replace(" ", "_") + WikiModname + ".png"));
}
}
catch
{
Log.Debug("erm ,,.,. failed to export body icon with proper name ,,. trying with tokenm !! " + text4);
exportTexture(val.portraitIcon, Path.Combine(text9, text5 + WikiModname + ".png"));
}
}
catch (Exception ex)
{
Log.Error("Error while exporting body: " + ex);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
}
public static void FormatBuffs(ReadOnlyContentPack readOnlyContentPack)
{
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Buffs.txt");
string text2 = "StatusEffects[\"{0}\"] = {{\n";
text2 += "\tName = \"{1}\",\n";
text2 += "\tInternalName = \"{2}\",\n";
text2 += "\tImage = \"{3}\",\n";
text2 += "\tEffectShort = \"\",\n";
text2 += "\tEffect = \"\",\n";
text2 += "\tSource = {{}},\n";
text2 += "\tType = \"{4}\",\n";
text2 += "\tStackable = \"{5}\",\n";
text2 += "\tDOT = \"{6}\",\n";
text2 += "\tColor = \"{7}\",\n";
text2 += "\tHidden = \"{8}\",\n";
text2 += "\t}}";
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
AssetEnumerator<BuffDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).buffDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
BuffDef current = enumerator.Current;
try
{
string text3 = "Status ";
if ((Object)(object)current == (Object)null)
{
continue;
}
string text4 = (current.isDebuff ? "Debuff" : (current.isElite ? "Affix Buff" : ((!current.isCooldown) ? "Buff" : "Cooldown Buff")));
string text5 = (current.isDOT ? "True" : "False");
string text6 = (current.canStack ? "True" : "False");
string text7 = (current.isHidden ? "True" : "False");
string text8 = "#" + ColorUtility.ToHtmlStringRGB(current.buffColor);
string text9 = ((Object)current).name;
if (text9.StartsWith("bd"))
{
string text10 = text9;
text9 = text10.Substring(2, text10.Length - 2);
}
text3 += text9;
if (Object.op_Implicit((Object)(object)current.iconSprite))
{
string text11 = WikiOutputPath + "\\buffs\\";
Directory.CreateDirectory(text11);
try
{
exportTexture(current.iconSprite, Path.Combine(text11, "Status " + text9.Replace(" ", "_") + WikiModname + ".png"));
}
catch (Exception arg)
{
Log.Debug($"erm ,,.,. failed to export buff icon {((Object)current).name} ,,. {arg}");
}
}
string text12 = string.Format(text2, text9, text9, text9, text3, text4, text6, text5, text8, text7);
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text12 = text12.Replace(item.Key, item.Value);
}
textWriter.WriteLine(text12);
}
catch (Exception ex)
{
Log.Error("Error while exporting buff: " + ex);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
}
public static void FormatChallenges(ReadOnlyContentPack readOnlyContentPack)
{
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_033d: Unknown result type (might be due to invalid IL or missing references)
//IL_0342: Unknown result type (might be due to invalid IL or missing references)
//IL_0345: Unknown result type (might be due to invalid IL or missing references)
//IL_035b: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Challenges.txt");
string text2 = "challenges[\"{0}\"] = {{\n";
text2 += "\tType = \"{1}\",\n";
text2 += "\tUnlock = {{ \"{2}\" }} ,\n";
text2 += "\tDesc = \"{3}\",\n";
text2 += "\t}}";
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
AssetEnumerator<UnlockableDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).unlockableDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
UnlockableDef current = enumerator.Current;
string text3 = "";
string text4 = "";
string text5 = "";
string text6 = "";
AchievementDef achievementDefFromUnlockable = AchievementManager.GetAchievementDefFromUnlockable(current.cachedName);
if (achievementDefFromUnlockable == null)
{
continue;
}
if (achievementDefFromUnlockable.nameToken != null)
{
text3 = Language.GetString(achievementDefFromUnlockable.nameToken);
}
if (achievementDefFromUnlockable.unlockableRewardIdentifier != null)
{
Enumerator<ItemDef> enumerator2 = ItemCatalog.allItemDefs.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
ItemDef current2 = enumerator2.Current;
if ((Object)(object)current2.unlockableDef != (Object)(object)current)
{
continue;
}
text5 = Language.GetString(current2.nameToken);
text4 = "Items";
break;
}
}
finally
{
((IDisposable)enumerator2).Dispose();
}
foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs)
{
if (text5 != "")
{
break;
}
if ((Object)(object)allSurvivorDef.unlockableDef != (Object)(object)current)
{
continue;
}
text5 = Language.GetString(allSurvivorDef.displayNameToken);
text4 = "Survivors";
break;
}
EquipmentDef[] equipmentDefs = EquipmentCatalog.equipmentDefs;
foreach (EquipmentDef val in equipmentDefs)
{
if (text5 != "")
{
break;
}
if (!((Object)(object)val.unlockableDef != (Object)(object)current))
{
text5 = Language.GetString(val.nameToken);
text4 = "Equipment";
break;
}
}
SkinDef[] allSkinDefs = SkinCatalog.allSkinDefs;
foreach (SkinDef val2 in allSkinDefs)
{
if (text5 != "")
{
break;
}
if (!((Object)(object)val2.unlockableDef != (Object)(object)current))
{
text5 = Language.GetString(val2.nameToken);
text4 = "Skins";
break;
}
}
ArtifactDef[] artifactDefs = ArtifactCatalog.artifactDefs;
foreach (ArtifactDef val3 in artifactDefs)
{
if (text5 != "")
{
break;
}
if (!((Object)(object)val3.unlockableDef != (Object)(object)current))
{
text5 = Language.GetString(val3.nameToken);
text4 = "Artifacts";
break;
}
}
SkillFamily[] allSkillFamilies = SkillCatalog._allSkillFamilies;
foreach (SkillFamily val4 in allSkillFamilies)
{
if (text5 != "")
{
break;
}
Variant[] variants = val4.variants;
foreach (Variant val5 in variants)
{
if (!((Object)(object)val5.unlockableDef != (Object)(object)current))
{
text5 = Language.GetString(val5.skillDef.skillNameToken);
text4 = "Skills";
break;
}
}
}
}
if (achievementDefFromUnlockable.descriptionToken != null)
{
text6 = Language.GetString(achievementDefFromUnlockable.descriptionToken);
}
try
{
string text7 = string.Format(text2, text3, text4, text5, text6);
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text7 = text7.Replace(item.Key, item.Value);
}
textWriter.WriteLine(text7);
}
catch (Exception ex)
{
Log.Error("Error while exporting challenge: " + ex);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
}
public static void FormatEquipment(ReadOnlyContentPack readOnlyContentPack)
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Equipments.txt");
TextWriter textWriter = new StreamWriter(text, WikiAppend);
AssetEnumerator<EquipmentDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).equipmentDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
EquipmentDef current = enumerator.Current;
FormatEquipmentDef(current, textWriter);
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
static void FormatEquipmentDef(EquipmentDef def, TextWriter tw)
{
try
{
string text2 = "equipments[\"{0}\"] = {{\n\tRarity = \"{1}\",\n\tQuote = \"{2}\",\n\tDesc = \"{3}\",\n\tID = {4},\n\tCooldown = {5},\n\tLocalizationInternalName = \"{6}\",\n";
if (!((Object)(object)def == (Object)null))
{
string text3 = "";
string text4 = (def.isLunar ? "Lunar Equipment" : "Equipment");
string text5 = "";
string text6 = "";
string text7 = "";
string text8 = "";
if (def.nameToken != null)
{
text3 = Language.GetString(def.nameToken);
if (Language.english.TokenIsRegistered(def.nameToken.Replace("_NAME", "_LORE")))
{
loredefs.Add("Equipment " + def.nameToken + " " + def.nameToken.Replace("_NAME", "_LORE"));
}
if (def.nameToken != null && def.nameToken.EndsWith("_NAME"))
{
text8 = def.nameToken.Remove(def.nameToken.Length - 5);
}
else if (def.nameToken != null)
{
text8 = def.nameToken;
}
if (text3 == "")
{
text3 = def.nameToken;
}
}
if (def.pickupToken != null)
{
text5 = Language.GetString(def.pickupToken);
}
if (def.descriptionToken != null)
{
text6 = Language.GetString(def.descriptionToken);
}
if (Object.op_Implicit((Object)(object)def.unlockableDef))
{
string text9 = AchievementManager.GetAchievementDefFromUnlockable(def.unlockableDef.cachedName)?.nameToken;
if (text9 != null)
{
text7 = Language.GetString(text9);
}
if (text7 != "")
{
text2 = text2 + "\tUnlock = \"" + text7 + "\",\n";
}
}
if (Object.op_Implicit((Object)(object)def.requiredExpansion))
{
string text10 = acronymHelper(Language.GetString(def.requiredExpansion.nameToken), forceCaps: false);
text2 = text2 + "\tExpansion = \"" + text10 + "\",\n";
}
text2 += "\t}}";
string text11 = Language.GetStringFormatted(text2, new object[7]
{
text3,
text4,
text5,
text6,
"\"" + ((Object)def).name + "\"",
def.cooldown,
text8
});
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text11 = text11.Replace(item.Key, item.Value);
}
tw.WriteLine(text11);
if (Object.op_Implicit((Object)(object)def.pickupIconTexture))
{
string text12 = WikiOutputPath + "\\equips\\";
Directory.CreateDirectory(text12);
try
{
if (text3 == "")
{
Log.Debug("equip name is blank ! using toke n");
exportTexture((Texture)(object)def.pickupIconSprite.texture, Path.Combine(text12, text8 + WikiModname + ".png"));
}
else
{
exportTexture((Texture)(object)def.pickupIconSprite.texture, Path.Combine(text12, text3.Replace(" ", "_") + WikiModname + ".png"));
}
return;
}
catch
{
Log.Debug("erm ,,.,. failed to export equip icon with proper name ,,. trying with tokenm !! " + text3);
exportTexture((Texture)(object)def.pickupIconSprite.texture, Path.Combine(text12, text8 + WikiModname + ".png"));
return;
}
}
}
}
catch (Exception ex)
{
Log.Error("Error while exporting equipment: " + ex);
}
}
}
public static void exportExpansions(ReadOnlyContentPack readOnlyContentPack)
{
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
AssetEnumerator<ExpansionDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).expansionDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
ExpansionDef current = enumerator.Current;
string text = WikiOutputPath + "\\expansions\\";
Directory.CreateDirectory(text);
try
{
if ((Object)(object)current.iconSprite != (Object)null)
{
Log.Debug("item name is blank ! using toke n");
exportTexture(current.iconSprite, Path.Combine(text, Language.GetString(current.nameToken) + ".png"));
}
else
{
Log.Debug("expansion icon is nul l!!!!!!!!!!");
}
}
catch (Exception data)
{
Log.Debug(data);
Log.Debug("erm ,,.,. failed to export expansion icon with proper name ,,. trying with tokenm !! " + Language.GetString(current.nameToken));
exportTexture(current.iconSprite, Path.Combine(text, current.nameToken + ".png"));
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
}
public static void FormatItem(ReadOnlyContentPack readOnlyContentPack)
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Items.txt");
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
AssetEnumerator<ItemDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).itemDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
ItemDef current = enumerator.Current;
ItemDefFormat(current, textWriter);
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
static void ItemDefFormat(ItemDef def, TextWriter tw)
{
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_010c: Expected I4, but got Unknown
try
{
string text2 = "items[\"{0}\"] = {{\n\tRarity = \"{1}\",\n\tQuote = \"{2}\",\n\tDesc = \"{3}\",\n\tCategory = {{ {4} }},\n\tID = {5},\n\tStats = {{\n\t\t {{\n\t\t\tStat = \"\",\n\t\t\tValue = \"\",\n\t\t\tStack = \"\",\n\t\t\tAdd = \"\"\n\t\t}}\n\t}},\n\tLocalizationInternalName = \"{6}\",\n";
string text3 = "";
string text4 = "";
string text5 = "";
string text6 = "";
string text7 = "";
if (!((Object)(object)def == (Object)null))
{
if (def.nameToken != null)
{
text3 = Language.GetString(def.nameToken);
if (Language.english.TokenIsRegistered(def.nameToken.Replace("_NAME", "_LORE")))
{
loredefs.Add("Items " + def.nameToken + " " + def.nameToken.Replace("_NAME", "_LORE"));
}
if (text3 == "")
{
text3 = def.nameToken;
}
}
ItemTier tier = def.tier;
if (1 == 0)
{
}
string text8 = (int)tier switch
{
0 => "Common",
1 => "Uncommon",
2 => "Legendary",
3 => "Lunar",
4 => "Boss",
6 => "Void",
7 => "Void",
8 => "Void",
9 => "Void",
_ => "Untiered",
};
if (1 == 0)
{
}
string text9 = text8;
if (def.pickupToken != null)
{
text4 = Language.GetString(def.pickupToken);
}
if (def.descriptionToken != null)
{
text5 = Language.GetString(def.descriptionToken);
}
for (int i = 0; i < def.tags.Length; i++)
{
text6 = text6 + "\"" + Enum.GetName(typeof(ItemTag), def.tags[i]) + "\"";
if (i < def.tags.Length - 1)
{
text6 += ",";
}
}
string text10 = "";
if (Object.op_Implicit((Object)(object)def.unlockableDef))
{
AchievementDef achievementDefFromUnlockable = AchievementManager.GetAchievementDefFromUnlockable(def.unlockableDef.cachedName);
if (achievementDefFromUnlockable != null && !string.IsNullOrEmpty(achievementDefFromUnlockable.nameToken))
{
text10 = Language.GetString(achievementDefFromUnlockable.nameToken);
}
if (text10 != "")
{
text2 = text2 + "\tUnlock = \"" + text10 + "\",\n";
}
}
if (Object.op_Implicit((Object)(object)def.requiredExpansion))
{
string text11 = acronymHelper(Language.GetString(def.requiredExpansion.nameToken), forceCaps: false);
text2 = text2 + "\tExpansion = \"" + text11 + "\",\n";
}
if (def.nameToken != null && def.nameToken.EndsWith("_NAME"))
{
text7 = def.nameToken.Remove(def.nameToken.Length - 5);
}
else if (def.nameToken != null)
{
text7 = def.nameToken;
}
text2 += "\t}}";
string text12 = Language.GetStringFormatted(text2, new object[7]
{
text3,
text9,
text4,
text5,
text6,
"\"" + ((Object)def).name + "\"",
text7
});
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text12 = text12.Replace(item.Key, item.Value);
}
tw.WriteLine(text12);
if (Object.op_Implicit((Object)(object)def.pickupIconTexture))
{
string text13 = WikiOutputPath + "\\items\\";
Directory.CreateDirectory(text13);
try
{
if (text3 == "")
{
Log.Debug("item name is blank ! using toke n");
exportTexture((Texture)(object)def.pickupIconSprite.texture, Path.Combine(text13, text7 + WikiModname + ".png"));
}
else
{
exportTexture((Texture)(object)def.pickupIconSprite.texture, Path.Combine(text13, text3.Replace(" ", "_") + WikiModname + ".png"));
}
return;
}
catch (Exception data)
{
Log.Debug(data);
Log.Debug("erm ,,.,. failed to export equip icon with proper name ,,. trying with tokenm !! " + text3);
exportTexture((Texture)(object)def.pickupIconSprite.texture, Path.Combine(text13, text7 + WikiModname + ".png"));
return;
}
}
}
}
catch (Exception ex)
{
Log.Error("Error while exporting item: " + ex);
}
}
}
public static void FormatLore(ReadOnlyContentPack readOnlyContentPack)
{
string text = Path.Combine(WikiOutputPath, "Lore.txt");
string text2 = "lore[\"{0}\"] = {{\n";
text2 += "\tType = \"{1}\",\n";
text2 += "\tDesc = \"{2}\",\n";
text2 += "\t}}";
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
foreach (string loredef in loredefs)
{
try
{
string[] array = loredef.Split(" ");
string text3 = string.Format(text2, array[0], Language.GetString(array[1]), Language.GetString(array[2]).Replace("\\", "\\\\").Replace("\n", "\\n")
.Replace("\r", "\\r")
.Replace("\t", "\\t")
.Replace("\"", "\\\""));
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text3 = text3.Replace(item.Key, item.Value);
}
textWriter.WriteLine(text3);
}
catch (Exception ex)
{
Log.Error("Error while exporting lore: " + ex);
}
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
}
public static void FormatSkill(ReadOnlyContentPack readOnlyContentPack)
{
//IL_05f8: Unknown result type (might be due to invalid IL or missing references)
//IL_0606: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0513: Unknown result type (might be due to invalid IL or missing references)
//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
//IL_056f: Unknown result type (might be due to invalid IL or missing references)
//IL_057d: Unknown result type (might be due to invalid IL or missing references)
//IL_013a: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: Unknown result type (might be due to invalid IL or missing references)
//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
//IL_0206: Unknown result type (might be due to invalid IL or missing references)
//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
//IL_022e: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
//IL_0284: Unknown result type (might be due to invalid IL or missing references)
//IL_0242: Unknown result type (might be due to invalid IL or missing references)
//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
//IL_02e5: Unknown result type (might be due to invalid IL or missing references)
//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0319: Unknown result type (might be due to invalid IL or missing references)
//IL_031e: Unknown result type (might be due to invalid IL or missing references)
//IL_0322: Unknown result type (might be due to invalid IL or missing references)
//IL_0327: Unknown result type (might be due to invalid IL or missing references)
//IL_033f: Unknown result type (might be due to invalid IL or missing references)
//IL_039a: Unknown result type (might be due to invalid IL or missing references)
//IL_039f: Unknown result type (might be due to invalid IL or missing references)
//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
//IL_03c0: Unknown result type (might be due to invalid IL or missing references)
//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
//IL_045a: Unknown result type (might be due to invalid IL or missing references)
//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0413: Unknown result type (might be due to invalid IL or missing references)
//IL_0415: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Skills.txt");
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
AssetEnumerator<SurvivorDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).survivorDefs.GetEnumerator();
try
{
CharacterBody val = default(CharacterBody);
ProjectileController val7 = default(ProjectileController);
while (enumerator.MoveNext())
{
SurvivorDef current = enumerator.Current;
try
{
if (!current.bodyPrefab.TryGetComponent<CharacterBody>(ref val))
{
continue;
}
GenericSkill[] components = ((Component)val).GetComponents<GenericSkill>();
SkillLocator component = ((Component)val).GetComponent<SkillLocator>();
GenericSkill[] array = components;
foreach (GenericSkill val2 in array)
{
string text2 = "skills[\"{0}\"] = {{\n";
text2 += "\tName = \"{1}\",\n";
text2 += "\tDesc = \"{2}\",\n";
text2 += "\tSurvivor = \"{3}\",\n";
text2 += "\tType = \"{4}\",\n";
text2 += "\tCooldown = \"{5}\",\n";
string text3 = "Passive";
string text4 = "";
string text5 = "";
string text6 = "";
float num = 0f;
List<float> list = new List<float>();
string @string = Language.GetString(current.displayNameToken);
Variant[] variants = val2.skillFamily.variants;
foreach (Variant val3 in variants)
{
if (val3.skillDef.skillNameToken != null)
{
text4 = Language.GetString(val3.skillDef.skillNameToken);
}
if ((Object)(object)val2 == (Object)(object)component.primary)
{
text3 = "Primary";
}
else if ((Object)(object)val2 == (Object)(object)component.secondary)
{
text3 = "Secondary";
}
else if ((Object)(object)val2 == (Object)(object)component.utility)
{
text3 = "Utility";
}
else if ((Object)(object)val2 == (Object)(object)component.special)
{
text3 = "Special";
}
if (val3.skillDef.baseRechargeInterval != 0f)
{
num = val3.skillDef.baseRechargeInterval;
}
if (val3.skillDef.skillDescriptionToken != null)
{
text5 = Language.GetString(val3.skillDef.skillDescriptionToken);
}
if ((Object)(object)val3.unlockableDef != (Object)null)
{
AchievementDef achievementDefFromUnlockable = AchievementManager.GetAchievementDefFromUnlockable(val3.unlockableDef.cachedName);
if (achievementDefFromUnlockable != null)
{
text6 = Language.GetString(achievementDefFromUnlockable.nameToken);
}
text2 = text2 + "\tUnlock = \"" + text6 + "\",\n";
}
if (((SerializableEntityStateType)(ref val3.skillDef.activationState)).stateType != null && WikiTryGetProcs)
{
try
{
EntityState val4 = EntityStateCatalog.InstantiateState(EntityStateCatalog.stateTypeToIndex[((SerializableEntityStateType)(ref val3.skillDef.activationState)).stateType]);
if (val4 != null)
{
Enumerator<ReadOnlyContentPack> enumerator2 = ContentManager.allLoadedContentPacks.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
ReadOnlyContentPack current2 = enumerator2.Current;
Log.Warning("lookin through ,., " + ((ReadOnlyContentPack)(ref current2)).identifier);
AssetEnumerator<EntityStateConfiguration> enumerator3 = ((ReadOnlyContentPack)(ref current2)).entityStateConfigurations.GetEnumerator();
try
{
while (enumerator3.MoveNext())
{
EntityStateConfiguration current3 = enumerator3.Current;
if (!((Object)current3).name.Contains(((SerializableEntityStateType)(ref val3.skillDef.activationState)).stateType.ToString()))
{
continue;
}
Log.Warning("found config ! " + ((Object)current3).name);
SerializedField[] serializedFields = current3.serializedFieldsCollection.serializedFields;
foreach (SerializedField val5 in serializedFields)
{
if (val5.fieldName.ToLower().Contains("proc"))
{
list.Add(float.Parse(val5.fieldValue.stringValue));
}
else if (val5.fieldName.ToLower().Contains("projectile"))
{
if (val5.fieldValue.objectValue != (Object)null)
{
Object obj = Object.Instantiate(val5.fieldValue.objectValue);
GameObject val6 = (GameObject)(object)((obj is GameObject) ? obj : null);
if (val6.TryGetComponent<ProjectileController>(ref val7))
{
list.Add(val7.procCoefficient);
}
else
{
Log.Error("could not get projectile controller out of prefab ! ");
}
}
}
else if (val5.fieldName.ToLower().Contains("damage") && list.Count == 0)
{
list.Add(1f);
Log.Debug("no proc found ! defaulting to 1 ,., ");
}
}
}
}
finally
{
((IDisposable)enumerator3).Dispose();
}
}
}
finally
{
((IDisposable)enumerator2).Dispose();
}
}
}
catch (Exception ex)
{
Log.Error("Error while getting proc coefficient: " + ex);
}
}
if (!Object.op_Implicit((Object)(object)val3.skillDef.icon.texture))
{
continue;
}
string text7 = WikiOutputPath + "\\skills\\";
Directory.CreateDirectory(text7);
try
{
if (text4 == "")
{
Log.Debug("skill name is blank ! using toke n");
exportTexture(val3.skillDef.icon, Path.Combine(text7, val3.skillDef.skillNameToken + WikiModname + ".png"));
}
else
{
exportTexture(val3.skillDef.icon, Path.Combine(text7, text4.Replace(" ", "_") + WikiModname + ".png"));
}
}
catch
{
Log.Debug("erm ,,.,. failed to export skill icon with proper name ,,. trying with tokenm !! " + text4);
exportTexture(val3.skillDef.icon, Path.Combine(text7, val3.skillDef.skillNameToken + WikiModname + ".png"));
}
string text8 = text2;
string text9;
if (list.Count == 0)
{
text8 += "\t}},";
text9 = Language.GetStringFormatted(text8, new object[6] { text4, text4, text5, @string, text3, num });
}
else
{
text8 += "\tProc = \"{6}\",\n";
text8 += "\t}},";
text9 = Language.GetStringFormatted(text8, new object[7] { text4, text4, text5, @string, text3, num, list });
}
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text9 = text9.Replace(item.Key, item.Value);
}
textWriter.WriteLine(text9);
}
}
}
catch (Exception ex2)
{
Log.Error("Error while exporting skill: " + ex2);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
}
public static void FormatStages(ReadOnlyContentPack readOnlyContentPack)
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_1211: Unknown result type (might be due to invalid IL or missing references)
//IL_1216: Unknown result type (might be due to invalid IL or missing references)
//IL_128b: Unknown result type (might be due to invalid IL or missing references)
//IL_128e: Unknown result type (might be due to invalid IL or missing references)
//IL_1293: Unknown result type (might be due to invalid IL or missing references)
//IL_1297: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
//IL_0fa3: Unknown result type (might be due to invalid IL or missing references)
//IL_0fa8: Unknown result type (might be due to invalid IL or missing references)
//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
//IL_06bc: Unknown result type (might be due to invalid IL or missing references)
//IL_06c1: Unknown result type (might be due to invalid IL or missing references)
//IL_06c5: Unknown result type (might be due to invalid IL or missing references)
//IL_10d7: Unknown result type (might be due to invalid IL or missing references)
//IL_10df: Unknown result type (might be due to invalid IL or missing references)
//IL_10e4: Unknown result type (might be due to invalid IL or missing references)
//IL_10f9: Unknown result type (might be due to invalid IL or missing references)
//IL_10fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0717: Unknown result type (might be due to invalid IL or missing references)
//IL_07e9: Unknown result type (might be due to invalid IL or missing references)
//IL_07ee: Unknown result type (might be due to invalid IL or missing references)
//IL_07f2: Unknown result type (might be due to invalid IL or missing references)
//IL_0844: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Stages.txt");
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
AssetEnumerator<SceneDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).sceneDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
SceneDef current = enumerator.Current;
try
{
if (current.nameToken == "")
{
continue;
}
SceneInstance val = Addressables.LoadSceneAsync((object)((AssetReference)current.sceneAddress).AssetGUID, (LoadSceneMode)0, true, 100).WaitForCompletion();
Addressables.UnloadSceneAsync(val, true).WaitForCompletion();
SceneInstance val2 = Addressables.LoadSceneAsync((object)((AssetReference)current.sceneAddress).AssetGUID, (LoadSceneMode)0, true, 100).WaitForCompletion();
GameObject val3 = GameObject.Find("SceneInfo");
string text2 = "Environments[\"{0}\"] = {{\n";
text2 += "\tName = \"{1}\",\n";
text2 += "\tInternalName = \"{2}\",\n";
text2 += "\tImage = \"{3}\",\n";
text2 += "\tSubName = \"{4}\",\n";
text2 += "\tStage = \"{5}\",\n";
text2 += "\tSoundtrack = \"{6}\",\n";
text2 += "\tDescription = \"{7}\",\n";
if ((Object)(object)val3 != (Object)null)
{
ClassicStageInfo component = val3.GetComponent<ClassicStageInfo>();
List<List<string>> list = new List<List<string>>();
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.GetInteractableDccsPool))
{
text2 += "\tInteractables = {{\n";
Category[] poolCategories = component.GetInteractableDccsPool.poolCategories;
foreach (Category val4 in poolCategories)
{
PoolEntry[] alwaysIncluded = val4.alwaysIncluded;
foreach (PoolEntry val5 in alwaysIncluded)
{
Category[] categories = val5.dccs.categories;
foreach (Category val6 in categories)
{
DirectorCard[] cards = val6.cards;
foreach (DirectorCard val7 in cards)
{
string text3 = processNameToken(val7.spawnCard.prefab);
int selectionWeight = val7.selectionWeight;
string item = text3 + "," + selectionWeight;
List<string> item2 = new List<string>(1) { item };
list.Add(item2);
}
}
}
ConditionalPoolEntry[] includedIfConditionsMet = val4.includedIfConditionsMet;
foreach (ConditionalPoolEntry val8 in includedIfConditionsMet)
{
Category[] categories2 = ((PoolEntry)val8).dccs.categories;
foreach (Category val9 in categories2)
{
DirectorCard[] cards2 = val9.cards;
foreach (DirectorCard val10 in cards2)
{
string text4 = processNameToken(val10.spawnCard.prefab);
int selectionWeight2 = val10.selectionWeight;
string item3 = text4 + "," + selectionWeight2 + "," + acronymHelper(Language.GetString(val8.requiredExpansions[0].nameToken), forceCaps: true);
bool flag = false;
foreach (List<string> item9 in list)
{
foreach (string item10 in item9.ToList())
{
if (item10.Split(",")[0].Equals(text4))
{
flag = true;
item9.Add(item3);
}
}
}
if (!flag)
{
List<string> item4 = new List<string>(1) { item3 };
list.Add(item4);
}
}
}
}
foreach (List<string> item11 in list)
{
text2 = text2 + "\t\t[\"" + item11[0].Split(",")[0] + "\"] = {{ ";
for (int num2 = 0; num2 < item11.Count; num2++)
{
text2 = ((num2 != 0) ? (text2 + ", [" + item11[num2].Split(",")[2] + "] = {{ Weight = " + item11[num2].Split(",")[1] + " }}") : ((item11[0].Split(",").Length != 2) ? (text2 + "[" + item11[num2].Split(",")[2] + "] = {{ Weight = " + item11[num2].Split(",")[1] + " }}") : (text2 + "[ALL] = {{ Weight = " + item11[num2].Split(",")[1] + " }}")));
}
text2 += " }},\n";
}
}
text2 += "\t}},\n";
}
else
{
Log.Warning("no interactable dccs found for " + current.nameToken);
}
List<List<string>> list2 = new List<List<string>>();
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.GetMonsterDccsPool))
{
text2 += "\tMonsters = {{\n";
Category[] poolCategories2 = component.GetMonsterDccsPool.poolCategories;
foreach (Category val11 in poolCategories2)
{
if (!(val11.name == "Standard"))
{
continue;
}
PoolEntry[] alwaysIncluded2 = val11.alwaysIncluded;
foreach (PoolEntry val12 in alwaysIncluded2)
{
Category[] categories3 = val12.dccs.categories;
foreach (Category val13 in categories3)
{
DirectorCard[] cards3 = val13.cards;
foreach (DirectorCard val14 in cards3)
{
string @string = Language.GetString(val14.spawnCard.prefab.GetComponent<CharacterMaster>().bodyPrefab.GetComponent<CharacterBody>().baseNameToken);
int selectionWeight3 = val14.selectionWeight;
int minimumStageCompletions = val14.minimumStageCompletions;
string name = val13.name;
string item5 = @string + "," + selectionWeight3 + "," + minimumStageCompletions + "," + name;
List<string> item6 = new List<string>(1) { item5 };
list2.Add(item6);
}
}
}
ConditionalPoolEntry[] includedIfConditionsMet2 = val11.includedIfConditionsMet;
foreach (ConditionalPoolEntry val15 in includedIfConditionsMet2)
{
Category[] categories4 = ((PoolEntry)val15).dccs.categories;
foreach (Category val16 in categories4)
{
DirectorCard[] cards4 = val16.cards;
foreach (DirectorCard val17 in cards4)
{
string string2 = Language.GetString(val17.spawnCard.prefab.GetComponent<CharacterMaster>().bodyPrefab.GetComponent<CharacterBody>().baseNameToken);
int selectionWeight4 = val17.selectionWeight;
int minimumStageCompletions2 = val17.minimumStageCompletions;
string name2 = val16.name;
string item7 = string2 + "," + selectionWeight4 + "," + minimumStageCompletions2 + "," + name2 + "," + acronymHelper(Language.GetString(val15.requiredExpansions[0].nameToken), forceCaps: true);
bool flag2 = false;
foreach (List<string> item12 in list2)
{
foreach (string item13 in item12.ToList())
{
if (item13.Split(",")[0].Equals(string2))
{
flag2 = true;
item12.Add(item7);
}
}
}
if (!flag2)
{
List<string> item8 = new List<string>(1) { item7 };
list2.Add(item8);
}
}
}
}
foreach (List<string> item14 in list2)
{
text2 = text2 + "\t\t[\"" + item14[0].Split(",")[0] + "\"] = {{ ";
for (int num10 = 0; num10 < item14.Count; num10++)
{
text2 = ((num10 != 0) ? ((int.Parse(item14[0].Split(",")[2]) <= 0) ? (text2 + "[" + item14[num10].Split(",")[4] + "] = {{ Weight = " + item14[num10].Split(",")[1] + ", Category = \"" + item14[num10].Split(",")[3] + "\" }}") : (text2 + "[" + item14[num10].Split(",")[4] + "] = {{ Weight = " + item14[num10].Split(",")[1] + ", Stage = " + item14[num10].Split(",")[2] + ", Category = \"" + item14[num10].Split(",")[3] + "\" }}")) : ((item14[0].Split(",").Length != 4) ? ((int.Parse(item14[0].Split(",")[2]) <= 0) ? (text2 + "[" + item14[num10].Split(",")[4] + "] = {{ Weight = " + item14[num10].Split(",")[1] + ", Category = \"" + item14[num10].Split(",")[3] + "\" }}") : (text2 + "[" + item14[num10].Split(",")[4] + "] = {{ Weight = " + item14[num10].Split(",")[1] + ", Stage = " + item14[num10].Split(",")[2] + ", Category = \"" + item14[num10].Split(",")[3] + "\" }}")) : ((int.Parse(item14[0].Split(",")[2]) <= 0) ? (text2 + "[ALL] = {{ Weight = " + item14[num10].Split(",")[1] + ", Category = \"" + item14[num10].Split(",")[3] + "\" }}") : (text2 + "[ALL] = {{ Weight = " + item14[num10].Split(",")[1] + ", Stage = " + item14[num10].Split(",")[2] + ", Category = \"" + item14[num10].Split(",")[3] + "\" }}"))));
}
text2 += " }},\n";
}
}
text2 += "\t}},\n";
}
else
{
Log.Warning("no monster dccs found for " + current.nameToken);
}
string text5 = "\tFamily = {{ ";
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.GetMonsterDccsPool))
{
Category[] poolCategories3 = component.GetMonsterDccsPool.poolCategories;
foreach (Category val18 in poolCategories3)
{
if (val18.name != "Standard")
{
ConditionalPoolEntry[] includedIfConditionsMet3 = val18.includedIfConditionsMet;
foreach (ConditionalPoolEntry val19 in includedIfConditionsMet3)
{
text5 = text5 + "\"" + ((Object)((PoolEntry)val19).dccs).name.Replace("dccs", "").Replace("FamilySandy", "").Replace("FamilyNature", "")
.Replace("FamilySnowy", "")
.Replace("Family", "") + "\", ";
}
}
}
string text6 = text5;
text5 = text6.Substring(0, text6.Length - 2);
text5 += " }}\n";
if (text5 != "\tFamily = { }}\n")
{
text2 += text5;
}
}
Scene scene = ((SceneInstance)(ref val2)).Scene;
string text7 = "BAZAAR_SEER_" + ((Scene)(ref scene)).name.ToUpper();
if (Language.english.TokenIsRegistered(text7))
{
text2 = text2 + "\tLunarSeer = \"" + Language.GetString(text7).Replace("<style=cWorldEvent>", "").Replace("</style>", "") + "\",\n";
}
string text8 = Language.GetString(current.nameToken);
if (text8.StartsWith("Hidden Realm"))
{
text2 += "\tHidden Realm = true,\n";
text8 = text8.Replace("Hidden Realm: ", "");
}
loredefs.Add("Environments " + current.nameToken + " " + current.loreToken);
if ((Object)(object)component != (Object)null)
{
text2 = text2 + "\tInteractableCredits = \"" + component.sceneDirectorInteractibleCredits + "\",\n";
text2 = text2 + "\tMonsterCredits = \"" + component.sceneDirectorMonsterCredits + "\",\n";
}
text2 += "}}";
try
{
string text9 = text8;
_ = ((SceneInstance)(ref val2)).Scene;
scene = ((SceneInstance)(ref val2)).Scene;
if (((Scene)(ref scene)).name != null)
{
scene = ((SceneInstance)(ref val2)).Scene;
text9 = ((Scene)(ref scene)).name;
}
else
{
Log.Warning("loaded scene is null " + text8);
}
string text10 = Language.GetStringFormatted(text2, new object[8]
{
text8,
text8,
text9,
text8 + " Logbook Thumbnail.png",
Language.GetString(current.subtitleToken),
current.stageOrder,
current.mainTrack.cachedName,
"DESCRIPTION TEMP REPLACE ME PRETTY PLEASE !!"
});
foreach (KeyValuePair<string, string> item15 in FormatR2ToWiki)
{
text10 = text10.Replace(item15.Key, item15.Value);
}
textWriter.WriteLine(text10);
}
catch (Exception data)
{
Log.Error(data);
Log.Debug(text2);
}
Texture val20 = current.previewTexture;
if ((Object)(object)val20 == (Object)null)
{
val20 = Addressables.LoadAssetAsync<Texture>((object)((AssetReference)current.previewTextureReference).AssetGUID).WaitForCompletion();
}
string text11 = WikiOutputPath + "\\stages\\";
Directory.CreateDirectory(text11);
try
{
exportTexture(val20, Path.Combine(text11, text8 + " Logbook Thumbnail" + WikiModname + ".png"));
}
catch
{
Log.Debug("erm ,,.,. failed to export stage icon ,,. " + text8);
}
}
else
{
Log.Warning("uable to f9ind scene info ,., ");
}
Addressables.UnloadSceneAsync(val2, true).WaitForCompletion();
Log.Debug("unlaoded scene !! ");
}
catch (Exception ex)
{
Log.Error("Error while exporting scene: " + ex);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
}
public static string processNameToken(GameObject prefab)
{
string text = ((Object)prefab).name;
if ((Object)(object)prefab != (Object)null && (Object)(object)prefab.GetComponent<GenericDisplayNameProvider>() != (Object)null)
{
text = ((!Object.op_Implicit((Object)(object)prefab.GetComponent<SummonMasterBehavior>())) ? Language.GetString(prefab.GetComponent<GenericDisplayNameProvider>().displayToken) : Language.GetString(prefab.GetComponent<SummonMasterBehavior>().masterPrefab.GetComponent<CharacterMaster>().bodyPrefab.GetComponent<CharacterBody>().baseNameToken));
}
if (text.Contains("Chest - Healing"))
{
Log.Debug("found healing chest ~!!! prefab name is " + ((Object)prefab).name);
text = (((Object)prefab).name.Contains("Utility") ? "Utility Chest" : ((!((Object)prefab).name.Contains("Damage")) ? "Healing Chest" : "Damage Chest"));
}
foreach (KeyValuePair<string, string> formatInteractableName in FormatInteractableNames)
{
text = text.Replace(formatInteractableName.Key, formatInteractableName.Value);
}
return text;
}
[IteratorStateMachine(typeof(<waitingCouroutine>d__12))]
private static IEnumerator waitingCouroutine()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <waitingCouroutine>d__12(0);
}
public static void FormatSurvivor(ReadOnlyContentPack readOnlyContentPack)
{
//IL_0684: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_020c: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
//IL_0633: Unknown result type (might be due to invalid IL or missing references)
//IL_0605: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(WikiOutputPath, "Survivors.txt");
if (!Directory.Exists(WikiOutputPath))
{
Directory.CreateDirectory(WikiOutputPath);
}
TextWriter textWriter = new StreamWriter(text, WikiAppend);
AssetEnumerator<SurvivorDef> enumerator = ((ReadOnlyContentPack)(ref readOnlyContentPack)).survivorDefs.GetEnumerator();
try
{
CharacterBody val = default(CharacterBody);
CharacterMotor val2 = default(CharacterMotor);
ModelLocator val4 = default(ModelLocator);
while (enumerator.MoveNext())
{
SurvivorDef current = enumerator.Current;
try
{
string text2 = "survivors[\"{0}\"] = {{\n";
text2 += "\tName = \"{1}\",\n";
text2 += "\tImage = \"{2}\",\n";
text2 += "\tBaseHealth = {3},\n";
text2 += "\tScalingHealth = {4},\n";
text2 += "\tBaseDamage = {5},\n";
text2 += "\tScalingDamage = {6},\n";
text2 += "\tBaseHealthRegen = {7},\n";
text2 += "\tScalingHealthRegen = {8},\n";
text2 += "\tBaseSpeed = {9},\n";
text2 += "\tBaseArmor = {10},\n";
text2 += "\tDescription = \"{11}\",\n";
text2 += "\tUmbra = \"{17}\",\n";
text2 += "\tPhraseEscape = \"{12}\",\n";
text2 += "\tPhraseVanish = \"{13}\",\n";
text2 += "\tMass = {14},\n";
text2 += "\tLocalizationInternalName = \"{15}\",\n";
text2 += "\tColor = \"{16}\",\n";
string text3 = "";
string text4 = "";
string text5 = "";
string text6 = "";
string text7 = "";
float num = 1E+14f;
float num2 = 1E+14f;
float num3 = 1E+14f;
float num4 = 1E+14f;
float num5 = 1E+14f;
float num6 = 1E+14f;
float num7 = 1E+14f;
float num8 = 1E+14f;
float num9 = 1E+14f;
string text8 = "";
string text9 = "";
string text10 = "";
string text11 = "";
if (current.displayNameToken != null)
{
text3 = Language.GetString(current.displayNameToken);
}
if (current.descriptionToken != null)
{
text4 = Language.GetString(current.descriptionToken);
}
_ = current.primaryColor;
if (true)
{
text7 = ColorUtility.ToHtmlStringRGB(current.primaryColor);
}
if ((Object)(object)current.unlockableDef != (Object)null)
{
string text12 = AchievementManager.GetAchievementDefFromUnlockable(current.unlockableDef.cachedName)?.nameToken;
if (text12 != null)
{
text5 = Language.GetString(text12);
}
}
if (current.displayNameToken != null && current.displayNameToken.EndsWith("_NAME"))
{
text6 = current.displayNameToken.Remove(current.displayNameToken.Length - 5);
}
else if (current.displayNameToken != null)
{
text6 = current.displayNameToken;
}
if (Language.english.TokenIsRegistered(current.displayNameToken.Replace("_NAME", "_LORE")))
{
loredefs.Add("Survivor " + current.displayNameToken + " " + current.displayNameToken.Replace("_NAME", "_LORE"));
}
if (current.bodyPrefab.TryGetComponent<CharacterBody>(ref val))
{
num = val.baseMaxHealth;
num2 = val.levelMaxHealth;
num3 = val.baseDamage;
num4 = val.levelDamage;
num5 = val.baseRegen;
num6 = val.levelRegen;
num7 = val.baseMoveSpeed;
num8 = val.baseArmor;
}
if (current.bodyPrefab.TryGetComponent<CharacterMotor>(ref val2))
{
num9 = val2.mass;
}
if (current.mainEndingEscapeFailureFlavorToken != null)
{
text8 = Language.GetString(current.mainEndingEscapeFailureFlavorToken);
}
if (current.outroFlavorToken != null)
{
text9 = Language.GetString(current.outroFlavorToken);
}
if (val.subtitleNameToken != null)
{
text10 = Language.GetString(val.subtitleNameToken);
}
if (Object.op_Implicit((Object)(object)current.unlockableDef))
{
AchievementDef achievementDefFromUnlockable = AchievementManager.GetAchievementDefFromUnlockable(current.unlockableDef.cachedName);
text11 = Language.GetString(achievementDefFromUnlockable.nameToken);
text2 = text2 + "\tUnlock = \"" + text11 + "\",\n";
}
if ((Object)(object)current.GetRequiredExpansion() != (Object)null)
{
text2 = text2 + "\tExpansion = \"" + acronymHelper(Language.GetString(current.GetRequiredExpansion().nameToken), forceCaps: false) + "\",\n";
}
text2 += "\t}}";
string text13 = Language.GetStringFormatted(text2, new object[18]
{
text3,
text3,
text3.Replace(" ", "_") + WikiModname + ".png",
num,
num2,
num3,
num4,
num5,
num6,
num7,
num8,
text4,
text9,
text8,
num9,
text6,
"#" + text7,
text10
});
foreach (KeyValuePair<string, string> item in FormatR2ToWiki)
{
text13 = text13.Replace(item.Key, item.Value);
}
textWriter.WriteLine(text13);
if (!Object.op_Implicit((Object)(object)SurvivorCatalog.GetSurvivorPortrait(current.survivorIndex)))
{
continue;
}
string text14 = WikiOutputPath + "\\survivors\\";
Directory.CreateDirectory(text14);
try
{
if (text3 == "")
{
Log.Debug("surv name is blank ! using toke n");
exportTexture(SurvivorCatalog.GetSurvivorPortrait(current.survivorIndex), Path.Combine(text14, text6 + WikiModname + ".png"));
}
else
{
exportTexture(SurvivorCatalog.GetSurvivorPortrait(current.survivorIndex), Path.Combine(text14, text3.Replace(" ", "_") + WikiModname + ".png"));
}
}
catch
{
Log.Debug("erm ,,.,. failed to export surv icon with proper name ,,. trying with tokenm !! " + text3);
exportTexture(SurvivorCatalog.GetSurvivorPortrait(current.survivorIndex), Path.Combine(text14, text6 + WikiModname + ".png"));
}
SkinDef[] allSkinDefs = SkinCatalog.allSkinDefs;
foreach (SkinDef val3 in allSkinDefs)
{
string text15 = WikiOutputPath + "\\skins\\";
Directory.CreateDirectory(text15);
if (!current.bodyPrefab.TryGetComponent<ModelLocator>(ref val4) || ((Object)val4.modelTransform).name == null || (Object)(object)val3.rootObject == (Object)null || ((Object)val4.modelTransform).name != ((Object)val3.rootObject).name)
{
continue;
}
try
{
string @string = Language.GetString(val3.nameToken);
string text16 = ((!(@string == "Default")) ? Language.GetString(val3.nameToken) : ("Default " + text3));
if (text16 == "" || val3.nameToken == "")
{
text16 = ((Object)val3).name;
}
exportTexture(val3.icon, Path.Combine(text15, text16.Replace(" ", "_") + WikiModname + ".png"));
}
catch
{
Log.Debug("erm ,,.,. failed to export skin icon with proper name ,,. trying with tokenm !! " + Language.GetString(val3.nameToken));
exportTexture(val3.icon, Path.Combine(text15, val3.nameToken + WikiModname + ".png"));
}
}
}
catch (Exception ex)
{
Log.Error("Error while exporting skin: " + ex);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
textWriter.Close();
long length = new FileInfo(text).Length;
if (length <= 0)
{
File.Delete(text);
}
}
public static void exportTexture(Texture texture, string path)
{
if (File.Exists(path) && AssetExtractor.Instance.labelCopies.Value)
{
Log.Debug("file exitst" + path);
string text = path.Replace(".png", "");
while (File.Exists(text + ".png"))
{
text += " (copy)";
}
Log.Debug("writing file " + text);
File.WriteAllBytes(text + ".png", ImageConversion.EncodeToPNG(makeReadable(texture)));
}
else
{
File.WriteAllBytes(path, ImageConversion.EncodeToPNG(makeReadable(texture)));
}
}
public static void exportTexture(Sprite sprite, string path)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Expected O, but got Unknown
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
Texture2D val = makeReadable((Texture)(object)sprite.texture);
Rect textureRect = sprite.textureRect;
int num = Mathf.FloorToInt(((Rect)(ref textureRect)).width);
textureRect = sprite.textureRect;
Texture2D val2 = new Texture2D(num, Mathf.FloorToInt(((Rect)(ref textureRect)).height));
textureRect = sprite.textureRect;
int num2 = Mathf.FloorToInt(((Rect)(ref textureRect)).x);
textureRect = sprite.textureRect;
int num3 = Mathf.FloorToInt(((Rect)(ref textureRect)).y);
textureRect = sprite.textureRect;
int num4 = Mathf.FloorToInt(((Rect)(ref textureRect)).width);
textureRect = sprite.textureRect;
Color[] pixels = val.GetPixels(num2, num3, num4, Mathf.FloorToInt(((Rect)(ref textureRect)).height));
try
{
val2.SetPixels(pixels);
val2.Apply();
if (File.Exists(path) && AssetExtractor.Instance.labelCopies.Value)
{
Log.Debug("file exitst" + path);
string text = path.Replace(".png", "");
while (File.Exists(text + ".png"))
{
text += " (copy)";
}
Log.Debug("writing file " + text);
File.WriteAllBytes(text + ".png", ImageConversion.EncodeToPNG(val2));
}
else
{
File.WriteAllBytes(path, ImageConversion.EncodeToPNG(val2));
}
}
catch (Exception data)
{
Log.Error(data);
Log.Info("exporting png without cropping !!,.., ");
if (File.Exists(path) && AssetExtractor.Instance.labelCopies.Value)
{
Log.Debug("file exitst" + path);
string text2 = path.Replace(".png", "");
while (File.Exists(text2 + ".png"))
{
text2 += " (copy)";
}
Log.Debug("writing file " + text2);
File.WriteAllBytes(text2 + ".png", ImageConversion.EncodeToPNG(val));
}
else
{
File.WriteAllBytes(path, ImageConversion.EncodeToPNG(val));
}
}
}
private static Texture2D makeReadable(Texture texture)
{
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Expected O, but got Unknown
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
RenderTexture temporary = RenderTexture.GetTemporary(texture.width, texture.height, 32);
((Object)temporary).name = "Whatever";
temporary.enableRandomWrite = true;
temporary.Create();
Graphics.Blit(texture, temporary);
RenderTexture active = RenderTexture.active;
RenderTexture.active = temporary;
Texture2D val = new Texture2D(texture.width, texture.height);
val.ReadPixels(new Rect(0f, 0f, (float)((Texture)temporary).width, (float)((Texture)temporary).height), 0, 0);
val.Apply();
RenderTexture.active = active;
RenderTexture.ReleaseTemporary(temporary);
return val;
}
public static string acronymHelper(string expansion, bool forceCaps)
{
string[] array = expansion.Split(" ");
string text = "";
string[] array2 = array;
foreach (string text2 in array2)
{
text = ((!forceCaps) ? (text + text2[0]) : (text + text2.ToUpper()[0]));
}
return text;
}
}
internal static class Log
{
private static ManualLogSource _logSource;
internal static void Init(ManualLogSource logSource)
{
_logSource = logSource;
}
internal static void Debug(object data)
{
_logSource.LogDebug(data);
}
internal static void Error(object data)
{
_logSource.LogError(data);
}
internal static void Fatal(object data)
{
_logSource.LogFatal(data);
}
internal static void Info(object data)
{
_logSource.LogInfo(data);
}
internal static void Message(object data)
{
_logSource.LogMessage(data);
}
internal static void Warning(object data)
{
_logSource.LogWarning(data);
}
}
}