├── WeenieFabAppIcon.ico ├── WeenieFab ├── WeenieFab │ ├── lp_icon.ico │ ├── WeenieFabIcon.ico │ ├── icon │ │ ├── lp_icon.ico │ │ ├── WeenieFabIcon.ico │ │ └── weeniefactoryicon.ico │ ├── WeenieFabAppIcon.ico │ ├── files │ │ ├── BodyParts.JPG │ │ ├── WeenieFabSS.jpg │ │ ├── JsonConverter.JPG │ │ ├── images │ │ │ ├── WFHelp.JPG │ │ │ ├── WFMenu.JPG │ │ │ ├── WFOptions.JPG │ │ │ ├── LootProfiler.JPG │ │ │ ├── WF_SpellTab.PNG │ │ │ ├── ConverterJSONtoSQL.JPG │ │ │ ├── ConverterSQLtoJSON.JPG │ │ │ └── WF_SpellPercentDialog.PNG │ │ ├── SQLtoJSONConverter.JPG │ │ ├── WeenieFab v0.8.0.0.zip │ │ └── WeenieFab Beta v0.8.0.1.zip │ ├── weeniefactoryicon.ico │ ├── libs │ │ └── EmoteScriptLib.dll │ ├── Properties │ │ ├── launchSettings.json │ │ ├── WeenieFabUser.settings │ │ ├── Resources.Designer.cs │ │ ├── WeenieFabUser.Designer.cs │ │ └── Resources.resx │ ├── TypeLists │ │ ├── Int64Types.txt │ │ ├── DamageTypes.txt │ │ ├── BodyParts.txt │ │ ├── PositionTypes.txt │ │ ├── HelpResources.txt │ │ ├── InstanceIDTypes.txt │ │ ├── StringTypes.txt │ │ ├── WeenieTypes.txt │ │ ├── DiDTypes.txt │ │ ├── SkillTypes.txt │ │ ├── BoolTypes.txt │ │ ├── FloatTypes.txt │ │ └── Int32Types.txt │ ├── Spells.cs │ ├── HelpResources.cs │ ├── Globals.cs │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── DeathTreasure.cs │ ├── StringMap │ │ └── Reader.cs │ ├── Help.xaml.cs │ ├── ToDoList.txt │ ├── Options.xaml.cs │ ├── WeenieFab.csproj │ ├── Converter.xaml.cs │ ├── SpellProbability.xaml.cs │ ├── Help.xaml │ ├── SpellProbability.xaml │ ├── DataTables.cs │ ├── Options.xaml │ ├── Decode.cs │ └── EventsDataGrid.cs └── WeenieFab.sln ├── .gitmodules ├── README.md ├── .gitattributes └── .gitignore /WeenieFabAppIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFabAppIcon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/lp_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/lp_icon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/WeenieFabIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/WeenieFabIcon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/icon/lp_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/icon/lp_icon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/WeenieFabAppIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/WeenieFabAppIcon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/BodyParts.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/BodyParts.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/WeenieFabSS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/WeenieFabSS.jpg -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/icon/WeenieFabIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/icon/WeenieFabIcon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/weeniefactoryicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/weeniefactoryicon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/JsonConverter.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/JsonConverter.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/WFHelp.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/WFHelp.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/WFMenu.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/WFMenu.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/libs/EmoteScriptLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/libs/EmoteScriptLib.dll -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/WFOptions.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/WFOptions.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/icon/weeniefactoryicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/icon/weeniefactoryicon.ico -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "WeenieFab": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/SQLtoJSONConverter.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/SQLtoJSONConverter.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/WeenieFab v0.8.0.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/WeenieFab v0.8.0.0.zip -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/LootProfiler.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/LootProfiler.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/WF_SpellTab.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/WF_SpellTab.PNG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/WeenieFab Beta v0.8.0.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/WeenieFab Beta v0.8.0.1.zip -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/ConverterJSONtoSQL.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/ConverterJSONtoSQL.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/ConverterSQLtoJSON.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/ConverterSQLtoJSON.JPG -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/files/images/WF_SpellPercentDialog.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harliq/Weenie-Fab/HEAD/WeenieFab/WeenieFab/files/images/WF_SpellPercentDialog.PNG -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ACData"] 2 | path = ACData 3 | url = https://github.com/gmriggs/ACData.git 4 | [submodule "EmoteScript"] 5 | path = EmoteScript 6 | url = https://github.com/ACEmulator/EmoteScript.git 7 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/Int64Types.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 TotalExperience 3 | 2 AvailableExperience 4 | 3 AugmentationCost 5 | 4 ItemTotalXp 6 | 5 ItemBaseXp 7 | 6 AvailableLuminance 8 | 7 MaximumLuminance 9 | 8 InteractionReqs -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/DamageTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undef 2 | 1 Slash 3 | 2 Pierce 4 | 4 Bludgeon 5 | 8 Cold 6 | 16 Fire 7 | 32 Acid 8 | 64 Electric 9 | 128 Health 10 | 256 Stamina 11 | 512 Mana 12 | 1024 Nether 13 | 268435456 Base -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Spells.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace WeenieFab 6 | { 7 | public class SpellNames 8 | { 9 | public int SpellID { get; set; } 10 | public string SpellName { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/HelpResources.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace WeenieFab 6 | { 7 | public class HelpResources 8 | { 9 | public string Website { get; set; } 10 | public string Address { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WeenieFab 2 | Editor for AC emu weenie files. 3 | Built on .Net Core and WPF. 4 | 5 | Download the beta on the releases page. 6 | [WeenieFab Releases](https://github.com/harliq/Weenie-Fab/releases/) 7 | 8 | ![](https://raw.githubusercontent.com/harliq/Weenie-Fab/master/WeenieFab/WeenieFab/files/WeenieFabSS.jpg) 9 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Globals.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace WeenieFab 6 | { 7 | public static class Globals 8 | { 9 | public static string WeenieFileName { get; set; } 10 | public static bool FileChanged { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace WeenieFab 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/BodyParts.txt: -------------------------------------------------------------------------------- 1 | 0 Head 2 | 1 Chest 3 | 2 Abdomen 4 | 3 UpperArm 5 | 4 LowerArm 6 | 5 Hand 7 | 6 UpperLeg 8 | 7 LowerLeg 9 | 8 Foot 10 | 9 Horn 11 | 10 FrontLeg 12 | 11 *Skip - DO NOT USE 13 | 12 FrontFoot 14 | 13 RearLeg 15 | 14 *Skip - DO NOT USE 16 | 15 RearFoot 17 | 16 Torso 18 | 17 Tail 19 | 18 Arm 20 | 19 Leg 21 | 20 Claw 22 | 21 Wings 23 | 22 Breath 24 | 23 Tentacle 25 | 24 UpperTentacle 26 | 25 LowerTentacle 27 | 26 Cloak 28 | 27 NumParts -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/PositionTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undef 2 | 1 Location 3 | 2 Destination 4 | 3 Instantiation 5 | 4 Sanctuary 6 | 5 Home 7 | 6 ActivationMove 8 | 7 Target 9 | 8 LinkedPortalOne 10 | 9 LastPortal 11 | 10 PortalStorm 12 | 11 CrashAndTurn 13 | 12 PortalSummonLoc 14 | 13 HouseBoot 15 | 14 LastOutsideDeath 16 | 15 LinkedLifestone 17 | 16 LinkedPortalTwo 18 | 17 Save1 19 | 18 Save2 20 | 19 Save3 21 | 20 Save4 22 | 21 Save5 23 | 22 Save6 24 | 23 Save7 25 | 24 Save8 26 | 25 Save9 27 | 26 RelativeDestination 28 | 27 TeleportedCharacter -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/HelpResources.txt: -------------------------------------------------------------------------------- 1 | WeenieFab Wiki,https://github.com/harliq/Weenie-Fab/wiki 2 | ACE,https://github.com/ACEmulator/ACE 3 | Dynamic PCAP'd Weenie Finder,https://github.com/ACEmulator/ACE-PCAP-Dynamics-Exports/find/master 4 | Released Weenies (Patches Repo),https://github.com/ACEmulator/ACE-World-16PY-Patches/find/master 5 | Weenie Properties Spreadsheet,https://docs.google.com/spreadsheets/d/1zubQEJaFsaMMNgyHF0DaPv0-VK80-uxK4Peuz3kUdGM/edit#gid=1691309931 6 | LSD Spell Book,https://docs.google.com/spreadsheets/d/1qQBNdNneoLIv66WUMFAScfvVpJhNpbTZ9Tn526o2vKg/edit#gid=61737657 -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/InstanceIDTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 Owner 3 | 2 Container 4 | 3 Wielder 5 | 4 Freezer 6 | 5 Viewer 7 | 6 Generator 8 | 7 Scribe 9 | 8 CurrentCombatTarget 10 | 9 CurrentEnemy 11 | 10 ProjectileLauncher 12 | 11 CurrentAttacker 13 | 12 CurrentDamager 14 | 13 CurrentFollowTarget 15 | 14 CurrentAppraisalTarget 16 | 15 CurrentFellowshipAppraisalTarget 17 | 16 ActivationTarget 18 | 17 Creator 19 | 18 Victim 20 | 19 Killer 21 | 20 Vendor 22 | 21 Customer 23 | 22 Bonded 24 | 23 Wounder 25 | 24 Allegiance 26 | 25 Patron 27 | 26 Monarch 28 | 27 CombatTarget 29 | 28 HealthQueryTarget 30 | 29 LastUnlocker 31 | 30 CrashAndTurnTarget 32 | 31 AllowedActivator 33 | 32 HouseOwner 34 | 33 House 35 | 34 Slumlord 36 | 35 ManaQueryTarget 37 | 36 CurrentGame 38 | 37 RequestedAppraisalTarget 39 | 38 AllowedWielder 40 | 39 AssignedTarget 41 | 40 LimboSource 42 | 41 Snooper 43 | 42 TeleportedCharacter 44 | 43 Pet 45 | 44 PetOwner 46 | 45 PetDevice -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/StringTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 Name 3 | 2 Title 4 | 3 Sex 5 | 4 HeritageGroup 6 | 5 Template 7 | 6 AttackersName 8 | 7 Inscription 9 | 8 ScribeName 10 | 9 VendorsName 11 | 10 Fellowship 12 | 11 MonarchsName 13 | 12 LockCode 14 | 13 KeyCode 15 | 14 Use 16 | 15 ShortDesc 17 | 16 LongDesc 18 | 17 ActivationTalk 19 | 18 UseMessage 20 | 19 ItemHeritageGroupRestriction 21 | 20 PluralName 22 | 21 MonarchsTitle 23 | 22 ActivationFailure 24 | 23 ScribeAccount 25 | 24 TownName 26 | 25 CraftsmanName 27 | 26 UsePkServerError 28 | 27 ScoreCachedText 29 | 28 ScoreDefaultEntryFormat 30 | 29 ScoreFirstEntryFormat 31 | 30 ScoreLastEntryFormat 32 | 31 ScoreOnlyEntryFormat 33 | 32 ScoreNoEntry 34 | 33 Quest 35 | 34 GeneratorEvent 36 | 35 PatronsTitle 37 | 36 HouseOwnerName 38 | 37 QuestRestriction 39 | 38 AppraisalPortalDestination 40 | 39 TinkerName 41 | 40 ImbuerName 42 | 41 HouseOwnerAccount 43 | 42 DisplayName 44 | 43 DateOfBirth 45 | 44 ThirdPartyApi 46 | 45 KillQuest 47 | 46 Afk 48 | 47 AllegianceName 49 | 48 AugmentationAddQuest 50 | 49 KillQuest2 51 | 50 KillQuest3 52 | 51 UseSendsSignal 53 | 52 GearPlatingName -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Properties/WeenieFabUser.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | C:\ 7 | 8 | 9 | C:\ 10 | 11 | 12 | C:\ 13 | 14 | 15 | True 16 | 17 | 18 | True 19 | 20 | 21 | True 22 | 23 | 24 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/DeathTreasure.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace WeenieFab 6 | { 7 | public class DeathTreasure 8 | { 9 | public int ID { get; set; } 10 | public int DTdid { get; set; } 11 | public int Tier { get; set; } 12 | public int UnknownChances { get; set; } 13 | 14 | public int ItemChance { get; set; } 15 | public int ItemMinAmount { get; set; } 16 | public int ItemMaxAmount { get; set; } 17 | public int ItemTreasureTypeSelectionChances { get; set; } 18 | 19 | public int MagicItemChance { get; set; } 20 | public int MagicItemMinAmount { get; set; } 21 | public int MagicItemMaxAmount { get; set; } 22 | public int MagicItemTreasureTypeSelectionChances { get; set; } 23 | 24 | public int MundaneItemChance { get; set; } 25 | public int MundaneItemMinAmount { get; set; } 26 | public int MundaneItemMaxAmount { get; set; } 27 | public int MundaneItemTreasureTypeSelectionChances { get; set; } 28 | 29 | public float LootQualityMod { get; set; } 30 | 31 | public string LastModified { get; set; } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/WeenieTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 Generic 3 | 2 Clothing 4 | 3 MissileLauncher 5 | 4 Missile 6 | 5 Ammunition 7 | 6 MeleeWeapon 8 | 7 Portal 9 | 8 Book 10 | 9 Coin 11 | 10 Creature 12 | 11 Admin 13 | 12 Vendor 14 | 13 HotSpot 15 | 14 Corpse 16 | 15 Cow 17 | 16 AI 18 | 17 Machine 19 | 18 Food 20 | 19 Door 21 | 20 Chest 22 | 21 Container 23 | 22 Key 24 | 23 Lockpick 25 | 24 PressurePlate 26 | 25 LifeStone 27 | 26 Switch 28 | 27 PKModifier 29 | 28 Healer 30 | 29 LightSource 31 | 30 Allegiance 32 | 31 Type32 33 | 32 SpellComponent 34 | 33 ProjectileSpell 35 | 34 Scroll 36 | 35 Caster 37 | 36 Channel 38 | 37 ManaStone 39 | 38 Gem 40 | 39 AdvocateFane 41 | 40 AdvocateItem 42 | 41 Sentinel 43 | 42 GSpellEconomy 44 | 43 LSpellEconomy 45 | 44 CraftTool 46 | 45 LScoreKeeper 47 | 46 GScoreKeeper 48 | 47 GScoreGatherer 49 | 48 ScoreBook 50 | 49 EventCoordinator 51 | 50 Entity 52 | 51 Stackable 53 | 52 HUD 54 | 53 House 55 | 54 Deed 56 | 55 SlumLord 57 | 56 Hook 58 | 57 Storage 59 | 58 BootSpot 60 | 59 HousePortal 61 | 60 Game 62 | 61 GamePiece 63 | 62 SkillAlterationDevice 64 | 63 AttributeTransferDevice 65 | 64 Hooker 66 | 65 AllegianceBindstone 67 | 66 InGameStatKeeper 68 | 67 AugmentationDevice 69 | 68 SocialManager 70 | 69 Pet 71 | 70 PetDevice 72 | 71 CombatPet -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/DiDTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 Setup 3 | 2 MotionTable 4 | 3 SoundTable 5 | 4 CombatTable 6 | 5 QualityFilter 7 | 6 PaletteBase 8 | 7 Clothingbase 9 | 8 Icon 10 | 9 EyesTexture 11 | 10 NoseTexture 12 | 11 MouthTexture 13 | 12 DefaultEyesTexture 14 | 13 DefaultNoseTexture 15 | 14 DefaultMouthTexture 16 | 15 HairPalette 17 | 16 EyesPalette 18 | 17 SkinPalette 19 | 18 HeadObject 20 | 19 ActivationAnimation 21 | 20 InitMotion 22 | 21 ActivationSound 23 | 22 PhysicsEffectTable 24 | 23 UseSound 25 | 24 UseTargetAnimation 26 | 25 UseTargetSuccessAnimation 27 | 26 UseTargetFailureAnimation 28 | 27 UseUserAnimation 29 | 28 Spell 30 | 29 SpellComponent 31 | 30 PhysicsScript 32 | 31 LinkedPortalOne 33 | 32 WieldedTreasureType 34 | 33 UnknownGuessedname 35 | 34 UnknownGuessedname2 36 | 35 DeathTreasureType 37 | 36 MutateFilter 38 | 37 ItemSkillLimit 39 | 38 UseCreateItem 40 | 39 DeathSpell 41 | 40 VendorsClassid 42 | 41 ItemSpecializedOnly 43 | 42 Houseid 44 | 43 AccountHouseid 45 | 44 RestrictionEffect 46 | 45 CreationMutationFilter 47 | 46 TsysMutationFilter 48 | 47 LastPortal 49 | 48 LinkedPortalTwo 50 | 49 OriginalPortal 51 | 50 IconOverlay 52 | 51 IconOverlaySecondary 53 | 52 IconUnderlay 54 | 53 AugmentationMutationFilter 55 | 54 AugmentationEffect 56 | 55 ProcSpell 57 | 56 AugmentationCreateItem 58 | 57 AlternateCurrency 59 | 58 BlueSurgeSpell 60 | 59 YellowSurgeSpell 61 | 60 RedSurgeSpell 62 | 61 OlthoiDeathTreasureType -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/SkillTypes.txt: -------------------------------------------------------------------------------- 1 | 0 *Undefined - DO NOT USE 2 | 1 *Axe - FOR CLASSIC WEAPONS SERVERS ONLY 3 | 2 *Bow - FOR CLASSIC WEAPONS SERVERS ONLY 4 | 3 *Crossbow - FOR CLASSIC WEAPONS SERVERS ONLY 5 | 4 *Dagger - FOR CLASSIC WEAPONS SERVERS ONLY 6 | 5 *Mace - FOR CLASSIC WEAPONS SERVERS ONLY 7 | 6 MeleeDefense 8 | 7 MissileDefense 9 | 8 *Sling - DO NOT USE 10 | 9 *Spear - FOR CLASSIC WEAPONS SERVERS ONLY 11 | 10 *Staff - FOR CLASSIC WEAPONS SERVERS ONLY 12 | 11 *Sword -FOR CLASSIC WEAPONS SERVERS ONLY 13 | 12 *ThrownWeapon - FOR CLASSIC WEAPONS SERVERS ONLY 14 | 13 *UnarmedCombat - FOR CLASSIC WEAPONS SERVERS ONLY 15 | 14 ArcaneLore 16 | 15 MagicDefense 17 | 16 ManaConversion 18 | 17 *Spellcraft - DO NOT USE 19 | 18 ItemAppraisal 20 | 19 PersonalAppraisal 21 | 20 Deception 22 | 21 Healing 23 | 22 Jump 24 | 23 Lockpick 25 | 24 Run 26 | 25 *Awareness - DO NOT USE 27 | 26 *ArmsAndArmorRepair - DO NOT USE 28 | 27 CreatureAppraisal 29 | 28 WeaponAppraisal 30 | 29 ArmorAppraisal 31 | 30 MagicItemAppraisal 32 | 31 CreatureEnchantment 33 | 32 ItemEnchantment 34 | 33 LifeMagic 35 | 34 WarMagic 36 | 35 Leadership 37 | 36 Loyalty 38 | 37 Fletching 39 | 38 Alchemy 40 | 39 Cooking 41 | 40 Salvaging 42 | 41 TwoHandedCombat 43 | 42 *Gearcraft - DO NOT USE 44 | 43 VoidMagic 45 | 44 HeavyWeapons 46 | 45 LightWeapons 47 | 46 FinesseWeapons 48 | 47 MissileWeapons 49 | 48 Shield 50 | 49 DualWield 51 | 50 Recklessness 52 | 51 SneakAttack 53 | 52 DirtyFighting 54 | 53 *Challenge - DO NOT USE 55 | 54 Summoning -------------------------------------------------------------------------------- /WeenieFab/WeenieFab.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30204.135 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WeenieFab", "WeenieFab\WeenieFab.csproj", "{19DB01D5-4389-4C1E-8490-523D8027A9BE}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EmoteScriptLib", "..\EmoteScript\EmoteScriptLib\EmoteScriptLib.csproj", "{12E817BD-BF6C-46D5-AF95-9F46A6D7F224}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ACDataLib", "..\ACData\ACDataLib\ACDataLib.csproj", "{8442E4B5-3DC3-4340-8D04-659E96646BED}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Release|Any CPU = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {19DB01D5-4389-4C1E-8490-523D8027A9BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {19DB01D5-4389-4C1E-8490-523D8027A9BE}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {19DB01D5-4389-4C1E-8490-523D8027A9BE}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {19DB01D5-4389-4C1E-8490-523D8027A9BE}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {12E817BD-BF6C-46D5-AF95-9F46A6D7F224}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {12E817BD-BF6C-46D5-AF95-9F46A6D7F224}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {12E817BD-BF6C-46D5-AF95-9F46A6D7F224}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {12E817BD-BF6C-46D5-AF95-9F46A6D7F224}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {8442E4B5-3DC3-4340-8D04-659E96646BED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {8442E4B5-3DC3-4340-8D04-659E96646BED}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {8442E4B5-3DC3-4340-8D04-659E96646BED}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {8442E4B5-3DC3-4340-8D04-659E96646BED}.Release|Any CPU.Build.0 = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {E9DF1256-A74C-4444-BABF-0A288DD312A3} 36 | EndGlobalSection 37 | EndGlobal 38 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/StringMap/Reader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.IO; 5 | 6 | namespace EmoteScriptLib.StringMap 7 | { 8 | public static class Reader 9 | { 10 | public static Dictionary GetIDToNames(string filename) 11 | { 12 | var records = ReadCSV(filename); 13 | 14 | var results = new Dictionary(); 15 | 16 | for (var i = 0; i < records.Count; i++) 17 | { 18 | var record = records[i]; 19 | 20 | if (record.Length < 2) 21 | { 22 | Console.WriteLine($"Failed to parse line {i + 1} in {filename}: expected 2 fields in {string.Join(",", record)}"); 23 | continue; 24 | } 25 | 26 | if (record.Length > 2) 27 | record[1] = string.Join(",", record.Skip(1)); 28 | 29 | if (!uint.TryParse(record[0], out var id)) 30 | { 31 | Console.WriteLine($"Failed to parse line {i + 1} in {filename}: {record[0]} is not an unsigned int"); 32 | continue; 33 | } 34 | 35 | if (results.ContainsKey(id)) 36 | { 37 | Console.WriteLine($"Failed to parse line {i + 1} in {filename}: {record[0]} is a duplicate key"); 38 | continue; 39 | } 40 | 41 | results.Add(id, record[1]); 42 | } 43 | 44 | return results; 45 | } 46 | 47 | public static Dictionary GetNameToIDs(Dictionary dict) 48 | { 49 | var newDict = new Dictionary(); 50 | foreach (var kvp in dict) 51 | { 52 | if (!newDict.ContainsKey(kvp.Value)) 53 | newDict.Add(kvp.Value, kvp.Key); 54 | } 55 | return newDict; 56 | } 57 | 58 | public static List ReadCSV(string filename) 59 | { 60 | var records = new List(); 61 | 62 | var lines = File.ReadAllLines("StringMap" + Path.DirectorySeparatorChar + filename); 63 | 64 | foreach (var line in lines) 65 | { 66 | if (line.StartsWith("//") || !line.Contains(",")) 67 | continue; 68 | 69 | records.Add(line.Split(',')); 70 | } 71 | 72 | return records; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Help.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Text; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace WeenieFab 17 | { 18 | /// 19 | /// Interaction logic for Help.xaml 20 | /// 21 | public partial class Help : Window 22 | { 23 | public Help() 24 | { 25 | InitializeComponent(); 26 | CreateResourceList(); 27 | } 28 | private void Button_Click(object sender, RoutedEventArgs e) 29 | { 30 | this.Close(); 31 | } 32 | public void CreateResourceList() 33 | { 34 | List listResources = new List(); 35 | 36 | foreach (string line in File.ReadLines(@"TypeLists\HelpResources.txt")) 37 | { 38 | string[] rData = line.Split(","); 39 | 40 | listResources.Add(new HelpResources { Website = rData[0], Address = rData[1] }); 41 | } 42 | lvResources.ItemsSource = listResources; 43 | } 44 | private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e) 45 | { 46 | // for .NET Core you need to add UseShellExecute = true 47 | // see https://docs.microsoft.com/dotnet/api/system.diagnostics.processstartinfo.useshellexecute#property-value 48 | Process browser = new Process(); 49 | browser.StartInfo.UseShellExecute = true; 50 | browser.StartInfo.FileName = e.Uri.AbsoluteUri; 51 | browser.Start(); 52 | e.Handled = true; 53 | 54 | //var urlPart = ((Hyperlink)sender).NavigateUri; 55 | //var fullUrl = urlPart.ToString(); 56 | //Process.Start(new ProcessStartInfo("cmd", $"/c start {fullUrl}")); 57 | try 58 | { 59 | browser.Start(); 60 | //Process.Start(new ProcessStartInfo("cmd", $"/c start {fullUrl}")); 61 | } 62 | catch (Exception ex) 63 | { 64 | MainWindow.LogError(ex); 65 | MessageBoxButton buttons = MessageBoxButton.OK; 66 | MessageBoxImage icon = MessageBoxImage.Error; 67 | MessageBoxResult result = MessageBox.Show("ERROR!. Please send WeenieFabErrorLog.txt to Harli Quinn on Discord", "ERROR!", buttons, icon); 68 | } 69 | e.Handled = true; 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/BoolTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 Stuck 3 | 2 Open 4 | 3 Locked 5 | 4 RotProof 6 | 5 AllegianceUpdateRequest 7 | 6 AiUsesMana 8 | 7 AiUseHumanMagicAnimations 9 | 8 AllowGive 10 | 9 CurrentlyAttacking 11 | 10 AttackerAi 12 | 11 IgnoreCollisions 13 | 12 ReportCollisions 14 | 13 Ethereal 15 | 14 GravityStatus 16 | 15 LightsStatus 17 | 16 ScriptedCollision 18 | 17 Inelastic 19 | 18 Visibility 20 | 19 Attackable 21 | 20 SafeSpellComponents 22 | 21 AdvocateState 23 | 22 Inscribable 24 | 23 DestroyOnSell 25 | 24 UiHidden 26 | 25 IgnoreHouseBarriers 27 | 26 HiddenAdmin 28 | 27 PkWounder 29 | 28 PkKiller 30 | 29 NoCorpse 31 | 30 UnderLifestoneProtection 32 | 31 ItemManaUpdatePending 33 | 32 GeneratorStatus 34 | 33 ResetMessagePending 35 | 34 DefaultOpen 36 | 35 DefaultLocked 37 | 36 DefaultOn 38 | 37 OpenForBusiness 39 | 38 IsFrozen 40 | 39 DealMagicalItems 41 | 40 LogoffImDead 42 | 41 ReportCollisionsAsEnvironment 43 | 42 AllowEdgeSlide 44 | 43 AdvocateQuest 45 | 44 IsAdmin 46 | 45 IsArch 47 | 46 IsSentinel 48 | 47 IsAdvocate 49 | 48 CurrentlyPoweringUp 50 | 49 GeneratorEnteredWorld 51 | 50 NeverFailCasting 52 | 51 VendorService 53 | 52 AiImmobile 54 | 53 DamagedByCollisions 55 | 54 IsDynamic 56 | 55 IsHot 57 | 56 IsAffecting 58 | 57 AffectsAis 59 | 58 SpellQueueActive 60 | 59 GeneratorDisabled 61 | 60 IsAcceptingTells 62 | 61 LoggingChannel 63 | 62 OpensAnyLock 64 | 63 UnlimitedUse 65 | 64 GeneratedTreasureItem 66 | 65 IgnoreMagicResist 67 | 66 IgnoreMagicArmor 68 | 67 AiAllowTrade 69 | 68 SpellComponentsRequired 70 | 69 IsSellable 71 | 70 IgnoreShieldsBySkill 72 | 71 Nodraw 73 | 72 ActivationUntargeted 74 | 73 HouseHasGottenPriorityBootPos 75 | 74 GeneratorAutomaticDestruction 76 | 75 HouseHooksVisible 77 | 76 HouseRequiresMonarch 78 | 77 HouseHooksEnabled 79 | 78 HouseNotifiedHudOfHookCount 80 | 79 AiAcceptEverything 81 | 80 IgnorePortalRestrictions 82 | 81 RequiresBackpackSlot 83 | 82 DontTurnOrMoveWhenGiving 84 | 83 NpcLooksLikeObject 85 | 84 IgnoreCloIcons 86 | 85 AppraisalHasAllowedWielder 87 | 86 ChestRegenOnClose 88 | 87 LogoffInMinigame 89 | 88 PortalShowDestination 90 | 89 PortalIgnoresPkAttackTimer 91 | 90 NpcInteractsSilently 92 | 91 Retained 93 | 92 IgnoreAuthor 94 | 93 Limbo 95 | 94 AppraisalHasAllowedActivator 96 | 95 ExistedBeforeAllegianceXpChanges 97 | 96 IsDeaf 98 | 97 IsPsr 99 | 98 Invincible 100 | 99 Ivoryable 101 | 100 Dyable 102 | 101 CanGenerateRare 103 | 102 CorpseGeneratedRare 104 | 103 NonProjectileMagicImmune 105 | 104 ActdReceivedItems 106 | 105 UnknownGuessedname 107 | 106 FirstEnterWorldDone 108 | 107 RecallsDisabled 109 | 108 RareUsesTimer 110 | 109 ActdPreorderReceivedItems 111 | 110 Afk 112 | 111 IsGagged 113 | 112 ProcSpellSelfTargeted 114 | 113 IsAllegianceGagged 115 | 114 EquipmentSetTriggerPiece 116 | 115 Uninscribe 117 | 116 WieldOnUse 118 | 117 ChestClearedWhenClosed 119 | 118 NeverAttack 120 | 119 SuppressGenerateEffect 121 | 120 TreasureCorpse 122 | 121 EquipmentSetAddLevel 123 | 122 BarberActive 124 | 123 TopLayerPriority 125 | 124 NoHeldItemShown 126 | 125 LoginAtLifestone 127 | 126 OlthoiPk 128 | 127 Account15Days 129 | 128 HadNoVitae 130 | 129 NoOlthoiTalk 131 | 130 AutowieldLeft -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/ToDoList.txt: -------------------------------------------------------------------------------- 1 | ** To Finish Milestone 1 ** 2 | *Priority* 3 | Add Generator Table 4 | 5 | *Issues 6 | 7 | 8 | * Polish * 9 | Code Cleanup/Organization 10 | 11 | *Optimize* 12 | Used Cloned Tables instead of creating new ones (Partially Done) 13 | 14 | * Misc * 15 | also along those lines, disallow adding more than 1 page with same id 16 | 17 | 18 | **Future Features** - After MileStone. 19 | Defaults for a new weenie (IE a quick wizard dialog??) 20 | **Have to wait for ACData to be fixed. Auto Convert Json Files 21 | **Rip Wants Merge wennies (good idea, just gotta figure out how to do it). 22 | MarkDown for ES in WeenieFab 23 | 24 | 25 | **Completed** 26 | #Done-Add Positions Table 27 | #Done-Found in Weenie 21383 Gaelan.sql The Last used is a double. May just this a text field, because it really isn't use. 28 | #Done-Added Instance ID's (IID) 29 | #Done-NOT IMPLEMENTING Destination DropDown (Create Items) (to many variables) 30 | #Done-Add Error Log 31 | #Done-Auto generate file name on save 32 | #Done-Body Part Tab stops 33 | #Done-FileName Global 34 | #Done-Fixed Help Link to Weenie Repo 35 | #Done-Add Books Table 36 | #Done-Body Parts Table 37 | #Done-Auto Calculate Body Parts 38 | #Done-Added SQL to JSON converter. 39 | #Done-Added way for browsing folders. (used Ookii netCORE dialogs). 40 | #Done redo Read Sql?? (Basically the way I handle reading emotes) 41 | 42 | #Done-Added JSON Converter 43 | #Done-ToolTips 44 | #Done-Auto Calculate Skills 45 | 46 | #Done-Auto Calculate Health,Stamina,Mana 47 | #Done-UI design 48 | #Done-TabStops 49 | #Done-Add about page 50 | 51 | #Done-**Rip Suggestion, have it combine any existing ES files instead of reading emotes from .sql; 52 | 53 | #Done-Add Spell Search 54 | #Done-Add Spell Description 55 | #Done-Fix RichTextBox Tab 56 | #Done-Create Install Package (using Publish and just zipping the file). 57 | #Done-Add Attrib2 Write 58 | #Done-Add Skill Write 59 | #Done-Add ES convert to sql write 60 | #Done-Add CreateItemList Write 61 | #Done-Add String Write 62 | #Done-Add Spell Write 63 | #Done-Add Attribite Write 64 | #Done-Skills Dropdown List 65 | #Done-Add CreateItems (Trophy) 66 | #Done-Add Options Dialog (Mainly for paths right now) 67 | #Done-Add Specialized/Trained for Skills (SAC=3 for spec, SAC=2 for trained 68 | #Fixed Loading new file bug. 69 | #Done-Make attib/skill buttons work. 70 | #Done-Add Attributes and Skills tables 71 | #Done-Check save 72 | #Done-Look into why blank rows on open(tried several things, not sure how its happening, but not worrying right now, they don't export). 73 | #Done-Add DiD Types 74 | #Done-Add SpellID textbox 75 | #Done-Fix open file (for new files) Reset all the indexes for data grids. 76 | #Done-Add New file button 77 | #Done-Fix Width on Data Grid 78 | #Done-Cleanup unused files 79 | #Done-Figure out how to grab emotes from sql (are there different variations???) 80 | #Done-Add Emote Script converting from sql File 81 | #Not Happening, tried and failed Rename MainWindows 82 | #Change Icon 83 | #Tab Stops - fixed the basics 84 | 85 | **Future Features** 86 | Defaults for a new weenie (IE a quick wizard dialog) 87 | 88 | Auto Convert Json Files 89 | Auto Calculations for Skills/Health 90 | 91 | Body Parts Table 92 | Auto Calculate Body Parts 93 | 94 | MarkDown for ES in WeenieFab -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WeenieFab.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WeenieFab.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized string similar to C:\. 65 | /// 66 | internal static string JsonDefaultFoler { 67 | get { 68 | return ResourceManager.GetString("JsonDefaultFoler", resourceCulture); 69 | } 70 | } 71 | 72 | /// 73 | /// Looks up a localized string similar to C:\. 74 | /// 75 | internal static string SqlDefaultFolder { 76 | get { 77 | return ResourceManager.GetString("SqlDefaultFolder", resourceCulture); 78 | } 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Options.xaml.cs: -------------------------------------------------------------------------------- 1 | using Ookii.Dialogs.Wpf; 2 | using System.Windows; 3 | using WeenieFab.Properties; 4 | 5 | namespace WeenieFab 6 | { 7 | /// 8 | /// Interaction logic for Options.xaml 9 | /// 10 | public partial class Options : Window 11 | { 12 | public Options() 13 | { 14 | InitializeComponent(); 15 | LoadPaths(); 16 | } 17 | private void LoadPaths() 18 | { 19 | tbDefaultSqlPath.Text = WeenieFabUser.Default.DefaultSqlPath; 20 | tbDefaultJsonPath.Text = WeenieFabUser.Default.DefaultJsonPath; 21 | tbDefaultESPath.Text = WeenieFabUser.Default.DefaultESPath; 22 | chkbAutoLoadEsFiles.IsChecked = WeenieFabUser.Default.AutoLoadESFiles; 23 | chkbUseLastPathFileOpenSave.IsChecked = WeenieFabUser.Default.UseFilePaths; 24 | } 25 | private void btnSetSqlPath_Click(object sender, RoutedEventArgs e) 26 | { 27 | VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog(); 28 | fbd.Description = "Please select a default SQL folder."; 29 | fbd.UseDescriptionForTitle = true; // This applies to the Vista style dialog only, not the old dialog. 30 | if (!VistaFolderBrowserDialog.IsVistaFolderDialogSupported) 31 | MessageBox.Show(this, "Because you are not using Windows Vista or later, the regular folder browser dialog will be used. Please use Windows Vista to see the new dialog.", "Sample folder browser dialog"); 32 | if ((bool)fbd.ShowDialog(this)) 33 | { 34 | tbDefaultSqlPath.Text= fbd.SelectedPath; 35 | } 36 | } 37 | private void btnOK_Click(object sender, RoutedEventArgs e) 38 | { 39 | Properties.WeenieFabUser.Default.DefaultSqlPath = tbDefaultSqlPath.Text; 40 | Properties.WeenieFabUser.Default.DefaultJsonPath = tbDefaultJsonPath.Text; 41 | Properties.WeenieFabUser.Default.DefaultESPath = tbDefaultESPath.Text; 42 | Properties.WeenieFabUser.Default.AutoLoadESFiles = chkbAutoLoadEsFiles.IsChecked.Value; 43 | Properties.WeenieFabUser.Default.UseFilePaths = chkbUseLastPathFileOpenSave.IsChecked.Value; 44 | 45 | WeenieFabUser.Default.Save(); 46 | 47 | this.Close(); 48 | } 49 | 50 | private void btnCancel_Click(object sender, RoutedEventArgs e) 51 | { 52 | this.Close(); 53 | } 54 | private void btnSetJsonPath_Click(object sender, RoutedEventArgs e) 55 | { 56 | VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog(); 57 | fbd.Description = "Please select a default JSON folder."; 58 | fbd.UseDescriptionForTitle = true; // This applies to the Vista style dialog only, not the old dialog. 59 | if (!VistaFolderBrowserDialog.IsVistaFolderDialogSupported) 60 | MessageBox.Show(this, "Because you are not using Windows Vista or later, the regular folder browser dialog will be used. Please use Windows Vista to see the new dialog.", "Sample folder browser dialog"); 61 | if ((bool)fbd.ShowDialog(this)) 62 | { 63 | tbDefaultJsonPath.Text = fbd.SelectedPath; 64 | } 65 | } 66 | private void btnSetESPath_Click(object sender, RoutedEventArgs e) 67 | { 68 | VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog(); 69 | fbd.Description = "Please select a default EmoteScript folder."; 70 | fbd.UseDescriptionForTitle = true; // This applies to the Vista style dialog only, not the old dialog. 71 | if (!VistaFolderBrowserDialog.IsVistaFolderDialogSupported) 72 | MessageBox.Show(this, "Because you are not using Windows Vista or later, the regular folder browser dialog will be used. Please use Windows Vista to see the new dialog.", "Sample folder browser dialog"); 73 | if ((bool)fbd.ShowDialog(this)) 74 | { 75 | tbDefaultESPath.Text = fbd.SelectedPath; 76 | } 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/FloatTypes.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 HeartbeatInterval 3 | 2 HeartbeatTimestamp 4 | 3 HealthRate 5 | 4 StaminaRate 6 | 5 ManaRate 7 | 6 HealthUponResurrection 8 | 7 StaminaUponResurrection 9 | 8 ManaUponResurrection 10 | 9 StartTime 11 | 10 StopTime 12 | 11 ResetInterval 13 | 12 Shade 14 | 13 ArmorModVsSlash 15 | 14 ArmorModVsPierce 16 | 15 ArmorModVsBludgeon 17 | 16 ArmorModVsCold 18 | 17 ArmorModVsFire 19 | 18 ArmorModVsAcid 20 | 19 ArmorModVsElectric 21 | 20 CombatSpeed 22 | 21 WeaponLength 23 | 22 DamageVariance 24 | 23 CurrentPowerMod 25 | 24 AccuracyMod 26 | 25 StrengthMod 27 | 26 MaximumVelocity 28 | 27 RotationSpeed 29 | 28 MotionTimestamp 30 | 29 WeaponDefense 31 | 30 WimpyLevel 32 | 31 VisualAwarenessRange 33 | 32 AuralAwarenessRange 34 | 33 PerceptionLevel 35 | 34 PowerupTime 36 | 35 MaxChargeDistance 37 | 36 ChargeSpeed 38 | 37 BuyPrice 39 | 38 SellPrice 40 | 39 DefaultScale 41 | 40 LockpickMod 42 | 41 RegenerationInterval 43 | 42 RegenerationTimestamp 44 | 43 GeneratorRadius 45 | 44 TimeToRot 46 | 45 DeathTimestamp 47 | 46 PkTimestamp 48 | 47 VictimTimestamp 49 | 48 LoginTimestamp 50 | 49 CreationTimestamp 51 | 50 MinimumTimeSincePk 52 | 51 DeprecatedHousekeepingPriority 53 | 52 AbuseLoggingTimestamp 54 | 53 LastPortalTeleportTimestamp 55 | 54 UseRadius 56 | 55 HomeRadius 57 | 56 ReleasedTimestamp 58 | 57 MinHomeRadius 59 | 58 Facing 60 | 59 ResetTimestamp 61 | 60 LogoffTimestamp 62 | 61 EconRecoveryInterval 63 | 62 WeaponOffense 64 | 63 DamageMod 65 | 64 ResistSlash 66 | 65 ResistPierce 67 | 66 ResistBludgeon 68 | 67 ResistFire 69 | 68 ResistCold 70 | 69 ResistAcid 71 | 70 ResistElectric 72 | 71 ResistHealthBoost 73 | 72 ResistStaminaDrain 74 | 73 ResistStaminaBoost 75 | 74 ResistManaDrain 76 | 75 ResistManaBoost 77 | 76 Translucency 78 | 77 PhysicsScriptIntensity 79 | 78 Friction 80 | 79 Elasticity 81 | 80 AiUseMagicDelay 82 | 81 ItemMinSpellcraftMod 83 | 82 ItemMaxSpellcraftMod 84 | 83 ItemRankProbability 85 | 84 Shade2 86 | 85 Shade3 87 | 86 Shade4 88 | 87 ItemEfficiency 89 | 88 ItemManaUpdateTimestamp 90 | 89 SpellGestureSpeedMod 91 | 90 SpellStanceSpeedMod 92 | 91 AllegianceAppraisalTimestamp 93 | 92 PowerLevel 94 | 93 AccuracyLevel 95 | 94 AttackAngle 96 | 95 AttackTimestamp 97 | 96 CheckpointTimestamp 98 | 97 SoldTimestamp 99 | 98 UseTimestamp 100 | 99 UseLockTimestamp 101 | 100 HealkitMod 102 | 101 FrozenTimestamp 103 | 102 HealthRateMod 104 | 103 AllegianceSwearTimestamp 105 | 104 ObviousRadarRange 106 | 105 HotspotCycleTime 107 | 106 HotspotCycleTimeVariance 108 | 107 SpamTimestamp 109 | 108 SpamRate 110 | 109 BondWieldedTreasure 111 | 110 BulkMod 112 | 111 SizeMod 113 | 112 GagTimestamp 114 | 113 GeneratorUpdateTimestamp 115 | 114 DeathSpamTimestamp 116 | 115 DeathSpamRate 117 | 116 WildAttackProbability 118 | 117 FocusedProbability 119 | 118 CrashAndTurnProbability 120 | 119 CrashAndTurnRadius 121 | 120 CrashAndTurnBias 122 | 121 GeneratorInitialDelay 123 | 122 AiAcquireHealth 124 | 123 AiAcquireStamina 125 | 124 AiAcquireMana 126 | 125 ResistHealthDrain 127 | 126 LifestoneProtectionTimestamp 128 | 127 AiCounteractEnchantment 129 | 128 AiDispelEnchantment 130 | 129 TradeTimestamp 131 | 130 AiTargetedDetectionRadius 132 | 131 EmotePriority 133 | 132 LastTeleportStartTimestamp 134 | 133 EventSpamTimestamp 135 | 134 EventSpamRate 136 | 135 InventoryOffset 137 | 136 CriticalMultiplier 138 | 137 ManaStoneDestroyChance 139 | 138 SlayerDamageBonus 140 | 139 AllegianceInfoSpamTimestamp 141 | 140 AllegianceInfoSpamRate 142 | 141 NextSpellcastTimestamp 143 | 142 AppraisalRequestedTimestamp 144 | 143 AppraisalHeartbeatDueTimestamp 145 | 144 ManaConversionMod 146 | 145 LastPkAttackTimestamp 147 | 146 FellowshipUpdateTimestamp 148 | 147 CriticalFrequency 149 | 148 LimboStartTimestamp 150 | 149 WeaponMissileDefense 151 | 150 WeaponMagicDefense 152 | 151 IgnoreShield 153 | 152 ElementalDamageMod 154 | 153 StartMissileAttackTimestamp 155 | 154 LastRareUsedTimestamp 156 | 155 IgnoreArmor 157 | 156 ProcSpellRate 158 | 157 ResistanceModifier 159 | 158 AllegianceGagTimestamp 160 | 159 AbsorbMagicDamage 161 | 160 CachedMaxAbsorbMagicDamage 162 | 161 GagDuration 163 | 162 AllegianceGagDuration 164 | 163 GlobalXpMod 165 | 164 HealingModifier 166 | 165 ArmorModVsNether 167 | 166 ResistNether 168 | 167 CooldownDuration 169 | 168 WeaponAuraOffense 170 | 169 WeaponAuraDefense 171 | 170 WeaponAuraElemental 172 | 171 WeaponAuraManaConv -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Properties/WeenieFabUser.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WeenieFab.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")] 16 | internal sealed partial class WeenieFabUser : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static WeenieFabUser defaultInstance = ((WeenieFabUser)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new WeenieFabUser()))); 19 | 20 | public static WeenieFabUser Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("C:\\")] 29 | public string DefaultSqlPath { 30 | get { 31 | return ((string)(this["DefaultSqlPath"])); 32 | } 33 | set { 34 | this["DefaultSqlPath"] = value; 35 | } 36 | } 37 | 38 | [global::System.Configuration.UserScopedSettingAttribute()] 39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 40 | [global::System.Configuration.DefaultSettingValueAttribute("C:\\")] 41 | public string DefaultJsonPath { 42 | get { 43 | return ((string)(this["DefaultJsonPath"])); 44 | } 45 | set { 46 | this["DefaultJsonPath"] = value; 47 | } 48 | } 49 | 50 | [global::System.Configuration.UserScopedSettingAttribute()] 51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 52 | [global::System.Configuration.DefaultSettingValueAttribute("C:\\")] 53 | public string DefaultESPath { 54 | get { 55 | return ((string)(this["DefaultESPath"])); 56 | } 57 | set { 58 | this["DefaultESPath"] = value; 59 | } 60 | } 61 | 62 | [global::System.Configuration.UserScopedSettingAttribute()] 63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 64 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 65 | public bool AutoLoadESFiles { 66 | get { 67 | return ((bool)(this["AutoLoadESFiles"])); 68 | } 69 | set { 70 | this["AutoLoadESFiles"] = value; 71 | } 72 | } 73 | 74 | [global::System.Configuration.UserScopedSettingAttribute()] 75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 76 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 77 | public bool UseFilePaths 78 | { 79 | get 80 | { 81 | return ((bool)(this["UseFilePaths"])); 82 | } 83 | set 84 | { 85 | this["UseFilePaths"] = value; 86 | } 87 | } 88 | 89 | [global::System.Configuration.UserScopedSettingAttribute()] 90 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 91 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 92 | public bool AutoCalcHealth { 93 | get { 94 | return ((bool)(this["AutoCalcHealth"])); 95 | } 96 | set { 97 | this["AutoCalcHealth"] = value; 98 | } 99 | } 100 | 101 | [global::System.Configuration.UserScopedSettingAttribute()] 102 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 103 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 104 | public bool AutoCalcSkill { 105 | get { 106 | return ((bool)(this["AutoCalcSkill"])); 107 | } 108 | set { 109 | this["AutoCalcSkill"] = value; 110 | } 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/WeenieFab.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | netcoreapp3.1 6 | true 7 | 0.9.9.92 8 | WeenieFabAppIcon.ico 9 | 0.9.9.92 10 | 0.9.9.92 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | PreserveNewest 48 | 49 | 50 | PreserveNewest 51 | 52 | 53 | PreserveNewest 54 | 55 | 56 | PreserveNewest 57 | 58 | 59 | PreserveNewest 60 | 61 | 62 | PreserveNewest 63 | 64 | 65 | PreserveNewest 66 | 67 | 68 | PreserveNewest 69 | 70 | 71 | PreserveNewest 72 | 73 | 74 | PreserveNewest 75 | 76 | 77 | PreserveNewest 78 | 79 | 80 | PreserveNewest 81 | 82 | 83 | PreserveNewest 84 | 85 | 86 | PreserveNewest 87 | 88 | 89 | PreserveNewest 90 | 91 | 92 | PreserveNewest 93 | 94 | 95 | PreserveNewest 96 | 97 | 98 | PreserveNewest 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | True 120 | True 121 | Resources.resx 122 | 123 | 124 | True 125 | True 126 | WeenieFabUser.settings 127 | 128 | 129 | 130 | 131 | 132 | ResXFileCodeGenerator 133 | Resources.Designer.cs 134 | 135 | 136 | 137 | 138 | 139 | SettingsSingleFileGenerator 140 | WeenieFabUser.Designer.cs 141 | 142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | C:\ 122 | For setting default path 123 | 124 | 125 | C:\ 126 | For setting default path 127 | 128 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Converter.xaml.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Ookii.Dialogs.Wpf; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.IO; 6 | using System.Text; 7 | using System.Windows; 8 | using System.Windows.Controls; 9 | using System.Windows.Data; 10 | using System.Windows.Documents; 11 | using System.Windows.Input; 12 | using System.Windows.Media; 13 | using System.Windows.Media.Imaging; 14 | using System.Windows.Shapes; 15 | using WeenieFab.Properties; 16 | 17 | namespace WeenieFab 18 | { 19 | /// 20 | /// Interaction logic for Converter.xaml 21 | /// 22 | public partial class Converter : Window 23 | { 24 | public Converter() 25 | { 26 | InitializeComponent(); 27 | tbConvertFilePath.Text = WeenieFabUser.Default.DefaultSqlPath; 28 | tbConvertSqlFilePath.Text = WeenieFabUser.Default.DefaultJsonPath; 29 | } 30 | 31 | private void btnJsonFiles_Click(object sender, RoutedEventArgs e) 32 | { 33 | OpenFileDialog ofd = new OpenFileDialog(); 34 | ofd.Multiselect = true; 35 | ofd.Title = "Select JSON Files to Convert"; 36 | ofd.Filter = "JSON files|*.json"; 37 | ofd.InitialDirectory = WeenieFabUser.Default.DefaultJsonPath; 38 | Nullable result = ofd.ShowDialog(); 39 | 40 | if (result == true) 41 | { 42 | foreach (String filename in ofd.FileNames) 43 | { 44 | tbJsonFiles.Text += filename + "\r\n"; 45 | } 46 | 47 | } 48 | } 49 | 50 | private void Button_Click(object sender, RoutedEventArgs e) 51 | { 52 | this.Close(); 53 | } 54 | 55 | private void Button_Click_1(object sender, RoutedEventArgs e) 56 | { 57 | 58 | string jsonConvertFiles = tbJsonFiles.Text; 59 | string[] tempJsonFiles = jsonConvertFiles.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 60 | 61 | int c = 0; 62 | foreach (var fileLine in tempJsonFiles) 63 | { 64 | c++; 65 | 66 | FileInfo jfileinfo = new FileInfo(fileLine); 67 | DirectoryInfo directoryInfo = new DirectoryInfo(tbConvertFilePath.Text); 68 | 69 | try 70 | { 71 | ACDataLib.Converter.json2sql(jfileinfo, null, directoryInfo); 72 | } 73 | catch (Exception ex) 74 | { 75 | MainWindow.LogError(ex); 76 | MessageBoxButton buttons = MessageBoxButton.OK; 77 | MessageBoxImage icon = MessageBoxImage.Error; 78 | MessageBoxResult result = MessageBox.Show("Issue with File. Please send WeenieFabErrorLog.txt to Harli Quinn on Discord", "ERROR!", buttons, icon); 79 | 80 | } 81 | 82 | } 83 | MessageBox.Show($"{c} files were converted."); 84 | } 85 | 86 | private void btnChangeFolder_Click(object sender, RoutedEventArgs e) 87 | { 88 | VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog(); 89 | fbd.Description = "Please select folder for Converted JSON Files."; 90 | fbd.UseDescriptionForTitle = true; // This applies to the Vista style dialog only, not the old dialog. 91 | if (!VistaFolderBrowserDialog.IsVistaFolderDialogSupported) 92 | MessageBox.Show(this, "Because you are not using Windows Vista or later, the regular folder browser dialog will be used. Please use Windows Vista to see the new dialog.", "Sample folder browser dialog"); 93 | if ((bool)fbd.ShowDialog(this)) 94 | { 95 | tbConvertFilePath.Text = fbd.SelectedPath; 96 | } 97 | } 98 | 99 | // SQL -> JSON Converter Tab 100 | private void btnSQLFiles_Click(object sender, RoutedEventArgs e) 101 | { 102 | OpenFileDialog ofd = new OpenFileDialog(); 103 | ofd.Multiselect = true; 104 | ofd.Title = "Select SQL Files to Convert"; 105 | ofd.Filter = "SQL files|*.sql"; 106 | ofd.InitialDirectory = WeenieFabUser.Default.DefaultSqlPath; 107 | Nullable result = ofd.ShowDialog(); 108 | 109 | if (result == true) 110 | { 111 | foreach (String filename in ofd.FileNames) 112 | { 113 | tbSqlFiles.Text += filename + "\r\n"; 114 | } 115 | 116 | } 117 | } 118 | 119 | private void btnChangeJSONFolder_Click(object sender, RoutedEventArgs e) 120 | { 121 | VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog(); 122 | fbd.Description = "Please select folder for Converted SQL Files."; 123 | fbd.UseDescriptionForTitle = true; // This applies to the Vista style dialog only, not the old dialog. 124 | if (!VistaFolderBrowserDialog.IsVistaFolderDialogSupported) 125 | MessageBox.Show(this, "Because you are not using Windows Vista or later, the regular folder browser dialog will be used. Please use Windows Vista to see the new dialog.", "Sample folder browser dialog"); 126 | if ((bool)fbd.ShowDialog(this)) 127 | { 128 | tbConvertSqlFilePath.Text = fbd.SelectedPath; 129 | } 130 | } 131 | 132 | private void btnConvertSqlFiles_Click(object sender, RoutedEventArgs e) 133 | { 134 | 135 | string sqlConvertFiles = tbSqlFiles.Text; 136 | string[] tempSqlFiles = sqlConvertFiles.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 137 | 138 | int c = 0; 139 | foreach (var fileLine in tempSqlFiles) 140 | { 141 | c++; 142 | 143 | FileInfo sqlfileinfo = new FileInfo(fileLine); 144 | DirectoryInfo directoryInfo = new DirectoryInfo(tbConvertSqlFilePath.Text); 145 | 146 | try 147 | { 148 | ACDataLib.Converter.sql2json(sqlfileinfo, null, directoryInfo); 149 | } 150 | catch (Exception ex) 151 | { 152 | MainWindow.LogError(ex); 153 | MessageBoxButton buttons = MessageBoxButton.OK; 154 | MessageBoxImage icon = MessageBoxImage.Error; 155 | MessageBoxResult result = MessageBox.Show("Issue with File. Please send WeenieFabErrorLog.txt to Harli Quinn on Discord", "ERROR!", buttons, icon); 156 | 157 | } 158 | 159 | } 160 | MessageBox.Show($"{c} files were converted."); 161 | 162 | } 163 | private void btnCloseConverter_Click(object sender, RoutedEventArgs e) 164 | { 165 | this.Close(); 166 | } 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | [Aa][Rr][Mm]/ 24 | [Aa][Rr][Mm]64/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | [Ll]og/ 29 | 30 | # Visual Studio 2015/2017 cache/options directory 31 | .vs/ 32 | # Uncomment if you have tasks that create the project's static files in wwwroot 33 | #wwwroot/ 34 | 35 | # Visual Studio 2017 auto generated files 36 | Generated\ Files/ 37 | 38 | # MSTest test Results 39 | [Tt]est[Rr]esult*/ 40 | [Bb]uild[Ll]og.* 41 | 42 | # NUNIT 43 | *.VisualState.xml 44 | TestResult.xml 45 | 46 | # Build Results of an ATL Project 47 | [Dd]ebugPS/ 48 | [Rr]eleasePS/ 49 | dlldata.c 50 | 51 | # Benchmark Results 52 | BenchmarkDotNet.Artifacts/ 53 | 54 | # .NET Core 55 | project.lock.json 56 | project.fragment.lock.json 57 | artifacts/ 58 | 59 | # StyleCop 60 | StyleCopReport.xml 61 | 62 | # Files built by Visual Studio 63 | *_i.c 64 | *_p.c 65 | *_h.h 66 | *.ilk 67 | *.meta 68 | *.obj 69 | *.iobj 70 | *.pch 71 | *.pdb 72 | *.ipdb 73 | *.pgc 74 | *.pgd 75 | *.rsp 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *_wpftmp.csproj 83 | *.log 84 | *.vspscc 85 | *.vssscc 86 | .builds 87 | *.pidb 88 | *.svclog 89 | *.scc 90 | 91 | # Chutzpah Test files 92 | _Chutzpah* 93 | 94 | # Visual C++ cache files 95 | ipch/ 96 | *.aps 97 | *.ncb 98 | *.opendb 99 | *.opensdf 100 | *.sdf 101 | *.cachefile 102 | *.VC.db 103 | *.VC.VC.opendb 104 | 105 | # Visual Studio profiler 106 | *.psess 107 | *.vsp 108 | *.vspx 109 | *.sap 110 | 111 | # Visual Studio Trace Files 112 | *.e2e 113 | 114 | # TFS 2012 Local Workspace 115 | $tf/ 116 | 117 | # Guidance Automation Toolkit 118 | *.gpState 119 | 120 | # ReSharper is a .NET coding add-in 121 | _ReSharper*/ 122 | *.[Rr]e[Ss]harper 123 | *.DotSettings.user 124 | 125 | # JustCode is a .NET coding add-in 126 | .JustCode 127 | 128 | # TeamCity is a build add-in 129 | _TeamCity* 130 | 131 | # DotCover is a Code Coverage Tool 132 | *.dotCover 133 | 134 | # AxoCover is a Code Coverage Tool 135 | .axoCover/* 136 | !.axoCover/settings.json 137 | 138 | # Visual Studio code coverage results 139 | *.coverage 140 | *.coveragexml 141 | 142 | # NCrunch 143 | _NCrunch_* 144 | .*crunch*.local.xml 145 | nCrunchTemp_* 146 | 147 | # MightyMoose 148 | *.mm.* 149 | AutoTest.Net/ 150 | 151 | # Web workbench (sass) 152 | .sass-cache/ 153 | 154 | # Installshield output folder 155 | [Ee]xpress/ 156 | 157 | # DocProject is a documentation generator add-in 158 | DocProject/buildhelp/ 159 | DocProject/Help/*.HxT 160 | DocProject/Help/*.HxC 161 | DocProject/Help/*.hhc 162 | DocProject/Help/*.hhk 163 | DocProject/Help/*.hhp 164 | DocProject/Help/Html2 165 | DocProject/Help/html 166 | 167 | # Click-Once directory 168 | publish/ 169 | 170 | # Publish Web Output 171 | *.[Pp]ublish.xml 172 | *.azurePubxml 173 | # Note: Comment the next line if you want to checkin your web deploy settings, 174 | # but database connection strings (with potential passwords) will be unencrypted 175 | *.pubxml 176 | *.publishproj 177 | 178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 179 | # checkin your Azure Web App publish settings, but sensitive information contained 180 | # in these scripts will be unencrypted 181 | PublishScripts/ 182 | 183 | # NuGet Packages 184 | *.nupkg 185 | # The packages folder can be ignored because of Package Restore 186 | **/[Pp]ackages/* 187 | # except build/, which is used as an MSBuild target. 188 | !**/[Pp]ackages/build/ 189 | # Uncomment if necessary however generally it will be regenerated when needed 190 | #!**/[Pp]ackages/repositories.config 191 | # NuGet v3's project.json files produces more ignorable files 192 | *.nuget.props 193 | *.nuget.targets 194 | 195 | # Microsoft Azure Build Output 196 | csx/ 197 | *.build.csdef 198 | 199 | # Microsoft Azure Emulator 200 | ecf/ 201 | rcf/ 202 | 203 | # Windows Store app package directories and files 204 | AppPackages/ 205 | BundleArtifacts/ 206 | Package.StoreAssociation.xml 207 | _pkginfo.txt 208 | *.appx 209 | 210 | # Visual Studio cache files 211 | # files ending in .cache can be ignored 212 | *.[Cc]ache 213 | # but keep track of directories ending in .cache 214 | !?*.[Cc]ache/ 215 | 216 | # Others 217 | ClientBin/ 218 | ~$* 219 | *~ 220 | *.dbmdl 221 | *.dbproj.schemaview 222 | *.jfm 223 | *.pfx 224 | *.publishsettings 225 | orleans.codegen.cs 226 | 227 | # Including strong name files can present a security risk 228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 229 | #*.snk 230 | 231 | # Since there are multiple workflows, uncomment next line to ignore bower_components 232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 233 | #bower_components/ 234 | 235 | # RIA/Silverlight projects 236 | Generated_Code/ 237 | 238 | # Backup & report files from converting an old project file 239 | # to a newer Visual Studio version. Backup files are not needed, 240 | # because we have git ;-) 241 | _UpgradeReport_Files/ 242 | Backup*/ 243 | UpgradeLog*.XML 244 | UpgradeLog*.htm 245 | ServiceFabricBackup/ 246 | *.rptproj.bak 247 | 248 | # SQL Server files 249 | *.mdf 250 | *.ldf 251 | *.ndf 252 | 253 | # Business Intelligence projects 254 | *.rdl.data 255 | *.bim.layout 256 | *.bim_*.settings 257 | *.rptproj.rsuser 258 | *- Backup*.rdl 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | # BeatPulse healthcheck temp database 340 | healthchecksdb -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/TypeLists/Int32Types.txt: -------------------------------------------------------------------------------- 1 | 0 Undefined 2 | 1 ItemType 3 | 2 CreatureType 4 | 3 PaletteTemplate 5 | 4 ClothingPriority 6 | 5 EncumbVal 7 | 6 ItemsCapacity 8 | 7 ContainersCapacity 9 | 8 Mass 10 | 9 Locations 11 | 10 CurrentWieldedLocation 12 | 11 MaxStackSize 13 | 12 StackSize 14 | 13 StackUnitEncumb 15 | 14 StackUnitMass 16 | 15 StackUnitValue 17 | 16 ItemUseable 18 | 17 RareId 19 | 18 UiEffects 20 | 19 Value 21 | 20 CoinValue 22 | 21 TotalExperience 23 | 22 AvailableCharacter 24 | 23 TotalSkillCredits 25 | 24 AvailableSkillCredits 26 | 25 Level 27 | 26 AccountRequirements 28 | 27 ArmorType 29 | 28 ArmorLevel 30 | 29 AllegianceCpPool 31 | 30 AllegianceRank 32 | 31 ChannelsAllowed 33 | 32 ChannelsActive 34 | 33 Bonded 35 | 34 MonarchsRank 36 | 35 AllegianceFollowers 37 | 36 ResistMagic 38 | 37 ResistItemAppraisal 39 | 38 ResistLockpick 40 | 39 DeprecatedResistRepair 41 | 40 CombatMode 42 | 41 CurrentAttackHeight 43 | 42 CombatCollisions 44 | 43 NumDeaths 45 | 44 Damage 46 | 45 DamageType 47 | 46 DefaultCombatStyle 48 | 47 AttackType 49 | 48 WeaponSkill 50 | 49 WeaponTime 51 | 50 AmmoType 52 | 51 CombatUse 53 | 52 ParentLocation 54 | 53 PlacementPosition 55 | 54 WeaponEncumbrance 56 | 55 WeaponMass 57 | 56 ShieldValue 58 | 57 ShieldEncumbrance 59 | 58 MissileInventoryLocation 60 | 59 FullDamageType 61 | 60 WeaponRange 62 | 61 AttackersSkill 63 | 62 DefendersSkill 64 | 63 AttackersSkillValue 65 | 64 AttackersClass 66 | 65 Placement 67 | 66 CheckpointStatus 68 | 67 Tolerance 69 | 68 TargetingTactic 70 | 69 CombatTactic 71 | 70 HomesickTargetingTactic 72 | 71 NumFollowFailures 73 | 72 FriendType 74 | 73 FoeType 75 | 74 MerchandiseItemTypes 76 | 75 MerchandiseMinValue 77 | 76 MerchandiseMaxValue 78 | 77 NumItemsSold 79 | 78 NumItemsBought 80 | 79 MoneyIncome 81 | 80 MoneyOutflow 82 | 81 MaxGeneratedObjects 83 | 82 InitGeneratedObjects 84 | 83 ActivationResponse 85 | 84 OriginalValue 86 | 85 NumMoveFailures 87 | 86 MinLevel 88 | 87 MaxLevel 89 | 88 LockpickMod 90 | 89 BoosterEnum 91 | 90 BoostValue 92 | 91 MaxStructure 93 | 92 Structure 94 | 93 PhysicsState 95 | 94 TargetType 96 | 95 RadarblipColor 97 | 96 EncumbCapacity 98 | 97 LoginTimestamp 99 | 98 CreationTimestamp 100 | 99 PkLevelModifier 101 | 100 GeneratorType 102 | 101 AiAllowedCombatStyle 103 | 102 LogoffTimestamp 104 | 103 GeneratorDestructionType 105 | 104 ActivationCreateClass 106 | 105 ItemWorkmanship 107 | 106 ItemSpellcraft 108 | 107 ItemCurMana 109 | 108 ItemMaxMana 110 | 109 ItemDifficulty 111 | 110 ItemAllegianceRankLimit 112 | 111 PortalBitmask 113 | 112 AdvocateLevel 114 | 113 Gender 115 | 114 Attuned 116 | 115 ItemSkillLevelLimit 117 | 116 GateLogic 118 | 117 ItemManaCost 119 | 118 Logoff 120 | 119 Active 121 | 120 AttackHeight 122 | 121 NumAttackFailures 123 | 122 AiCpThreshold 124 | 123 AiAdvancementStrategy 125 | 124 Version 126 | 125 Age 127 | 126 VendorHappyMean 128 | 127 VendorHappyVariance 129 | 128 CloakStatus 130 | 129 VitaeCpPool 131 | 130 NumServicesSold 132 | 131 MaterialType 133 | 132 NumAllegianceBreaks 134 | 133 ShowableOnRadar 135 | 134 PlayerKillerStatus 136 | 135 VendorHappyMaxItems 137 | 136 ScorePageNum 138 | 137 ScoreConfigNum 139 | 138 ScoreNumScores 140 | 139 DeathLevel 141 | 140 AiOptions 142 | 141 OpenToEveryone 143 | 142 GeneratorTimeType 144 | 143 GeneratorStartTime 145 | 144 GeneratorEndTime 146 | 145 GeneratorEndDestructionType 147 | 146 XpOverride 148 | 147 NumCrashAndTurns 149 | 148 ComponentWarningThreshold 150 | 149 HouseStatus 151 | 150 HookPlacement 152 | 151 HookType 153 | 152 HookItemType 154 | 153 AiPpThreshold 155 | 154 GeneratorVersion 156 | 155 HouseType 157 | 156 PickupEmoteOffset 158 | 157 WeenieIteration 159 | 158 WieldRequirements 160 | 159 WieldSkilltype 161 | 160 WieldDifficulty 162 | 161 HouseMaxHooksUsable 163 | 162 HouseCurrentHooksUsable 164 | 163 AllegianceMinLevel 165 | 164 AllegianceMaxLevel 166 | 165 HouseRelinkHookCount 167 | 166 SlayerCreatureType 168 | 167 ConfirmationInProgress 169 | 168 ConfirmationTypeInProgress 170 | 169 TsysMutationData 171 | 170 NumItemsInMaterial 172 | 171 NumTimesTinkered 173 | 172 AppraisalLongDescDecoration 174 | 173 AppraisalLockpickSuccessPercent 175 | 174 AppraisalPages 176 | 175 AppraisalMaxPages 177 | 176 AppraisalItemSkill 178 | 177 GemCount 179 | 178 GemType 180 | 179 ImbuedEffect 181 | 180 AttackersRawSkillValue 182 | 181 ChessRank 183 | 182 ChessTotalgames 184 | 183 ChessGameswon 185 | 184 ChessGameslost 186 | 185 TypeOfAlteration 187 | 186 SkillToBeAltered 188 | 187 SkillAlterationCount 189 | 188 HeritageGroup 190 | 189 TransferFromAttribute 191 | 190 TransferToAttribute 192 | 191 AttributeTransferCount 193 | 192 FakeFishingSkill 194 | 193 NumKeys 195 | 194 DeathTimestamp 196 | 195 PkTimestamp 197 | 196 VictimTimestamp 198 | 197 HookGroup 199 | 198 AllegianceSwearTimestamp 200 | 199 HousePurchaseTimestamp 201 | 200 RedirectableEquippedArmorCount 202 | 201 MeleedefenseImbuedeffecttypeCache 203 | 202 MissiledefenseImbuedeffecttypeCache 204 | 203 MagicdefenseImbuedeffecttypeCache 205 | 204 ElementalDamageBonus 206 | 205 ImbueAttempts 207 | 206 ImbueSuccesses 208 | 207 CreatureKills 209 | 208 PlayerKillsPk 210 | 209 PlayerKillsPkl 211 | 210 RaresTierOne 212 | 211 RaresTierTwo 213 | 212 RaresTierThree 214 | 213 RaresTierFour 215 | 214 RaresTierFive 216 | 215 AugmentationStat 217 | 216 AugmentationFamilyStat 218 | 217 AugmentationInnateFamily 219 | 218 AugmentationInnateStrength 220 | 219 AugmentationInnateEndurance 221 | 220 AugmentationInnateCoordination 222 | 221 AugmentationInnateQuickness 223 | 222 AugmentationInnateFocus 224 | 223 AugmentationInnateSelf 225 | 224 AugmentationSpecializeSalvaging 226 | 225 AugmentationSpecializeItemTinkering 227 | 226 AugmentationSpecializeArmorTinkering 228 | 227 AugmentationSpecializeMagicItemTinkering 229 | 228 AugmentationSpecializeWeaponTinkering 230 | 229 AugmentationExtraPackSlot 231 | 230 AugmentationIncreasedCarryingCapacity 232 | 231 AugmentationLessDeathItemLoss 233 | 232 AugmentationSpellsRemainPastDeath 234 | 233 AugmentationCriticalDefense 235 | 234 AugmentationBonusXp 236 | 235 AugmentationBonusSalvage 237 | 236 AugmentationBonusImbueChance 238 | 237 AugmentationFasterRegen 239 | 238 AugmentationIncreasedSpellDuration 240 | 239 AugmentationResistanceFamily 241 | 240 AugmentationResistanceSlash 242 | 241 AugmentationResistancePierce 243 | 242 AugmentationResistanceBlunt 244 | 243 AugmentationResistanceAcid 245 | 244 AugmentationResistanceFire 246 | 245 AugmentationResistanceFrost 247 | 246 AugmentationResistanceLightning 248 | 247 RaresTierOneLogin 249 | 248 RaresTierTwoLogin 250 | 249 RaresTierThreeLogin 251 | 250 RaresTierFourLogin 252 | 251 RaresTierFiveLogin 253 | 252 RaresLoginTimestamp 254 | 253 RaresTierSix 255 | 254 RaresTierSeven 256 | 255 RaresTierSixLogin 257 | 256 RaresTierSevenLogin 258 | 257 ItemAttributeLimit 259 | 258 ItemAttributeLevelLimit 260 | 259 ItemAttribute2ndLimit 261 | 260 ItemAttribute2ndLevelLimit 262 | 261 CharacterTitleId 263 | 262 NumCharacterTitles 264 | 263 ResistanceModifierType 265 | 264 FreeTinkersBitfield 266 | 265 EquipmentSetId 267 | 266 PetClass 268 | 267 Lifespan 269 | 268 RemainingLifespan 270 | 269 UseCreateQuantity 271 | 270 WieldRequirements2 272 | 271 WieldSkilltype2 273 | 272 WieldDifficulty2 274 | 273 WieldRequirements3 275 | 274 WieldSkilltype3 276 | 275 WieldDifficulty3 277 | 276 WieldRequirements4 278 | 277 WieldSkilltype4 279 | 278 WieldDifficulty4 280 | 279 Unique 281 | 280 SharedCooldown 282 | 281 Faction1Bits 283 | 282 Faction2Bits 284 | 283 Faction3Bits 285 | 284 Hatred1Bits 286 | 285 Hatred2Bits 287 | 286 Hatred3Bits 288 | 287 SocietyRankCelhan 289 | 288 SocietyRankEldweb 290 | 289 SocietyRankRadblo 291 | 290 HearLocalSignals 292 | 291 HearLocalSignalsRadius 293 | 292 Cleaving 294 | 293 AugmentationSpecializeGearcraft 295 | 294 AugmentationInfusedCreatureMagic 296 | 295 AugmentationInfusedItemMagic 297 | 296 AugmentationInfusedLifeMagic 298 | 297 AugmentationInfusedWarMagic 299 | 298 AugmentationCriticalExpertise 300 | 299 AugmentationCriticalPower 301 | 300 AugmentationSkilledMelee 302 | 301 AugmentationSkilledMissile 303 | 302 AugmentationSkilledMagic 304 | 303 ImbuedEffect2 305 | 304 ImbuedEffect3 306 | 305 ImbuedEffect4 307 | 306 ImbuedEffect5 308 | 307 DamageRating 309 | 308 DamageResistRating 310 | 309 AugmentationDamageBonus 311 | 310 AugmentationDamageReduction 312 | 311 ImbueStackingBits 313 | 312 HealOverTime 314 | 313 CritRating 315 | 314 CritDamageRating 316 | 315 CritResistRating 317 | 316 CritDamageResistRating 318 | 317 HealingResistRating 319 | 318 DamageOverTime 320 | 319 ItemMaxLevel 321 | 320 ItemXpStyle 322 | 321 EquipmentSetExtra 323 | 322 AetheriaBitfield 324 | 323 HealingBoostRating 325 | 324 HeritageSpecificArmor 326 | 325 AlternateRacialSkills 327 | 326 AugmentationJackOfAllTrades 328 | 327 AugmentationResistanceNether 329 | 328 AugmentationInfusedVoidMagic 330 | 329 WeaknessRating 331 | 330 NetherOverTime 332 | 331 NetherResistRating 333 | 332 LuminanceAward 334 | 333 LumAugDamageRating 335 | 334 LumAugDamageReductionRating 336 | 335 LumAugCritDamageRating 337 | 336 LumAugCritReductionRating 338 | 337 LumAugSurgeEffectRating 339 | 338 LumAugSurgeChanceRating 340 | 339 LumAugItemManaUsage 341 | 340 LumAugItemManaGain 342 | 341 LumAugVitality 343 | 342 LumAugHealingRating 344 | 343 LumAugSkilledCraft 345 | 344 LumAugSkilledSpec 346 | 345 LumAugNoDestroyCraft 347 | 346 Restricteraction 348 | 347 OlthoiLootTimestamp 349 | 348 OlthoiLootStep 350 | 349 UseCreatesContractId 351 | 350 DotResistRating 352 | 351 LifeResistRating 353 | 352 CloakWeaveProc 354 | 353 WeaponType 355 | 354 MeleeMastery 356 | 355 RangedMastery 357 | 356 SneakAttackRating 358 | 357 RecklessnessRating 359 | 358 DeceptionRating 360 | 359 CombatPetRange 361 | 360 WeaponAuraDamage 362 | 361 WeaponAuraSpeed 363 | 362 SummoningMastery 364 | 363 HeartbeatLifespan 365 | 364 UseLevelRequirement 366 | 365 LumAugAllSkills 367 | 366 UseRequiresSkill 368 | 367 UseRequiresSkillLevel 369 | 368 UseRequiresSkillSpec 370 | 369 UseRequiresLevel 371 | 370 GearDamage 372 | 371 GearDamageResist 373 | 372 GearCrit 374 | 373 GearCritResist 375 | 374 GearCritDamage 376 | 375 GearCritDamageResist 377 | 376 GearHealingBoost 378 | 377 GearNetherResist 379 | 378 GearLifeResist 380 | 379 GearMaxHealth 381 | 380 Unknown 382 | 381 PkDamage 383 | 382 PkDamageResist 384 | 383 GearPkDamage 385 | 384 GearPkDamageResist 386 | 385 Unknown 387 | 386 Overpower 388 | 387 OverpowerResist 389 | 388 GearOverpower 390 | 389 GearOverpowerResist 391 | 390 Enlightenment -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/SpellProbability.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Data; 4 | using System.Diagnostics; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Text.RegularExpressions; 8 | using System.Windows; 9 | using System.Windows.Controls; 10 | using System.Windows.Data; 11 | using System.Windows.Documents; 12 | using System.Windows.Input; 13 | using System.Windows.Media; 14 | using System.Windows.Media.Imaging; 15 | using System.Windows.Navigation; 16 | using System.Windows.Shapes; 17 | 18 | namespace WeenieFab 19 | { 20 | /// 21 | /// Interaction logic for SpellProbability.xaml 22 | /// 23 | public partial class SpellProbability : Window 24 | { 25 | private DataTable SpellBook; 26 | private DataTable SpellBookPercent; 27 | public DataTable SpellBookProbability; 28 | 29 | 30 | public SpellProbability(DataTable spellbook) 31 | { 32 | InitializeComponent(); 33 | SpellBook = spellbook; 34 | CalculateSpellPercentTable(SpellBook); 35 | this.Owner = App.Current.MainWindow; 36 | //return SpellBookProbability; 37 | TextBoxSpellBookProb.Visibility = Visibility.Hidden; 38 | } 39 | 40 | private class SpellBookChances 41 | { 42 | public SpellBookChances(int spellID, float spellProbability, string spellName) 43 | { 44 | spellId = spellID; 45 | probability = spellProbability; 46 | spellname = spellName; 47 | } 48 | public int spellId { get; set; } 49 | public string spellname { get; set; } 50 | public float probability { get; set; } 51 | 52 | } 53 | // Button Events 54 | private void ButtonUpdateSpellPercent_Click(object sender, RoutedEventArgs e) 55 | { 56 | var index = dgSpellProbability.SelectedIndex; 57 | if (index < 0) 58 | { 59 | MessageBox.Show("Please Select a row"); 60 | return; 61 | } 62 | try 63 | { 64 | DataGridRow currentRowIndex = dgSpellProbability.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow; 65 | DataRow dr = SpellBookPercent.Rows[currentRowIndex.GetIndex()]; 66 | 67 | dr[0] = MainWindow.ConvertToInteger(tbSpellId.Text); 68 | dr[1] = MainWindow.ConvertToFloat(tbSpellPercentValue.Text); 69 | dr[2] = tbSpellDescription.Text; 70 | 71 | SpellBookPercent.AcceptChanges(); 72 | dgSpellProbability.Items.Refresh(); 73 | } 74 | catch (Exception ex) 75 | { 76 | MessageBox.Show("The row you selected is blank"); 77 | MainWindow.LogError(ex); 78 | } 79 | CalculateTotalPercentChance(SpellBookPercent, false); 80 | 81 | } 82 | 83 | private void ButtonClose_Click(object sender, RoutedEventArgs e) 84 | { 85 | this.DialogResult = false; 86 | this.Close(); 87 | } 88 | private void ButtonGenerateProbSpellBookTable_Click(object sender, RoutedEventArgs e) 89 | { 90 | float testChance = CalculateTotalPercentChance(SpellBookPercent, false); 91 | if(testChance > 100) 92 | { 93 | MessageBox.Show("Warning! Total Percent is over 100%! Please fix first!"); 94 | return; 95 | } 96 | 97 | var percentList = GetDataTableProbability(SpellBookPercent, false); 98 | var probabilityList = ConvertSpellPercentToSpellBookProbability(percentList); 99 | TextBoxSpellBookProb.Text = ""; 100 | 101 | foreach (var spell in probabilityList) 102 | { 103 | 104 | TextBoxSpellBookProb.Text += $"{spell}\n"; 105 | } 106 | CreateProbabilityTable(SpellBookPercent); 107 | 108 | this.DialogResult = true; 109 | this.Close(); 110 | } 111 | private void CalculateSpellPercentTable(DataTable weenieSpellBook) 112 | { 113 | var spellBookList = ConvertDataTableToList(weenieSpellBook); 114 | var probabilityList = GetDataTableProbability(weenieSpellBook, true); 115 | var totalChance = GetProbabilityAny(probabilityList); 116 | 117 | SpellBookPercent = SpellbookToIndependent(probabilityList, spellBookList); 118 | dgSpellProbability.DataContext = SpellBookPercent; 119 | 120 | if (totalChance > 1) 121 | LabelTotalSpellPercent.Foreground = Brushes.Red; 122 | else 123 | LabelTotalSpellPercent.Foreground = Brushes.Green; 124 | LabelTotalSpellPercent.Content = PercentFormat(totalChance) + "%"; 125 | 126 | } 127 | private DataTable SpellbookToIndependent(List SpellProb, List spellProbabilities) 128 | { 129 | DataTable tempDataTable = MainWindow.spellDataTable.Clone(); 130 | tempDataTable.Clear(); 131 | 132 | for (var i = 0; i < SpellProb.Count; i++) 133 | { 134 | var prevChanceNone = i > 0 ? GetProbabilityNone(SpellProb.GetRange(0, i)) : 1.0f; 135 | DataRow dr = tempDataTable.NewRow(); 136 | 137 | dr[0] = spellProbabilities.ElementAt(i).spellId; 138 | dr[1] = PercentFormat(SpellProb[i] * prevChanceNone); 139 | dr[2] = spellProbabilities.ElementAt(i).spellname; 140 | tempDataTable.Rows.Add(dr); 141 | } 142 | return tempDataTable; 143 | } 144 | 145 | private List ConvertDataTableToList(DataTable dataTable) 146 | { 147 | List spellProbList = new List(); 148 | int rowcount = dataTable.Rows.Count; 149 | float tempProb = 0; 150 | 151 | if (rowcount > 0) 152 | { 153 | foreach (DataRow row in dataTable.Rows) 154 | { 155 | tempProb = MainWindow.ConvertToFloat(row[1].ToString()); 156 | spellProbList.Add(new SpellBookChances(MainWindow.ConvertToInteger(row[0].ToString()), MainWindow.ConvertToFloat(row[1].ToString()) - 2, row[2].ToString())); 157 | } 158 | } 159 | return spellProbList; 160 | } 161 | private List GetDataTableProbability(DataTable dataTable, bool subtractTwo) 162 | { 163 | List spellProb = new List(); 164 | int rowcount = dataTable.Rows.Count; 165 | float tempProb = 0; 166 | 167 | foreach (DataRow row in dataTable.Rows) 168 | { 169 | tempProb = MainWindow.ConvertToFloat(row[1].ToString()); 170 | if(subtractTwo) 171 | spellProb.Add(MainWindow.ConvertToFloat(row[1].ToString()) - 2); 172 | else 173 | spellProb.Add(MainWindow.ConvertToFloat(row[1].ToString())); 174 | } 175 | return spellProb; 176 | } 177 | public static float GetProbabilityAny(List chances) 178 | { 179 | return 1.0f - GetProbabilityNone(chances); 180 | } 181 | public static float GetProbabilityNone(List chances) 182 | { 183 | var probability = 1.0f; 184 | 185 | foreach (var chance in chances) 186 | probability *= 1.0f - chance; 187 | 188 | return probability; 189 | } 190 | public static string PercentFormat(float percent) 191 | { 192 | return $"{Math.Round(percent * 100, 2)}"; 193 | } 194 | private List ConvertSpellPercentToSpellBookProbability(List percentChances) 195 | { 196 | var chances = new List(); 197 | 198 | foreach(var spellpercentchance in percentChances) 199 | { 200 | chances.Add(spellpercentchance / 100); 201 | } 202 | var spellbook = new List(); 203 | for (var i = 0; i < chances.Count; i++) 204 | { 205 | var prevChanceNone = i > 0 ? GetProbabilityNone(spellbook) : 1.0f; 206 | spellbook.Add(chances[i] / prevChanceNone); 207 | } 208 | var spellbookFinal = new List(); 209 | foreach(var tempProb in spellbook) 210 | { 211 | spellbookFinal.Add((float)Math.Round(tempProb + 2, 2)); 212 | } 213 | 214 | return spellbookFinal; 215 | } 216 | 217 | private void dgSpellProbability_Selected(object sender, RoutedEventArgs e) 218 | { 219 | var index = dgSpellProbability.SelectedIndex; 220 | DataGridRow currentRowIndex = dgSpellProbability.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow; 221 | if (index + 1 > SpellBookPercent.Rows.Count) 222 | { 223 | } 224 | else 225 | { 226 | DataRow dr = SpellBookPercent.Rows[currentRowIndex.GetIndex()]; 227 | tbSpellId.Text = dr[0].ToString(); 228 | tbSpellPercentValue.Text = dr[1].ToString(); 229 | tbSpellDescription.Text = dr[2].ToString(); 230 | } 231 | } 232 | private float CalculateTotalPercentChance(DataTable dataTable, bool removeTwo) 233 | { 234 | float totalPercentChance = 0; 235 | 236 | foreach (DataRow row in dataTable.Rows) 237 | { 238 | totalPercentChance += MainWindow.ConvertToFloat(row[1].ToString()); 239 | } 240 | if (totalPercentChance > 100) 241 | LabelTotalSpellPercent.Foreground = Brushes.Red; 242 | else 243 | LabelTotalSpellPercent.Foreground = Brushes.Green; 244 | LabelTotalSpellPercent.Content = totalPercentChance + "%"; 245 | return totalPercentChance; 246 | } 247 | private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) 248 | { 249 | // for .NET Core you need to add UseShellExecute = true 250 | // see https://docs.microsoft.com/dotnet/api/system.diagnostics.processstartinfo.useshellexecute#property-value 251 | Process browser = new Process(); 252 | browser.StartInfo.UseShellExecute = true; 253 | browser.StartInfo.FileName = e.Uri.AbsoluteUri; 254 | browser.Start(); 255 | e.Handled = true; 256 | } 257 | private void CreateProbabilityTable(DataTable dataTable) 258 | { 259 | var percentList = GetDataTableProbability(dataTable, false); 260 | var probabilityList = ConvertSpellPercentToSpellBookProbability(percentList); 261 | var spellBookList = ConvertDataTableToList(dataTable); 262 | 263 | DataTable tempDataTable = MainWindow.spellDataTable.Clone(); 264 | tempDataTable.Clear(); 265 | 266 | for (var i = 0; i < probabilityList.Count; i++) 267 | { 268 | DataRow dr = tempDataTable.NewRow(); 269 | float tempProb = probabilityList[i]; 270 | 271 | dr[0] = spellBookList.ElementAt(i).spellId; 272 | dr[1] = tempProb; 273 | dr[2] = spellBookList.ElementAt(i).spellname; 274 | tempDataTable.Rows.Add(dr); 275 | } 276 | SpellBookProbability = tempDataTable; 277 | } 278 | private void FloatValidationTextBox(object sender, TextCompositionEventArgs e) 279 | { 280 | Regex regex = new Regex("[^0-9.-]+"); 281 | e.Handled = regex.IsMatch(e.Text); 282 | } 283 | } 284 | } 285 | -------------------------------------------------------------------------------- /WeenieFab/WeenieFab/Help.xaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | #FFE8EDF9 16 | 17 | #FFC5CBF9 18 | 19 | #FF858fe5 20 | 21 | 22 | #FFE8EDF9 23 | 24 | #FFC5CBF9 25 | 26 | #FF888888 27 | 28 | 29 | #FFC5CBF9 30 | 31 | #FFDDDDDD 32 | 33 | 34 | 35 | 36 | White 37 | 38 | #FFACC4EC 39 | 40 | #FFd2a728 41 | 42 | 43 | 44 | 45 | #FFD3AC28 46 | 47 | #FF8b0d00 48 | 49 | #FF8b0d00 50 | 51 | 52 | 53 | #FF444444 54 | 55 | sc#1, 0.004391443, 0.002428215, 0.242281124 56 | 57 | 58 | 59 | 60 | #FFCCCCCC 61 | 62 | #FF888888 63 | 64 | #FF444444 65 | 66 | 67 | #FF888888 68 | 69 | #FF444444 70 | 71 | 72 | #FFAAAAAA 73 | 74 | #FF888888 75 | 76 | 77 | White 78 | 79 | Black 80 | 81 | 82 | 83 | 84 | #FFC5CBF9 85 | 86 | Black 87 | 88 | #FFC5CBF9 89 | 90 | 91 | #FF3843C4 92 | 93 | 94 | 95 | 96 | 97 | 98 | 101 | 103 | 105 | 107 | 108 | 109 | 112 | 113 | 114 | 116 | 118 | 120 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 141 | 142 | 143 | 272 | 273 | 274 | 275 | 276 | 277 | 278 |