├── 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 | 
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 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
--------------------------------------------------------------------------------
/WeenieFab/WeenieFab/SpellProbability.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 | #FFE8EDF9
15 |
16 | #FFC5CBF9
17 |
18 | #FF858fe5
19 |
20 |
21 | #FFE8EDF9
22 |
23 | #FFC5CBF9
24 |
25 | #FF888888
26 |
27 |
28 | #FFC5CBF9
29 |
30 | #FFDDDDDD
31 |
32 |
33 |
34 |
35 | White
36 |
37 | #FFACC4EC
38 |
39 | #FFd2a728
40 |
41 |
42 |
43 |
44 | #FFD3AC28
45 |
46 | #FF8b0d00
47 |
48 | #FF8b0d00
49 |
50 |
51 |
52 | #FF444444
53 |
54 | sc#1, 0.004391443, 0.002428215, 0.242281124
55 |
56 |
57 |
58 |
59 | #FFCCCCCC
60 |
61 | #FF888888
62 |
63 | #FF444444
64 |
65 |
66 | #FF888888
67 |
68 | #FF444444
69 |
70 |
71 | #FFAAAAAA
72 |
73 | #FF888888
74 |
75 |
76 | White
77 |
78 | Black
79 |
80 |
81 |
82 |
83 | #FFC5CBF9
84 |
85 | Black
86 |
87 | #FFC5CBF9
88 |
89 |
90 | #FF3843C4
91 |
92 |
93 |
94 |
95 |
96 |
97 |
100 |
102 |
104 |
106 |
107 |
108 |
111 |
112 |
113 |
115 |
117 |
119 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
140 |
141 |
142 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 | To see how to use this feature, please see the WeenieFab Wiki:
297 |
298 | WeenieFab Wiki - Spellbook Tab
299 |
300 |
301 |
302 |
303 |
--------------------------------------------------------------------------------
/WeenieFab/WeenieFab/DataTables.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Data;
4 | using System.Text;
5 | using System.Windows;
6 |
7 | namespace WeenieFab
8 | {
9 | public partial class MainWindow : Window
10 | {
11 | public void CreateDataTable()
12 | {
13 | DataColumn propertyInt = new DataColumn("Property");
14 | DataColumn propertyInt64 = new DataColumn("Property");
15 | DataColumn propertyFloat = new DataColumn("Property");
16 | DataColumn propertyBool = new DataColumn("Property");
17 | DataColumn propertyString = new DataColumn("Property");
18 | DataColumn propertyDiD = new DataColumn("Property");
19 |
20 | propertyInt.DataType = Type.GetType("System.Int32");
21 | propertyInt64.DataType = Type.GetType("System.Int32");
22 | propertyFloat.DataType = Type.GetType("System.Int32");
23 | propertyBool.DataType = Type.GetType("System.Int32");
24 | propertyString.DataType = Type.GetType("System.Int32");
25 | propertyDiD.DataType = Type.GetType("System.Int32");
26 |
27 | DataColumn valueInt = new DataColumn("Value");
28 | DataColumn valueInt64 = new DataColumn("Value");
29 | DataColumn valueFloat = new DataColumn("Value");
30 | DataColumn valueBool = new DataColumn("Value");
31 | DataColumn valueString = new DataColumn("Value");
32 | DataColumn valueDiD = new DataColumn("Value");
33 |
34 | valueInt.DataType = Type.GetType("System.Int32");
35 | valueInt64.DataType = Type.GetType("System.Decimal");
36 | valueFloat.DataType = Type.GetType("System.Single");
37 | valueBool.DataType = Type.GetType("System.Boolean");
38 | valueString.DataType = Type.GetType("System.String");
39 | valueDiD.DataType = Type.GetType("System.String");
40 |
41 | DataColumn descriptionInt = new DataColumn("Description");
42 | DataColumn descriptionInt64 = new DataColumn("Description");
43 | DataColumn descriptionFloat = new DataColumn("Description");
44 | DataColumn descriptionBool = new DataColumn("Description");
45 | DataColumn descriptionString = new DataColumn("Description");
46 | DataColumn descriptionDiD = new DataColumn("Description");
47 | DataColumn descriptionSpellBook = new DataColumn("Description");
48 |
49 | // Int32
50 | integerDataTable.Columns.Add(propertyInt);
51 | integerDataTable.Columns.Add(valueInt);
52 | integerDataTable.Columns.Add(descriptionInt);
53 | dgInt32.DataContext = integerDataTable.DefaultView;
54 |
55 | // Int64
56 | integer64DataTable.Columns.Add(propertyInt64);
57 | integer64DataTable.Columns.Add(valueInt64);
58 | integer64DataTable.Columns.Add(descriptionInt64);
59 | dgInt64.DataContext = integer64DataTable.DefaultView;
60 |
61 | // Bool Table
62 | boolDataTable.Columns.Add(propertyBool);
63 | boolDataTable.Columns.Add(valueBool);
64 | boolDataTable.Columns.Add(descriptionBool);
65 | dgBool.DataContext = boolDataTable;
66 |
67 | // Float Table
68 | floatDataTable.Columns.Add(propertyFloat);
69 | floatDataTable.Columns.Add(valueFloat);
70 | floatDataTable.Columns.Add(descriptionFloat);
71 | dgFloat.DataContext = floatDataTable;
72 |
73 | // DiD
74 | didDataTable.Columns.Add(propertyDiD);
75 | didDataTable.Columns.Add(valueDiD);
76 | didDataTable.Columns.Add(descriptionDiD);
77 | dgDiD.DataContext = didDataTable;
78 |
79 | // Strings Table
80 | stringDataTable.Columns.Add(propertyString);
81 | stringDataTable.Columns.Add(valueString);
82 | stringDataTable.Columns.Add(descriptionString);
83 | dgString.DataContext = stringDataTable;
84 |
85 | // InstanceID Table
86 | DataColumn propertyIID = new DataColumn("Property");
87 | DataColumn valueIID = new DataColumn("Value");
88 | DataColumn descriptionIID = new DataColumn("Description");
89 |
90 | propertyIID.DataType = Type.GetType("System.Int32");
91 | valueIID.DataType = Type.GetType("System.Int32");
92 |
93 | iidDataTable.Columns.Add(propertyIID);
94 | iidDataTable.Columns.Add(valueIID);
95 | iidDataTable.Columns.Add(descriptionIID);
96 | cbIidProps.DataContext = iidDataTable;
97 |
98 | //SpellBook
99 | DataColumn spellIdInt = new DataColumn("Property");
100 | DataColumn probabilityFloat = new DataColumn("Value");
101 | spellIdInt.DataType = Type.GetType("System.Int32");
102 | probabilityFloat.DataType = Type.GetType("System.Single");
103 |
104 | spellDataTable.Columns.Add(spellIdInt);
105 | spellDataTable.Columns.Add(probabilityFloat);
106 | spellDataTable.Columns.Add(descriptionSpellBook);
107 | dgSpell.DataContext = spellDataTable;
108 |
109 | //Attributes
110 | DataColumn typeAttrib = new DataColumn("Type");
111 | DataColumn initLevelAttrib = new DataColumn("InitLevel");
112 | DataColumn levelCPAttrib = new DataColumn("LevelCP");
113 | DataColumn cpSpentAttrib = new DataColumn("CPSpent");
114 | DataColumn descriptionAttrib = new DataColumn("Description");
115 | typeAttrib.DataType = Type.GetType("System.Int32");
116 | initLevelAttrib.DataType = Type.GetType("System.Single");
117 | levelCPAttrib.DataType = Type.GetType("System.Single");
118 | cpSpentAttrib.DataType = Type.GetType("System.Single");
119 | attributeDataTable.Columns.Add(typeAttrib);
120 | attributeDataTable.Columns.Add(initLevelAttrib);
121 | attributeDataTable.Columns.Add(levelCPAttrib);
122 | attributeDataTable.Columns.Add(cpSpentAttrib);
123 | attributeDataTable.Columns.Add(descriptionAttrib);
124 | dgAttributes.DataContext = attributeDataTable;
125 |
126 | //Attributes 2
127 | DataColumn typeAttrib2 = new DataColumn("Type");
128 | DataColumn initLevelAttrib2 = new DataColumn("InitLevel");
129 | DataColumn levelCPAttrib2 = new DataColumn("LevelCP");
130 | DataColumn cpSpentAttrib2 = new DataColumn("CPSpent");
131 | DataColumn currentLevelAttrib2 = new DataColumn("CurrentLevel");
132 | DataColumn descriptionAttrib2 = new DataColumn("Description");
133 | typeAttrib2.DataType = Type.GetType("System.Int32");
134 | initLevelAttrib2.DataType = Type.GetType("System.Single");
135 | levelCPAttrib2.DataType = Type.GetType("System.Single");
136 | cpSpentAttrib2.DataType = Type.GetType("System.Single");
137 | currentLevelAttrib2.DataType = Type.GetType("System.Single");
138 | attribute2DataTable.Columns.Add(typeAttrib2);
139 | attribute2DataTable.Columns.Add(initLevelAttrib2);
140 | attribute2DataTable.Columns.Add(levelCPAttrib2);
141 | attribute2DataTable.Columns.Add(cpSpentAttrib2);
142 | attribute2DataTable.Columns.Add(currentLevelAttrib2);
143 | attribute2DataTable.Columns.Add(descriptionAttrib2);
144 | dgAttributesTwo.DataContext = attribute2DataTable;
145 |
146 | //Skills - TODO: need to fix some of the types
147 | DataColumn typeSkills = new DataColumn("Type");
148 | DataColumn levelPPSkills = new DataColumn("LevelPP");
149 | DataColumn sacSkills = new DataColumn("SAC");
150 | DataColumn ppSkills = new DataColumn("PP");
151 | DataColumn initLevelSkills = new DataColumn("InitLevel");
152 | DataColumn resistLCSkills = new DataColumn("ResistLC");
153 | DataColumn lastUsedSkills = new DataColumn("LastUsed");
154 | DataColumn descriptionSkills = new DataColumn("Description");
155 | typeSkills.DataType = Type.GetType("System.Int32");
156 | levelPPSkills.DataType = Type.GetType("System.Single");
157 | sacSkills.DataType = Type.GetType("System.Single");
158 | ppSkills.DataType = Type.GetType("System.Single");
159 | initLevelSkills.DataType = Type.GetType("System.Single");
160 | resistLCSkills.DataType = Type.GetType("System.Single");
161 | // lastUsedSkills.DataType = Type.GetType("System.Single");
162 | skillsDataTable.Columns.Add(typeSkills);
163 | skillsDataTable.Columns.Add(levelPPSkills);
164 | skillsDataTable.Columns.Add(sacSkills);
165 | skillsDataTable.Columns.Add(ppSkills);
166 | skillsDataTable.Columns.Add(initLevelSkills);
167 | skillsDataTable.Columns.Add(resistLCSkills);
168 | skillsDataTable.Columns.Add(lastUsedSkills);
169 | skillsDataTable.Columns.Add(descriptionSkills);
170 | dgSkills.DataContext = skillsDataTable;
171 |
172 | // Create List
173 | DataColumn destTypeCreateList = new DataColumn("DestinationType");
174 | DataColumn wcidCreateList = new DataColumn("WCID");
175 | DataColumn stackSizeCreateList = new DataColumn("StackSize");
176 | DataColumn paletteCreateList = new DataColumn("Palette");
177 | DataColumn shadeCreateList = new DataColumn("DropPercent");
178 | DataColumn tryToBondCreateList = new DataColumn("TryToBond");
179 | DataColumn descriptionCreateList = new DataColumn("Description");
180 |
181 | destTypeCreateList.DataType = Type.GetType("System.Int32");
182 | wcidCreateList.DataType = Type.GetType("System.Int32");
183 | stackSizeCreateList.DataType = Type.GetType("System.Int32");
184 | paletteCreateList.DataType = Type.GetType("System.Int32");
185 | shadeCreateList.DataType = Type.GetType("System.Single");
186 | tryToBondCreateList.DataType = Type.GetType("System.Boolean");
187 |
188 | createListDataTable.Columns.Add(destTypeCreateList);
189 | createListDataTable.Columns.Add(wcidCreateList);
190 | createListDataTable.Columns.Add(stackSizeCreateList);
191 | createListDataTable.Columns.Add(paletteCreateList);
192 | createListDataTable.Columns.Add(shadeCreateList);
193 | createListDataTable.Columns.Add(tryToBondCreateList);
194 | createListDataTable.Columns.Add(descriptionCreateList);
195 | dgCreateItems.DataContext = createListDataTable;
196 |
197 | // Body Parts
198 | DataColumn bodyPart = new DataColumn("BodyPart");
199 | DataColumn damageType = new DataColumn("DamageType");
200 | DataColumn damageValue = new DataColumn("Damage");
201 | DataColumn damageVariance = new DataColumn("DamageVariance");
202 | DataColumn armorLevel = new DataColumn("ArmorLevel");
203 | DataColumn armorLevelSlash = new DataColumn("ArmorLevelSlash");
204 | DataColumn armorLevelPierce = new DataColumn("ArmorLevelPierce");
205 | DataColumn armorLevelBludgeon = new DataColumn("ArmorLevelBludgeon");
206 | DataColumn armorLevelCold = new DataColumn("ArmorLevelCold");
207 | DataColumn armorLevelFire = new DataColumn("ArmorLevelFire");
208 | DataColumn armorLevelAcid = new DataColumn("ArmorLevelAcid");
209 | DataColumn armorLevelElectric = new DataColumn("ArmorLevelElectric");
210 | DataColumn armorLevelNether = new DataColumn("ArmorLevelNether");
211 |
212 | DataColumn baseHeight = new DataColumn("Height");
213 |
214 | DataColumn hlfQuad = new DataColumn("HLF");
215 | DataColumn mlfQuad = new DataColumn("MLF");
216 | DataColumn llfQuad = new DataColumn("LLF");
217 |
218 | DataColumn hrfQuad = new DataColumn("HRF");
219 | DataColumn mrfQuad = new DataColumn("MRF");
220 | DataColumn lrfQuad = new DataColumn("LRF");
221 |
222 | DataColumn hlbQuad = new DataColumn("HLB");
223 | DataColumn mlbQuad = new DataColumn("MLB");
224 | DataColumn llbQuad = new DataColumn("LLB");
225 |
226 | DataColumn hrbQuad = new DataColumn("HRB");
227 | DataColumn mrbQuad = new DataColumn("MRB");
228 | DataColumn lrbQuad = new DataColumn("LRB");
229 |
230 | DataColumn descriptionBodyParts = new DataColumn("Description");
231 |
232 | bodyPart.DataType = Type.GetType("System.Int32");
233 | damageType.DataType = Type.GetType("System.Int32");
234 | damageValue.DataType = Type.GetType("System.Int32");
235 | damageVariance.DataType = Type.GetType("System.Single");
236 |
237 | armorLevel.DataType = Type.GetType("System.Int32");
238 | armorLevelSlash.DataType = Type.GetType("System.Int32");
239 | armorLevelPierce.DataType = Type.GetType("System.Int32");
240 | armorLevelBludgeon.DataType = Type.GetType("System.Int32");
241 | armorLevelCold.DataType = Type.GetType("System.Int32");
242 | armorLevelFire.DataType = Type.GetType("System.Int32");
243 | armorLevelAcid.DataType = Type.GetType("System.Int32");
244 | armorLevelElectric.DataType = Type.GetType("System.Int32");
245 | armorLevelNether.DataType = Type.GetType("System.Int32");
246 |
247 | baseHeight.DataType = Type.GetType("System.Int32");
248 |
249 | hlfQuad.DataType = Type.GetType("System.Single");
250 | mlfQuad.DataType = Type.GetType("System.Single");
251 | llfQuad.DataType = Type.GetType("System.Single");
252 |
253 | hrfQuad.DataType = Type.GetType("System.Single");
254 | mrfQuad.DataType = Type.GetType("System.Single");
255 | lrfQuad.DataType = Type.GetType("System.Single");
256 |
257 | hlbQuad.DataType = Type.GetType("System.Single");
258 | mlbQuad.DataType = Type.GetType("System.Single");
259 | llbQuad.DataType = Type.GetType("System.Single");
260 |
261 | hrbQuad.DataType = Type.GetType("System.Single");
262 | mrbQuad.DataType = Type.GetType("System.Single");
263 | lrbQuad.DataType = Type.GetType("System.Single");
264 |
265 | bodypartsDataTable.Columns.Add(bodyPart);
266 | bodypartsDataTable.Columns.Add(damageType);
267 | bodypartsDataTable.Columns.Add(damageValue);
268 | bodypartsDataTable.Columns.Add(damageVariance);
269 |
270 | bodypartsDataTable.Columns.Add(armorLevel);
271 | bodypartsDataTable.Columns.Add(armorLevelSlash);
272 | bodypartsDataTable.Columns.Add(armorLevelPierce);
273 | bodypartsDataTable.Columns.Add(armorLevelBludgeon);
274 | bodypartsDataTable.Columns.Add(armorLevelCold);
275 | bodypartsDataTable.Columns.Add(armorLevelFire);
276 | bodypartsDataTable.Columns.Add(armorLevelAcid);
277 | bodypartsDataTable.Columns.Add(armorLevelElectric);
278 | bodypartsDataTable.Columns.Add(armorLevelNether);
279 |
280 | bodypartsDataTable.Columns.Add(baseHeight);
281 |
282 | bodypartsDataTable.Columns.Add(hlfQuad);
283 | bodypartsDataTable.Columns.Add(mlfQuad);
284 | bodypartsDataTable.Columns.Add(llfQuad);
285 |
286 | bodypartsDataTable.Columns.Add(hrfQuad);
287 | bodypartsDataTable.Columns.Add(mrfQuad);
288 | bodypartsDataTable.Columns.Add(lrfQuad);
289 |
290 | bodypartsDataTable.Columns.Add(hlbQuad);
291 | bodypartsDataTable.Columns.Add(mlbQuad);
292 | bodypartsDataTable.Columns.Add(llbQuad);
293 |
294 | bodypartsDataTable.Columns.Add(hrbQuad);
295 | bodypartsDataTable.Columns.Add(mrbQuad);
296 | bodypartsDataTable.Columns.Add(lrbQuad);
297 |
298 | bodypartsDataTable.Columns.Add(descriptionBodyParts);
299 | dgBodyParts.DataContext = bodypartsDataTable;
300 |
301 | // Book Properties
302 | DataColumn maxPages = new DataColumn("MaxPages");
303 | DataColumn maxCharsPage = new DataColumn("MaxCharsPage");
304 |
305 | maxPages.DataType = Type.GetType("System.Int32");
306 | maxCharsPage.DataType = Type.GetType("System.Int32");
307 |
308 | bookInfoDataTable.Columns.Add(maxPages);
309 | bookInfoDataTable.Columns.Add(maxCharsPage);
310 |
311 | dgBookInfo.DataContext = bookInfoDataTable;
312 |
313 | // Book Pages
314 | DataColumn pageIdBook = new DataColumn("PageID");
315 | DataColumn authorIdBook = new DataColumn("AuthorID");
316 | DataColumn authorNameBook = new DataColumn("AuthorName");
317 | DataColumn authorAccountBook = new DataColumn("AuthorAccount");
318 | DataColumn ignoreAuthorBook = new DataColumn("IgnoreAuthor");
319 | DataColumn pageTextBook = new DataColumn("PageText");
320 |
321 | pageIdBook.DataType = Type.GetType("System.Int32");
322 | // authorIdBook.DataType = Type.GetType("System.Single");
323 | ignoreAuthorBook.DataType = Type.GetType("System.Boolean");
324 |
325 | bookPagesDataTable.Columns.Add(pageIdBook);
326 | bookPagesDataTable.Columns.Add(authorIdBook);
327 | bookPagesDataTable.Columns.Add(authorNameBook);
328 | bookPagesDataTable.Columns.Add(authorAccountBook);
329 | bookPagesDataTable.Columns.Add(ignoreAuthorBook);
330 | bookPagesDataTable.Columns.Add(pageTextBook);
331 |
332 | dgBookPages.DataContext = bookPagesDataTable;
333 |
334 | // Generator
335 |
336 |
337 | // Positions
338 | DataColumn positionType = new DataColumn("PositionType");
339 | DataColumn cellID = new DataColumn("CellID");
340 |
341 | DataColumn xOrigin = new DataColumn("OriginX");
342 | DataColumn yOrigin = new DataColumn("OriginY");
343 | DataColumn zOrigin = new DataColumn("OriginZ");
344 | DataColumn wAngle = new DataColumn("AngleW");
345 | DataColumn xAngle = new DataColumn("AngleX");
346 | DataColumn yAngle = new DataColumn("AngleY");
347 | DataColumn zAngle = new DataColumn("AngleZ");
348 |
349 | DataColumn positionDescription = new DataColumn("Description");
350 |
351 | positionType.DataType = Type.GetType("System.Int32");
352 | cellID.DataType = Type.GetType("System.Int64");
353 |
354 | xOrigin.DataType = Type.GetType("System.Single");
355 | yOrigin.DataType = Type.GetType("System.Single");
356 | zOrigin.DataType = Type.GetType("System.Single");
357 |
358 | wAngle.DataType = Type.GetType("System.Single");
359 | xAngle.DataType = Type.GetType("System.Single");
360 | yAngle.DataType = Type.GetType("System.Single");
361 | zAngle.DataType = Type.GetType("System.Single");
362 |
363 | positionsDataTable.Columns.Add(positionType);
364 | positionsDataTable.Columns.Add(cellID);
365 |
366 | positionsDataTable.Columns.Add(xOrigin);
367 | positionsDataTable.Columns.Add(yOrigin);
368 | positionsDataTable.Columns.Add(zOrigin);
369 |
370 | positionsDataTable.Columns.Add(wAngle);
371 | positionsDataTable.Columns.Add(xAngle);
372 | positionsDataTable.Columns.Add(yAngle);
373 | positionsDataTable.Columns.Add(zAngle);
374 |
375 | positionsDataTable.Columns.Add(positionDescription);
376 |
377 | dgPosition.DataContext = positionsDataTable;
378 |
379 | // Events
380 | DataColumn eventId = new DataColumn("Event");
381 | eventId.DataType = Type.GetType("System.Int32");
382 | DataColumn descriptionEvent = new DataColumn("Description");
383 |
384 | eventDataTable.Columns.Add(eventId);
385 | eventDataTable.Columns.Add(descriptionEvent);
386 | }
387 | }
388 | }
389 |
--------------------------------------------------------------------------------
/WeenieFab/WeenieFab/Options.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 | #FFE8EDF9
13 | #FFC5CBF9
14 | #FF7381F9
15 |
16 | #FFE8EDF9
17 | #FFC5CBF9
18 | #FF888888
19 |
20 | #FFC5CBF9
21 | #FFDDDDDD
22 |
23 | White
24 | #FF7381F9
25 | #FF211AA9
26 |
27 | #FF3843C4
28 | #FF211AA9
29 |
30 |
31 | #FF444444
32 | sc#1, 0.004391443, 0.002428215, 0.242281124
33 |
34 |
35 | #FFCCCCCC
36 | #FF888888
37 | #FF444444
38 |
39 | #FF888888
40 | #FF444444
41 |
42 | #FFAAAAAA
43 | #FF888888
44 |
45 |
46 | White
47 | Black
48 |
49 |
50 | #FFC5CBF9
51 | Black
52 | #FFC5CBF9
53 |
54 | #FF3843C4
55 |
56 |
59 |
61 |
63 |
65 |
66 |
67 |
70 |
71 |
72 |
74 |
76 |
78 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
100 |
101 |
102 |
237 |
238 |
239 |
240 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
--------------------------------------------------------------------------------
/WeenieFab/WeenieFab/Decode.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Data;
4 | using System.Text;
5 | using System.Text.RegularExpressions;
6 |
7 | namespace WeenieFab
8 | {
9 | public static class DecodeSql
10 | {
11 | public static DataTable DecodeTwoValuesInt(string integerblob, string pattern)
12 | {
13 | DataTable tempDataTable = new DataTable();
14 |
15 | DataColumn eventInt = new DataColumn("Event");
16 | DataColumn descript = new DataColumn("Description");
17 |
18 | eventInt.DataType = Type.GetType("System.Int32");
19 |
20 | tempDataTable.Columns.Add(eventInt);
21 | tempDataTable.Columns.Add(descript);
22 |
23 | foreach (var blobLine in integerblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
24 | {
25 | if (blobLine == "" || blobLine == "\r\n")
26 | break;
27 |
28 | var match = Regex.Match(blobLine, pattern);
29 | string description = match.Groups[3].ToString();
30 | DataRow dr = tempDataTable.NewRow();
31 |
32 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
33 | dr[1] = description.Trim();
34 | tempDataTable.Rows.Add(dr);
35 | }
36 | return tempDataTable;
37 | }
38 | public static DataTable DecodeThreeValuesInt(string integerblob, string pattern)
39 | {
40 | DataTable tempDataTable = new DataTable();
41 |
42 | DataColumn propertyInt = new DataColumn("Property");
43 | DataColumn valueInt = new DataColumn("Value");
44 | DataColumn descript = new DataColumn("Description");
45 |
46 | propertyInt.DataType = Type.GetType("System.Int32");
47 | valueInt.DataType = Type.GetType("System.Int32");
48 |
49 | tempDataTable.Columns.Add(propertyInt);
50 | tempDataTable.Columns.Add(valueInt);
51 | tempDataTable.Columns.Add(descript);
52 |
53 | foreach (var blobLine in integerblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
54 | {
55 | if (blobLine == "" || blobLine == "\r\n")
56 | break;
57 |
58 | var match = Regex.Match(blobLine, pattern);
59 | string description = match.Groups[4].ToString();
60 | DataRow dr = tempDataTable.NewRow();
61 |
62 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
63 | dr[1] = MainWindow.ConvertToInteger(match.Groups[3].ToString());
64 | dr[2] = description.Trim();
65 | tempDataTable.Rows.Add(dr);
66 | }
67 | return tempDataTable;
68 | }
69 | public static DataTable DecodeInstanceID(string integerblob, string pattern)
70 | {
71 | DataTable tempDataTable = new DataTable();
72 |
73 | DataColumn propertyInt = new DataColumn("Property");
74 | DataColumn valueInt = new DataColumn("Value");
75 | DataColumn descript = new DataColumn("Description");
76 |
77 | propertyInt.DataType = Type.GetType("System.Int32");
78 | valueInt.DataType = Type.GetType("System.Int32");
79 |
80 | tempDataTable.Columns.Add(propertyInt);
81 | tempDataTable.Columns.Add(valueInt);
82 | tempDataTable.Columns.Add(descript);
83 |
84 | foreach (var blobLine in integerblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
85 | {
86 | if (blobLine == "" || blobLine == "\r\n")
87 | break;
88 |
89 | var match = Regex.Match(blobLine, pattern);
90 | string description = match.Groups[4].ToString();
91 | DataRow dr = tempDataTable.NewRow();
92 |
93 | long iidValue = CheckHex(match.Groups[3].ToString());
94 |
95 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
96 | dr[1] = iidValue;
97 | dr[2] = description.Trim();
98 | tempDataTable.Rows.Add(dr);
99 | }
100 | return tempDataTable;
101 | }
102 |
103 | public static DataTable DecodeInt64(string integerblob, string pattern)
104 | {
105 |
106 | DataTable tempDataTable = MainWindow.integer64DataTable.Clone();
107 | tempDataTable.Clear();
108 |
109 | foreach (var blobLine in integerblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
110 | {
111 | if (blobLine == "" || blobLine == "\r\n")
112 | break;
113 |
114 | var match = Regex.Match(blobLine, pattern);
115 | string description = match.Groups[4].ToString();
116 | DataRow dr = tempDataTable.NewRow();
117 |
118 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
119 | dr[1] = MainWindow.ConvertToDecimal(match.Groups[3].ToString());
120 | dr[2] = description.Trim();
121 | tempDataTable.Rows.Add(dr);
122 | }
123 | return tempDataTable;
124 | }
125 |
126 | public static DataTable DecodeThreeValuesFloat(string floatblob, string pattern)
127 | {
128 | DataTable tempDataTable = new DataTable();
129 |
130 | DataColumn propertyInt = new DataColumn("Property");
131 | DataColumn valueFloat = new DataColumn("Value");
132 | DataColumn descript = new DataColumn("Description");
133 |
134 | propertyInt.DataType = Type.GetType("System.Int32");
135 | valueFloat.DataType = Type.GetType("System.Single");
136 |
137 | tempDataTable.Columns.Add(propertyInt);
138 | tempDataTable.Columns.Add(valueFloat);
139 | tempDataTable.Columns.Add(descript);
140 |
141 | foreach (var blobLine in floatblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
142 | {
143 | var match = Regex.Match(blobLine, pattern);
144 | string description = match.Groups[4].ToString();
145 |
146 | DataRow dr = tempDataTable.NewRow();
147 |
148 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
149 | dr[1] = MainWindow.ConvertToFloat(match.Groups[3].ToString());
150 | dr[2] = description.Trim();
151 | tempDataTable.Rows.Add(dr);
152 | }
153 | return tempDataTable;
154 | }
155 | public static DataTable DecodeThreeValuesBool(string boolblob, string pattern)
156 | {
157 | DataTable tempDataTable = MainWindow.boolDataTable.Clone();
158 | tempDataTable.Clear();
159 |
160 | foreach (var blobLine in boolblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
161 | {
162 | var match = Regex.Match(blobLine, pattern);
163 | string description = match.Groups[4].ToString();
164 | bool tf;
165 |
166 | if (match.Groups[3].ToString() == "TRUE" || match.Groups[3].ToString() == "True" || match.Groups[3].ToString() == "true")
167 | tf = true;
168 | else
169 | tf = false;
170 |
171 | DataRow dr = tempDataTable.NewRow();
172 |
173 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
174 | dr[1] = tf;
175 | dr[2] = description.Trim();
176 | tempDataTable.Rows.Add(dr);
177 | }
178 | return tempDataTable;
179 | }
180 |
181 | public static DataTable DecodeThreeValuesString(string floatblob, string pattern)
182 | {
183 | DataTable tempDataTable = MainWindow.stringDataTable.Clone();
184 | tempDataTable.Clear();
185 |
186 | foreach (var blobLine in floatblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
187 | {
188 | if (blobLine.Contains("\""))
189 | pattern = @"\((\d+),\s*(\d+),\s*""(.*)""\)\s*\/\*\s*(.*)\s*\*\/.*.*$"; // For double quotes in strings
190 | else
191 | pattern = @"\((\d+),\s*(\d+),\s*'(.*)'\)\s*\/\*\s*(.*)\s*\*\/.*.*$";
192 |
193 | var match = Regex.Match(blobLine, pattern);
194 | string description = match.Groups[4].ToString();
195 |
196 | DataRow dr = tempDataTable.NewRow();
197 |
198 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
199 | dr[1] = match.Groups[3].ToString();
200 | dr[2] = description.Trim();
201 | tempDataTable.Rows.Add(dr);
202 | }
203 | return tempDataTable;
204 | }
205 | public static DataTable DecodeAttribute(string attribblob, string pattern)
206 | {
207 |
208 | DataTable tempDataTable = MainWindow.attributeDataTable.Clone();
209 | tempDataTable.Clear();
210 |
211 | foreach (var blobLine in attribblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
212 | {
213 | var match = Regex.Match(blobLine, pattern);
214 | string description = match.Groups[6].ToString();
215 |
216 | DataRow dr = tempDataTable.NewRow();
217 |
218 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
219 | dr[1] = MainWindow.ConvertToInteger(match.Groups[3].ToString());
220 | dr[2] = MainWindow.ConvertToInteger(match.Groups[4].ToString());
221 | dr[3] = MainWindow.ConvertToInteger(match.Groups[5].ToString());
222 | dr[4] = description.Trim();
223 | tempDataTable.Rows.Add(dr);
224 | }
225 | return tempDataTable;
226 | }
227 | public static DataTable DecodeAttributeTwo(string attribblob, string pattern)
228 | {
229 |
230 | DataTable tempDataTable = MainWindow.attribute2DataTable.Clone();
231 | tempDataTable.Clear();
232 |
233 | foreach (var blobLine in attribblob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
234 | {
235 | var match = Regex.Match(blobLine, pattern);
236 | string description = match.Groups[7].ToString();
237 |
238 | DataRow dr = tempDataTable.NewRow();
239 |
240 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
241 | dr[1] = MainWindow.ConvertToInteger(match.Groups[3].ToString());
242 | dr[2] = MainWindow.ConvertToInteger(match.Groups[4].ToString());
243 | dr[3] = MainWindow.ConvertToInteger(match.Groups[5].ToString());
244 | dr[4] = MainWindow.ConvertToInteger(match.Groups[6].ToString());
245 | dr[5] = description.Trim();
246 | tempDataTable.Rows.Add(dr);
247 | }
248 | return tempDataTable;
249 | }
250 | public static DataTable DecodeSkills(string blob, string pattern)
251 | {
252 |
253 | DataTable tempDataTable = MainWindow.skillsDataTable.Clone();
254 | tempDataTable.Clear();
255 |
256 | foreach (var blobLine in blob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
257 | {
258 | var match = Regex.Match(blobLine, pattern);
259 | string description = match.Groups[9].ToString();
260 |
261 | DataRow dr = tempDataTable.NewRow();
262 |
263 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
264 | dr[1] = MainWindow.ConvertToInteger(match.Groups[3].ToString());
265 | dr[2] = MainWindow.ConvertToInteger(match.Groups[4].ToString());
266 | dr[3] = MainWindow.ConvertToInteger(match.Groups[5].ToString());
267 | dr[4] = MainWindow.ConvertToInteger(match.Groups[6].ToString());
268 | dr[5] = MainWindow.ConvertToInteger(match.Groups[7].ToString());
269 | dr[6] = match.Groups[8].ToString();
270 | dr[7] = description.Trim();
271 |
272 | tempDataTable.Rows.Add(dr);
273 | }
274 | return tempDataTable;
275 | }
276 | public static DataTable DecodeCreateList(string blob, string pattern)
277 | {
278 |
279 | DataTable tempDataTable = MainWindow.createListDataTable.Clone();
280 | tempDataTable.Clear();
281 |
282 | foreach (var blobLine in blob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
283 | {
284 | var match = Regex.Match(blobLine, pattern);
285 |
286 | bool tf;
287 |
288 | if (match.Groups[7].ToString() == "TRUE" || match.Groups[3].ToString() == "True" || match.Groups[3].ToString() == "true")
289 | tf = true;
290 | else
291 | tf = false;
292 |
293 | string description = match.Groups[8].ToString();
294 |
295 | DataRow dr = tempDataTable.NewRow();
296 |
297 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
298 | dr[1] = MainWindow.ConvertToInteger(match.Groups[3].ToString());
299 | dr[2] = MainWindow.ConvertToInteger(match.Groups[4].ToString());
300 | dr[3] = MainWindow.ConvertToInteger(match.Groups[5].ToString());
301 | dr[4] = MainWindow.ConvertToFloat(match.Groups[6].ToString());
302 | dr[5] = tf;
303 | dr[6] = description.Trim();
304 |
305 | tempDataTable.Rows.Add(dr);
306 | }
307 | return tempDataTable;
308 | }
309 | public static DataTable DecodeBodyPart(string blob, string pattern)
310 | {
311 |
312 | DataTable tempDataTable = MainWindow.bodypartsDataTable.Clone();
313 | tempDataTable.Clear();
314 |
315 | foreach (var blobLine in blob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
316 | {
317 | var match = Regex.Match(blobLine, pattern);
318 |
319 | string description = match.Groups[28].ToString();
320 |
321 | DataRow dr = tempDataTable.NewRow();
322 |
323 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
324 | dr[1] = MainWindow.ConvertToInteger(match.Groups[3].ToString());
325 | dr[2] = MainWindow.ConvertToInteger(match.Groups[4].ToString());
326 |
327 | dr[3] = MainWindow.ConvertToFloat(match.Groups[5].ToString());
328 |
329 | dr[4] = MainWindow.ConvertToInteger(match.Groups[6].ToString());
330 | dr[5] = MainWindow.ConvertToInteger(match.Groups[7].ToString());
331 | dr[6] = MainWindow.ConvertToInteger(match.Groups[8].ToString());
332 | dr[7] = MainWindow.ConvertToInteger(match.Groups[9].ToString());
333 | dr[8] = MainWindow.ConvertToInteger(match.Groups[10].ToString());
334 | dr[9] = MainWindow.ConvertToInteger(match.Groups[11].ToString());
335 | dr[10] = MainWindow.ConvertToInteger(match.Groups[12].ToString());
336 | dr[11] = MainWindow.ConvertToInteger(match.Groups[13].ToString());
337 | dr[12] = MainWindow.ConvertToInteger(match.Groups[14].ToString());
338 |
339 | dr[13] = MainWindow.ConvertToInteger(match.Groups[15].ToString());
340 |
341 | // Start Float Quads
342 |
343 | dr[14] = MainWindow.ConvertToFloat(match.Groups[16].ToString());
344 | dr[15] = MainWindow.ConvertToFloat(match.Groups[17].ToString());
345 | dr[16] = MainWindow.ConvertToFloat(match.Groups[18].ToString());
346 |
347 | dr[17] = MainWindow.ConvertToFloat(match.Groups[19].ToString());
348 | dr[18] = MainWindow.ConvertToFloat(match.Groups[20].ToString());
349 | dr[19] = MainWindow.ConvertToFloat(match.Groups[21].ToString());
350 |
351 | dr[20] = MainWindow.ConvertToFloat(match.Groups[22].ToString());
352 | dr[21] = MainWindow.ConvertToFloat(match.Groups[23].ToString());
353 | dr[22] = MainWindow.ConvertToFloat(match.Groups[24].ToString());
354 |
355 | dr[23] = MainWindow.ConvertToFloat(match.Groups[25].ToString());
356 | dr[24] = MainWindow.ConvertToFloat(match.Groups[26].ToString());
357 | dr[25] = MainWindow.ConvertToFloat(match.Groups[27].ToString());
358 |
359 | dr[26] = description.Trim();
360 |
361 | tempDataTable.Rows.Add(dr);
362 | }
363 | return tempDataTable;
364 | }
365 | public static DataTable DecodeBookInfo(string blob, string pattern)
366 | {
367 |
368 | DataTable tempDataTable = MainWindow.bookInfoDataTable.Clone();
369 | tempDataTable.Clear();
370 |
371 | foreach (var blobLine in blob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
372 | {
373 | var match = Regex.Match(blobLine, pattern);
374 |
375 | DataRow dr = tempDataTable.NewRow();
376 |
377 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
378 | dr[1] = MainWindow.ConvertToInteger(match.Groups[3].ToString());
379 | tempDataTable.Rows.Add(dr);
380 | }
381 | return tempDataTable;
382 | }
383 | public static DataTable DecodeBookPage(string blob, string pattern)
384 | {
385 |
386 | DataTable tempDataTable = MainWindow.bookPagesDataTable.Clone();
387 | tempDataTable.Clear();
388 |
389 | string splitString = @"')";
390 | blob = blob.Replace(";", "");
391 |
392 | foreach (var blobLine in blob.Split(new string[] { splitString }, StringSplitOptions.RemoveEmptyEntries))
393 | {
394 |
395 | if (blobLine == "\r\n")
396 | continue;
397 | var match = Regex.Match(blobLine, pattern);
398 |
399 | bool tf;
400 |
401 | if (match.Groups[7].ToString() == "TRUE" || match.Groups[3].ToString() == "True" || match.Groups[3].ToString() == "true")
402 | tf = true;
403 | else
404 | tf = false;
405 |
406 | DataRow dr = tempDataTable.NewRow();
407 |
408 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
409 | dr[1] = match.Groups[3].ToString();
410 | dr[2] = match.Groups[4].ToString();
411 | dr[3] = match.Groups[5].ToString();
412 | dr[4] = tf;
413 | dr[5] = match.Groups[7].ToString();
414 | tempDataTable.Rows.Add(dr);
415 | }
416 | return tempDataTable;
417 | }
418 | public static DataTable DecodePositions(string blob, string pattern)
419 | {
420 |
421 | DataTable tempDataTable = MainWindow.positionsDataTable.Clone();
422 | tempDataTable.Clear();
423 |
424 | foreach (var blobLine in blob.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
425 | {
426 | if (blobLine.Contains("teleloc"))
427 | break;
428 | var match = Regex.Match(blobLine, pattern);
429 |
430 | DataRow dr = tempDataTable.NewRow();
431 | string cellID = CheckHex(match.Groups[3].ToString()).ToString();
432 |
433 | dr[0] = MainWindow.ConvertToInteger(match.Groups[2].ToString());
434 | //dr[1] = MainWindow.ConvertToLong(match.Groups[3].ToString());
435 | dr[1] = cellID;
436 |
437 | dr[2] = MainWindow.ConvertToFloat(match.Groups[4].ToString());
438 | dr[3] = MainWindow.ConvertToFloat(match.Groups[5].ToString());
439 | dr[4] = MainWindow.ConvertToFloat(match.Groups[6].ToString());
440 |
441 | dr[5] = MainWindow.ConvertToFloat(match.Groups[7].ToString());
442 | dr[6] = MainWindow.ConvertToFloat(match.Groups[8].ToString());
443 | dr[7] = MainWindow.ConvertToFloat(match.Groups[9].ToString());
444 | dr[8] = MainWindow.ConvertToFloat(match.Groups[10].ToString());
445 |
446 | dr[9] = match.Groups[11].ToString();
447 |
448 | tempDataTable.Rows.Add(dr);
449 | }
450 | return tempDataTable;
451 |
452 | }
453 | public static uint CheckHex(string checkhex)
454 | {
455 | // Check for Hex
456 | uint value = 0;
457 | string checkString = "";
458 | if (checkhex.Contains("0x"))
459 | {
460 | checkString = checkhex.Replace("0x", "");
461 | //value = MainWindow.ConvertHexToDecimal(checkHex);
462 | value = MainWindow.ConvertHexToDecimal(checkString);
463 | }
464 | else if (checkhex.Contains("0X"))
465 | {
466 | checkString = checkhex.Replace("0X", "");
467 | value = MainWindow.ConvertHexToDecimal(checkString);
468 | }
469 | else
470 | {
471 | checkString = checkhex;
472 | //value = MainWindow.ConvertHexToDecimal(checkString);
473 | int tvalue = MainWindow.ConvertToInteger(checkhex);
474 | value = (uint)tvalue;
475 | }
476 |
477 | return value;
478 | }
479 | }
480 | }
481 |
--------------------------------------------------------------------------------
/WeenieFab/WeenieFab/EventsDataGrid.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Data;
3 | using System.Windows;
4 | using System.Windows.Controls;
5 | using WeenieFab.Properties;
6 |
7 | namespace WeenieFab
8 | {
9 | public partial class MainWindow : Window
10 | {
11 | private void dgInt32_RowSelected(object sender, RoutedEventArgs e)
12 | {
13 | var index = dgInt32.SelectedIndex;
14 | DataGridRow currentRowIndex = dgInt32.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
15 | if (index + 1 > integerDataTable.Rows.Count)
16 | {
17 | }
18 | else
19 | {
20 | DataRow dr = integerDataTable.Rows[currentRowIndex.GetIndex()];
21 | int cbindex = 0;
22 | Int32.TryParse(dr[0].ToString(), out cbindex);
23 | cbInt32Props.SelectedIndex = cbindex;
24 | tbValue.Text = dr[1].ToString();
25 | }
26 | }
27 | private void dgInt64_RowSelected(object sender, RoutedEventArgs e)
28 | {
29 | var index = dgInt64.SelectedIndex;
30 | DataGridRow currentRowIndex = dgInt64.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
31 | if (index + 1 > integer64DataTable.Rows.Count)
32 | {
33 | }
34 | else
35 | {
36 | DataRow dr = integer64DataTable.Rows[currentRowIndex.GetIndex()];
37 | int cbindex = 0;
38 | Int32.TryParse(dr[0].ToString(), out cbindex);
39 | cbInt64Props.SelectedIndex = cbindex;
40 | tb64Value.Text = dr[1].ToString();
41 | }
42 | }
43 | private void dgBool_RowSelected(object sender, RoutedEventArgs e)
44 | {
45 | var index = dgBool.SelectedIndex;
46 | DataGridRow currentRowIndex = dgBool.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
47 | if (index + 1 > boolDataTable.Rows.Count)
48 | {
49 | }
50 | else
51 | {
52 | DataRow dr = boolDataTable.Rows[currentRowIndex.GetIndex()];
53 | int cbindex = 0;
54 | Int32.TryParse(dr[0].ToString(), out cbindex);
55 | cbBoolProps.SelectedIndex = cbindex;
56 | if (dr[1].ToString() == "True")
57 | rbTrue.IsChecked = true;
58 | else
59 | rbFalse.IsChecked = true;
60 | }
61 | }
62 | private void dgFloat_RowSelected(object sender, RoutedEventArgs e)
63 | {
64 | var index = dgFloat.SelectedIndex;
65 | DataGridRow currentRowIndex = dgFloat.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
66 | if (index + 1 > floatDataTable.Rows.Count)
67 | {
68 | }
69 | else
70 | {
71 | DataRow dr = floatDataTable.Rows[currentRowIndex.GetIndex()];
72 | int cbindex = 0;
73 | Int32.TryParse(dr[0].ToString(), out cbindex);
74 | cbFloatProps.SelectedIndex = cbindex;
75 | tbFloatValue.Text = dr[1].ToString();
76 | }
77 | }
78 |
79 | private void dgString_RowSelected(object sender, RoutedEventArgs e)
80 | {
81 | var index = dgString.SelectedIndex;
82 | DataGridRow currentRowIndex = dgString.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
83 | if (index + 1 > stringDataTable.Rows.Count)
84 | {
85 | }
86 | else
87 | {
88 | DataRow dr = stringDataTable.Rows[currentRowIndex.GetIndex()];
89 | int cbindex = 0;
90 | Int32.TryParse(dr[0].ToString(), out cbindex);
91 | cbStringProps.SelectedIndex = cbindex;
92 | tbStringValue.Text = dr[1].ToString();
93 | }
94 | }
95 |
96 | private void dgDiD_RowSelected(object sender, RoutedEventArgs e)
97 | {
98 | var index = dgDiD.SelectedIndex;
99 | DataGridRow currentRowIndex = dgDiD.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
100 | if (index + 1 > didDataTable.Rows.Count)
101 | {
102 | }
103 | else
104 | {
105 | DataRow dr = didDataTable.Rows[currentRowIndex.GetIndex()];
106 | int cbindex = 0;
107 | Int32.TryParse(dr[0].ToString(), out cbindex);
108 | cbDiDProps.SelectedIndex = cbindex;
109 | tbDiDValue.Text = dr[1].ToString();
110 | }
111 | }
112 |
113 | private void dgSpell_RowSelected(object sender, RoutedEventArgs e)
114 | {
115 | var index = dgSpell.SelectedIndex;
116 | DataGridRow currentRowIndex = dgSpell.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
117 | if (index + 1 > spellDataTable.Rows.Count)
118 | {
119 | }
120 | else
121 | {
122 | DataRow dr = spellDataTable.Rows[currentRowIndex.GetIndex()];
123 | tbSpellId.Text = dr[0].ToString();
124 | tbSpellValue.Text = dr[1].ToString();
125 | tbSpellDescription.Text = dr[2].ToString();
126 | }
127 | }
128 |
129 | private void dgSkills_RowSelected(object sender, RoutedEventArgs e)
130 | {
131 | var index = dgSkills.SelectedIndex;
132 | DataGridRow currentRowIndex = dgSkills.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
133 | if (index + 1 > skillsDataTable.Rows.Count)
134 | {
135 | }
136 | else
137 | {
138 | DataRow dr = skillsDataTable.Rows[currentRowIndex.GetIndex()];
139 | cbSkillType.SelectedIndex = ConvertToInteger(dr[0].ToString());
140 | if (dr[2].ToString() == "3")
141 | rdbSpec.IsChecked = true;
142 | else
143 | rdbTrained.IsChecked = true;
144 | tbSkillLevel.Text = dr[4].ToString();
145 | SelectedFinalSkillCalc();
146 | }
147 | }
148 | private void dgCreateList_RowSelected(object sender, RoutedEventArgs e)
149 | {
150 | var index = dgCreateItems.SelectedIndex;
151 | DataGridRow currentRowIndex = dgCreateItems.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
152 | if (index + 1 > createListDataTable.Rows.Count)
153 | {
154 | }
155 | else
156 | {
157 | DataRow dr = createListDataTable.Rows[currentRowIndex.GetIndex()];
158 |
159 | tbCreateItemsDestType.Text = dr[0].ToString();
160 | tbCreateItemsWCID.Text = dr[1].ToString();
161 | tbCreateItemsStackSize.Text = dr[2].ToString();
162 | tbCreateItemsPalette.Text = dr[3].ToString();
163 | tbCreateItemsDropRate.Text = dr[4].ToString();
164 | tbCreateItemsDescription.Text = dr[6].ToString();
165 | }
166 | }
167 | private void dgBodyParts_RowSelected(object sender, RoutedEventArgs e)
168 | {
169 | var index = dgBodyParts.SelectedIndex;
170 | DataGridRow currentRowIndex = dgBodyParts.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
171 | if (index + 1 > bodypartsDataTable.Rows.Count)
172 | {
173 | }
174 | else
175 | {
176 | DataRow dr = bodypartsDataTable.Rows[currentRowIndex.GetIndex()];
177 | cbBodyPart.SelectedIndex = ConvertToInteger(dr[0].ToString());
178 | int damageType = ConvertToInteger(dr[1].ToString());
179 | switch (damageType)
180 | {
181 | case 0:
182 | cbBodyPartDamageType.SelectedIndex = 0;
183 | break;
184 | case 1:
185 | cbBodyPartDamageType.SelectedIndex = 1;
186 | break;
187 | case 2:
188 | cbBodyPartDamageType.SelectedIndex = 2;
189 | break;
190 | case 4:
191 | cbBodyPartDamageType.SelectedIndex = 3;
192 | break;
193 | case 8:
194 | cbBodyPartDamageType.SelectedIndex = 4;
195 | break;
196 | case 16:
197 | cbBodyPartDamageType.SelectedIndex = 5;
198 | break;
199 | case 32:
200 | cbBodyPartDamageType.SelectedIndex = 6;
201 | break;
202 | case 64:
203 | cbBodyPartDamageType.SelectedIndex = 7;
204 | break;
205 | case 128:
206 | cbBodyPartDamageType.SelectedIndex = 8;
207 | break;
208 | case 256:
209 | cbBodyPartDamageType.SelectedIndex = 9;
210 | break;
211 | case 512:
212 | cbBodyPartDamageType.SelectedIndex = 10;
213 | break;
214 | case 1024:
215 | cbBodyPartDamageType.SelectedIndex = 11;
216 | break;
217 | case 268435456:
218 | cbBodyPartDamageType.SelectedIndex = 12;
219 | break;
220 | default:
221 | break;
222 | }
223 |
224 | tbBodyPartDamageValue.Text = dr[2].ToString();
225 | tbBodyPartDamageVariance.Text = dr[3].ToString();
226 |
227 | tbBodyPartArmorLevel.Text = dr[4].ToString();
228 | tbBodyPartArmorLevelSlash.Text = dr[5].ToString();
229 | tbBodyPartArmorLevelPierce.Text = dr[6].ToString();
230 | tbBodyPartArmorLevelBludgeon.Text = dr[7].ToString();
231 | tbBodyPartArmorLevelCold.Text = dr[8].ToString();
232 | tbBodyPartArmorLevelFire.Text = dr[9].ToString();
233 | tbBodyPartArmorLevelAcid.Text = dr[10].ToString();
234 | tbBodyPartArmorLevelElectric.Text = dr[11].ToString();
235 | tbBodyPartArmorLevelNether.Text = dr[12].ToString();
236 |
237 | tbBodyPartBase_Height.Text = dr[13].ToString();
238 |
239 | tbBodyPartQuadHighLF.Text = dr[14].ToString();
240 | tbBodyPartQuadMiddleLF.Text = dr[15].ToString();
241 | tbBodyPartQuadLowLF.Text = dr[16].ToString();
242 |
243 | tbBodyPartQuadHighRF.Text = dr[17].ToString();
244 | tbBodyPartQuadMiddleRF.Text = dr[18].ToString();
245 | tbBodyPartQuadLowRF.Text = dr[19].ToString();
246 |
247 | tbBodyPartQuadHighLB.Text = dr[20].ToString();
248 | tbBodyPartQuadMiddleLB.Text = dr[21].ToString();
249 | tbBodyPartQuadLowLB.Text = dr[22].ToString();
250 |
251 | tbBodyPartQuadHighRB.Text = dr[23].ToString();
252 | tbBodyPartQuadMiddleRB.Text = dr[24].ToString();
253 | tbBodyPartQuadLowRB.Text = dr[25].ToString();
254 | }
255 | }
256 | // Books
257 | private void dgBookInfo_RowSelected(object sender, RoutedEventArgs e)
258 | {
259 | var index = dgBookInfo.SelectedIndex;
260 | DataGridRow currentRowIndex = dgBookInfo.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
261 | if (index + 1 > bookInfoDataTable.Rows.Count)
262 | {
263 | }
264 | else
265 | {
266 | DataRow dr = bookInfoDataTable.Rows[currentRowIndex.GetIndex()];
267 | tbMaxPages.Text = dr[0].ToString();
268 | tbMaxChars.Text = dr[1].ToString();
269 | }
270 | }
271 | private void dgBookPages_RowSelected(object sender, RoutedEventArgs e)
272 | {
273 |
274 | var index = dgBookPages.SelectedIndex;
275 | DataGridRow currentRowIndex = dgBookPages.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
276 | if (index + 1 > bookPagesDataTable.Rows.Count)
277 | {
278 | }
279 | else
280 | {
281 | DataRow dr = bookPagesDataTable.Rows[currentRowIndex.GetIndex()];
282 | tbPageID.Text = dr[0].ToString();
283 | tbAuthorName.Text = dr[2].ToString();
284 |
285 | if (dr[4].ToString() == "True")
286 | rdbBookTrue.IsChecked = true;
287 | else
288 | rdbBookFalse.IsChecked = true;
289 |
290 | tbPageText.Text = dr[5].ToString();
291 | }
292 | }
293 | // Instance IDs
294 | private void dgIid_RowSelected(object sender, RoutedEventArgs e)
295 | {
296 |
297 | var index = dgIid.SelectedIndex;
298 | DataGridRow currentRowIndex = dgIid.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
299 | if (index + 1 > iidDataTable.Rows.Count)
300 | {
301 | }
302 | else
303 | {
304 | DataRow dr = iidDataTable.Rows[currentRowIndex.GetIndex()];
305 | cbIidProps.SelectedIndex = ConvertToInteger(dr[0].ToString());
306 | tbiidValue.Text = dr[1].ToString();
307 | }
308 | }
309 | // Positions
310 | private void dgPosition_RowSelected(object sender, RoutedEventArgs e)
311 | {
312 | var index = dgPosition.SelectedIndex;
313 | DataGridRow currentRowIndex = dgPosition.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
314 | if (index + 1 > positionsDataTable.Rows.Count)
315 | {
316 | }
317 | else
318 | {
319 | DataRow dr = positionsDataTable.Rows[currentRowIndex.GetIndex()];
320 | cbPosition.SelectedIndex = ConvertToInteger(dr[0].ToString());
321 |
322 | tbCellID.Text = dr[1].ToString();
323 | tbOriginX.Text = dr[2].ToString();
324 | tbOriginY.Text = dr[3].ToString();
325 | tbOriginZ.Text = dr[4].ToString();
326 |
327 | tbAngleW.Text = dr[5].ToString();
328 | tbAngleX.Text = dr[6].ToString();
329 | tbAngleY.Text = dr[7].ToString();
330 | tbAngleZ.Text = dr[8].ToString();
331 | }
332 | }
333 | // Update Attribs Events
334 | private void updateAttribs() // Updates Attribs - May need a better way to do this.
335 | {
336 | int i = 1;
337 | foreach (DataRow row in attributeDataTable.Rows)
338 | {
339 | if (i == 1)
340 | tbAttribStrength.Text = row[1].ToString();
341 | else if (i == 2)
342 | tbAttribEndurance.Text = row[1].ToString();
343 | else if (i == 3)
344 | tbAttribQuickness.Text = row[1].ToString();
345 | else if (i == 4)
346 | tbAttribCoordination.Text = row[1].ToString();
347 | else if (i == 5)
348 | tbAttribFocus.Text = row[1].ToString();
349 | else if (i == 6)
350 | tbAttribSelf.Text = row[1].ToString();
351 | i++;
352 | }
353 | }
354 | private void updateAttribs2() // Updates Health, Stamina, Mana
355 | {
356 | int i = 1;
357 | foreach (DataRow row in attribute2DataTable.Rows)
358 | {
359 | if (i == 1)
360 | {
361 | tbHealthInitLevel.Text = row[1].ToString();
362 | tbHealthCurrentLevel.Text = row[4].ToString();
363 | }
364 | else if (i == 2)
365 | {
366 | tbStaminaInitLevel.Text = row[1].ToString();
367 | tbStaminaCurrentLevel.Text = row[4].ToString();
368 | }
369 |
370 | else if (i == 3)
371 | {
372 | tbManaInitLevel.Text = row[1].ToString();
373 | tbManaCurrentLevel.Text = row[4].ToString();
374 | }
375 | i++;
376 | }
377 | }
378 | public void SelectedFinalSkillCalc()
379 | {
380 | // Skill Formulas based on Attribs
381 |
382 | int strength = ConvertToInteger(tbAttribStrength.Text);
383 | int endur = ConvertToInteger(tbAttribEndurance.Text);
384 | int coord = ConvertToInteger(tbAttribCoordination.Text);
385 | int quick = ConvertToInteger(tbAttribQuickness.Text);
386 | int focus = ConvertToInteger(tbAttribFocus.Text);
387 | int self = ConvertToInteger(tbAttribSelf.Text);
388 |
389 |
390 | if (WeenieFabUser.Default.AutoCalcSkill == true)
391 | {
392 | switch (cbSkillType.SelectedIndex)
393 | {
394 |
395 | case 6: // MeleeD
396 | case 46: // Finesse Weapons
397 | case 51: // Sneak Attack
398 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((quick + coord) / 3)).ToString();
399 | break;
400 | case 7: // MissileD
401 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((quick + coord) / 5)).ToString();
402 | break;
403 | case 14: // Arcane Lore
404 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + (focus / 3)).ToString();
405 | break;
406 | case 15: // Magic D
407 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((focus + self) / 7)).ToString();
408 | break;
409 | case 16: // Mana C
410 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((focus + self) / 6)).ToString();
411 | break;
412 | case 18: // Item Appraisal - Item Tink
413 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((focus + coord) / 2)).ToString();
414 | break;
415 | case 19: // Personal Appraisal - Assess Person
416 | case 20: // Deception
417 | case 27: // Creature Appraisal - Assess Creature
418 | case 35: // Leadership
419 | case 36: // Loyalty
420 | case 40: // Salvaging
421 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text)).ToString();
422 | break;
423 | case 21: // Healing
424 | case 23: // Lockpick
425 | case 37: // Fletching
426 | case 38: // Alchemy
427 | case 39: // Cooking
428 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((focus + coord) / 3)).ToString();
429 | break;
430 | case 22: // Jump
431 | case 48: // Shield
432 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((strength + coord) / 2)).ToString();
433 | break;
434 | case 24: // Run
435 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + quick).ToString();
436 | break;
437 | case 28: // Weapon Appraisal - Weapon Tink
438 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((focus + strength) / 2)).ToString();
439 | break;
440 | case 29: // Armor Appraisal - Armor Tink
441 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((focus + endur) / 2)).ToString();
442 | break;
443 | case 30: // Magic Item Appraisal - Magic Item Tink
444 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + focus).ToString();
445 | break;
446 | case 31: // Creature Magic
447 | case 32: // Item Magic
448 | case 33: // Life Magic
449 | case 34: // War Magic
450 | case 43: // Void Magic
451 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((focus + self) / 4)).ToString();
452 | break;
453 | case 41: // Two Hand
454 | case 44: // Heavy Weapons
455 | case 45: // Light Weapons
456 | case 52: // Dirty Fighting
457 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((strength + coord) / 3)).ToString();
458 | break;
459 | case 47: // Missile Weapons
460 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + coord / 2).ToString();
461 | break;
462 | case 49: // Dual Wield
463 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((coord * 2) / 3)).ToString();
464 | break;
465 | case 50: // Recklessness
466 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((strength + quick) / 3)).ToString();
467 | break;
468 | case 54: // Summoning
469 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((endur + self) / 3)).ToString();
470 | break;
471 | case 1: // Axe
472 | case 5: // Mace
473 | case 9: // Spear
474 | case 10: // Staff
475 | case 11: // Sword
476 | case 13: // Unarmed Combat
477 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((strength + coord) / 3)).ToString();
478 | break;
479 | case 2: // Bow
480 | case 3: // Crossbow
481 | case 12: // Thrown Weapon
482 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + coord / 2).ToString();
483 | break;
484 | case 4: // Dagger
485 | tbSkillFinalLevel.Text = (ConvertToInteger(tbSkillLevel.Text) + ((quick + coord) / 3)).ToString();
486 | break;
487 | // Ignored (Unused)
488 | case 0:
489 | case 8:
490 | case 17:
491 | case 25:
492 | case 26:
493 | case 42:
494 | case 53:
495 | default:
496 | break;
497 | }
498 | }
499 | }
500 | }
501 | }
502 |
--------------------------------------------------------------------------------