├── LaMulana2Randomizer
├── Seed
│ └── spoilers.json
├── LaMulana2.ico
├── Monomod
│ ├── MonoMod.exe
│ ├── Mono.Cecil.dll
│ ├── Mono.Cecil.Mdb.dll
│ ├── Mono.Cecil.Pdb.dll
│ ├── MonoMod.Utils.dll
│ └── Mono.Cecil.Rocks.dll
├── packages.config
├── App.xaml.cs
├── UI
│ ├── MainWindow.xaml.cs
│ ├── EnumBooleanConverter.cs
│ ├── ProgressDialog.xaml.cs
│ ├── IntRangRules.cs
│ └── ProgressDialog.xaml
├── App.xaml
├── Utils
│ ├── Shuffle.cs
│ ├── Logger.cs
│ └── FileUtils.cs
├── Extensions
│ └── StringExtensions.cs
├── RandomiserException.cs
├── BindableBase.cs
├── Item.cs
├── RelayCommand.cs
├── SpoilerLog.cs
├── LogicParsing
│ ├── Logic.cs
│ ├── ShuntingYard.cs
│ ├── LogicTree.cs
│ └── Tokeniser.cs
├── Area.cs
├── App.config
├── ViewModels
│ ├── ProgressDialogViewModel.cs
│ └── MainViewModel.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Location.cs
├── Exit.cs
├── ItemPool.cs
└── LaMulana2Randomizer.csproj
├── LM2RandomiserShared
├── Version.cs
├── Properties
│ └── AssemblyInfo.cs
├── ExitID.cs
├── AreaID.cs
├── LaMulana2RandomizerShared.csproj
├── ItemID.cs
└── LocationID.cs
├── Assembly-CSharp
├── Patches
│ ├── TrapFloor.cs
│ ├── MenuSystem.cs
│ ├── L2SystemCore.cs
│ ├── HolyTabretScript.cs
│ ├── TreasureBoxScript.cs
│ ├── EventItemScript.cs
│ ├── CostumeScript.cs
│ ├── ItemPotScript.cs
│ ├── Status.cs
│ ├── SeihaiMenu.cs
│ ├── L2FlagSystem.cs
│ ├── ItemDialog.cs
│ └── ShopScript.cs
├── Properties
│ └── AssemblyInfo.cs
├── FakeItem.cs
├── HotSpring.cs
├── StartDB.cs
├── ItemTracker.cs
├── DevUI.cs
├── Assembly-CSharp.csproj
└── ExitDB.cs
├── README.md
├── LaMulana2Randomizer.sln
└── .gitignore
/LaMulana2Randomizer/Seed/spoilers.json:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/LaMulana2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coookie93/LaMulana2Randomizer/HEAD/LaMulana2Randomizer/LaMulana2.ico
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Monomod/MonoMod.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coookie93/LaMulana2Randomizer/HEAD/LaMulana2Randomizer/Monomod/MonoMod.exe
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Monomod/Mono.Cecil.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coookie93/LaMulana2Randomizer/HEAD/LaMulana2Randomizer/Monomod/Mono.Cecil.dll
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Monomod/Mono.Cecil.Mdb.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coookie93/LaMulana2Randomizer/HEAD/LaMulana2Randomizer/Monomod/Mono.Cecil.Mdb.dll
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Monomod/Mono.Cecil.Pdb.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coookie93/LaMulana2Randomizer/HEAD/LaMulana2Randomizer/Monomod/Mono.Cecil.Pdb.dll
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Monomod/MonoMod.Utils.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coookie93/LaMulana2Randomizer/HEAD/LaMulana2Randomizer/Monomod/MonoMod.Utils.dll
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Monomod/Mono.Cecil.Rocks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coookie93/LaMulana2Randomizer/HEAD/LaMulana2Randomizer/Monomod/Mono.Cecil.Rocks.dll
--------------------------------------------------------------------------------
/LaMulana2Randomizer/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/LM2RandomiserShared/Version.cs:
--------------------------------------------------------------------------------
1 | namespace LaMulana2RandomizerShared
2 | {
3 | public static class Version
4 | {
5 | public static string version = "2.2.4";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace LaMulana2Randomizer
4 | {
5 | ///
6 | /// Interaction logic for App.xaml
7 | ///
8 | public partial class App : Application
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/UI/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace LaMulana2Randomizer.UI
4 | {
5 | public partial class MainWindow : Window
6 | {
7 | public MainWindow()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Assembly-CSharp/Patches/TrapFloor.cs:
--------------------------------------------------------------------------------
1 | using MonoMod;
2 |
3 | namespace LM2RandomiserMod.Patches
4 | {
5 | [MonoModPatch("global::TrapFloor")]
6 | public class patched_TrapFloor : global::TrapFloor
7 | {
8 | public float whalf;
9 | public float width;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Utils/Shuffle.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace LaMulana2Randomizer.Utils
5 | {
6 | public abstract class Shuffle
7 | {
8 | public static List FisherYates(List list, Random random)
9 | {
10 | int max = list.Count;
11 | for (int i = 0; i < max; i++)
12 | {
13 | int r = i + random.Next(max - i);
14 | T temp = list[r];
15 | list[r] = list[i];
16 | list[i] = temp;
17 | }
18 | return list;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Extensions/StringExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace LaMulana2Randomizer.ExtensionMethods
5 | {
6 | public static class StringExtensions
7 | {
8 | public static string RemoveWhitespace(this string str)
9 | {
10 | return string.Join("", str.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries));
11 | }
12 |
13 | public static IEnumerable Chunk(this string str, int chunkSize)
14 | {
15 | for (int i = 0; i < str.Length; i += chunkSize)
16 | yield return str.Substring(i, Math.Min(chunkSize, str.Length - i));
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/RandomiserException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace LaMulana2Randomizer
4 | {
5 | public class RandomiserException : Exception
6 | {
7 | public RandomiserException(string message) : base(message) { }
8 | }
9 |
10 | public class LogicParsingExcpetion : RandomiserException
11 | {
12 | public LogicParsingExcpetion(string message) : base(message) { }
13 | }
14 |
15 | public class InvalidLocationException : RandomiserException
16 | {
17 | public InvalidLocationException(string message) : base(message) { }
18 | }
19 |
20 | public class InvalidAreaException : RandomiserException
21 | {
22 | public InvalidAreaException(string message) : base(message) { }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/BindableBase.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.CompilerServices;
3 |
4 | namespace LaMulana2Randomizer
5 | {
6 | public abstract class BindableBase : INotifyPropertyChanged
7 | {
8 | public event PropertyChangedEventHandler PropertyChanged;
9 |
10 | protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
11 | {
12 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
13 | }
14 |
15 | protected virtual void Set(ref T field, T value, [CallerMemberName] string propertyName = null)
16 | {
17 | if (Equals(field, value)) return;
18 |
19 | field = value;
20 | RaisePropertyChanged(propertyName);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/UI/EnumBooleanConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Data;
3 |
4 | namespace LaMulana2Randomizer.UI
5 | {
6 | [ValueConversion(typeof(Enum), typeof(bool))]
7 | public class EnumBooleanConverter : IValueConverter
8 | {
9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
10 | {
11 | if (value == null)
12 | {
13 | return false;
14 | }
15 | return value.Equals(parameter);
16 | }
17 |
18 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
19 | {
20 | return value.Equals(true) ? parameter : Binding.DoNothing;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/Item.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using LaMulana2RandomizerShared;
3 |
4 | namespace LaMulana2Randomizer
5 | {
6 | public class Item
7 | {
8 | public string Name { get; private set; }
9 | public bool IsRequired { get; private set; }
10 |
11 | [JsonIgnore]
12 | public ItemID ID { get; private set; }
13 |
14 | public int PriceMultiplier;
15 |
16 | [JsonConstructor]
17 | public Item(string name, ItemID id, bool isRequired = false)
18 | {
19 | Name = name;
20 | ID = id;
21 | IsRequired = isRequired;
22 | PriceMultiplier = 10;
23 | }
24 |
25 | public Item DeepCopy()
26 | {
27 | Item result = (Item)MemberwiseClone();
28 | result.Name = string.Copy(Name);
29 | return result;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/LaMulana2Randomizer/RelayCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Input;
3 |
4 | namespace LaMulana2Randomizer
5 | {
6 | public class RelayCommand : ICommand
7 | {
8 | private readonly Predicate