diff --git a/IEMod.pw.sln b/IEMod.pw.sln index 6e967bb..94ecdba 100644 --- a/IEMod.pw.sln +++ b/IEMod.pw.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{9E6FE0FD-A2B5-4383-A4BE-02B8DC65E030}" ProjectSection(SolutionItems) = preProject @@ -61,6 +61,26 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAssemblyCreator", "Patc EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Patchwork.Engine", "Patchwork\Patchwork.Engine\Patchwork.Engine.csproj", "{565C269A-F5EB-4BBE-86E5-75C8D4E1CDF7}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{1AA2B0F6-880A-40BC-9FB1-0E9FA0170613}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BonusSpells.pw", "modules\BonusSpells.pw\BonusSpells.pw.csproj", "{A0BF71D7-7B01-4024-8FD2-D889351F91D8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FastSneak.pw", "modules\FastSneak.pw\FastSneak.pw.csproj", "{1FAB0C91-9AA4-458A-8485-EE1D0140672E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LootShuffler.pw", "modules\LootShuffler.pw\LootShuffler.pw.csproj", "{08358A49-0FC5-435B-8BD6-927973E5CEB3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XPnerf25.pw", "modules\XPnerf25.pw\XPnerf25.pw.csproj", "{61970529-D29D-4DE7-A40F-FBEE2E829DF6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XPnerf50.pw", "modules\XPnerf50.pw\XPnerf50.pw.csproj", "{C3119ABE-F696-4AA3-A257-40C296DD59E4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XPnerfSquare.pw", "modules\XPnerfSquare.pw\XPnerfSquare.pw.csproj", "{C08CC9C0-EE0C-4EDF-8121-86026B8553C0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpellsPerEncounter.pw", "modules\SpellsPerEncounter.pw\SpellsPerEncounter.pw.csproj", "{58BF54CB-4583-44F2-8B87-3264BBDA721D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleCommands.pw", "modules\ConsoleCommands.pw\ConsoleCommands.pw.csproj", "{76927E3B-9CAF-41EA-8199-7A9E472A86D1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HideWeaponEffects.pw", "modules\HideWeaponEffects.pw\HideWeaponEffects.pw.csproj", "{30DA7165-69E3-467A-B3B8-3EFFB595D1F8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1338,6 +1358,924 @@ Global {565C269A-F5EB-4BBE-86E5-75C8D4E1CDF7}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU {565C269A-F5EB-4BBE-86E5-75C8D4E1CDF7}.winphone_Release|x86.ActiveCfg = Release|Any CPU {565C269A-F5EB-4BBE-86E5-75C8D4E1CDF7}.winphone_Release|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Debug|x86.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Debug|x86.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Publish|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Publish|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Publish|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Release|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Release|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.Release|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.silverlight_Release|x86.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8}.winphone_Release|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Debug|x86.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Debug|x86.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Publish|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Publish|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Publish|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Release|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Release|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.Release|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.silverlight_Release|x86.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E}.winphone_Release|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Debug|x86.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Debug|x86.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Publish|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Publish|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Publish|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Release|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Release|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.Release|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.silverlight_Release|x86.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3}.winphone_Release|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Debug|x86.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Debug|x86.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Publish|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Publish|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Publish|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Release|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Release|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.Release|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.silverlight_Release|x86.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6}.winphone_Release|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Debug|x86.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Debug|x86.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Publish|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Publish|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Publish|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Release|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Release|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.Release|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.silverlight_Release|x86.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4}.winphone_Release|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Debug|x86.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Debug|x86.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Publish|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Publish|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Publish|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Release|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Release|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.Release|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.silverlight_Release|x86.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0}.winphone_Release|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Debug|x86.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Debug|x86.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Publish|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Publish|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Publish|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Release|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Release|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.Release|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.silverlight_Release|x86.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D}.winphone_Release|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Debug|x86.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Debug|x86.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Publish|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Publish|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Publish|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Release|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Release|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.Release|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.silverlight_Release|x86.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1}.winphone_Release|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Debug|x86.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Debug|x86.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.FIRSTRUN|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.FIRSTRUN|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.FIRSTRUN|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.FIRSTRUN|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.FIRSTRUN|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.FIRSTRUN|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Debug|x86.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Debug|x86.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Release|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_2_0_Release|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Debug|x86.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Debug|x86.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Release|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_3_5_Release|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Debug|x86.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Debug|x86.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Release|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_0_Release|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Debug|Any CPU.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Debug|x86.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Debug|x86.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Release|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Release|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Release|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Release|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.net_4_5_Release|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.PrepareEnvironment|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.PrepareEnvironment|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.PrepareEnvironment|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.PrepareEnvironment|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.PrepareEnvironment|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.PrepareEnvironment|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Publish|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Publish|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Publish|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Publish|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Publish|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Release|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Release|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.Release|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Debug|x86.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Debug|x86.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Release|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Release|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Release|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Release|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.silverlight_Release|x86.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Debug|x86.ActiveCfg = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Debug|x86.Build.0 = Debug|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Release|Any CPU.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Release|Any CPU.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Release|Mixed Platforms.Build.0 = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Release|x86.ActiveCfg = Release|Any CPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8}.winphone_Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1356,5 +2294,15 @@ Global {D9F3533C-2493-4A67-B32F-E703370653CB} = {3D6E61C9-82F9-4D67-85FA-C3B3BAA01B23} {27F54C03-0235-41EA-B8FF-4667B7381DA3} = {C336E71B-BA44-499C-BD3E-B60D047F805C} {565C269A-F5EB-4BBE-86E5-75C8D4E1CDF7} = {C336E71B-BA44-499C-BD3E-B60D047F805C} + {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} = {3D6E61C9-82F9-4D67-85FA-C3B3BAA01B23} + {A0BF71D7-7B01-4024-8FD2-D889351F91D8} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {1FAB0C91-9AA4-458A-8485-EE1D0140672E} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {08358A49-0FC5-435B-8BD6-927973E5CEB3} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {61970529-D29D-4DE7-A40F-FBEE2E829DF6} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {C3119ABE-F696-4AA3-A257-40C296DD59E4} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {58BF54CB-4583-44F2-8B87-3264BBDA721D} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {76927E3B-9CAF-41EA-8199-7A9E472A86D1} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8} = {1AA2B0F6-880A-40BC-9FB1-0E9FA0170613} EndGlobalSection EndGlobal diff --git a/IEMod/IEMod.pw.csproj b/IEMod/IEMod.pw.csproj index 9d30381..3b97dc5 100644 --- a/IEMod/IEMod.pw.csproj +++ b/IEMod/IEMod.pw.csproj @@ -97,6 +97,9 @@ + + + @@ -107,10 +110,13 @@ + + + - + @@ -127,6 +133,7 @@ + diff --git a/IEMod/Mods/Bugfix2_01_Caster_Centered_Spells/mod_AI_Player_Attack.cs b/IEMod/Mods/Bugfix2_01_Caster_Centered_Spells/mod_AI_Player_Attack.cs deleted file mode 100644 index 75d281e..0000000 --- a/IEMod/Mods/Bugfix2_01_Caster_Centered_Spells/mod_AI_Player_Attack.cs +++ /dev/null @@ -1,196 +0,0 @@ -using UnityEngine; -using AI.Player; -using Patchwork.Attributes; - -namespace IEMod.Mods.Bugfix2_01_Caster_Centered_Spells -{ - [ModifiesType] - public class mod_AI_Player_Attack : Attack - { - [MemberAlias("Update", typeof(AI.Player.PlayerState), AliasCallMode.NonVirtual)] - private void add_BaseUpdate() - { - //A call to this method will be translated to a "base.Update()" call in the target assembly. - } - - - - [ModifiesMember("Update")] - public void mod_Update() - { - //METHOD SHOULD BE ASSUMED TO BE THE SAME AS THE ORIGINAL EXCEPT WHERE DOCUMENTED OTHERWISE - - string abilityString = "no ability"; - if (this.GetAbility() != null) - { - abilityString = this.GetAbility().Name(); - } - - bool flag; - if (this.m_ai == null) - { - Debug.LogError("AI update run without OnEnter being run first!"); - return; - } - - //CHANGE TO AVOID RECURSION - add_BaseUpdate(); - //END CHANGE - - if (this.m_queueWeaponSetChange) - { - this.m_attackToUse = null; - this.m_weaponAttack = null; - this.m_targetTeam = null; - this.m_targetMover = null; - this.m_inCombat = false; - this.m_switchHands = false; - this.m_isStealthAttack = false; - this.m_queueWeaponSetChange = false; - this.OnEnter(); - return; - } - AIController.AggressionType autoAttackAggression = this.m_ai.GetAutoAttackAggression(); - //CHANGE TO EXEMPT SELF-RADIUS HOSTILE ATTACKS FROM FIZZLING BECAUSE WE CAN'T ATTACK OURSELVES - if (!this.CanAttackTarget() && !this.m_attackToUse.ApplyToSelfOnly && (autoAttackAggression == AIController.AggressionType.Passive || !this.m_partyMemberAI.AutoPickNearbyEnemy(this))) - //END CHANGE - { - base.Manager.PopCurrentState(); - return; - } - if (this.m_attackToUse == null || this.m_switchHands) - { - this.SetupAttack(); - this.m_switchHands = false; - if (this.m_issuedSelfCast) - { - this.m_issuedSelfCast = false; - return; - } - if (this.m_ai.StateManager.CurrentState is AI.Player.Ability) - { - return; - } - } - this.m_ai.UpdateEngagement(base.Owner, AIController.GetPrimaryAttack(base.Owner)); - AttackFirearm mAttackToUse = this.m_attackToUse as AttackFirearm; - if (mAttackToUse != null && mAttackToUse.BaseIsReady() && mAttackToUse.RequiresReload) - { - base.PushState().AttackToUse = mAttackToUse; - return; - } - if (base.OutOfCharges(this.m_attackToUse)) - { - base.Manager.PopCurrentState(); - return; - } - if (this.m_isAutoAttack && !GameState.InCombat) - { - base.Manager.PopCurrentState(); - return; - } - Vector3 mTarget = this.m_target.transform.position - this.m_owner.transform.position; - float single = mTarget.magnitude; - float radius = this.m_ai.Mover.Radius + this.m_targetMover.Radius; - single = single - radius; - if (this.m_attackToUse == null) - { - return; - } - if (single <= this.m_attackToUse.TotalAttackDistance && (!(this.m_attackToUse is AttackRanged) || base.LineOfSightToTarget(this.m_target))) - { - if (this.m_target != null && !this.m_attackToUse.ApplyToSelfOnly && !this.m_attackToUse.IsValidTarget(this.m_target)) - { - base.Manager.PopCurrentState(); - return; - } - if (this.m_target == null) - { - this.m_inCombat = GameState.InCombat; - } - else - { - Faction component = this.m_target.GetComponent(); - if (component != null && (this.m_faction.IsHostile(component) || component.IsHostile(this.m_faction))) - { - this.m_inCombat = GameState.InCombat; - } - } - if (!this.m_attackToUse.IsReady()) - { - this.m_ai.FaceTarget(this.m_attackToUse); - return; - } - if (this.m_attackToUse.ApplyToSelfOnly && !this.m_isAutoAttack) - { - base.Manager.PopCurrentState(); - } - if (this.m_isStealthAttack) - { - this.m_attackToUse.IsStealthAttack = this.m_isStealthAttack; - } - this.m_isStealthAttack = Stealth.IsInStealthMode(this.m_owner); - AI.Achievement.Attack mEffectsOnLaunch = base.PushState(); - mEffectsOnLaunch.Parameters.Attack = this.m_attackToUse; - mEffectsOnLaunch.Parameters.TargetObject = this.m_target; - mEffectsOnLaunch.Parameters.EffectsOnLaunch = this.m_effectsOnLaunch; - mEffectsOnLaunch.Parameters.WeaponAttack = this.m_weaponAttack; - mEffectsOnLaunch.Parameters.Ability = this.GetAbility(); - mEffectsOnLaunch.Parameters.ShouldAttackObject = mEffectsOnLaunch.Parameters.TargetObject != null; - this.m_switchHands = true; - return; - } - if (this.m_isAutoAttack && this.m_ai.EngagedBy.Count > 0) - { - if (autoAttackAggression != AIController.AggressionType.Passive && this.m_partyMemberAI.AutoPickNearbyEnemy(this)) - { - return; - } - base.Manager.PopCurrentState(); - return; - } - if (this.m_target == null) - { - base.Manager.PopCurrentState(); - return; - } - float totalAttackDistance = this.m_attackToUse.TotalAttackDistance; - if (totalAttackDistance > 4f) - { - totalAttackDistance = totalAttackDistance - 1f; - } - else if (totalAttackDistance > 1f) - { - totalAttackDistance = totalAttackDistance - 0.5f; - } - else if (totalAttackDistance > 0.4f) - { - totalAttackDistance = totalAttackDistance - 0.1f; - } - AI.Achievement.PathToPosition pathToPosition = base.PushState(); - pathToPosition.Parameters.Target = this.m_target; - pathToPosition.Parameters.StopOnLOS = true; - pathToPosition.Parameters.Range = totalAttackDistance; - pathToPosition.ParentState = this; - if (this.m_attackToUse is AttackMelee && totalAttackDistance > 1f && totalAttackDistance < 2f) - { - pathToPosition.Parameters.IgnoreObstaclesWithinRange = true; - } - pathToPosition.Parameters.PopOnEnterIfTargetInvalid = true; - bool mAttackToUse1 = this.m_attackToUse is AttackRanged; - AttackMelee attackMelee = this.m_attackToUse as AttackMelee; - AI.Achievement.PathToPosition.Params parameters = pathToPosition.Parameters; - if (mAttackToUse1) - { - flag = false; - } - else - { - flag = (attackMelee == null ? true : attackMelee.TotalAttackDistance < 0.01f); - } - parameters.GetAsCloseAsPossible = flag; - pathToPosition.Parameters.DesiresMaxRange = mAttackToUse1; - } - - } -} diff --git a/IEMod/Mods/CameraControlMod/Mod_CameraControl.cs b/IEMod/Mods/CameraControlMod/Mod_CameraControl.cs index 53fd197..1cbb17c 100644 --- a/IEMod/Mods/CameraControlMod/Mod_CameraControl.cs +++ b/IEMod/Mods/CameraControlMod/Mod_CameraControl.cs @@ -1,4 +1,5 @@ -using IEMod.Mods.Options; + +using IEMod.Mods.Options; using Patchwork.Attributes; using UnityEngine; @@ -332,4 +333,4 @@ public void DoUpdateNew() } } } -} +} \ No newline at end of file diff --git a/IEMod/Mods/ChanterPhrase/mod_ChanterTrait.cs b/IEMod/Mods/ChanterPhrase/mod_ChanterTrait.cs new file mode 100644 index 0000000..ec1f1ed --- /dev/null +++ b/IEMod/Mods/ChanterPhrase/mod_ChanterTrait.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using IEMod.Mods.Options; +using Patchwork.Attributes; + +namespace IEMod.Mods.ChanterPhrase +{ + [ModifiesType("ChanterTrait")] + class mod_ChanterTrait : ChanterTrait + { + // Gives the chanter some base Phrases Count at combat start + [ModifiesMember("OnCombatStart")] + public new void OnCombatStart(object sender, EventArgs e) + { + if (!GameState.IsInTrapTriggeredCombat) + { + this.StartLastChant(); + } + this.PhraseCountMax = this.FindMaxRoarCost(); + // Modded code + if (IEModOptions.ChanterPhraseCount) { + this.PhraseCount = this.PhraseCountMax; + } + } + } +} diff --git a/IEMod/Mods/CheatKeys/Mod_GameCursors.cs b/IEMod/Mods/CheatKeys/Mod_GameCursors.cs new file mode 100644 index 0000000..fe034e4 --- /dev/null +++ b/IEMod/Mods/CheatKeys/Mod_GameCursors.cs @@ -0,0 +1,341 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Patchwork.Attributes; +using IEMod.Mods.Options; +using UnityEngine; + +namespace IEMod.Mods.CheatKeys +{ + [ModifiesType("GameCursor")] + public class mod_GameCursor : GameCursor + { + [ModifiesMember("Update")] + public void NewUpdate() + { + //Original code + if (this.PrefabCursors == null) + { + return; + } + + if (GameCursor.UnusableUnderCursor && GameCursor.UnusableUnderCursor.IsUsable) + { + GameCursor.GenericUnderCursor = GameCursor.UnusableUnderCursor.gameObject; + GameCursor.UnusableUnderCursor.NotifyMouseOver(true); + GameCursor.UnusableUnderCursor = null; + } + this.ValidateObjectsUnderCursors(); + if (GameCursor.ShowDebug) + { + this.DrawDebugCursorInfo(); + } + for (int i = this.m_ObjectsHidingCursor.Count - 1; i >= 0; i--) + { + if (this.m_ObjectsHidingCursor[i].Target == null || !this.m_ObjectsHidingCursor[i].IsAlive) + { + this.m_ObjectsHidingCursor.RemoveAt(i); + } + } + this.ShowCursor = this.m_ObjectsHidingCursor.Count == 0; + if (UIGlobalInventory.Instance && UIGlobalInventory.Instance.DraggingItem) + { + this.ShowCursor = false; + this.DisableCursor = false; + } + else if (UIWindowManager.Instance && UIWindowManager.Instance.AnyWindowShowing()) + { + this.ShowCursor = true; + } + if (GameCursor.m_frameCount < 2) + { + GameCursor.m_frameCount = GameCursor.m_frameCount + 1; + return; + } + GameCursor.CursorType desiredCursor = GameCursor.DesiredCursor; + desiredCursor = this.HandleDownState(desiredCursor, GameCursor.CursorType.Normal, GameCursor.CursorType.NormalHeld); + desiredCursor = this.HandleDownState(desiredCursor, GameCursor.CursorType.Walk, GameCursor.CursorType.WalkHeld); + desiredCursor = this.HandleDownState(desiredCursor, GameCursor.CursorType.Disengage, GameCursor.CursorType.DisengageHeld); + desiredCursor = this.HandleDownState(desiredCursor, GameCursor.CursorType.SelectionSubtract, GameCursor.CursorType.SelectionSubtractHeld); + desiredCursor = this.HandleDownState(desiredCursor, GameCursor.CursorType.SelectionAdd, GameCursor.CursorType.SelectionAddHeld); + if (!this.ShowCursor) + { + return; + } + if (GameCursor.m_activeCursor != desiredCursor) + { + switch (desiredCursor) + { + case GameCursor.CursorType.Normal: + case GameCursor.CursorType.Deprecated1: + { + Cursor.SetCursor(this.PrefabCursors.NormalCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Walk: + { + Cursor.SetCursor(this.PrefabCursors.WalkCursor, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.NoWalk: + { + Cursor.SetCursor(this.PrefabCursors.NoWalkCursor, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.RotateFormation: + { + Cursor.SetCursor(this.PrefabCursors.RotateFormationCursor, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Attack: + { + Cursor.SetCursor(this.PrefabCursors.AttackCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.OpenDoor: + { + Cursor.SetCursor(this.PrefabCursors.OpenDoorCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.CloseDoor: + { + Cursor.SetCursor(this.PrefabCursors.CloseDoorCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.LockedDoor: + { + Cursor.SetCursor(this.PrefabCursors.LockedDoorCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.AreaTransition: + { + Cursor.SetCursor(this.PrefabCursors.AreaTransition, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Examine: + { + Cursor.SetCursor(this.PrefabCursors.ExamineCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Talk: + { + Cursor.SetCursor(this.PrefabCursors.TalkCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Interact: + { + Cursor.SetCursor(this.PrefabCursors.InteractCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.CastAbility: + { + if (!GameCursor.m_castCursorValid || !GameCursor.m_castCursor) + { + Cursor.SetCursor(this.PrefabCursors.CastAbility, Vector2.zero, CursorMode.Auto); + } + else + { + Cursor.SetCursor(GameCursor.m_castCursor, Vector2.zero, CursorMode.Auto); + } + break; + } + case GameCursor.CursorType.CastAbilityInvalid: + { + if (!GameCursor.m_castCursorValid || !GameCursor.m_castCursorInvalid) + { + Cursor.SetCursor(this.PrefabCursors.CastAbilityInvalid, Vector2.zero, CursorMode.Auto); + } + else + { + Cursor.SetCursor(GameCursor.m_castCursorInvalid, Vector2.zero, CursorMode.Auto); + } + break; + } + case GameCursor.CursorType.ArrowUp: + case GameCursor.CursorType.ArrowRight: + case GameCursor.CursorType.ArrowDown: + case GameCursor.CursorType.ArrowLeft: + case GameCursor.CursorType.ArrowUpRight: + case GameCursor.CursorType.ArrowDownRight: + case GameCursor.CursorType.ArrowUpLeft: + case GameCursor.CursorType.ArrowDownLeft: + { + Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.DoubleArrow_L_R: + { + Cursor.SetCursor(this.PrefabCursors.DoubleArrow_L_R, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.DoubleArrow_U_D: + { + Cursor.SetCursor(this.PrefabCursors.DoubleArrow_U_D, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.DoubleArrow_DL_UR: + { + Cursor.SetCursor(this.PrefabCursors.DoubleArrow_DL_UR, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.DoubleArrow_UL_DR: + { + Cursor.SetCursor(this.PrefabCursors.DoubleArrow_UL_DR, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Disarm: + { + Cursor.SetCursor(this.PrefabCursors.DisarmCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.CastAbilityNoLOS: + { + if (!GameCursor.m_castCursorValid || !GameCursor.m_castCursorLoS) + { + Cursor.SetCursor(this.PrefabCursors.CastAbilityNoLOS, Vector2.zero, CursorMode.Auto); + } + else + { + Cursor.SetCursor(GameCursor.m_castCursorLoS, Vector2.zero, CursorMode.Auto); + } + break; + } + case GameCursor.CursorType.CastAbilityFar: + { + if (!GameCursor.m_castCursorValid || !GameCursor.m_castCursorMove) + { + Cursor.SetCursor(this.PrefabCursors.CastAbilityFar, Vector2.zero, CursorMode.Auto); + } + else + { + Cursor.SetCursor(GameCursor.m_castCursorMove, Vector2.zero, CursorMode.Auto); + } + break; + } + case GameCursor.CursorType.Stealing: + { + Cursor.SetCursor(this.PrefabCursors.Stealing, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Loot: + { + Cursor.SetCursor(this.PrefabCursors.LootCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.NormalHeld: + { + Cursor.SetCursor(this.PrefabCursors.NormalHeldCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.WalkHeld: + { + Cursor.SetCursor(this.PrefabCursors.WalkHeldCursor, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.SpecialAttack: + { + if (!GameCursor.m_castCursorValid || !GameCursor.m_castCursor) + { + Cursor.SetCursor(this.PrefabCursors.SpecialAttackCursor, Vector2.zero, CursorMode.Auto); + } + else + { + Cursor.SetCursor(GameCursor.m_castCursor, Vector2.zero, CursorMode.Auto); + } + break; + } + case GameCursor.CursorType.StealingLocked: + { + Cursor.SetCursor(this.PrefabCursors.StealingLocked, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.Disengage: + { + Cursor.SetCursor(this.PrefabCursors.DisengageCursor, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.DisengageHeld: + { + Cursor.SetCursor(this.PrefabCursors.DisengageHeldCursor, GameCursor.m_centerHotSpot, CursorMode.Auto); + break; + } + case GameCursor.CursorType.AttackAdvantage: + { + Cursor.SetCursor(this.PrefabCursors.AttackAdvantageCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.SelectionAdd: + { + Cursor.SetCursor(this.PrefabCursors.SelectionAddCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.SelectionSubtract: + { + Cursor.SetCursor(this.PrefabCursors.SelectionSubtractCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.SelectionAddHeld: + { + Cursor.SetCursor(this.PrefabCursors.SelectionAddHeldCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.SelectionSubtractHeld: + { + Cursor.SetCursor(this.PrefabCursors.SelectionSubtractHeldCursor, Vector2.zero, CursorMode.Auto); + break; + } + case GameCursor.CursorType.DuplicateItem: + { + Cursor.SetCursor(this.PrefabCursors.DuplicateItemCursor, Vector2.zero, CursorMode.Auto); + break; + } + default: + { + goto case GameCursor.CursorType.ArrowDownLeft; + } + } + GameCursor.m_activeCursor = desiredCursor; + + //End of Original Code, Start of mod + if (UIWindowManager.KeyInputAvailable && IEModOptions.EnableCheatKeys) + { + if (GameInput.GetControlkey()) + { + if (GameInput.GetKeyDown(KeyCode.J)) { + CheatKeyFunctions.TeleportToCursorLocation(); + //Console.AddMessage(" CTRL + J Teleport", Color.green); + } + else if (GameInput.GetKeyDown(KeyCode.Y)) + { + CheatKeyFunctions.DamageUnderCursor(); + //Console.AddMessage(" CTRL + Y Damage", Color.green); + } + else if (GameInput.GetKeyDown(KeyCode.R)) + { + CheatKeyFunctions.RestoreUnderCursor(); + //Console.AddMessage(" CTRL + R Restore health and endurance", Color.green); + } + else if (GameInput.GetKeyDown(KeyCode.T)) + { + CheatKeyFunctions.AdvanceTime(); + //Console.AddMessage(" CTRL + T Advance time ", Color.green); + } + else if (GameInput.GetKeyDown(KeyCode.L)) + { + CheatKeyFunctions.Unlock(); + //Console.AddMessage(" CTRL + L Unlocks container", Color.green); + } + else if (GameInput.GetKeyDown(KeyCode.S)) + { + CheatKeyFunctions.RestoreSpellsAndAbility(); + //Console.AddMessage(" CTRL + S restore spell and ability usage", Color.green); + } + } + } + //End of mod + } + } + } + +} diff --git a/IEMod/Mods/CheatKeys/mod_CheatKeyFunctions.cs b/IEMod/Mods/CheatKeys/mod_CheatKeyFunctions.cs new file mode 100644 index 0000000..edc3631 --- /dev/null +++ b/IEMod/Mods/CheatKeys/mod_CheatKeyFunctions.cs @@ -0,0 +1,189 @@ +using Patchwork.Attributes; +using System.Collections.Generic; +using UnityEngine; + +namespace IEMod.Mods.CheatKeys +{ + + [ModifiesType("CharacterStats")] + public class mod_CharacterStats : CharacterStats + { + [NewMember] + public void ClearNonRestingAfflictions() + { + for (int i = this.m_statusEffects.Count - 1; i >= 0; i--) + { + if (this.m_statusEffects[i].AfflictionOrigin != null && !this.m_statusEffects[i].AfflictionOrigin.FromResting) + { + this.ClearEffect(this.m_statusEffects[i]); + } + } + } + } + + + /// + /// Utility class that stores the cheat key functions + /// These could be called in any update method, but GameCursor was chosen for some reason... + /// + [NewType] + public static class CheatKeyFunctions + { + + /// + /// Teleport to cursor location, like old IE games with Ctrl + J + /// Stolen from Mod_Commandline + /// + public static void TeleportToCursorLocation() { + + if (GameState.s_playerCharacter.IsMouseOnWalkMesh()) + { + foreach (var partymember in PartyMemberAI.GetSelectedPartyMembers()) + { + partymember.transform.position = GameInput.WorldMousePosition; + } + } + else + { + global::Console.AddMessage("Mouse is not on navmesh !", Color.red); + } + } + + /// + /// Kills the unlucky character under the cursor + /// Stolen from Script DealDamage + /// + public static void DamageUnderCursor() + { + GameObject underCursor = GameCursor.CharacterUnderCursor; + + Health healthComponent = underCursor.GetComponent(); + + if (healthComponent){ + bool canBeTargeted = !healthComponent.CanBeTargeted; + healthComponent.CanBeTargeted = true; + healthComponent.ApplyDamageDirectly(50000f); + if (canBeTargeted) + { + healthComponent.CanBeTargeted = false; + } + } + + } + + /// + /// Restore health of lucky character under the cursor + /// Inspired from Script HealParty + /// + public static void RestoreUnderCursor() + { + + GameObject underCursor = GameCursor.CharacterUnderCursor; + CharacterStats stats = underCursor.GetComponent(); + Health component = underCursor.GetComponent(); + + // Revive and restore health + if (component) + { + if (component.Unconscious) + { + component.OnRevive(); + } + component.AddHealth(component.MaxHealth - component.CurrentHealth); + component.AddStamina(component.MaxStamina - component.CurrentStamina, true); + } + + // Clear afflictions (Maiming and stuff) + if (stats) + { + stats.ClearEffectsFromAfflictions(); + } + } + + /// + /// Advances time by 8 hours + /// Direct call to Scripts AdvanceTimeByHoursNoRest + /// + public static void AdvanceTime() + { + Scripts.AdvanceTimeByHoursNoRest(8); + + Stronghold stronghold = GameState.Stronghold; + + if (stronghold != null) + { + stronghold.AddTurns(1); + stronghold.AdvanceOneTurn(); + Console.AddMessage("Stronghold turn advanced by 1", Color.green); + } + + } + + /// + /// Unlocks Container under cursor + /// + public static void Unlock() + { + GameObject underCursor = GameCursor.GenericUnderCursor; + OCL container = underCursor.GetComponent(); + + List partyMembers = PartyMemberAI.GetSelectedPartyMembers(); + IEnumerator enumerator = partyMembers.GetEnumerator(); + + try + { + enumerator.MoveNext(); + if (container) + { + container.Unlock(enumerator.Current); + } + } + finally + { + if (enumerator == null) + { + } + enumerator.Dispose(); + } + + } + + /// + /// Restore spell usages + /// Direct call to Scripts AdvanceTimeByHoursNoRest + /// + public static void RestoreSpellsAndAbility() + { + GameObject underCursor = GameCursor.CharacterUnderCursor; + CharacterStats stats = underCursor.GetComponent(); + + if (stats) + { + for (int i = 0; i < stats.SpellCastCount.Length; i++) + { + stats.SpellCastCount[i] = 0; + } + } + IEnumerator enumerator = stats.ActiveAbilities.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + GenericAbility current = enumerator.Current; + if (current == null) + { + continue; + } + current.RestoreCooldown(); + } + } + finally + { + if (enumerator == null) + { + } + enumerator.Dispose(); + } + } + } +} diff --git a/IEMod/Mods/ConsoleMod/Mod_CommandLine.cs b/IEMod/Mods/ConsoleMod/Mod_CommandLine.cs index 6ef4a14..e0f6e09 100644 --- a/IEMod/Mods/ConsoleMod/Mod_CommandLine.cs +++ b/IEMod/Mods/ConsoleMod/Mod_CommandLine.cs @@ -7,16 +7,912 @@ using System.Text; using System.Xml; using IEMod.Helpers; -using IEMod.Mods.ObjectBrowser; using IEMod.Mods.Options; -using IEMod.Mods.UICustomization; //using IEMod.Mods.UICustomization; using Patchwork.Attributes; using UnityEngine; +using IEMod.Mods.ObjectBrowser; - -namespace IEMod.Mods.ConsoleMod { +namespace IEMod.Mods.ConsoleMod +{ [ModifiesType("CommandLine")] + public class mod_CommandLine + { + + [NewMember] + public static void ExtractMemorials() + { + string xmlPath = PathHelper.Combine(Application.dataPath, "Managed/iemod", "MemorialEntries.xml"); + string xml = Resources.Load("Data/UI/BackerMemorials").ToString(); + + File.WriteAllText(xmlPath, xml); + Console.AddMessage("Extraction: done."); + } + + [NewMember] + public static void CC() + { + GameState.s_playerCharacter.GetComponent().UseWalkSpeed(); + } + + [NewMember] + public static void SetDefaultZoom(float value) + { + IEModOptions.DefaultZoom = value; + global::Console.AddMessage("Default zoom set to: " + value + ". Reminder: game's vanilla value is 1."); + } + + [NewMember] + public static void DisableBackerDialogues(bool state) + { + if (state) + { + IEModOptions.DisableBackerDialogs = true; + global::Console.AddMessage("If you're using the \"Rename backers\" mod, backer dialogues will now be DISABLED as soon as you transition to another area or reload a save."); + } + else + { + IEModOptions.DisableBackerDialogs = false; + global::Console.AddMessage("Backer dialogues will now be ENABLED as soon as you transition to another area or reload a save."); + } + } + + + [NewMember] + public static void FixSagani(string guid) + { + GameObject sagani = UnityEngine.GameObject.Find(guid); + if (sagani != null) + { + for (int i = sagani.GetComponent().ActiveAbilities.Count - 1; i > -1; i--) + { + if (sagani.GetComponent().ActiveAbilities[i].gameObject.name.Contains("SummonCompanion") && !sagani.GetComponent().ActiveAbilities[i].gameObject.name.Contains("ArcticFox")) + { + sagani.GetComponent().ActiveAbilities[i].ForceDeactivate(sagani); + AbilityProgressionTable.RemoveAbilityFromCharacter(sagani.GetComponent().ActiveAbilities[i].gameObject, sagani.GetComponent()); + } + } + } + else + global::Console.AddMessage("Character not found."); + } + + [NewMember] + public static void AddExperienceSelected(int XP) + { + List partyMembers = PartyMemberAI.GetSelectedPartyMembers(); + + foreach (GameObject partyMember in partyMembers) + { + CharacterStats charStat = partyMember.GetComponent(); + charStat.AddExperience(XP); + Console.AddMessage( "Added " + XP + " experience to " + charStat.OverrideName , Color.green); + } + } + + [NewMember] + public static void PlayerPrefs_DeleteAll(bool confirmation) + { + if (!confirmation) + { + Console.AddMessage("You need to supply a 'true' argument if you're sure you want to clear all preferences."); + return; + } + + PlayerPrefs.DeleteAll(); + Console.AddMessage("All preferences cleared. Please restart the game so that no errors occur."); + } + + [NewMember] + public static void PlayerPrefs_Delete(string name) + { + if (!PlayerPrefs.HasKey(name)) + { + Console.AddMessage("A key with this name was not found in PlayerPrefs."); + } + PlayerPrefs.DeleteKey(name); + } + + /* + [NewMember] + public static void ResetCustomUI() + { + IEModOptions.Layout = UICustomizer.DefaultLayout.Clone(); + IEModOptions.SaveToPrefs(); + Console.AddMessage("Successfuly reset the UI to default."); + } + */ + + [NewMember] + public static void TS() + { + Vector3 test = new Vector3() { x = 20f }; + Vector3 second = new Vector3() { x = 30f }; + //test.x = 20; + Debug.DrawLine(test, second); + } + + [NewMember] + public static void DD() + { + QualitySettings.IncreaseLevel(); + } + + [NewMember] + public static void RenameCreature(string guid, string newname) + { + GameObject npc = UnityEngine.GameObject.Find(guid); + if (npc != null && npc.GetComponent() != null) + npc.GetComponent().OverrideName = newname; + } + + [NewMember] + public static void RenameCreature(string guid, string newname, string newname2) + { + RenameCreature(guid, newname + newname2); + } + + [NewMember] + public static void RenameCreature(string guid, string newname, string newname2, string newname3) + { + RenameCreature(guid, newname + newname2 + newname3); + } + + + [NewMember] + [Cheat] + public static void ShowMouseDebug() + { + GameCursor.ShowDebug = !GameCursor.ShowDebug; + } + + + [NewMember] + public static void ForceAdvanceQuest(string name) + { + QuestManager.Instance.AdvanceQuest(name, true); + } + + [NewMember] + public static void OpenContainer(string objectGuid) + { + GameObject container = GameObject.Find(objectGuid); + if (container != null) + { + Container chest = container.GetComponent(); + if (chest != null) + chest.Open(GameState.s_playerCharacter.gameObject, true); + else + { + global::Console.AddMessage("Object is not a container."); + } + //oCLComponent.SealOpen (); + } + else + { + global::Console.AddMessage("Container not found"); + } + } + + [NewMember] + public static void ShowAIState() + { + if (GameCursor.CharacterUnderCursor) + { + var ai = GameCursor.CharacterUnderCursor.GetComponent(); + if (ai) + { + var stateManager = ai.StateManager; + var str = new System.Text.StringBuilder(); + stateManager.BuildDebugText(str); + global::Console.AddMessage(str.ToString()); + } + else + { + global::Console.AddMessage("no AI available"); + } + } + else + { + global::Console.AddMessage("no one under the cursor"); + } + } + + [NewMember] + public static void Jump() + { + if (GameState.s_playerCharacter.IsMouseOnWalkMesh()) + { + foreach (var partymember in PartyMemberAI.GetSelectedPartyMembers()) + { + partymember.transform.position = GameInput.WorldMousePosition; + } + } + else + { + global::Console.AddMessage("Mouse is not on navmesh."); + } + } + + // for instance: BSC cre_druid_cat01 true + [NewMember] + public static void BSC(string prefabName, int intIsHostile) + { + if (GameState.s_playerCharacter.IsMouseOnWalkMesh()) + { + var isHostile = intIsHostile > 0; + Console.AddMessage($"Spawning ${(isHostile ? "Hostile" : "Friendly")}: ${prefabName}", Color.green); + var newCreature = GameResources.LoadPrefab(prefabName, true); + if (newCreature != null) + { + newCreature.transform.position = GameInput.WorldMousePosition; + newCreature.transform.rotation = GameState.s_playerCharacter.transform.rotation; + var faction = newCreature.Component(); + faction.RelationshipToPlayer = isHostile ? Faction.Relationship.Hostile : Faction.Relationship.Neutral; + faction.UnitHostileToPlayer = isHostile; + var teamTag = isHostile ? "monster" : "player"; + faction.CurrentTeamInstance = Team.GetTeamByTag(teamTag); + var aiPackage = newCreature.Component(); + aiPackage.ChangeBehavior(AIPackageController.PackageType.DefaultAI); + aiPackage.InitAI(); + global::CameraControl.Instance.FocusOnPoint(newCreature.transform.position); + } + else + global::Console.AddMessage("Failed to spawn " + prefabName + " - probably bad naming.", UnityEngine.Color.red); + } + else + global::Console.AddMessage("Mouse is not on navmesh, move mouse elsewhere and try again.", UnityEngine.Color.red); + } + + + + // this method gives your maincharacter all existing mage spells... it was just to test something, but someone might want to use some bits of it + [NewMember] + public static void AdAb() + { + CharacterStats firstparam = GameState.s_playerCharacter.GetComponent(); + AbilityProgressionTable wizardsProgressionTable = AbilityProgressionTable.LoadAbilityProgressionTable("Wizard"); + global::Console.AddMessage("Wizard abilities in game: " + wizardsProgressionTable.AbilityUnlocks.Length); + global::Console.AddMessage("This wizard has abilities: " + GameState.s_playerCharacter.GetComponent().GetCopyOfCoreData().KnownSkills.Count()); + foreach (var abil in wizardsProgressionTable.AbilityUnlocks) + { + bool hasSpell = false; + + foreach (var spell in firstparam.GetCopyOfCoreData().KnownSkills) + if (abil.Ability.name == spell.name.Replace("(Clone)", "")) + hasSpell = true; + + if (hasSpell) + global::Console.AddMessage("The wizard already knows: " + abil.Ability.name); + else + AbilityProgressionTable.AddAbilityToCharacter(abil.Ability.name, firstparam, false); + } + } + + + [NewMember] + public static void DeleteIEModSettings(bool areYouSure) + { + if (!areYouSure) + { + Console.AddMessage("You need to pass 'true' if you really want to delete all settings.", Color.red); + return; + } + IEModOptions.DeleteAllSettings(); + Console.AddMessage("All settings have been deleted.", Color.green); + } + + [NewMember] + public static void SelectCircles(float width) + { + global::Console.AddMessage("Setting selection circle width to: " + width, Color.green); + InGameHUD.Instance.SelectionCircleWidth = width; + InGameHUD.Instance.EngagedCircleWidth = width; + IEModOptions.SelectionCircleWidth = width; + } + + + [NewMember] + public static void AssignClericalGod(string charname, string godname) + { + charname = charname.Replace("_", " "); + + GameObject npc = null; + + foreach (var partymember in PartyMemberAI.PartyMembers) + { + if (partymember != null && RemoveDiacritics(partymember.gameObject.GetComponent().Name()).Contains(charname)) + npc = partymember.gameObject; + } + + if (npc != null) + { + bool goOn = false; + try + { + if (Enum.Parse(typeof(global::Religion.Deity), godname) != null) + goOn = true; + } + catch + { + global::Console.AddMessage(godname + " - not found as a Deity."); + } + if (goOn) + { + object newclassobj = Enum.Parse(typeof(global::Religion.Deity), godname); + int newGodId = Convert.ToInt32(newclassobj); + + npc.GetComponent().Deity = (global::Religion.Deity)newGodId; + + global::Console.AddMessage("Deity assigned.", Color.green); + } + } + } + + [NewMember] + public static void AssignPaladinOrder(string charname, string ordername) + { + charname = charname.Replace("_", " "); + + GameObject npc = null; + + foreach (var partymember in PartyMemberAI.PartyMembers) + { + if (partymember != null && RemoveDiacritics(partymember.gameObject.GetComponent().Name()).Contains(charname)) + npc = partymember.gameObject; + } + + if (npc != null) + { + bool goOn = false; + try + { + if (Enum.Parse(typeof(global::Religion.PaladinOrder), ordername) != null) + goOn = true; + } + catch + { + global::Console.AddMessage(ordername + " - not found as a Palandin Order."); + } + if (goOn) + { + object newclassobj = Enum.Parse(typeof(global::Religion.PaladinOrder), ordername); + int newOrderId = Convert.ToInt32(newclassobj); + + npc.GetComponent().PaladinOrder = (global::Religion.PaladinOrder)newOrderId; + + global::Console.AddMessage("Paladin order assigned.", Color.green); + } + } + } + + + + [NewMember] + public static void IERemove(string charname, string abilname) + { + + charname = charname.Replace("_", " "); + + GameObject npc = null; + + foreach (var partymember in PartyMemberAI.PartyMembers) + { + if (partymember != null && RemoveDiacritics(partymember.gameObject.GetComponent().Name()).Contains(charname)) + npc = partymember.gameObject; + } + + if (npc != null) + { + bool removedSomething = false; + + CharacterStats stats = npc.GetComponent(); + for (int i = stats.ActiveTalents.Count - 1; i > -1; i--) + { + if (stats.ActiveTalents[i].gameObject.name.Contains(abilname)) + { + global::Console.AddMessage("Removed active talent: " + stats.ActiveTalents[i].gameObject.name); + AbilityProgressionTable.RemoveAbilityFromCharacter(stats.ActiveTalents[i].gameObject, stats); + removedSomething = true; + break; + } + } + + for (int i = stats.Talents.Count - 1; i > -1; i--) + { + if (stats.Talents[i].gameObject.name.Contains(abilname)) + { + global::Console.AddMessage("Removed talent: " + stats.Talents[i].gameObject.name); + AbilityProgressionTable.RemoveAbilityFromCharacter(stats.Talents[i].gameObject, stats); + removedSomething = true; + break; + } + } + + for (int i = stats.ActiveAbilities.Count - 1; i > -1; i--) + { + if (stats.ActiveAbilities[i].gameObject.name.Contains(abilname)) + { + global::Console.AddMessage("Removed active ability: " + stats.ActiveAbilities[i].gameObject.name); + stats.ActiveAbilities[i].ForceDeactivate(npc); + AbilityProgressionTable.RemoveAbilityFromCharacter(stats.ActiveAbilities[i].gameObject, stats); + removedSomething = true; + break; + } + } + + for (int i = stats.Abilities.Count - 1; i > -1; i--) + { + if (stats.Abilities[i].gameObject.name.Contains(abilname)) + { + global::Console.AddMessage("Removed ability: " + stats.Abilities[i].gameObject.name); + stats.Abilities[i].ForceDeactivate(npc); + AbilityProgressionTable.RemoveAbilityFromCharacter(stats.Abilities[i].gameObject, stats); + removedSomething = true; + break; + } + } + + if (!removedSomething) + { + global::Console.AddMessage("Nothing was removed. Talent wasn't found."); + } + + } + else + global::Console.AddMessage("Party memeber not found."); + } + + + [NewMember] + public static void CheckAchievements() + { + if (AchievementTracker.Instance.DisableAchievements == true) + { + global::Console.AddMessage("Your achievements were previously disabled for this playthrough.", Color.red); + // global::Console.AddMessage("To reactivate them, type: ReenableAchievements"); + } + else + global::Console.AddMessage("Your achievements are doing fine.", Color.green); + } + + [NewMember] + public static void SwitchPOTD() + { + if (GameState.Instance.Difficulty != GameDifficulty.PathOfTheDamned) + { + GameState.Instance.Difficulty = GameDifficulty.PathOfTheDamned; + global::Console.AddMessage("The difficulty is now: Path of the Damned."); + } + else + { + GameState.Instance.Difficulty = GameDifficulty.Hard; + global::Console.AddMessage("The difficulty is now: Hard."); + } + } + + [NewMember] + static string RemoveDiacritics(string text) + { + var normalizedString = text.Normalize(NormalizationForm.FormD); + var stringBuilder = new StringBuilder(); + + foreach (var c in normalizedString) + { + var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); + if (unicodeCategory != UnicodeCategory.NonSpacingMark) + { + stringBuilder.Append(c); + } + } + return stringBuilder.ToString().Normalize(NormalizationForm.FormC); + } + + [NewMember] + public static void ChangeClass(string guid, string charclass) + { + GameObject npc = null; + string charname = guid.Replace("_", " "); + foreach (var partymember in PartyMemberAI.PartyMembers) + { + if (partymember != null && RemoveDiacritics(partymember.gameObject.GetComponent().Name()).Contains(charname)) + npc = partymember.gameObject; + } + if (npc == null) + npc = UnityEngine.GameObject.Find(guid); + if (npc != null) + { + bool goOn = false; + try + { + if (Enum.Parse(typeof(CharacterStats.Class), charclass) != null) + goOn = true; + } + catch + { + global::Console.AddMessage(charclass + " - not found as a class."); + } + if (goOn) + { + object newclassobj = Enum.Parse(typeof(CharacterStats.Class), charclass); + int newclassId = Convert.ToInt32(newclassobj); + + List Innates = new List(); + + //Put all innate non-racial talents and abilities here (case insensitive): + Innates.Add("crucible_of_the_soul"); + Innates.Add("armed_to_the_teeth"); + Innates.Add("speaker_to_the_restless"); + Innates.Add("dominion_of_the_sleepers"); + Innates.Add("steps_to_the_wheel"); + Innates.Add("Beraths_Boon"); + Innates.Add("Hyleas_Boon"); + Innates.Add("Waels_Boon"); + Innates.Add("Galawains_Boon"); + Innates.Add("Rymrgands_Boon"); + Innates.Add("Skaens_Boon"); + Innates.Add("Second_Skin"); + Innates.Add("The_Merciless_Hand"); + Innates.Add("Mob_Justice"); + Innates.Add("Mob Justice"); //the ability has a space in place of an underscore... + Innates.Add("Blooded_Hunter"); + Innates.Add("Song_of_the_Heavens"); + Innates.Add("Wild_Running"); + Innates.Add("Dungeon_Delver"); + Innates.Add("Scale-Breaker"); + Innates.Add("Gift_from_the_Machine"); + Innates.Add("Effigys_Resentment"); //should work for all types + + if (npc.GetComponent().name.Contains("Sagani")) + { + Innates.Add("SummonCompanionArcticFox"); + } + + //========================================================================== + //REMOVE TALENTS + //========================================================================== + List talentRemoveList = new List(); + foreach (GenericTalent activeTalent in npc.GetComponent().ActiveTalents) + { + bool saveMe = false; + foreach (string innate in Innates) + { + if (activeTalent.gameObject.name.IndexOf(innate, StringComparison.OrdinalIgnoreCase) >= 0) //look for substring + { + saveMe = true; + break; + } + } + if (!saveMe) + talentRemoveList.Add(activeTalent); + } + foreach (GenericTalent talentToRemove in talentRemoveList) + AbilityProgressionTable.RemoveAbilityFromCharacter(talentToRemove.gameObject, npc.GetComponent()); + + talentRemoveList.Clear(); + foreach (GenericTalent talent in npc.GetComponent().Talents) + { + bool saveMe = false; + foreach (string innate in Innates) + { + if (talent.gameObject.name.IndexOf(innate, StringComparison.OrdinalIgnoreCase) >= 0) //look for substring + { + saveMe = true; + break; + } + } + if (!saveMe) + talentRemoveList.Add(talent); + } + foreach (GenericTalent talentToRemove in talentRemoveList) + AbilityProgressionTable.RemoveAbilityFromCharacter(talentToRemove.gameObject, npc.GetComponent()); + //========================================================================== + + //========================================================================== + //REMOVE ABILITIES + //========================================================================== + List abilRemoveList = new List(); + foreach (GenericAbility activeAbility in npc.GetComponent().ActiveAbilities) + { + if (activeAbility.EffectType == GenericAbility.AbilityType.Racial) + continue; + bool saveMe = false; + foreach (string innate in Innates) + { + if (activeAbility.gameObject.name.IndexOf(innate, StringComparison.OrdinalIgnoreCase) >= 0) //look for substring + { + saveMe = true; + break; + } + } + if (!saveMe) + abilRemoveList.Add(activeAbility); + } + foreach (GenericAbility abilToRemove in abilRemoveList) + { + abilToRemove.ForceDeactivate(npc); + AbilityProgressionTable.RemoveAbilityFromCharacter(abilToRemove.gameObject, npc.GetComponent()); + } + abilRemoveList.Clear(); + foreach (GenericAbility ability in npc.GetComponent().Abilities) + { + if (ability.EffectType == GenericAbility.AbilityType.Racial) + continue; + bool saveMe = false; + foreach (string innate in Innates) + { + if (ability.gameObject.name.IndexOf(innate, StringComparison.OrdinalIgnoreCase) >= 0) //look for substring + { + saveMe = true; + break; + } + } + if (!saveMe) + abilRemoveList.Add(ability); + } + foreach (GenericAbility abilToRemove in abilRemoveList) + { + abilToRemove.ForceDeactivate(npc); + AbilityProgressionTable.RemoveAbilityFromCharacter(abilToRemove.gameObject, npc.GetComponent()); + } + //========================================================================== + + // remove ranger's pet + if (npc.GetComponent().CharacterClass == CharacterStats.Class.Ranger && !npc.GetComponent().name.Contains("Sagani")) + { + foreach (var cre in npc.GetComponent().SummonedCreatureList) + { + if (GameUtilities.IsAnimalCompanion(cre.gameObject)) + { + PartyMemberAI.RemoveFromActiveParty(cre.GetComponent(), true); + cre.GetComponent().UnloadsBetweenLevels = true; + cre.GetComponent().m_isAnimalCompanion = false; + cre.GetComponent().ApplyDamageDirectly(1000); + cre.GetComponent().ApplyDamageDirectly(1000); + global::Console.AddMessage(cre.GetComponent().Name() + " is free from its bonds and returns to the wilds to be with its own kind.", Color.green); + cre.SetActive(false); + } + } + //npc.GetComponent ().SummonedCreatureList.Clear (); + } + + // remove or give grimoire + if (npc.GetComponent().CharacterClass != (CharacterStats.Class)newclassId) + { + if (npc.GetComponent().CharacterClass == CharacterStats.Class.Wizard) + { + npc.GetComponent().UnEquip(Equippable.EquipmentSlot.Grimoire); + } + + npc.GetComponent().CharacterClass = (CharacterStats.Class)newclassId; + + if (npc.GetComponent().CharacterClass == CharacterStats.Class.Wizard) + { + // equip an empty grimoire...? + Equippable grim = GameResources.LoadPrefab("empty_grimoire_01", true); + if (grim != null) + { + grim.GetComponent().PrimaryOwnerName = npc.GetComponent().Name(); + npc.GetComponent().Equip(grim); + } + } + } + + //BaseDeflection,BaseFortitude,BaseReflexes,BaseWill,MeleeAccuracyBonus,RangedAccuracyBonus,MaxHealth,MaxStamina,HealthStaminaPerLevel,ClassHealthMultiplier + object comp = (object)npc.GetComponent(); + DataManager.AdjustFromData(ref comp); + + npc.GetComponent().Level = 0; + + npc.GetComponent().StealthSkill = 0; + npc.GetComponent().StealthBonus = 0; + npc.GetComponent().AthleticsSkill = 0; + npc.GetComponent().AthleticsBonus = 0; + npc.GetComponent().LoreSkill = 0; + npc.GetComponent().LoreBonus = 0; + npc.GetComponent().MechanicsSkill = 0; + npc.GetComponent().MechanicsBonus = 0; + npc.GetComponent().SurvivalSkill = 0; + npc.GetComponent().SurvivalBonus = 0; + + npc.GetComponent().RemainingSkillPoints = 0; + + string HeOrShe = npc.GetComponent().Gender.ToString(); + global::Console.AddMessage(npc.GetComponent().Name() + " has reformed into a " + charclass + ". " + (HeOrShe == "Male" ? "He" : "She") + " lost all " + (HeOrShe == "Male" ? "his" : "her") + " previous abilities and talents.", Color.green); + } + } + else + global::Console.AddMessage("Couldn't find: " + guid, Color.yellow); + } + + /// + /// This method fixes a bug in the original Skill command (that only applied the new value as your current bonus, + /// not actually replacing the score). This bug was still present in v2.0 of PoE. + /// + /// The character to modify. The Guid will be filled in by CommandLineRun before we get here + /// The skill to modify. This will be converted from string to Enum by CommandLineRun + /// The new score value to assign. This will be validated as a number by CommandLineRun. Note + /// that this is NOT the actual score, it's the "points invested" in score. Thus to attain a score of 9, you + /// would need to pass in 45 (the sum of 1 to 9). + [ModifiesMember("Skill")] + public static void Skill(Guid character, CharacterStats.SkillType skill, int score) + { + CharacterStats characterStatsComponent = Scripts.GetCharacterStatsComponent(character); + if (characterStatsComponent == null) + { + Debug.Log(string.Concat("Skill: Error - stats component not found for '", character, "'.")); + return; + } + + switch (skill) + { + case CharacterStats.SkillType.Stealth: + { + characterStatsComponent.StealthSkill = score; + break; + } + case CharacterStats.SkillType.Athletics: + { + characterStatsComponent.AthleticsSkill = score; + break; + } + case CharacterStats.SkillType.Lore: + { + characterStatsComponent.LoreSkill = score; + break; + } + case CharacterStats.SkillType.Mechanics: + { + characterStatsComponent.MechanicsSkill = score; + break; + } + case CharacterStats.SkillType.Survival: + { + characterStatsComponent.SurvivalSkill = score; + break; + } + case CharacterStats.SkillType.Crafting: + { + characterStatsComponent.CraftingSkill = score; + break; + } + } + Console.AddMessage(string.Concat(new object[] { characterStatsComponent.name, "'s ", skill, " is now ", score.ToString() })); + } + + /// + /// Forces soulbound items to progress for selected characters + /// Requires DLC, Take it out if compiling for non-DLC DLL. + /// + + [NewMember] + public static void UnlockSoulBound() + { + + List partyMembers = PartyMemberAI.GetSelectedPartyMembers(); + + foreach (GameObject partyMember in partyMembers) + { + EquipmentSoulbind[] soulbound = partyMember.GetComponentsInChildren(); + + if (soulbound.Length > 0) + { + foreach (EquipmentSoulbind elem in soulbound) + { + elem.DebugLevelUp(); + global::Console.AddMessage("Soulbound item found on selected character", Color.green); + } + } + else { + global::Console.AddMessage("No soulbound items found on selected character", Color.red); + } + } + } + + + } + /* + [ModifiesType("CommandLineRun")] + public class mod_CommandLineRun + { + // TJH 8/26/2015 - It's no longer necessary to override RunCommand. We can just make sure all methods are always + // available and not treated as cheats + + [ModifiesMember("MethodIsAvailable")] + public static bool MethodIsAvailable(MethodInfo method) + { + return true; + } + + } + */ + + [ModifiesType("CommandLineRun")] + public class mod_CommandLineRun + { + [ModifiesMember("RunCommand")] + public static void RunCommand(string command) + { + object[] objArray; + if (string.IsNullOrEmpty(command)) + { + return; + } + if (command.ToLower() == "runcommand") + { + return; + } + IList strs = StringUtility.CommandLineStyleSplit(command); + bool flag = false; + bool flag1 = false; + string empty = string.Empty; + IEnumerator enumerator = CommandLineRun.GetAllMethods().GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + MethodInfo current = enumerator.Current; + if (string.Compare(current.Name, strs[0], true) != 0) + { + continue; + } + /* + if (!CommandLineRun.MethodIsAvailable(current)) + { + flag = true; + } + */ + else if (!CommandLineRun.FillMethodParams(current, strs, out objArray, out empty)) + { + flag1 = true; + } + else + { + current.Invoke(null, objArray); + return; + } + } + } + finally + { + if (enumerator == null) + { + } + enumerator.Dispose(); + } + if (flag1) + { + Console.AddMessage(string.Concat("Command or script '", strs[0], "' parameter error: ", empty), Color.yellow); + } + else if (!flag) + { + Console.AddMessage(string.Concat("No command or script named '", strs[0], "' exists."), Color.yellow); + } + else + { + Console.AddMessage(string.Concat("The command or script '", strs[0], "' is not available at this time."), Color.yellow); + } + } + } +} + + + + + + + + + + + +/* + * + * Old contents of this file, caused combat crashes ''randomly'' + * Some of the commands might be restorable though + * + * + [ModifiesType("CommandLine")] public class mod_CommandLine { [ModifiesType()] @@ -143,61 +1039,6 @@ public static void DD() QualitySettings.IncreaseLevel(); } - [NewMember] - public static void UnlockSoulbound(Guid character) - { - try - { - EquipmentSoulbind component; - Equipment componentByGuid = Scripts.GetComponentByGuid(character); - if (!componentByGuid) - { - global::Console.AddMessage("Found no soulbound weapon.", Color.red); - return; - } - Equippable itemInSlot = componentByGuid.CurrentItems.GetItemInSlot(Equippable.EquipmentSlot.PrimaryWeapon); - if (!itemInSlot) - { - global::Console.AddMessage("Found no soulbound weapon.", Color.red); - return; - } - else - { - component = itemInSlot.GetComponent(); - - if(component == null) - { - global::Console.AddMessage("Found no soulbound weapon.", Color.red); - return; - } - } - - IEDebug.Log(string.Format("Found item {0}", component.name)); - mod_EquipmentSoulbind componentAsSoulbind = (mod_EquipmentSoulbind)component; - - componentAsSoulbind.ForceUnlock(); - - } - catch (Exception ex) - { - IEDebug.Log(ex.ToString()); - throw new IEModException("Failed to unlock soulbound", ex); - } - } - - - [NewMember] - public static void CheckAchievements() - { - if (AchievementTracker.Instance.DisableAchievements == true) - { - global::Console.AddMessage("Your achievements were previously disabled for this playthrough.", Color.red); - global::Console.AddMessage("To reactivate them, type: ReenableAchievements"); - } - else - global::Console.AddMessage("Your achievements are doing fine.", Color.green); - } - [NewMember] public static void AssignClericalGod(string charname, string godname) { @@ -1047,48 +1888,48 @@ public class mod_CommandLineRun { /* * * TJH 8/26/2015 - It's no longer necessary to override RunCommand. We can just make sure all methods are always available and not treated as cheats * * */ - - [ModifiesMember("MethodIsAvailable")] - public static bool MethodIsAvailable(MethodInfo method) - { - return true; - } +/* +[ModifiesMember("MethodIsAvailable")] +public static bool MethodIsAvailable(MethodInfo method) +{ + return true; +} } [ModifiesType] - public class mod_EquipmentSoulbind : EquipmentSoulbind - { +public class mod_EquipmentSoulbind : EquipmentSoulbind +{ - [NewMember] - public void ForceUnlock() + [NewMember] + public void ForceUnlock() + { + if (this.AreUnlocksComplete) { - if (this.AreUnlocksComplete) - { - return; - } - - this.UnlockLevel = this.m_NextUnlockLevel; - this.UnlockProgress = 0f; - this.DegenerateUnlockProgress = 0f; - ItemMod[] modsToApply = this.Unlocks[this.UnlockLevel].ModsToApply; - for (int i = 0; i < (int)modsToApply.Length; i++) - { - ItemMod itemMod = modsToApply[i]; - this.m_Equippable.AttachItemMod(itemMod); - } - ItemMod[] modsToRemove = this.Unlocks[this.UnlockLevel].ModsToRemove; - for (int j = 0; j < (int)modsToRemove.Length; j++) - { - ItemMod itemMod1 = modsToRemove[j]; - this.m_Equippable.DestroyFirstMod(itemMod1); - } - if (!UIItemInspectManager.ReloadWindowsForObject(base.gameObject)) - { - UIItemInspectManager.ExamineSoulbindUnlock(this, this.m_Equippable.EquippedOwner); - } - this.TryUnlockNext(); + return; } + this.UnlockLevel = this.m_NextUnlockLevel; + this.UnlockProgress = 0f; + this.DegenerateUnlockProgress = 0f; + ItemMod[] modsToApply = this.Unlocks[this.UnlockLevel].ModsToApply; + for (int i = 0; i < (int)modsToApply.Length; i++) + { + ItemMod itemMod = modsToApply[i]; + this.m_Equippable.AttachItemMod(itemMod); + } + ItemMod[] modsToRemove = this.Unlocks[this.UnlockLevel].ModsToRemove; + for (int j = 0; j < (int)modsToRemove.Length; j++) + { + ItemMod itemMod1 = modsToRemove[j]; + this.m_Equippable.DestroyFirstMod(itemMod1); + } + if (!UIItemInspectManager.ReloadWindowsForObject(base.gameObject, true)) + { + UIItemInspectManager.ExamineSoulbindUnlock(this, this.m_Equippable.EquippedOwner); + } + this.TryUnlockNext(); } -} \ No newline at end of file + +} +*/ \ No newline at end of file diff --git a/IEMod/Mods/HideCape/mod_NPCAppearance.cs b/IEMod/Mods/HideCape/mod_NPCAppearance.cs new file mode 100644 index 0000000..75ba5b1 --- /dev/null +++ b/IEMod/Mods/HideCape/mod_NPCAppearance.cs @@ -0,0 +1,95 @@ +using IEMod.Mods.Options; +using Patchwork.Attributes; +using UnityEngine; + +namespace IEMod.Mods.HideCape +{ + [ModifiesType] + public class mod_NPCAppearance : NPCAppearance + { + [ModifiesMember("AttachCape")] + public void AttachCapeNew(Transform skeleton) + { + if (!IEModOptions.CapesHidden) {// Only inserted line really... + Equipment component = base.GetComponent(); + if (component == null) + { + return; + } + Equippable neck = null; + if (component.CurrentItems != null) + { + if (component.CurrentItems.Neck != null && component.CurrentItems.Neck.Appearance.bodyPiece == AppearancePiece.BodyPiece.Cape) + { + neck = component.CurrentItems.Neck; + } + } + else if (component.DefaultEquippedItems != null && component.DefaultEquippedItems.Neck != null && component.DefaultEquippedItems.Neck.Appearance.bodyPiece == AppearancePiece.BodyPiece.Cape) + { + neck = component.DefaultEquippedItems.Neck; + } + if (neck == null) + { + if (this.m_capeMeshObject != null) + { + GameUtilities.Destroy(this.m_capeMeshObject); + this.m_capeMeshObject = null; + } + this.m_capeCachedEquippable = null; + return; + } + if (this.m_capeCachedEquippable == neck) + { + return; + } + if (this.m_capeMeshObject != null) + { + GameUtilities.Destroy(this.m_capeMeshObject); + this.m_capeMeshObject = null; + } + this.m_capeCachedEquippable = neck; + if (this.FindBone(skeleton, "bn_cloth_01") == null) + { + this.AddCapeBone(this.FindBone(skeleton, "Neck")); + } + string capePrefabPath = this.GetCapePrefabPath(); + NPCAppearance.s_loader.LoadBundle(capePrefabPath, false); + if (NPCAppearance.s_loader.obj) + { + this.m_capeMeshObject = Object.Instantiate(NPCAppearance.s_loader.obj) as GameObject; + this.m_capeMeshObject.name = "Cape Mesh"; + this.m_capeMeshObject.transform.parent = base.transform; + this.m_capeMeshObject.transform.localPosition = Vector3.zero; + this.m_capeMeshObject.transform.localRotation = Quaternion.identity; + if (base.gameObject.layer != PE_Paperdoll.PaperdollLayer) + { + this.m_capeMeshObject.layer = LayerUtility.FindLayerValue("Dynamics"); + } + else + { + this.m_capeMeshObject.layer = PE_Paperdoll.PaperdollLayer; + } + ClothMesh clothMesh = this.m_capeMeshObject.GetComponent(); + if (clothMesh != null) + { + clothMesh.SkeletonObject = skeleton.gameObject; + clothMesh.SkinnedMeshes = new SkinnedMeshRenderer[1]; + SkinnedMeshRenderer sLoader = this.m_capeMeshObject.GetComponent(); + string str = "Art/Character/Textures/Cape/m_Cape01_V"; + str = (neck.Appearance.materialVariation >= 10 ? string.Concat(str, neck.Appearance.materialVariation, string.Empty) : string.Concat(str, "0", neck.Appearance.materialVariation)); + NPCAppearance.s_loader.LoadBundle(str, false); + if (!NPCAppearance.s_loader.obj) + { + Debug.LogError(string.Concat("Cape Material Asset could not be found! Searched for at: '", str, "'")); + } + else + { + sLoader.material = NPCAppearance.s_loader.obj as Material; + } + clothMesh.SkinnedMeshes[0] = sLoader; + } + } + } + } + } +} diff --git a/IEMod/Mods/InventorySlots/mod_CharacterStats.cs b/IEMod/Mods/InventorySlots/mod_CharacterStats.cs new file mode 100644 index 0000000..1a961c6 --- /dev/null +++ b/IEMod/Mods/InventorySlots/mod_CharacterStats.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using IEMod.Mods.Options; +using Patchwork.Attributes; +using UnityEngine; + +namespace IEMod.Mods.InventorySlots +{ + [ModifiesType] + public class mod_CharacterStats : CharacterStats + { + + public int MaxQuickSlotsNew + { + [ModifiesMember("get_MaxQuickSlots")] + get + { + if (IEModOptions.AllInventorySlots) + { + return 6; + } + else { + return 4 + this.BonusQuickSlots; + } + } + } + + public int MaxWeaponSetsNew + { + [ModifiesMember("get_MaxWeaponSets")] + get + { + if (IEModOptions.AllInventorySlots) + { + return 4; + } + else { + return 2 + this.BonusWeaponSets; + } + } + } + } +} + + diff --git a/IEMod/Mods/InventorySlots/mod_Equipment.cs b/IEMod/Mods/InventorySlots/mod_Equipment.cs new file mode 100644 index 0000000..84e4884 --- /dev/null +++ b/IEMod/Mods/InventorySlots/mod_Equipment.cs @@ -0,0 +1,36 @@ +using IEMod.Mods.Options; +using Patchwork.Attributes; +using UnityEngine; + +namespace IEMod.Mods.InventorySlots +{ + [ModifiesType] + public class mod_Equipement : Equipment + { + [ModifiesMember("HasEquipmentSlot")] + public bool HasEquipmentSlotNew(Equippable.EquipmentSlot slot) + { + // Start of mod + if(IEModOptions.AllInventorySlots) + { + return true; + } + //End of mod, rest is normal code + CharacterStats component = base.GetComponent(); + if (slot == Equippable.EquipmentSlot.Grimoire) + { + return (!component ? true : component.CharacterClass == CharacterStats.Class.Wizard); + } + if (slot != Equippable.EquipmentSlot.Head) + { + if (slot != Equippable.EquipmentSlot.Pet) + { + return true; + } + return base.GetComponent(); + } + return (!component ? true : component.CharacterRace != CharacterStats.Race.Godlike); + } + + } +} diff --git a/IEMod/Mods/OnLevelLoad/mod_GameState.cs b/IEMod/Mods/OnLevelLoad/mod_GameState.cs index c976303..f7d69dd 100644 --- a/IEMod/Mods/OnLevelLoad/mod_GameState.cs +++ b/IEMod/Mods/OnLevelLoad/mod_GameState.cs @@ -29,7 +29,24 @@ public static void AutosaveIfAllowed() } } - [ModifiesMember("ChangeLevel")] + [ModifiesMember("Autosave")] + public static void mod_Autosave() { + if (IEModOptions.SaveInterval != -1) + { + if (GameState.Mode.TrialOfIron) + { + GameState.TrialOfIronSave(); + } + else if (GameResources.SaveGame(SaveGameInfo.GetAutosaveFileName())) + { + GameResources.DeleteSavedGame(SaveGameInfo.GetOldAutosaveFileName()); + } + GameState instance = GameState.Instance; + instance.AutosaveCycleNumber = instance.AutosaveCycleNumber + 1; + } + } + + [ModifiesMember("ChangeLevel")] public static void mod_ChangeLevel(MapData map) { if (IEModOptions.SaveBeforeTransition) // added this block @@ -111,7 +128,7 @@ public void mod_FinalizeLevelLoad() { { FogOfWar.Instance.WaitForFogUpdate(); } - GameState.Autosave(); + AutosaveIfAllowed(); } } GameState.NewGame = false; @@ -227,6 +244,7 @@ public static void ImportStats() } catch (System.IO.FileNotFoundException e) { + Console.AddMessage(e.Message); return; } diff --git a/IEMod/Mods/PerEncounterSpells/mod_SpellMax.cs b/IEMod/Mods/PerEncounterSpells/mod_SpellMax.cs index 70110a7..90addb3 100644 --- a/IEMod/Mods/PerEncounterSpells/mod_SpellMax.cs +++ b/IEMod/Mods/PerEncounterSpells/mod_SpellMax.cs @@ -1,14 +1,25 @@ -using IEMod.Helpers; +using Patchwork.Attributes; using IEMod.Mods.Options; -using Patchwork.Attributes; +using System; +using System.Collections.Generic; using UnityEngine; namespace IEMod.Mods.PerEncounterSpells { + [ModifiesType] - public class mod_SpellMax : SpellMax + public class mod_CharacterStats : CharacterStats { + + + + /// + /// + /// Method in charge of retrieving IEMod settings for spell casts per encounters + /// + /// + //Note - naively assumes all casters will always get same progression. Not worth fixing at this time. [NewMember] public int[] GetModifiedEncounterData() @@ -71,6 +82,13 @@ public int[] GetModifiedEncounterData() result[5] = 14; break; + case IEModOptions.PerEncounterSpells.Levels_4_8_12_16: + result[0] = 4; + result[1] = 8; + result[2] = 12; + result[3] = 16; + break; + case IEModOptions.PerEncounterSpells.AllPerEncounter: for (int i = 0; i < Grimoire.MaxSpellLevel; i++) { @@ -87,85 +105,285 @@ public int[] GetModifiedEncounterData() return result; } - //Note - naively assumes all casters will always get same progression. Not worth fixing at this time. - [ModifiesMember("GetPerEncounterCharacterLevel")] - public int GetPerEncounterCharacterLevelNew(GameObject caster, int spellLevel) + + /// + /// + /// Method that uses GetModifiedEncounterData and sets the appropriate spellcastcount[] values to 0 + /// + /// + + [NewMember] + public void ResetSpellUsage(CharacterStats charStats) + { + int casterLevel = charStats.Level; + int[] unlockLevels = GetModifiedEncounterData(); + + for (int i = 0; i < unlockLevels.Length; i++) { + if (casterLevel >= unlockLevels[i]){ + charStats.SpellCastCount[i] = 0; + } + else{ + break; //Ugly optimisation if char is underlevelled + } + } + } + + + + /// + /// + /// Injection of a call to the ResetSpellUsage(int casterLeevl) Method created above at the end + /// of the code that runs after an ecounter. + /// + /// + + [ModifiesMember("HandleGameUtilitiesOnCombatEnd")] + private new void HandleGameUtilitiesOnCombatEnd(object sender, EventArgs e) { - int result = 2147483647; - if (caster != null) + try { - CharacterStats component = caster.GetComponent(); - if (component != null) + this.m_MarkersAppliedThisCombat.Clear(); + for (int i = this.m_statusEffects.Count - 1; i >= 0; i--) { - switch (IEModOptions.PerEncounterSpellsSetting) + if (this.m_statusEffects[i].LastsUntilCombatEnds) + { + this.ClearEffect(this.m_statusEffects[i]); + } + else if (this.m_statusEffects[i].AbilityOrigin && this.m_statusEffects[i].AbilityOrigin.CombatOnly) { - case IEModOptions.PerEncounterSpells.NoChange: - return this.SpellPerEncounterLevelLookup(component.CharacterClass, spellLevel); - //default behaviour - case IEModOptions.PerEncounterSpells.Levels_9_12: - case IEModOptions.PerEncounterSpells.Levels_6_9_12: - case IEModOptions.PerEncounterSpells.Levels_8_10_12_14: - case IEModOptions.PerEncounterSpells.Levels_6_9_12_14: - case IEModOptions.PerEncounterSpells.Levels_6_8_10_12_14: - case IEModOptions.PerEncounterSpells.Levels_4_6_8_10_12_14: - case IEModOptions.PerEncounterSpells.AllPerEncounter: - case IEModOptions.PerEncounterSpells.AllPerRest: - int[] encounterLevel = GetModifiedEncounterData(); - - return encounterLevel[spellLevel - 1]; - - default: - goto case IEModOptions.PerEncounterSpells.NoChange; + this.ClearEffect(this.m_statusEffects[i]); + } + else if (this.m_statusEffects[i].IsDOT) + { + this.ClearEffect(this.m_statusEffects[i]); } } + IEnumerator enumerator = this.ActiveAbilities.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + GenericAbility current = enumerator.Current; + if (current == null) + { + continue; + } + current.HandleGameUtilitiesOnCombatEnd(sender, e); + } + } + finally + { + if (enumerator == null) + { + } + enumerator.Dispose(); + } + if (base.gameObject != null) + { + int num = 0; + while (num < 8) + { + num++; + } + + //Start of mod + // Make sure char is a valid caster + CharacterStats charStats = base.gameObject.GetComponent(); + if (charStats != null) { + if (charStats.CharacterClass == Class.Priest || charStats.CharacterClass == Class.Wizard || charStats.CharacterClass == Class.Druid) { + ResetSpellUsage(charStats); + } + } + //End of mod + } + this.PlayPartyFatigueSoundIfAble(); + + + } + catch (Exception exception) + { + Debug.LogException(exception, this); + if (UIDebug.Instance) + { + UIDebug.Instance.LogOnScreenWarning("Exception in CharacterStats.HandleGameUtilitiesOnCombatEnd! Please Fix!", UIDebug.Department.Programming, 10f); + } } - return result; } - [NewMember] - [DuplicatesBody("GetSpellLevelNowTriggeredPerEncounter")] - public int GetSpellLevelNowTriggeredPerEncounterOriginal(CharacterStats.Class casterClass, int prevLevel, int newLevel) + } + + + +} + + +/* + * + * + * This is the code that was employed in patches prior to 3.0 + * it no longer works but I hate to delete stuff + * + * +[ModifiesType] +public class mod_SpellMax : SpellMax +{ + //Note - naively assumes all casters will always get same progression. Not worth fixing at this time. + [NewMember] + public int[] GetModifiedEncounterData() + { + int[] result = new int[Grimoire.MaxSpellLevel]; + for (int i = 0; i < Grimoire.MaxSpellLevel; i++) { - throw new DeadEndException("Can't reach this body"); + result[i] = 256; } - //Note - naively assumes all casters will always get same progression. Not worth fixing at this time. - [ModifiesMember("GetSpellLevelNowTriggeredPerEncounter")] - public int GetSpellLevelNowTriggeredPerEncounterNew(CharacterStats.Class casterClass, int prevLevel, int newLevel) + switch (IEModOptions.PerEncounterSpellsSetting) { - switch (IEModOptions.PerEncounterSpellsSetting) - { - case IEModOptions.PerEncounterSpells.NoChange: - return GetSpellLevelNowTriggeredPerEncounterOriginal(casterClass, prevLevel, newLevel); + case IEModOptions.PerEncounterSpells.NoChange: + default: + //This isn't used, but we'll fill it in anyway + result[0] = 9; + result[1] = 11; + result[2] = 13; + break; - //default behaviour - case IEModOptions.PerEncounterSpells.Levels_9_12: - case IEModOptions.PerEncounterSpells.Levels_6_9_12: - case IEModOptions.PerEncounterSpells.Levels_8_10_12_14: - case IEModOptions.PerEncounterSpells.Levels_6_9_12_14: - case IEModOptions.PerEncounterSpells.Levels_6_8_10_12_14: - case IEModOptions.PerEncounterSpells.Levels_4_6_8_10_12_14: - case IEModOptions.PerEncounterSpells.AllPerEncounter: - case IEModOptions.PerEncounterSpells.AllPerRest: - if (casterClass == CharacterStats.Class.Priest || casterClass == CharacterStats.Class.Wizard || casterClass == CharacterStats.Class.Druid) - { + case IEModOptions.PerEncounterSpells.Levels_9_12: + result[0] = 9; + result[1] = 12; + break; + + case IEModOptions.PerEncounterSpells.Levels_6_9_12: + result[0] = 6; + result[1] = 9; + result[2] = 12; + break; + + case IEModOptions.PerEncounterSpells.Levels_8_10_12_14: + result[0] = 8; + result[1] = 10; + result[2] = 12; + result[3] = 14; + break; + + case IEModOptions.PerEncounterSpells.Levels_6_9_12_14: + result[0] = 6; + result[1] = 9; + result[2] = 12; + result[3] = 14; + break; + + case IEModOptions.PerEncounterSpells.Levels_6_8_10_12_14: + result[0] = 6; + result[1] = 8; + result[2] = 10; + result[3] = 12; + result[4] = 14; + break; + + case IEModOptions.PerEncounterSpells.Levels_4_6_8_10_12_14: + result[0] = 4; + result[1] = 6; + result[2] = 8; + result[3] = 10; + result[4] = 12; + result[5] = 14; + break; + + case IEModOptions.PerEncounterSpells.AllPerEncounter: + for (int i = 0; i < Grimoire.MaxSpellLevel; i++) + { + result[i] = 1; + } + break; + + case IEModOptions.PerEncounterSpells.AllPerRest: + //Body intentionally left blank! + break; + } + + return result; + } + + //Note - naively assumes all casters will always get same progression. Not worth fixing at this time. + [ModifiesMember("GetPerEncounterCharacterLevel")] + public int GetPerEncounterCharacterLevelNew(GameObject caster, int spellLevel) + { + int result = 2147483647; + if (caster != null) + { + CharacterStats component = caster.GetComponent(); + if (component != null) + { + switch (IEModOptions.PerEncounterSpellsSetting) + { + case IEModOptions.PerEncounterSpells.NoChange: + return this.SpellPerEncounterLevelLookup(component.CharacterClass, spellLevel); + //default behaviour + case IEModOptions.PerEncounterSpells.Levels_9_12: + case IEModOptions.PerEncounterSpells.Levels_6_9_12: + case IEModOptions.PerEncounterSpells.Levels_8_10_12_14: + case IEModOptions.PerEncounterSpells.Levels_6_9_12_14: + case IEModOptions.PerEncounterSpells.Levels_6_8_10_12_14: + case IEModOptions.PerEncounterSpells.Levels_4_6_8_10_12_14: + case IEModOptions.PerEncounterSpells.AllPerEncounter: + case IEModOptions.PerEncounterSpells.AllPerRest: int[] encounterLevel = GetModifiedEncounterData(); - for (int j = 0; j < Grimoire.MaxSpellLevel; j++) + return encounterLevel[spellLevel - 1]; + + default: + goto case IEModOptions.PerEncounterSpells.NoChange; + } + } + } + return result; + } + + [NewMember] + [DuplicatesBody("GetSpellLevelNowTriggeredPerEncounter")] + public int GetSpellLevelNowTriggeredPerEncounterOriginal(CharacterStats.Class casterClass, int prevLevel, int newLevel) + { + throw new DeadEndException("Can't reach this body"); + } + + //Note - naively assumes all casters will always get same progression. Not worth fixing at this time. + [ModifiesMember("GetSpellLevelNowTriggeredPerEncounter")] + public int GetSpellLevelNowTriggeredPerEncounterNew(CharacterStats.Class casterClass, int prevLevel, int newLevel) + { + switch (IEModOptions.PerEncounterSpellsSetting) + { + case IEModOptions.PerEncounterSpells.NoChange: + return GetSpellLevelNowTriggeredPerEncounterOriginal(casterClass, prevLevel, newLevel); + + //default behaviour + case IEModOptions.PerEncounterSpells.Levels_9_12: + case IEModOptions.PerEncounterSpells.Levels_6_9_12: + case IEModOptions.PerEncounterSpells.Levels_8_10_12_14: + case IEModOptions.PerEncounterSpells.Levels_6_9_12_14: + case IEModOptions.PerEncounterSpells.Levels_6_8_10_12_14: + case IEModOptions.PerEncounterSpells.Levels_4_6_8_10_12_14: + case IEModOptions.PerEncounterSpells.AllPerEncounter: + case IEModOptions.PerEncounterSpells.AllPerRest: + if (casterClass == CharacterStats.Class.Priest || casterClass == CharacterStats.Class.Wizard || casterClass == CharacterStats.Class.Druid) + { + + int[] encounterLevel = GetModifiedEncounterData(); + + for (int j = 0; j < Grimoire.MaxSpellLevel; j++) + { + if (this.SpellCastMaxLookup(casterClass, newLevel, j + 1) > 0 && encounterLevel[j] > prevLevel && encounterLevel[j] <= newLevel) { - if (this.SpellCastMaxLookup(casterClass, newLevel, j + 1) > 0 && encounterLevel[j] > prevLevel && encounterLevel[j] <= newLevel) - { - return j + 1; - } + return j + 1; } } - return 0; + } + return 0; - default: - goto case IEModOptions.PerEncounterSpells.NoChange; - } + default: + goto case IEModOptions.PerEncounterSpells.NoChange; } } } +*/ \ No newline at end of file diff --git a/IEMod/Mods/SelectionCircles/mod_SelectionCircle.cs b/IEMod/Mods/SelectionCircles/mod_SelectionCircle.cs index 8dc9e00..3843f34 100644 --- a/IEMod/Mods/SelectionCircles/mod_SelectionCircle.cs +++ b/IEMod/Mods/SelectionCircles/mod_SelectionCircle.cs @@ -56,7 +56,7 @@ private void UpdateVisibilityNew() { [NewMember] [DuplicatesBody("SetMaterial")] - public void SetMaterialOriginal(bool isFoe, bool isSelected, bool isStealthed) { + public void SetMaterialOriginal(bool isFoe, bool isSelected, bool isStealthed, bool isDominated) { throw new DeadEndException("SetMaterialOriginal"); } @@ -67,27 +67,27 @@ public void SetMaterialOriginal(bool isFoe, bool isSelected, bool isStealthed) { /// /// [ModifiesMember("SetMaterial")] - public void SetMaterialNew(bool isFoe, bool isSelected, bool isStealthed) + public void SetMaterialNew(bool isFoe, bool isSelected, bool isStealthed, bool isDominated) { if (base.renderer == null) { return; } - if (IEModOptions.BlueCircles && !isFoe && !isStealthed && !InGameHUD.Instance.UseColorBlindSettings) { + if (IEModOptions.BlueCircles && !isFoe && !isStealthed && !isDominated && !InGameHUD.Instance.UseColorBlindSettings) { var isPartyMember = m_Owner.HasComponent() && m_Owner.Component().CurrentTeam == Team.GetTeamByTag("player"); if (!isPartyMember) { //colorblind material for friendlies happens to be a nice azure. The non-selected material is an ugly navy. //selected colorblind material for non-stealthed friendlies. - this.m_selectedMaterial = InGameHUD.Instance.CircleMaterials.Get(true, true, false, false); + this.m_selectedMaterial = InGameHUD.Instance.CircleMaterials.Get(true, true, false, false, false); //non-selected colorblind material for non-stealthed friendlies - this.m_Circle.sharedMaterial = InGameHUD.Instance.CircleMaterials.Get(true, true, true, false); + this.m_Circle.sharedMaterial = InGameHUD.Instance.CircleMaterials.Get(true, true, true, false, false); this.OnColorChanged(this.m_Circle.sharedMaterial.color); this.OnSharedMaterialChanged?.Invoke(this.m_Circle.sharedMaterial); return; } //if party member, just get the regular circle. } - SetMaterialOriginal(isFoe, isSelected, isStealthed); + SetMaterialOriginal(isFoe, isSelected, isStealthed, isDominated); } } diff --git a/IEMod/Mods/SoulBoundCrafting/mod_UIItemInspectManager.cs b/IEMod/Mods/SoulBoundCrafting/mod_UIItemInspectManager.cs new file mode 100644 index 0000000..546e73b --- /dev/null +++ b/IEMod/Mods/SoulBoundCrafting/mod_UIItemInspectManager.cs @@ -0,0 +1,433 @@ + +/// Requires DLC, Take it out if compiling for non-DLC DLL. + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using IEMod.Mods.Options; +using Patchwork.Attributes; +using UnityEngine; + +namespace IEMod.Mods.SoulBoundCrafting +{ + [ModifiesType] + public class mod_UIItemInspectManager : UIItemInspectManager + { + [ModifiesMember("Reload")] + public new void Reload() + { + CharacterStats characterStat; + UIWidget uIWidget; + bool flag; + AttackBase attackBase; + AttackBase attackBase1; + this.m_NeedsReload = false; + this.DragPanel.ResetPosition(); + StringBuilder stringBuilder = new StringBuilder(); + GenericAbility component = null; + AttackBase component1 = null; + if (this.InspectionObject) + { + component1 = this.InspectionObject.GetComponent(); + component = this.InspectionObject.GetComponent(); + if (component1) + { + component1.UICleanStatusEffects(); + } + if (component) + { + component.UICleanStatusEffects(); + } + } + this.EnchantButton.gameObject.SetActive(false); + this.CompareButton.gameObject.SetActive(false); + this.LearnSpellButton.gameObject.SetActive(false); + this.ExamineButton.gameObject.SetActive(false); + this.SoulbindButton.gameObject.SetActive(false); + this.EnchantParent.gameObject.SetActive(false); + this.ItemTypeLabel.text = string.Empty; + this.ImageTexture.mainTexture = null; + this.LargeImageTexture.mainTexture = null; + string empty = string.Empty; + this.TitleSepAnchor.widgetContainer = this.IconBackground; + this.TitleSepAnchor.side = UIAnchor.Side.Right; + if (this.InspectionObject == null) + { + this.TitleLabel.text = string.Empty; + this.EffectTextLabel.text = string.Empty; + this.ImageTexture.alpha = 0f; + this.DragPanel.ResetPosition(); + this.ButtonsGrid.Reposition(); + return; + } + CharacterStats characterStat1 = this.InspectionObject.GetComponent(); + if (this.m_InspectStat == StatusEffect.ModifiedStat.NoEffect) + { + Item item = this.InspectionObject.GetComponent(); + Phrase phrase = this.InspectionObject.GetComponent(); + GenericTalent genericTalent = this.InspectionObject.GetComponent(); + EquipmentSoulbind equipmentSoulbind = this.InspectionObject.GetComponent(); + ItemMod itemMod = this.InspectionObject.GetComponent(); + if (item) + { + this.LargeImageTexture.alpha = 1f; + this.LargeImageTexture.mainTexture = item.GetIconLargeTexture(); + this.LargeImageTexture.MakePixelPerfect(); + this.TitleLabel.text = item.Name; + if (item.DescriptionText.IsValidString) + { + stringBuilder.AppendLine(item.DescriptionText.GetText()); + stringBuilder.AppendLine(); + } + } + if (!equipmentSoulbind || !this.ObjectOwner) + { + this.SoulbindButton.gameObject.SetActive(false); + } + else + { + this.SoulbindButton.gameObject.SetActive((!equipmentSoulbind.IsBound ? true : !equipmentSoulbind.CannotUnbind)); + } + if (equipmentSoulbind) + { + this.SoulbindButton.Label.GetComponent().SetString((!equipmentSoulbind.IsBound ? 2030 : 2031)); + string extraDescription = equipmentSoulbind.GetExtraDescription(); + if (!string.IsNullOrEmpty(extraDescription)) + { + stringBuilder.AppendLine(extraDescription); + stringBuilder.AppendLine(); + } + empty = equipmentSoulbind.GetPencilSketch(); + } + if (this.InspectionObject.GetComponent()) + { + this.ExamineButton.gameObject.SetActive(true); + } + Equippable equippable = item as Equippable; + if (equippable) + { + BackerContent backerContent = this.InspectionObject.GetComponent(); + if (backerContent) + { + stringBuilder.AppendLine(); + stringBuilder.AppendLine(); + stringBuilder.Append(GUIUtils.GetText(994)); + stringBuilder.Append(" "); + stringBuilder.Append(backerContent.BackerName); + } + bool flag1 =(this.InspectionObject.GetComponent() || this.InspectionObject.GetComponent() || equippable is Weapon ? !equipmentSoulbind : false); + bool flag2 = (!flag1 ? false : !equippable.IsPrefab); + if (equippable.EquippedOwner) + { + CharacterStats component2 = equippable.EquippedOwner.GetComponent(); + if (component2) + { + if (!component2.IsEquipmentLocked) + { + Equipment equipment = component2.GetComponent(); + if (equipment && equipment.IsSlotLocked(equippable.EquippedSlot)) + { + flag2 = false; + } + } + else + { + flag2 = false; + } + } + } + characterStat = (!UILootManager.Instance || !UILootManager.Instance.IsVisible ? UIInventoryManager.Instance.SelectedCharacter : UILootManager.Instance.SelectedCharacter); + if (!characterStat || this.NoCompare) + { + this.CompareButton.gameObject.SetActive(false); + } + else + { + Equipment equipment1 = characterStat.GetComponent(); + IEnumerable comparisonTargets = UIInventoryEquipment.GetComparisonTargets(this.InspectionObject.GetComponent(), equipment1); + this.CompareButton.gameObject.SetActive((!equipment1 || !comparisonTargets.Any() ? false : !equipment1.CurrentItems.Contains(equippable))); + } + if (flag1 && this.LblEnchantValue && this.LblEnchantValue) + { + this.LblEnchantLabel.text = string.Concat(GUIUtils.GetText(1987), ": "); + this.LblEnchantValue.text = GUIUtils.Format(451, new object[] { equippable.TotalItemModValue(), ItemMod.MaximumModValue }); + } + this.EnchantParent.gameObject.SetActive(flag1); + flag = (!flag2 || this.m_IsStore || this.m_NoEnchant ? false : !GameState.InCombat); + this.EnchantButton.gameObject.SetActive(flag); + + //Start of mod + if (equipmentSoulbind) { + this.EnchantButton.gameObject.SetActive(true); + } + //End of mod + + string equippableItemType = UIItemInspectManager.GetEquippableItemType(this.InspectionObject, null, equippable); + if (equippableItemType.Length > 0) + { + this.ItemTypeLabel.text = equippableItemType; + } + } + else if (phrase) + { + this.ImageTexture.alpha = 1f; + if (phrase.Icon) + { + this.ImageTexture.mainTexture = phrase.Icon; + } + this.ImageTexture.MakePixelPerfect(); + this.TitleLabel.text = phrase.DisplayName.GetText(); + if (phrase.Description.IsValidString) + { + stringBuilder.AppendLine(phrase.Description.GetText()); + } + } + else if (component) + { + this.ImageTexture.alpha = 1f; + if (component.Icon) + { + this.ImageTexture.mainTexture = component.Icon; + } + this.ImageTexture.MakePixelPerfect(); + if (!item) + { + this.TitleLabel.text = GenericAbility.Name(component); + } + if (component.Description.IsValidString && !item) + { + stringBuilder.AppendLine(component.Description.GetText()); + } + if (component1) + { + this.ItemTypeLabel.text = component1.GetKeywordsString(); + } + this.LearnSpellButton.gameObject.SetActive(this.LearnSpellAllowed); + } + else if (genericTalent) + { + this.ImageTexture.alpha = 1f; + if (genericTalent.Icon) + { + this.ImageTexture.mainTexture = genericTalent.Icon; + } + this.ImageTexture.MakePixelPerfect(); + if (genericTalent.Description.IsValidString) + { + stringBuilder.AppendLine(genericTalent.Description.GetText()); + } + this.TitleLabel.text = genericTalent.Name(this.ObjectOwner); + } + else if (!itemMod) + { + BackerContent backerContent1 = this.InspectionObject.GetComponent(); + if (backerContent1) + { + this.ImageTexture.alpha = 0f; + this.TitleLabel.text = backerContent1.BackerName; + stringBuilder.AppendLine(backerContent1.BackerDescription.GetText()); + stringBuilder.AppendLine(); + stringBuilder.AppendLine(); + stringBuilder.Append(GUIUtils.GetText(994, CharacterStats.GetGender(backerContent1))); + stringBuilder.Append(' '); + stringBuilder.Append(backerContent1.BackerName); + } + if (characterStat1) + { + this.TitleLabel.text = characterStat1.Name(); + } + } + else + { + this.TitleLabel.text = itemMod.DisplayName.GetText(); + } + StringEffects stringEffect = new StringEffects(); + string str = UIItemInspectManager.GetEffectText(this.InspectionObject, this.ObjectOwner, stringEffect, false).TrimEnd(new char[0]); + this.StringEffectDisplay.Load(stringEffect); + if (!this.StringEffectDisplay.Empty) + { + str = string.Concat(str, "\n", GUIUtils.GetText(1604)); + } + if (item && !item.IsQuestItem && !(item is CampingSupplies) && !(item is Currency)) + { + string empty1 = string.Empty; + if (this.ItemTypeLabel.text.Length > 0) + { + empty1 = string.Concat(empty1, "\n"); + } + empty1 = string.Concat(empty1, GUIUtils.GetText(1499), ": ", GUIUtils.Format(466, new object[] { item.GetDefaultSellValue() })); + this.ItemTypeLabel.text = string.Concat(this.ItemTypeLabel.text, empty1); + } + if (Glossary.Instance) + { + str = Glossary.Instance.AddUrlTags(str); + } + this.EffectTextLabel.text = str.Trim(); + if (this.Goals) + { + this.Goals.Set(equipmentSoulbind, this.SoulbindUnlockMode); + } + this.FlavorTextLabel.text = stringBuilder.ToString().TrimEnd(new char[0]); + } + else + { + CharacterStats.SkillType skillType = StatusEffect.ModifiedStatToSkillType(this.m_InspectStat); + CharacterStats.AttributeScoreType attributeScoreType = StatusEffect.ModifiedStatToAttributeScoreType(this.m_InspectStat); + CharacterStats.DefenseType defenseType = StatusEffect.ModifiedStatToDefenseType(this.m_InspectStat); + string str1 = string.Empty; + if (characterStat1) + { + if (skillType != CharacterStats.SkillType.Count) + { + this.TitleLabel.text = GUIUtils.GetSkillTypeString(skillType); + str1 = string.Concat(characterStat1.CalculateSkill(skillType).ToString(), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetSkillEffectsInverted(characterStat1, skillType, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = GUIUtils.GetSkillTypeDescriptionString(skillType); + } + else if (attributeScoreType != CharacterStats.AttributeScoreType.Count) + { + this.TitleLabel.text = GUIUtils.GetAttributeScoreTypeString(attributeScoreType); + str1 = string.Concat(characterStat1.GetAttributeScore(attributeScoreType).ToString(), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetAttributeEffectsInverted(characterStat1, attributeScoreType, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = GUIUtils.GetAttributeScoreDescriptionString(attributeScoreType); + } + else if (defenseType != CharacterStats.DefenseType.None) + { + this.TitleLabel.text = GUIUtils.GetDefenseTypeString(defenseType); + str1 = string.Concat(characterStat1.CalculateDefense(defenseType).ToString(), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetDefenseEffectsInverted(characterStat1, defenseType, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = GUIUtils.GetDefenseTypeDescription(defenseType); + } + else if (this.m_InspectStat == StatusEffect.ModifiedStat.InterruptBonus) + { + this.TitleLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 173); + str1 = string.Concat(characterStat1.ComputeInterruptHelper().ToString("#0"), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetInterruptEffectsInverted(characterStat1, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 174); + } + else if (this.m_InspectStat == StatusEffect.ModifiedStat.ConcentrationBonus) + { + this.TitleLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 159); + str1 = string.Concat(characterStat1.ComputeConcentrationHelper().ToString("#0"), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetConcentrationEffectsInverted(characterStat1, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 160); + } + else if (this.m_InspectStat == StatusEffect.ModifiedStat.DamageThreshhold) + { + this.TitleLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 157); + if (this.m_InspectDamageType != DamagePacket.DamageType.All && this.m_InspectDamageType != DamagePacket.DamageType.None) + { + UILabel titleLabel = this.TitleLabel; + titleLabel.text = string.Concat(titleLabel.text, GUIUtils.Format(1731, new object[] { GUIUtils.GetDamageTypeString(this.m_InspectDamageType) })); + } + float single = characterStat1.CalcDT(this.m_InspectDamageType, false); + str1 = string.Concat(single.ToString("#0"), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetDamageThresholdEffectsInverted(characterStat1, this.m_InspectDamageType, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 158); + } + else if (this.m_InspectStat == StatusEffect.ModifiedStat.Damage) + { + this.TitleLabel.text = GUIUtils.GetText(428); + Equipment equipment2 = this.InspectionObject.GetComponent(); + if (!equipment2) + { + attackBase1 = null; + } + else + { + attackBase1 = (!this.m_InspectOffhand ? equipment2.PrimaryAttack : equipment2.SecondaryAttack); + } + AttackBase attackBase2 = attackBase1; + DamageInfo damageInfo = new DamageInfo(null, 0f, attackBase2); + characterStat1.AdjustDamageForUi(damageInfo); + str1 = string.Concat(damageInfo.GetAdjustedDamageRangeString(), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetDamageEffectsInverted(characterStat1, attackBase2, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 194); + } + else if (this.m_InspectStat == StatusEffect.ModifiedStat.Accuracy) + { + this.TitleLabel.text = GUIUtils.GetText(369); + Equipment component3 = this.InspectionObject.GetComponent(); + if (!component3) + { + attackBase = null; + } + else + { + attackBase = (!this.m_InspectOffhand ? component3.PrimaryAttack : component3.SecondaryAttack); + } + AttackBase attackBase3 = attackBase; + int num = characterStat1.CalculateAccuracyForUi(attackBase3, null, null); + str1 = string.Concat(num.ToString(), GUIUtils.Format(1731, new object[] { UICharacterSheetContentManager.GetAccuracyEffectsInverted(characterStat1, attackBase3, GUIUtils.Comma(), UIGlobalColor.LinkStyle.NONE) })); + this.FlavorTextLabel.text = StringTableManager.GetText(DatabaseString.StringTableType.Cyclopedia, 84); + } + } + string str2 = string.Concat(CharacterStats.Name(characterStat1), ": ", str1); + if (Glossary.Instance) + { + str2 = Glossary.Instance.AddUrlTags(str2); + } + this.EffectTextLabel.text = str2; + } + if (this.NoDescription) + { + this.FlavorTextLabel.text = string.Empty; + } + if (this.PencilSketch) + { + this.PencilSketch.SetPath(empty); + } + if (this.LargeImageTexture.mainTexture) + { + this.ImageTexture.mainTexture = null; + } + this.TitleSepAnchor.pixelOffset.y = 0f; + if (this.ImageTexture.mainTexture) + { + Transform iconBackground = this.IconBackground.transform; + Vector3 imageTexture = this.ImageTexture.transform.localScale; + Vector3 vector3 = this.ImageTexture.transform.localScale; + iconBackground.localScale = new Vector3(imageTexture.x + 12f, vector3.y + 12f, 1f); + if (this.TitleLabel.processedText.Contains("\n")) + { + this.TitleSepAnchor.pixelOffset.y = -(float)this.TitleLabel.font.size; + } + this.TitleSepAnchor.widgetContainer = this.IconBackground; + } + else if (!this.LargeImageTexture.mainTexture) + { + this.TitleSepAnchor.widgetContainer = this.IconBackground; + this.TitleSepAnchor.side = UIAnchor.Side.Left; + } + else + { + Vector3 largeImageTexture = this.LargeImageTexture.transform.localScale; + if (largeImageTexture.x > 78f) + { + float single1 = largeImageTexture.y / largeImageTexture.x; + largeImageTexture.x = 78f; + largeImageTexture.y = largeImageTexture.x * single1; + } + else if (largeImageTexture.y > 78f) + { + float single2 = largeImageTexture.x / largeImageTexture.y; + largeImageTexture.y = 78f; + largeImageTexture.x = largeImageTexture.y * single2; + } + this.LargeImageTexture.transform.localScale = largeImageTexture; + this.LargeImageBackground.transform.localScale = new Vector3(largeImageTexture.x + 12f, largeImageTexture.y + 12f, 1f); + if (this.TitleLabel.processedText.Contains("\n")) + { + this.TitleSepAnchor.pixelOffset.y = -(float)this.TitleLabel.font.size * 0.5f; + } + this.TitleSepAnchor.widgetContainer = this.LargeImageBackground; + } + this.ImageTexture.alpha = (!this.ImageTexture.mainTexture ? 0f : 1f); + this.LargeImageTexture.alpha = (!this.LargeImageTexture.mainTexture ? 0f : 1f); + this.IconBackground.alpha = (!this.ImageTexture.mainTexture ? 0f : 0.6666667f); + this.LargeImageBackground.alpha = (!this.LargeImageTexture.mainTexture ? 0f : 0.6666667f); + uIWidget = (this.ImageTexture.alpha <= 0f ? this.LargeImageTexture : this.ImageTexture); + this.TitleLabel.GetComponent().Widget = uIWidget; + this.EffectTextLabel.gameObject.SetActive(!string.IsNullOrEmpty(this.EffectTextLabel.text)); + UIWidgetUtils.UpdateDependents(base.gameObject, 2); + this.ButtonsGrid.Reposition(); + this.LayoutScrollArea.Reposition(); + this.DragPanel.ResetPosition(); + } + } +} \ No newline at end of file diff --git a/IEMod/Mods/Targeting/mod_AIController.cs b/IEMod/Mods/Targeting/mod_AIController.cs deleted file mode 100644 index 479d407..0000000 --- a/IEMod/Mods/Targeting/mod_AIController.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Patchwork.Attributes; - -namespace IEMod.Mods.Targeting -{ - [ModifiesType] - public abstract class mod_AIController : AIController - { - [ModifiesMember("GetOriginalTeam")] - public Team mod_GetOriginalTeam() - { - if (this.m_teamBeforeConfusion != null) - { - return this.m_teamBeforeConfusion; - } - if (this.m_stats != null) - { - /* MODIFIED CODE */ - mod_CharacterStats modStats = (mod_CharacterStats)this.m_stats; - Team cachedTeam = modStats.GetSwappedTeam(); - if(cachedTeam != null) - { - return cachedTeam; - } - /* END MODIFIED CODE */ - } - Faction component = this.StateManager.CurrentState.Owner.GetComponent(); - if (component == null) - { - return null; - } - return component.CurrentTeam; - } - } -} diff --git a/IEMod/Mods/Targeting/mod_AttackAOE.cs b/IEMod/Mods/Targeting/mod_AttackAOE.cs index 3c6a980..d42049a 100644 --- a/IEMod/Mods/Targeting/mod_AttackAOE.cs +++ b/IEMod/Mods/Targeting/mod_AttackAOE.cs @@ -1,4 +1,9 @@ -using System.Collections.Generic; +/* + * Friendly AOE was not affecting caster regardles of other intentions... + * Since the damage is done in mod_AdjustDamageDealt of mod_CharacterSats this will only affect the UI but messes up the whole thing otherwise... + * I think the virtual property is messing this up somehow, in the meantime I'm taking it out + +using System.Collections.Generic; using IEMod.Mods.Options; using Patchwork.Attributes; using UnityEngine; @@ -94,6 +99,12 @@ public virtual List FindAoeTargetsNew(GameObject caster, Vector3 par } return gameObjects; } + + } + +} + +Leftover from 2.0, from another modder /* public virtual List FindAoeTargetsNew(GameObject caster, Vector3 parentForward, Vector3 hitPosition, bool forUI) { List gameObjects = new List(); @@ -151,7 +162,4 @@ public virtual List FindAoeTargetsNew(GameObject caster, Vector3 par } return gameObjects; } - */ - } - -} \ No newline at end of file + */ \ No newline at end of file diff --git a/IEMod/Mods/Targeting/mod_AttackBase.cs b/IEMod/Mods/Targeting/mod_AttackBase.cs index d795363..2b1b967 100644 --- a/IEMod/Mods/Targeting/mod_AttackBase.cs +++ b/IEMod/Mods/Targeting/mod_AttackBase.cs @@ -184,10 +184,9 @@ public bool mod_IsValidTarget(GameObject target, GameObject caster, TargetType v return true; } if (caster != null) { - Faction faction1 = caster.GetComponent(); - if (faction1 != null && aIController != null) { + if (casterFaction != null && aIController != null) { Team originalTeam = aIController.GetOriginalTeam(); - if (originalTeam != null && originalTeam.GetRelationship(faction1.CurrentTeam) != Faction.Relationship.Hostile) { + if (originalTeam != null && originalTeam.GetRelationship(casterFaction.CurrentTeam) != Faction.Relationship.Hostile) { return true; } } diff --git a/IEMod/Mods/Targeting/mod_CharacterStats.cs b/IEMod/Mods/Targeting/mod_CharacterStats.cs index 7796c35..5d92b62 100644 --- a/IEMod/Mods/Targeting/mod_CharacterStats.cs +++ b/IEMod/Mods/Targeting/mod_CharacterStats.cs @@ -17,7 +17,15 @@ public class mod_CharacterStats : CharacterStats { /// [ModifiesMember(nameof(AdjustDamageDealt))] public void mod_AdjustDamageDealt(GameObject enemy, DamageInfo damage, bool testing) { - float statDamageHealMultiplier = this.StatDamageHealMultiplier; + float statDamageHealMultiplier; + if ((damage.Attack != null) && damage.Attack.IgnoreCharacterStats) + { + statDamageHealMultiplier = 1f; + } + else + { + statDamageHealMultiplier = this.StatDamageHealMultiplier; + } damage.DamageMult(statDamageHealMultiplier); if (!testing && this.OnPreDamageDealt != null) { @@ -88,6 +96,10 @@ public void mod_AdjustDamageDealt(GameObject enemy, DamageInfo damage, bool test if (!testing && damage.Immune) { UIHealthstringManager.Instance.ShowNotice(GUIUtils.GetText(2188), enemy, 1f); + if (this.IsPartyMember) + { + SoundSet.TryPlayVoiceEffectWithLocalCooldown(base.gameObject, SoundSet.SoundAction.TargetImmune, SoundSet.s_LongVODelay, false); + } } if (!testing && this.OnAdjustCritGrazeMiss != null) { @@ -149,34 +161,5 @@ public void mod_AdjustDamageDealt(GameObject enemy, DamageInfo damage, bool test this.OnPostDamageDealt(base.gameObject, new CombatEventArgs(damage, base.gameObject, enemy)); } } - - [NewMember] - public Team GetSwappedTeam() - { - StatusEffect cachedFactionEffect = null; - - for (int i = 0; i < this.m_statusEffects.Count; i++) - { - StatusEffect item = this.m_statusEffects[i]; - if (item.Applied) - { - if (item.AfflictionOrigin == AfflictionData.Charmed || item.AfflictionOrigin == AfflictionData.Dominated) - { - if (item.Params.AffectsStat == StatusEffect.ModifiedStat.SwapFaction) - { - cachedFactionEffect = item; - break; - } - } - } - } - - if(cachedFactionEffect == null) - { - return null; - } - - return cachedFactionEffect.GetCachedTeam(); - } - } + } } \ No newline at end of file diff --git a/IEMod/Mods/XPTable/mod_CharacterStats.cs b/IEMod/Mods/XPTable/mod_CharacterStats.cs index 8b6dca2..622d13d 100644 --- a/IEMod/Mods/XPTable/mod_CharacterStats.cs +++ b/IEMod/Mods/XPTable/mod_CharacterStats.cs @@ -14,7 +14,9 @@ public static int ExperienceNeededForLevelNew(int level) return (level - 1) * level * 500; case IEModOptions.NerfedXpTable.Increase25: return (level - 1) * level * 625; - case IEModOptions.NerfedXpTable.Increase50: + case IEModOptions.NerfedXpTable.Increase33: + return (level - 1) * level * 665; + case IEModOptions.NerfedXpTable.Increase50: return (level - 1) * level * 750; case IEModOptions.NerfedXpTable.Square: return (level - 1) * (level - 1) * 1000; @@ -32,7 +34,9 @@ public static int ExperienceNeededForNextLevelNew(int currentLevel) return currentLevel * (currentLevel + 1) * 500; case IEModOptions.NerfedXpTable.Increase25: return currentLevel * (currentLevel + 1) * 625; - case IEModOptions.NerfedXpTable.Increase50: + case IEModOptions.NerfedXpTable.Increase33: + return currentLevel * (currentLevel + 1) * 665; + case IEModOptions.NerfedXpTable.Increase50: return currentLevel * (currentLevel + 1) * 750; case IEModOptions.NerfedXpTable.Square: return currentLevel * currentLevel * 1000; diff --git a/IEMod/Mods/XpForMonsterKills/mod_BestiaryManager.cs b/IEMod/Mods/XpForMonsterKills/mod_BestiaryManager.cs new file mode 100644 index 0000000..c417787 --- /dev/null +++ b/IEMod/Mods/XpForMonsterKills/mod_BestiaryManager.cs @@ -0,0 +1,45 @@ +/* + * Not supported for the moment + * + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Patchwork.Attributes; +using IEMod.Mods.Options; + + +namespace IEMod.Mods.XpForMonsterKills +{ + [ModifiesType] + public class mod_BestiaryManager : BestiaryManager + { + [ModifiesMember("RecordKill")] + public new void RecordKill(BestiaryReference form) + { + this.m_TotalKills++; + if (!form) + { + return; + } + float killProportion = this.GetKillProportion(form); + int num = this.IndexOf(form); + if (num >= 0) + { + // Start of mod + // Prevent the killcount from increasing if the option is enabled + if (IEModOptions.XpForMonsterKills) { + this.m_KillCounts[num] = 1; + } + else { + this.m_KillCounts[num] ++; + } + // End of mod + } + + } + } +} + + */ \ No newline at end of file diff --git a/IEMod/Options/Definitions/IEModOptions.cs b/IEMod/Options/Definitions/IEModOptions.cs index 94a1dff..6b1f430 100644 --- a/IEMod/Options/Definitions/IEModOptions.cs +++ b/IEMod/Options/Definitions/IEModOptions.cs @@ -231,7 +231,7 @@ private static void OnAutosaveSettingChanged() { [Save] [Label("Improved AI")] [Description("Some improvements to the combat AI.")] - public static bool ImprovedAI; + public static bool ImprovedAI = false; [Save] [Label("Nerfed XP table")] @@ -399,10 +399,40 @@ public static bool EnableCustomUi { public static bool HideWeaponEffects; [Save] - [Label("Auto-Load Custom NPC Stats")] + [Label("Custom NPC Stats")] [Description("Applies the NPC stats located in Managed/iemod/customStats/custom after loading a map")] public static bool AutoLoadCustomStats; + [Save] + [Label("Enable Cheat Keys")] + [Description("Enables the use of the classic cheat keys and a few more, look at the readme for the available options")] + public static bool EnableCheatKeys; + + [Save] + [Label("Chanter Base Phrases")] + [Description("Gives the chanter the necessary amount of phrases to cast his highest level invocation when combat starts")] + public static bool ChanterPhraseCount; + + [Save] + [Label("Unlock All Inventory Slots")] + [Description("Unlocks every inventory slot for all characters. Clipping is expected for helmets on Godlike characters since it was never meant to happen. Also allows multiple pets if you equip them on different companions.")] + public static bool AllInventorySlots; + + [Save] + [Label("Make Cape/Cloak invisible")] + [Description("Removes the visuals from the capes and cloaks")] + public static bool CapesHidden; + + [Save] + [Label("Fog Thickness")] + [Description("Number between 0-1 that makes the fog lighter or thicker")] + public static float FogOpacity; + + [Save] + [Label("Spiritshift Toggle")] + [Description("Takes away the timer on Spiritshift, allows toggle instead")] + public static bool SpiritshiftToggleable; + private static AutoSaveSetting _autoSaveSetting; private static Dictionary _propertyCache; @@ -492,7 +522,10 @@ public enum NerfedXpTable { [Description("25% increase: 1250,3750,...82,500")] Increase25, - [Description("50% increase: 1500,4500,...99,000")] + [Description("33% increase: 1330,3990,...87,780")] + Increase33, + + [Description("50% increase: 1500,4500,...99,000")] Increase50, [Description("Square progression: 1000,4000,...121,000")] @@ -522,7 +555,10 @@ public enum PerEncounterSpells { [Description("Per-encounter spells gained at levels 4, 6, 8, 10, 12 and 14")] Levels_4_6_8_10_12_14, - [Description("All spells per-encounter")] + [Description("Per-encounter spells gained at levels 4, 8, 12 and 16")] + Levels_4_8_12_16, + + [Description("All spells per-encounter")] AllPerEncounter, [Description("All spells per-rest")] diff --git a/IEMod/Options/UI/mod_UIOptionsManager.cs b/IEMod/Options/UI/mod_UIOptionsManager.cs index 03c4a67..741247c 100644 --- a/IEMod/Options/UI/mod_UIOptionsManager.cs +++ b/IEMod/Options/UI/mod_UIOptionsManager.cs @@ -86,6 +86,22 @@ public class Mod4_MappedInput { private QuickCheckbox _hideWeaponEffects; [NewMember] private QuickCheckbox _autoLoadCustomStats; + [NewMember] + private QuickCheckbox _enableCheatKeys; + [NewMember] + private QuickCheckbox _chanterPhraseCount; + [NewMember] + private QuickCheckbox _capesHidden; + [NewMember] + private QuickCheckbox _allInventorySlots; + + /*[NewMember] + private QuickCheckbox _spiritShiftToggle; + */ + /* + [NewMember] + private QuickCheckbox _xpForMonsterKills; + */ [NewMember] private QuickCheckbox _disableBackerDialog; @@ -234,7 +250,12 @@ private void mod_Start() { _autoLoadCustomStats = quickFactory.Checkbox(() => IEModOptions.AutoLoadCustomStats); _autoLoadCustomStats.LocalPosition = column1Top.Plus(y: -270); - + + _enableCheatKeys = quickFactory.Checkbox(() => IEModOptions.EnableCheatKeys); + _enableCheatKeys.LocalPosition = column1Top.Plus(y: -300); + + _chanterPhraseCount = quickFactory.Checkbox(() => IEModOptions.ChanterPhraseCount); + _chanterPhraseCount.LocalPosition = column2Top.Plus(y: -300); var centerCmbTop = new Vector3(-80, -40, 0); const int cmbLabelWidth = 300; @@ -276,6 +297,12 @@ private void mod_Start() { _maxAdventurersCmb.LabelWidth = cmbLabelWidth; _maxAdventurersCmb.Transform.localPosition = centerCmbTop.Plus(y: -180); + _capesHidden = quickFactory.Checkbox(() => IEModOptions.CapesHidden); + _capesHidden.LocalPosition = column1Top.Plus(y: -327); + + _allInventorySlots = quickFactory.Checkbox(() => IEModOptions.AllInventorySlots); + _allInventorySlots.LocalPosition = column2Top.Plus(y: -327); + // Pallegina dispositions mod page quickFactory.CurrentParent = ieModDisposition.Transform; diff --git a/IEMod/Options/UI/mod_UIWindowManager.cs b/IEMod/Options/UI/mod_UIWindowManager.cs index 8c9ce70..93f1fd6 100644 --- a/IEMod/Options/UI/mod_UIWindowManager.cs +++ b/IEMod/Options/UI/mod_UIWindowManager.cs @@ -1,3 +1,4 @@ + using Patchwork.Attributes; namespace IEMod.Mods.Options { @@ -44,11 +45,22 @@ public void WindowHiddenNew(UIHudWindow window, bool unsuspend) flag5 |= window3.ClickOffCloses && !window3.DimsBackground; } } - if (window.EatsKeyInput && (CameraControl.Instance != null)) - { - CameraControl.Instance.EnablePlayerControl(true); - } - if (!flag && (InGameHUD.Instance != null)) + if (this.m_WindowHasInputDisabled && !flag3) + { + this.m_WindowHasInputDisabled = false; + if (CameraControl.Instance) + { + CameraControl.Instance.EnablePlayerControl(true); + } + } + //Previous Bug ? + /* + if (window.EatsKeyInput && (CameraControl.Instance != null)) + { + CameraControl.Instance.EnablePlayerControl(true); + } + */ + if (!flag && (InGameHUD.Instance != null)) { InGameHUD.Instance.HidePause = false; } diff --git a/IEMod/Properties/IEMod.Version.cs b/IEMod/Properties/IEMod.Version.cs index 6620c6a..d341569 100644 --- a/IEMod/Properties/IEMod.Version.cs +++ b/IEMod/Properties/IEMod.Version.cs @@ -7,6 +7,6 @@ namespace IEMod { [NewType] public static class IEModVersion { public const string StupidVersion = "5.2.2"; - public const string Version = "5.2.2-beta"; + public const string Version = "3.06.1 DLC"; } } \ No newline at end of file diff --git a/PoE References/3.01/Assembly-CSharp-firstpass.dll b/PoE References/3.01/Assembly-CSharp-firstpass.dll new file mode 100644 index 0000000..4306d6d Binary files /dev/null and b/PoE References/3.01/Assembly-CSharp-firstpass.dll differ diff --git a/PoE References/3.01/Assembly-CSharp.dll b/PoE References/3.01/Assembly-CSharp.dll new file mode 100644 index 0000000..c2fdf91 Binary files /dev/null and b/PoE References/3.01/Assembly-CSharp.dll differ diff --git a/PoE References/3.01/Assembly-UnityScript-firstpass.dll b/PoE References/3.01/Assembly-UnityScript-firstpass.dll new file mode 100644 index 0000000..a99e895 Binary files /dev/null and b/PoE References/3.01/Assembly-UnityScript-firstpass.dll differ diff --git a/PoE References/3.01/OEICommon.dll b/PoE References/3.01/OEICommon.dll new file mode 100644 index 0000000..8d7dc99 Binary files /dev/null and b/PoE References/3.01/OEICommon.dll differ diff --git a/PoE References/3.01/OEIFormats.dll b/PoE References/3.01/OEIFormats.dll new file mode 100644 index 0000000..07df62d Binary files /dev/null and b/PoE References/3.01/OEIFormats.dll differ diff --git a/PoE References/3.01/UnityEngine.dll b/PoE References/3.01/UnityEngine.dll new file mode 100644 index 0000000..91fda07 Binary files /dev/null and b/PoE References/3.01/UnityEngine.dll differ diff --git a/PoE References/3.02/Assembly-CSharp-firstpass.dll b/PoE References/3.02/Assembly-CSharp-firstpass.dll new file mode 100644 index 0000000..7e63655 Binary files /dev/null and b/PoE References/3.02/Assembly-CSharp-firstpass.dll differ diff --git a/PoE References/3.02/Assembly-CSharp.dll b/PoE References/3.02/Assembly-CSharp.dll new file mode 100644 index 0000000..383056a Binary files /dev/null and b/PoE References/3.02/Assembly-CSharp.dll differ diff --git a/PoE References/3.02/Assembly-UnityScript-firstpass.dll b/PoE References/3.02/Assembly-UnityScript-firstpass.dll new file mode 100644 index 0000000..a7cb302 Binary files /dev/null and b/PoE References/3.02/Assembly-UnityScript-firstpass.dll differ diff --git a/PoE References/3.02/OEICommon.dll b/PoE References/3.02/OEICommon.dll new file mode 100644 index 0000000..a03364a Binary files /dev/null and b/PoE References/3.02/OEICommon.dll differ diff --git a/PoE References/3.02/OEIFormats.dll b/PoE References/3.02/OEIFormats.dll new file mode 100644 index 0000000..20201a8 Binary files /dev/null and b/PoE References/3.02/OEIFormats.dll differ diff --git a/PoE References/3.02/UnityEngine.dll b/PoE References/3.02/UnityEngine.dll new file mode 100644 index 0000000..872aad8 Binary files /dev/null and b/PoE References/3.02/UnityEngine.dll differ diff --git a/PoE References/3.03/Assembly-CSharp-firstpass.dll b/PoE References/3.03/Assembly-CSharp-firstpass.dll new file mode 100644 index 0000000..4306d6d Binary files /dev/null and b/PoE References/3.03/Assembly-CSharp-firstpass.dll differ diff --git a/PoE References/3.03/Assembly-CSharp.dll b/PoE References/3.03/Assembly-CSharp.dll new file mode 100644 index 0000000..60708d2 Binary files /dev/null and b/PoE References/3.03/Assembly-CSharp.dll differ diff --git a/PoE References/3.03/Assembly-UnityScript-firstpass.dll b/PoE References/3.03/Assembly-UnityScript-firstpass.dll new file mode 100644 index 0000000..a99e895 Binary files /dev/null and b/PoE References/3.03/Assembly-UnityScript-firstpass.dll differ diff --git a/PoE References/3.03/OEICommon.dll b/PoE References/3.03/OEICommon.dll new file mode 100644 index 0000000..8d7dc99 Binary files /dev/null and b/PoE References/3.03/OEICommon.dll differ diff --git a/PoE References/3.03/OEIFormats.dll b/PoE References/3.03/OEIFormats.dll new file mode 100644 index 0000000..07df62d Binary files /dev/null and b/PoE References/3.03/OEIFormats.dll differ diff --git a/PoE References/3.03/UnityEngine.dll b/PoE References/3.03/UnityEngine.dll new file mode 100644 index 0000000..91fda07 Binary files /dev/null and b/PoE References/3.03/UnityEngine.dll differ diff --git a/PoE References/3.04/Assembly-CSharp.dll b/PoE References/3.04/Assembly-CSharp.dll new file mode 100644 index 0000000..cb88b0c Binary files /dev/null and b/PoE References/3.04/Assembly-CSharp.dll differ diff --git a/PoE References/3.05/Assembly-CSharp.dll b/PoE References/3.05/Assembly-CSharp.dll new file mode 100644 index 0000000..daa6448 Binary files /dev/null and b/PoE References/3.05/Assembly-CSharp.dll differ diff --git a/PoE References/3.06/Assembly-CSharp.dll b/PoE References/3.06/Assembly-CSharp.dll new file mode 100644 index 0000000..8fb0044 Binary files /dev/null and b/PoE References/3.06/Assembly-CSharp.dll differ diff --git a/PoE References/Assembly-CSharp-firstpass.dll b/PoE References/Assembly-CSharp-firstpass.dll index cfe749d..d6432e6 100644 Binary files a/PoE References/Assembly-CSharp-firstpass.dll and b/PoE References/Assembly-CSharp-firstpass.dll differ diff --git a/PoE References/Assembly-CSharp.dll b/PoE References/Assembly-CSharp.dll index 9b87eb4..8fb0044 100644 Binary files a/PoE References/Assembly-CSharp.dll and b/PoE References/Assembly-CSharp.dll differ diff --git a/PoE References/Assembly-UnityScript-firstpass.dll b/PoE References/Assembly-UnityScript-firstpass.dll index e538f23..818cdef 100644 Binary files a/PoE References/Assembly-UnityScript-firstpass.dll and b/PoE References/Assembly-UnityScript-firstpass.dll differ diff --git a/PoE References/OEICommon.dll b/PoE References/OEICommon.dll index 2a7c80f..aafd45a 100644 Binary files a/PoE References/OEICommon.dll and b/PoE References/OEICommon.dll differ diff --git a/PoE References/OEIFormats.dll b/PoE References/OEIFormats.dll index 4969d1a..25f02d4 100644 Binary files a/PoE References/OEIFormats.dll and b/PoE References/OEIFormats.dll differ diff --git a/PoE References/UnityEngine.dll b/PoE References/UnityEngine.dll index a58a6f9..bdc2e06 100644 Binary files a/PoE References/UnityEngine.dll and b/PoE References/UnityEngine.dll differ diff --git a/modules/BonusSpells.pw/BonusSpells.pw.csproj b/modules/BonusSpells.pw/BonusSpells.pw.csproj new file mode 100644 index 0000000..55e22d6 --- /dev/null +++ b/modules/BonusSpells.pw/BonusSpells.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {A0BF71D7-7B01-4024-8FD2-D889351F91D8} + Library + Properties + BonusSpells.pw + BonusSpells.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/BonusSpells.pw/Properties/AssemblyInfo.cs b/modules/BonusSpells.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..cc576de --- /dev/null +++ b/modules/BonusSpells.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,34 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("a0bf71d7-7b01-4024-8fd2-d889351f91d8")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("Bonus Spells Mod")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace BonusSpells +{ +} \ No newline at end of file diff --git a/modules/BonusSpells.pw/main.cs b/modules/BonusSpells.pw/main.cs new file mode 100644 index 0000000..0ebbd32 --- /dev/null +++ b/modules/BonusSpells.pw/main.cs @@ -0,0 +1,52 @@ +using Patchwork.Attributes; +using UnityEngine; + +namespace BonusSpells.pw +{ + [ModifiesType] + public class mod_SpellMax : SpellMax + { + [ModifiesMember("GetSpellCastMax")] + public int GetSpellCastMaxNew(GameObject caster, int spellLevel) + { + int num = 2147483647; + //bool calcBonusSpells = IEModOptions.BonusSpellsPerDay; + + if (caster != null && spellLevel >= 1) + { + CharacterStats component = caster.GetComponent(); + if (component != null) + { + num = this.SpellCastMaxLookup(component.CharacterClass, component.ScaledLevel, spellLevel); + if (num == 2147483647) + { + if (CharacterStats.IsPlayableClass(component.CharacterClass)) + { + PartyMemberAI component2 = caster.GetComponent(); + if (component2 != null) + { + num = 0; + } + } + } + else if (num == -1) + { + num = 2147483647; + } + if (num > 0 && num < 2147483647) + { + int bonusSpells = 0; + + for (int c = 14 + spellLevel; c <= component.Intellect; c += 4) + { + ++bonusSpells; + } + + num += component.SpellCastBonus[spellLevel - 1] + bonusSpells; + } + } + } + return num; + } + } +} \ No newline at end of file diff --git a/modules/BonusSpells.pw/modType.cs b/modules/BonusSpells.pw/modType.cs new file mode 100644 index 0000000..747018c --- /dev/null +++ b/modules/BonusSpells.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace BonusSpells +{ + [PatchInfo] + public class BSModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "Bonus Spells Mod"; + } +} \ No newline at end of file diff --git a/modules/ConsoleCommands.pw/ConsoleCommands.pw.csproj b/modules/ConsoleCommands.pw/ConsoleCommands.pw.csproj new file mode 100644 index 0000000..f6d87e1 --- /dev/null +++ b/modules/ConsoleCommands.pw/ConsoleCommands.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {76927E3B-9CAF-41EA-8199-7A9E472A86D1} + Library + Properties + ConsoleCommands.pw + ConsoleCommands.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/ConsoleCommands.pw/Properties/AssemblyInfo.cs b/modules/ConsoleCommands.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b653b19 --- /dev/null +++ b/modules/ConsoleCommands.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c08cc9c0-ee0c-4edf-8121-86026b8553c0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("ConsoleCommands")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace ConsoleCommands +{ +} + diff --git a/modules/ConsoleCommands.pw/main.cs b/modules/ConsoleCommands.pw/main.cs new file mode 100644 index 0000000..b3dc086 --- /dev/null +++ b/modules/ConsoleCommands.pw/main.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Xml; +using Patchwork.Attributes; +using UnityEngine; + +namespace ConsoleCommands.pw +{ + [ModifiesType("CommandLine")] + public class mod_CommandLine + { + [NewMember] + public static void CheckAchievements() + { + if (AchievementTracker.Instance.DisableAchievements == true) + { + global::Console.AddMessage("Your achievements were previously disabled for this playthrough.", Color.red); + global::Console.AddMessage("To reactivate them, type: ReenableAchievements"); + } + else + global::Console.AddMessage("Your achievements are doing fine.", Color.green); + } + } + /* + [ModifiesType("CommandLineRun")] + public class mod_CommandLineRun + { + // TJH 8/26/2015 - It's no longer necessary to override RunCommand. We can just make sure all methods are always + // available and not treated as cheats + + [ModifiesMember("MethodIsAvailable")] + public static bool MethodIsAvailable(MethodInfo method) + { + return true; + } + + } + */ + + [ModifiesType("CommandLineRun")] + public class mod_CommandLineRun + { + [ModifiesMember("RunCommand")] + public static void RunCommand(string command) + { + object[] objArray; + if (string.IsNullOrEmpty(command)) + { + return; + } + if (command.ToLower() == "runcommand") + { + return; + } + IList strs = StringUtility.CommandLineStyleSplit(command); + bool flag = false; + bool flag1 = false; + string empty = string.Empty; + IEnumerator enumerator = CommandLineRun.GetAllMethods().GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + MethodInfo current = enumerator.Current; + if (string.Compare(current.Name, strs[0], true) != 0) + { + continue; + } + /* + if (!CommandLineRun.MethodIsAvailable(current)) + { + flag = true; + } + */ + else if (!CommandLineRun.FillMethodParams(current, strs, out objArray, out empty)) + { + flag1 = true; + } + else + { + current.Invoke(null, objArray); + return; + } + } + } + finally + { + if (enumerator == null) + { + } + enumerator.Dispose(); + } + if (flag1) + { + Console.AddMessage(string.Concat("Command or script '", strs[0], "' parameter error: ", empty), Color.yellow); + } + else if (!flag) + { + Console.AddMessage(string.Concat("No command or script named '", strs[0], "' exists."), Color.yellow); + } + else + { + Console.AddMessage(string.Concat("The command or script '", strs[0], "' is not available at this time."), Color.yellow); + } + } + } +} diff --git a/modules/ConsoleCommands.pw/modType.cs b/modules/ConsoleCommands.pw/modType.cs new file mode 100644 index 0000000..8d40387 --- /dev/null +++ b/modules/ConsoleCommands.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace ConsoleCommands +{ + [PatchInfo] + public class ConsoleCommandsModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "ConsoleCommands"; + } +} \ No newline at end of file diff --git a/modules/FastSneak.pw/FastSneak.pw.csproj b/modules/FastSneak.pw/FastSneak.pw.csproj new file mode 100644 index 0000000..c5b8b12 --- /dev/null +++ b/modules/FastSneak.pw/FastSneak.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {1FAB0C91-9AA4-458A-8485-EE1D0140672E} + Library + Properties + FastSneak.pw + FastSneak.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/FastSneak.pw/Properties/AssemblyInfo.cs b/modules/FastSneak.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d83512e --- /dev/null +++ b/modules/FastSneak.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,34 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("1fab0c91-9aa4-458a-8485-ee1d0140672e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("Fast Sneak Mod")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace FastSneak +{ +} diff --git a/modules/FastSneak.pw/main.cs b/modules/FastSneak.pw/main.cs new file mode 100644 index 0000000..7cbdde2 --- /dev/null +++ b/modules/FastSneak.pw/main.cs @@ -0,0 +1,174 @@ +using System; +using AI.Achievement; +using AI.Player; +using Patchwork.Attributes; +using UnityEngine; +using Attack = AI.Achievement.Attack; + +namespace FastSneak.pw +{ + [ModifiesType] + public class mod_PartyMemberAI : PartyMemberAI + { + [MemberAlias("Update", typeof(AIController), AliasCallMode.NonVirtual)] + private void BaseUpdate() + { + //A call to this method will be translated to a "base.Update()" call in the target assembly. + } + + [ModifiesMember("Update")] + // PartyMemberAI + public void UpdateNew() + { + if (this.m_mover != null && this.m_mover.AIController == null) + { + this.m_mover.AIController = this; + } + if (this.m_instructionTimer > 0f) + { + PartyMemberAI mInstructionTimer = this; + mInstructionTimer.m_instructionTimer = mInstructionTimer.m_instructionTimer - Time.deltaTime; + } + if (this.m_instructions != null) + { + for (int i = 0; i < this.m_instructions.Count; i++) + { + this.m_instructions[i].Update(); + } + } + if (GameState.s_playerCharacter != null && base.gameObject == GameState.s_playerCharacter.gameObject && PartyMemberAI.DebugParty) + { + UIDebug.Instance.SetText("Party Debug", PartyMemberAI.GetPartyDebugOutput(), Color.cyan); + UIDebug.Instance.SetTextPosition("Party Debug", 0.95f, 0.95f, UIWidget.Pivot.TopRight); + } + if (this.m_destinationCircleState != null) + { + if (!base.StateManager.IsStateInStack(this.m_destinationCircleState)) + { + this.m_destinationCircleState = null; + this.HideDestination(); + } + else + { + this.ShowDestination(this.m_destinationCirclePosition); + } + } + if (!(GameState.s_playerCharacter != null) || !GameState.s_playerCharacter.RotatingFormation || !this.Selected) + { + this.HideDestinationTarget(); + } + else + { + this.ShowDestinationTarget(this.m_desiredFormationPosition); + } + if (this.m_revealer == null) + { + this.CreateFogRevealer(); + } + else + { + this.m_revealer.WorldPos = base.gameObject.transform.position; + this.m_revealer.RequiresRefresh = false; + } + if (GameState.Paused) + { + base.CheckForNullEngagements(); + if (this.m_ai != null) + { + this.m_ai.Update(); + } + return; + } + if (this.m_ai == null) + { + return; + } + if (GameState.Option.AutoPause.IsEventSet(AutoPauseOptions.PauseEvent.EnemySpotted)) + { + this.UpdateEnemySpotted(); + } + if (this.QueuedAbility != null && this.QueuedAbility.Ready) + { + AIState currentState = this.m_ai.CurrentState; + Consumable component = this.QueuedAbility.GetComponent(); + if (!(component != null) || !component.IsFoodDrugOrPotion) + { + Attack attack = currentState as Attack; + TargetedAttack targetedAttack = currentState as TargetedAttack; + if (this.QueuedAbility.Passive || attack == null && targetedAttack == null) + { + this.QueuedAbility.Activate(currentState.Owner); + } + else if (targetedAttack == null || !this.QueuedAbility.UsePrimaryAttack && !this.QueuedAbility.UseFullAttack) + { + Ability queuedAbility = AIStateManager.StatePool.Allocate(); + queuedAbility.QueuedAbility = this.QueuedAbility; + if (attack == null) + { + base.StateManager.PushState(queuedAbility); + } + else if (!attack.CanCancel) + { + base.StateManager.QueueStateAtTop(queuedAbility); + } + else + { + attack.OnCancel(); + base.StateManager.PopCurrentState(); + base.StateManager.PushState(queuedAbility); + } + } + } + else + { + ConsumePotion queuedState = this.m_ai.QueuedState as ConsumePotion; + if (!(currentState is ConsumePotion) && (queuedState == null || currentState.Priority < 1)) + { + ConsumePotion animationVariation = AIStateManager.StatePool.Allocate(); + base.StateManager.PushState(animationVariation); + animationVariation.Ability = this.QueuedAbility; + animationVariation.ConsumeAnimation = component.AnimationVariation; + AttackBase primaryAttack = this.GetPrimaryAttack(); + if (!(primaryAttack is AttackMelee) || !(primaryAttack as AttackMelee).Unarmed) + { + animationVariation.HiddenObjects = primaryAttack.GetComponentsInChildren(); + } + } + } + this.QueuedAbility = null; + } + BaseUpdate(); + if (GameState.IsLoading || GameState.s_playerCharacter == null) + { + return; + } + if (this.m_alphaControl != null && this.m_alphaControl.Alpha < 1.401298E-45f) + { + this.m_alphaControl.Alpha = 1f; + } + if (this.m_mover != null && !GameState.InCombat) + { + bool fastSneakActive = false; + bool canSeeEnemy = false; + bool flag = true; + for (int i = 0; i < PartyMemberAI.PartyMembers.Length; ++i) + { + var p = PartyMemberAI.PartyMembers[i]; + if (p != null && p.m_enemySpotted) + { + canSeeEnemy = true; + break; + } + } + + if (!canSeeEnemy) + fastSneakActive = true; + + if (Stealth.IsInStealthMode(base.gameObject) && !fastSneakActive) + flag = false; + + this.m_mover.UseCustomSpeed((flag ? 4f : 2f)); + } + } + } +} \ No newline at end of file diff --git a/modules/FastSneak.pw/modType.cs b/modules/FastSneak.pw/modType.cs new file mode 100644 index 0000000..6538114 --- /dev/null +++ b/modules/FastSneak.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace FastSneak +{ + [PatchInfo] + public class FSModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "Fast Sneak Mod"; + } +} \ No newline at end of file diff --git a/modules/HideWeaponEffects.pw/HideWeaponEffects.pw.csproj b/modules/HideWeaponEffects.pw/HideWeaponEffects.pw.csproj new file mode 100644 index 0000000..0c2af18 --- /dev/null +++ b/modules/HideWeaponEffects.pw/HideWeaponEffects.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {30DA7165-69E3-467A-B3B8-3EFFB595D1F8} + Library + Properties + HideWeaponEffects.pw + HideWeaponEffects.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/HideWeaponEffects.pw/Properties/AssemblyInfo.cs b/modules/HideWeaponEffects.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..49a9367 --- /dev/null +++ b/modules/HideWeaponEffects.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c08cc9c0-ee0c-4edf-8121-86026b8553c0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("Hide Weapon Effects")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace HideWeaponEffects +{ +} + diff --git a/modules/HideWeaponEffects.pw/main.cs b/modules/HideWeaponEffects.pw/main.cs new file mode 100644 index 0000000..decfa43 --- /dev/null +++ b/modules/HideWeaponEffects.pw/main.cs @@ -0,0 +1,25 @@ +using Patchwork.Attributes; +using UnityEngine; +using System.Collections.Generic; + +namespace HideWeaponEffects.pw +{ + [ModifiesType] + public class mod_ItemModComponent : ItemModComponent + { + [ModifiesMember("ApplyEquipFX")] + /// + /// Only difference here is the addition of a condition that checks if the checkbox in the IEmod options is disabled + /// before adding the effect to the list + /// + /// Update since module form... Now only removes the code to prevent effect from applying + /// + /// + public void ApplyEquipFXNew(Transform t, List fx_list) + { + if (this.m_mod.OnEquipVisualEffect != null ) //Added comparison here + { + } + } + } +} diff --git a/modules/HideWeaponEffects.pw/modType.cs b/modules/HideWeaponEffects.pw/modType.cs new file mode 100644 index 0000000..adec8ff --- /dev/null +++ b/modules/HideWeaponEffects.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace HideWeaponEffects +{ + [PatchInfo] + public class HideWeaponEffectsModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "Hide Weapon Effects"; + } +} \ No newline at end of file diff --git a/modules/LootShuffler.pw/LootShuffler.pw.csproj b/modules/LootShuffler.pw/LootShuffler.pw.csproj new file mode 100644 index 0000000..ec6d6af --- /dev/null +++ b/modules/LootShuffler.pw/LootShuffler.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {08358A49-0FC5-435B-8BD6-927973E5CEB3} + Library + Properties + LootShuffler.pw + LootShuffler.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/LootShuffler.pw/Properties/AssemblyInfo.cs b/modules/LootShuffler.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c17e7fa --- /dev/null +++ b/modules/LootShuffler.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("08358a49-0fc5-435b-8bd6-927973e5ceb3")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("Loot Shuffler Mod")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace LootShuffler +{ +} diff --git a/modules/LootShuffler.pw/main.cs b/modules/LootShuffler.pw/main.cs new file mode 100644 index 0000000..eadaa38 --- /dev/null +++ b/modules/LootShuffler.pw/main.cs @@ -0,0 +1,14 @@ +using Patchwork.Attributes; + +namespace LootShuffler.pw +{ + [ModifiesType] + public class mod_Loot : Loot + { + [ModifiesMember("SetSeed", ModificationScope.Body)] + private void SetSeedNew() + { + ResetSeed(); + } + } +} \ No newline at end of file diff --git a/modules/LootShuffler.pw/modType.cs b/modules/LootShuffler.pw/modType.cs new file mode 100644 index 0000000..5952290 --- /dev/null +++ b/modules/LootShuffler.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace LootShuffler +{ + [PatchInfo] + public class LSModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "Loot Shuffler Mod"; + } +} \ No newline at end of file diff --git a/modules/SpellsPerEncounter.pw/Properties/AssemblyInfo.cs b/modules/SpellsPerEncounter.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a563c09 --- /dev/null +++ b/modules/SpellsPerEncounter.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c08cc9c0-ee0c-4edf-8121-86026b8553c0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("SpellsPerEncounter")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace SpellsPerEncounter +{ +} + diff --git a/modules/SpellsPerEncounter.pw/SpellsPerEncounter.pw.csproj b/modules/SpellsPerEncounter.pw/SpellsPerEncounter.pw.csproj new file mode 100644 index 0000000..191d7e4 --- /dev/null +++ b/modules/SpellsPerEncounter.pw/SpellsPerEncounter.pw.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {58BF54CB-4583-44F2-8B87-3264BBDA721D} + Library + Properties + SpellsPerEncounter.pw + SpellsPerEncounter.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + ..\..\PoE References\UnityEngine.dll + + + + + \ No newline at end of file diff --git a/modules/SpellsPerEncounter.pw/main.cs b/modules/SpellsPerEncounter.pw/main.cs new file mode 100644 index 0000000..d8b54c3 --- /dev/null +++ b/modules/SpellsPerEncounter.pw/main.cs @@ -0,0 +1,80 @@ +using Patchwork.Attributes; +using UnityEngine; +using System; +using System.Collections.Generic; + +namespace SpellsPerEncounter.pw +{ + [ModifiesType] + public class mod_CharacterStats : CharacterStats + { + [ModifiesMember("HandleGameUtilitiesOnCombatEnd")] + private void HandleGameUtilitiesOnCombatEnd(object sender, EventArgs e) + { + try + { + this.m_MarkersAppliedThisCombat.Clear(); + for (int i = this.m_statusEffects.Count - 1; i >= 0; i--) + { + if (this.m_statusEffects[i].LastsUntilCombatEnds) + { + this.ClearEffect(this.m_statusEffects[i]); + } + else if (this.m_statusEffects[i].AbilityOrigin && this.m_statusEffects[i].AbilityOrigin.CombatOnly) + { + this.ClearEffect(this.m_statusEffects[i]); + } + else if (this.m_statusEffects[i].IsDOT) + { + this.ClearEffect(this.m_statusEffects[i]); + } + } + IEnumerator enumerator = this.ActiveAbilities.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + GenericAbility current = enumerator.Current; + if (current == null) + { + continue; + } + current.HandleGameUtilitiesOnCombatEnd(sender, e); + } + } + finally + { + if (enumerator == null) + { + } + enumerator.Dispose(); + } + if (base.gameObject != null) + { + int num = 0; + while (num < 8) + { + num++; + } + } + this.PlayPartyFatigueSoundIfAble(); + + //Start of mod + for (int i = 0; i < (int)this.SpellCastCount.Length; i++) + { + this.SpellCastCount[i] = 0; + } + //End of mod + } + catch (Exception exception) + { + Debug.LogException(exception, this); + if (UIDebug.Instance) + { + UIDebug.Instance.LogOnScreenWarning("Exception in CharacterStats.HandleGameUtilitiesOnCombatEnd! Please Fix!", UIDebug.Department.Programming, 10f); + } + } + } + + } +} diff --git a/modules/SpellsPerEncounter.pw/modType.cs b/modules/SpellsPerEncounter.pw/modType.cs new file mode 100644 index 0000000..e67a709 --- /dev/null +++ b/modules/SpellsPerEncounter.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace SpellsPerEncounter +{ + [PatchInfo] + public class SpellsPerEncounter : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "Spells Per Encounter"; + } +} \ No newline at end of file diff --git a/modules/XPnerf25.pw/Properties/AssemblyInfo.cs b/modules/XPnerf25.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..69ef2ea --- /dev/null +++ b/modules/XPnerf25.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,34 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("61970529-d29d-4de7-a40f-fbee2e829df6")] +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("25% XP Nerf")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace XPNerf25 +{ +} diff --git a/modules/XPnerf25.pw/XPnerf25.pw.csproj b/modules/XPnerf25.pw/XPnerf25.pw.csproj new file mode 100644 index 0000000..b5f7e10 --- /dev/null +++ b/modules/XPnerf25.pw/XPnerf25.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {61970529-D29D-4DE7-A40F-FBEE2E829DF6} + Library + Properties + XPnerf25.pw + XPnerf25.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/XPnerf25.pw/main.cs b/modules/XPnerf25.pw/main.cs new file mode 100644 index 0000000..6cff9ca --- /dev/null +++ b/modules/XPnerf25.pw/main.cs @@ -0,0 +1,22 @@ +using Patchwork.Attributes; + +namespace XPNerf25.pw +{ + [ModifiesType] + public class mod_CharacterStats : CharacterStats + { + //using dropdown box + [ModifiesMember("ExperienceNeededForLevel")] + public static int ExperienceNeededForLevelNew(int level) + { + return (level - 1) * level * 625; + } + + [ModifiesMember("ExperienceNeededForNextLevel")] + public static int ExperienceNeededForNextLevelNew(int currentLevel) + { + return currentLevel * (currentLevel + 1) * 625; + } + + } +} diff --git a/modules/XPnerf25.pw/modType.cs b/modules/XPnerf25.pw/modType.cs new file mode 100644 index 0000000..e4066bd --- /dev/null +++ b/modules/XPnerf25.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace XPNerf25 +{ + [PatchInfo] + public class XPNModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "25% XP Nerf"; + } +} \ No newline at end of file diff --git a/modules/XPnerf50.pw/Properties/AssemblyInfo.cs b/modules/XPnerf50.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1c1c5ba --- /dev/null +++ b/modules/XPnerf50.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c3119abe-f696-4aa3-a257-40c296dd59e4")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("50% XP Nerf")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace XPNerf50 +{ +} + diff --git a/modules/XPnerf50.pw/XPnerf50.pw.csproj b/modules/XPnerf50.pw/XPnerf50.pw.csproj new file mode 100644 index 0000000..67d0ba4 --- /dev/null +++ b/modules/XPnerf50.pw/XPnerf50.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {C3119ABE-F696-4AA3-A257-40C296DD59E4} + Library + Properties + XPnerf50.pw + XPnerf50.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/XPnerf50.pw/main.cs b/modules/XPnerf50.pw/main.cs new file mode 100644 index 0000000..5d468a7 --- /dev/null +++ b/modules/XPnerf50.pw/main.cs @@ -0,0 +1,22 @@ +using Patchwork.Attributes; + +namespace XPNerf50.pw +{ + [ModifiesType] + public class mod_CharacterStats : CharacterStats + { + //using dropdown box + [ModifiesMember("ExperienceNeededForLevel")] + public static int ExperienceNeededForLevelNew(int level) + { + return (level - 1) * level * 750; + } + + [ModifiesMember("ExperienceNeededForNextLevel")] + public static int ExperienceNeededForNextLevelNew(int currentLevel) + { + return currentLevel * (currentLevel + 1) * 750; + } + + } +} diff --git a/modules/XPnerf50.pw/modType.cs b/modules/XPnerf50.pw/modType.cs new file mode 100644 index 0000000..e25a033 --- /dev/null +++ b/modules/XPnerf50.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace XPNerf50 +{ + [PatchInfo] + public class XPNModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "50% XP Nerf"; + } +} \ No newline at end of file diff --git a/modules/XPnerfSquare.pw/Properties/AssemblyInfo.cs b/modules/XPnerfSquare.pw/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2f9cd80 --- /dev/null +++ b/modules/XPnerfSquare.pw/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Patchwork.Attributes; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: PatchAssembly] +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c08cc9c0-ee0c-4edf-8121-86026b8553c0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyTitle("50% XP Nerf")] +[assembly: AssemblyDescription("A mod for Pillars of Eternity.")] + +namespace XPNerfSquare +{ +} + diff --git a/modules/XPnerfSquare.pw/XPnerfSquare.pw.csproj b/modules/XPnerfSquare.pw/XPnerfSquare.pw.csproj new file mode 100644 index 0000000..a097af6 --- /dev/null +++ b/modules/XPnerfSquare.pw/XPnerfSquare.pw.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {C08CC9C0-EE0C-4EDF-8121-86026B8553C0} + Library + Properties + XPnerfSquare.pw + XPnerfSquare.pw + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\PoE References\Assembly-CSharp.dll + + + ..\..\PoE References\Assembly-CSharp-firstpass.dll + + + ..\..\PoE References\Assembly-UnityScript-firstpass.dll + + + ..\..\PoE References\OEICommon.dll + + + ..\..\PoE References\OEIFormats.dll + + + ..\..\Patchwork\Patchwork.Attributes\bin\Debug\Patchwork.Attributes.dll + + + + + + ..\..\PoE References\UnityEngine.dll + + + + + + + + + + \ No newline at end of file diff --git a/modules/XPnerfSquare.pw/main.cs b/modules/XPnerfSquare.pw/main.cs new file mode 100644 index 0000000..db69f62 --- /dev/null +++ b/modules/XPnerfSquare.pw/main.cs @@ -0,0 +1,22 @@ +using Patchwork.Attributes; + +namespace XPNerfSquare.pw +{ + [ModifiesType] + public class mod_CharacterStats : CharacterStats + { + //using dropdown box + [ModifiesMember("ExperienceNeededForLevel")] + public static int ExperienceNeededForLevelNew(int level) + { + return (level - 1) * (level - 1) * 1000; + } + + [ModifiesMember("ExperienceNeededForNextLevel")] + public static int ExperienceNeededForNextLevelNew(int currentLevel) + { + return currentLevel * currentLevel * 1000; + } + + } +} diff --git a/modules/XPnerfSquare.pw/modType.cs b/modules/XPnerfSquare.pw/modType.cs new file mode 100644 index 0000000..0c3a6b0 --- /dev/null +++ b/modules/XPnerfSquare.pw/modType.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Patchwork.Attributes; + +namespace XPNerfSquare +{ + [PatchInfo] + public class XPNModType : IPatchInfo + { + public static string Combine(params string[] paths) + { + var current = paths.Aggregate(@"", Path.Combine); + return current; + } + + public FileInfo GetTargetFile(AppInfo app) + { + var file = Combine(app.BaseDirectory.FullName, "PillarsOfEternity_Data", "Managed", "Assembly-CSharp.dll"); + return new FileInfo(file); + } + + public string CanPatch(AppInfo app) + { + return null; + } + + public string PatchVersion => "1.0"; + + public string Requirements => "None"; + + public string PatchName => "Square XP Nerf"; + } +} \ No newline at end of file