diff --git a/Intersect.Server/Migrations/MySql/Game/20240330154744_ItemEventTriggerMigration.Designer.cs b/Intersect.Server/Migrations/MySql/Game/20240330154744_ItemEventTriggerMigration.Designer.cs
new file mode 100644
index 0000000000..5b748ff106
--- /dev/null
+++ b/Intersect.Server/Migrations/MySql/Game/20240330154744_ItemEventTriggerMigration.Designer.cs
@@ -0,0 +1,1777 @@
+//
+using System;
+using Intersect.Server.Database.GameData;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Intersect.Server.Migrations.MySql.Game
+{
+ [DbContext(typeof(MySqlGameContext))]
+ [Migration("20240330154744_ItemEventTriggerMigration")]
+ partial class ItemEventTriggerMigration
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.11")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("Intersect.GameObjects.AnimationBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("CompleteSound")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("Sound")
+ .HasColumnType("longtext");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("Animations");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.ClassBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AttackAnimationId")
+ .HasColumnType("char(36)")
+ .HasColumnName("AttackAnimation")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AttackSpeedModifier")
+ .HasColumnType("int");
+
+ b.Property("AttackSpeedValue")
+ .HasColumnType("int");
+
+ b.Property("AttackSpriteOverride")
+ .HasColumnType("longtext");
+
+ b.Property("BaseExp")
+ .HasColumnType("bigint");
+
+ b.Property("BasePoints")
+ .HasColumnType("int");
+
+ b.Property("CritChance")
+ .HasColumnType("int");
+
+ b.Property("CritMultiplier")
+ .HasColumnType("double");
+
+ b.Property("Damage")
+ .HasColumnType("int");
+
+ b.Property("DamageType")
+ .HasColumnType("int");
+
+ b.Property("ExpIncrease")
+ .HasColumnType("bigint");
+
+ b.Property("ExpOverridesJson")
+ .HasColumnType("longtext")
+ .HasColumnName("ExperienceOverrides");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("IncreasePercentage")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("JsonBaseStats")
+ .HasColumnType("longtext")
+ .HasColumnName("BaseStats");
+
+ b.Property("JsonBaseVitals")
+ .HasColumnType("longtext")
+ .HasColumnName("BaseVitals");
+
+ b.Property("JsonItems")
+ .HasColumnType("longtext")
+ .HasColumnName("Items");
+
+ b.Property("JsonSpells")
+ .HasColumnType("longtext")
+ .HasColumnName("Spells");
+
+ b.Property("JsonSprites")
+ .HasColumnType("longtext")
+ .HasColumnName("Sprites");
+
+ b.Property("Locked")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("PointIncrease")
+ .HasColumnType("int");
+
+ b.Property("RegenJson")
+ .HasColumnType("longtext")
+ .HasColumnName("VitalRegen");
+
+ b.Property("Scaling")
+ .HasColumnType("int");
+
+ b.Property("ScalingStat")
+ .HasColumnType("int");
+
+ b.Property("SpawnDir")
+ .HasColumnType("int");
+
+ b.Property("SpawnMapId")
+ .HasColumnType("char(36)")
+ .HasColumnName("SpawnMap")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("SpawnX")
+ .HasColumnType("int");
+
+ b.Property("SpawnY")
+ .HasColumnType("int");
+
+ b.Property("StatIncreaseJson")
+ .HasColumnType("longtext")
+ .HasColumnName("StatIncreases");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.Property("VitalIncreaseJson")
+ .HasColumnType("longtext")
+ .HasColumnName("VitalIncreases");
+
+ b.HasKey("Id");
+
+ b.ToTable("Classes");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.Crafting.CraftBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("EventId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Event")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("FailureChance")
+ .HasColumnType("int");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("IngredientsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Ingredients");
+
+ b.Property("ItemId")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("ItemLossChance")
+ .HasColumnType("int");
+
+ b.Property("JsonCraftingRequirements")
+ .HasColumnType("longtext")
+ .HasColumnName("CraftingRequirements");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("Quantity")
+ .HasColumnType("int");
+
+ b.Property("Time")
+ .HasColumnType("int");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("Crafts");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.CraftingTableBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("CraftsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Crafts");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("CraftingTables");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.EquipmentProperties", b =>
+ {
+ b.Property("DescriptorId")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.HasKey("DescriptorId");
+
+ b.ToTable("Items_EquipmentProperties");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.Events.EventBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("CommonEvent")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("Global")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("MapId")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("PagesJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Pages");
+
+ b.Property("SpawnX")
+ .HasColumnType("int");
+
+ b.Property("SpawnY")
+ .HasColumnType("int");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("Events");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.GuildVariableBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("TextId")
+ .HasColumnType("longtext");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.Property("Type")
+ .HasColumnType("tinyint unsigned");
+
+ b.HasKey("Id");
+
+ b.ToTable("GuildVariables");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.ItemBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AnimationId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Animation")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AttackAnimationId")
+ .HasColumnType("char(36)")
+ .HasColumnName("AttackAnimation")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AttackSpeedModifier")
+ .HasColumnType("int");
+
+ b.Property("AttackSpeedValue")
+ .HasColumnType("int");
+
+ b.Property("BlockAbsorption")
+ .HasColumnType("int");
+
+ b.Property("BlockAmount")
+ .HasColumnType("int");
+
+ b.Property("BlockChance")
+ .HasColumnType("int");
+
+ b.Property("CanBag")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("CanBank")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("CanDrop")
+ .HasColumnType("tinyint(1)")
+ .HasColumnName("Bound");
+
+ b.Property("CanGuildBank")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("CanSell")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("CanTrade")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("CannotUseMessage")
+ .HasColumnType("longtext");
+
+ b.Property("Cooldown")
+ .HasColumnType("int");
+
+ b.Property("CooldownGroup")
+ .HasColumnType("longtext");
+
+ b.Property("CritChance")
+ .HasColumnType("int");
+
+ b.Property("CritMultiplier")
+ .HasColumnType("double");
+
+ b.Property("Damage")
+ .HasColumnType("int");
+
+ b.Property("DamageType")
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .HasColumnType("longtext");
+
+ b.Property("DespawnTime")
+ .HasColumnType("bigint");
+
+ b.Property("DropChanceOnDeath")
+ .HasColumnType("int");
+
+ b.Property("EffectsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Effects");
+
+ b.Property("EquipmentAnimationId")
+ .HasColumnType("char(36)")
+ .HasColumnName("EquipmentAnimation")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("EquipmentSlot")
+ .HasColumnType("int");
+
+ b.Property("EventId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Event")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("EventTriggersJson")
+ .HasColumnType("longtext")
+ .HasColumnName("EventTriggers");
+
+ b.Property("FemalePaperdoll")
+ .HasColumnType("longtext");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("Icon")
+ .HasColumnType("longtext");
+
+ b.Property("IgnoreCooldownReduction")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("IgnoreGlobalCooldown")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ItemType")
+ .HasColumnType("int");
+
+ b.Property("JsonColor")
+ .HasColumnType("longtext")
+ .HasColumnName("Color");
+
+ b.Property("JsonUsageRequirements")
+ .HasColumnType("longtext")
+ .HasColumnName("UsageRequirements");
+
+ b.Property("MalePaperdoll")
+ .HasColumnType("longtext");
+
+ b.Property("MaxBankStack")
+ .HasColumnType("int");
+
+ b.Property("MaxInventoryStack")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("PercentageStatsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("PercentageStatsGiven");
+
+ b.Property("PercentageVitalsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("PercentageVitalsGiven");
+
+ b.Property("Price")
+ .HasColumnType("int");
+
+ b.Property("ProjectileId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Projectile")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("QuickCast")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Rarity")
+ .HasColumnType("int");
+
+ b.Property("Scaling")
+ .HasColumnType("int");
+
+ b.Property("ScalingStat")
+ .HasColumnType("int");
+
+ b.Property("SingleUse")
+ .HasColumnType("tinyint(1)")
+ .HasColumnName("DestroySpell");
+
+ b.Property("SlotCount")
+ .HasColumnType("int");
+
+ b.Property("Speed")
+ .HasColumnType("int");
+
+ b.Property("SpellId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Spell")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Stackable")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("StatsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("StatsGiven");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.Property("Tool")
+ .HasColumnType("int");
+
+ b.Property("TwoHanded")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("VitalsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("VitalsGiven");
+
+ b.Property("VitalsRegenJson")
+ .HasColumnType("longtext")
+ .HasColumnName("VitalsRegen");
+
+ b.Property("WeaponSpriteOverride")
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.ToTable("Items");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.Maps.MapList.MapList", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("JsonData")
+ .HasColumnType("longtext")
+ .HasColumnName("JsonData");
+
+ b.HasKey("Id");
+
+ b.ToTable("MapFolders");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.NpcBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Aggressive")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("AttackAllies")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("AttackAnimationId")
+ .HasColumnType("char(36)")
+ .HasColumnName("AttackAnimation")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AttackOnSightConditionsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("AttackOnSightConditions");
+
+ b.Property("AttackSpeedModifier")
+ .HasColumnType("int");
+
+ b.Property("AttackSpeedValue")
+ .HasColumnType("int");
+
+ b.Property("CraftsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Spells");
+
+ b.Property("CritChance")
+ .HasColumnType("int");
+
+ b.Property("CritMultiplier")
+ .HasColumnType("double");
+
+ b.Property("Damage")
+ .HasColumnType("int");
+
+ b.Property("DamageType")
+ .HasColumnType("int");
+
+ b.Property("Experience")
+ .HasColumnType("bigint");
+
+ b.Property("FleeHealthPercentage")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("FocusHighestDamageDealer")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("ImmunitiesJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Immunities");
+
+ b.Property("IndividualizedLoot")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("JsonAggroList")
+ .HasColumnType("longtext")
+ .HasColumnName("AggroList");
+
+ b.Property("JsonColor")
+ .HasColumnType("longtext")
+ .HasColumnName("Color");
+
+ b.Property("JsonDrops")
+ .HasColumnType("longtext")
+ .HasColumnName("Drops");
+
+ b.Property("JsonMaxVital")
+ .HasColumnType("longtext")
+ .HasColumnName("MaxVital");
+
+ b.Property("JsonStat")
+ .HasColumnType("longtext")
+ .HasColumnName("Stats");
+
+ b.Property("Level")
+ .HasColumnType("int");
+
+ b.Property("Movement")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("NpcVsNpcEnabled")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("OnDeathEventId")
+ .HasColumnType("char(36)")
+ .HasColumnName("OnDeathEvent")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("OnDeathPartyEventId")
+ .HasColumnType("char(36)")
+ .HasColumnName("OnDeathPartyEvent")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("PlayerCanAttackConditionsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("PlayerCanAttackConditions");
+
+ b.Property("PlayerFriendConditionsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("PlayerFriendConditions");
+
+ b.Property("RegenJson")
+ .HasColumnType("longtext")
+ .HasColumnName("VitalRegen");
+
+ b.Property("ResetRadius")
+ .HasColumnType("int");
+
+ b.Property("Scaling")
+ .HasColumnType("int");
+
+ b.Property("ScalingStat")
+ .HasColumnType("int");
+
+ b.Property("SightRange")
+ .HasColumnType("int");
+
+ b.Property("SpawnDuration")
+ .HasColumnType("int");
+
+ b.Property("SpellFrequency")
+ .HasColumnType("int");
+
+ b.Property("Sprite")
+ .HasColumnType("longtext");
+
+ b.Property("Swarm")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Tenacity")
+ .HasColumnType("double");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("Npcs");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.PlayerVariableBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("TextId")
+ .HasColumnType("longtext");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.Property("Type")
+ .HasColumnType("tinyint unsigned");
+
+ b.HasKey("Id");
+
+ b.ToTable("PlayerVariables");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.ProjectileBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AmmoItemId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Ammo")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AmmoRequired")
+ .HasColumnType("int");
+
+ b.Property("AnimationsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Animations");
+
+ b.Property("Delay")
+ .HasColumnType("int");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("GrappleHook")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("GrappleHookOptionsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("GrappleHookOptions");
+
+ b.Property("IgnoreActiveResources")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("IgnoreExhaustedResources")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("IgnoreMapBlocks")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("IgnoreZDimension")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Knockback")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("PierceTarget")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Quantity")
+ .HasColumnType("int");
+
+ b.Property("Range")
+ .HasColumnType("int");
+
+ b.Property("SpawnsJson")
+ .HasColumnType("longtext")
+ .HasColumnName("SpawnLocations");
+
+ b.Property("Speed")
+ .HasColumnType("int");
+
+ b.Property("SpellId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Spell")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("Projectiles");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.QuestBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("BeforeDescription")
+ .HasColumnType("longtext");
+
+ b.Property("CompletedCategory")
+ .HasColumnType("longtext");
+
+ b.Property("DoNotShowUnlessRequirementsMet")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("EndDescription")
+ .HasColumnType("longtext");
+
+ b.Property("EndEventId")
+ .HasColumnType("char(36)")
+ .HasColumnName("EndEvent")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("InProgressCategory")
+ .HasColumnType("longtext");
+
+ b.Property("InProgressDescription")
+ .HasColumnType("longtext");
+
+ b.Property("JsonRequirements")
+ .HasColumnType("longtext")
+ .HasColumnName("Requirements");
+
+ b.Property("LogAfterComplete")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LogBeforeOffer")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("OrderValue")
+ .HasColumnType("int");
+
+ b.Property("Quitable")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Repeatable")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("StartDescription")
+ .HasColumnType("longtext");
+
+ b.Property("StartEventId")
+ .HasColumnType("char(36)")
+ .HasColumnName("StartEvent")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("TasksJson")
+ .HasColumnType("longtext")
+ .HasColumnName("Tasks");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.Property("UnstartedCategory")
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.ToTable("Quests");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.ResourceBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("AnimationId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Animation")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("CannotHarvestMessage")
+ .HasColumnType("longtext");
+
+ b.Property("EventId")
+ .HasColumnType("char(36)")
+ .HasColumnName("Event")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("JsonDrops")
+ .HasColumnType("longtext")
+ .HasColumnName("Drops");
+
+ b.Property("JsonHarvestingRequirements")
+ .HasColumnType("longtext")
+ .HasColumnName("HarvestingRequirements");
+
+ b.Property("MaxHp")
+ .HasColumnType("int");
+
+ b.Property("MinHp")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("SpawnDuration")
+ .HasColumnType("int");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.Property("Tool")
+ .HasColumnType("int");
+
+ b.Property("VitalRegen")
+ .HasColumnType("int");
+
+ b.Property("WalkableAfter")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("WalkableBefore")
+ .HasColumnType("tinyint(1)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Resources");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.ServerVariableBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property("Json")
+ .HasColumnType("longtext")
+ .HasColumnName("Value");
+
+ b.Property("Name")
+ .HasColumnType("longtext")
+ .HasColumnOrder(0);
+
+ b.Property("TextId")
+ .HasColumnType("longtext");
+
+ b.Property("TimeCreated")
+ .HasColumnType("bigint");
+
+ b.Property("Type")
+ .HasColumnType("tinyint unsigned");
+
+ b.HasKey("Id");
+
+ b.ToTable("ServerVariables");
+ });
+
+ modelBuilder.Entity("Intersect.GameObjects.ShopBase", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("BuySound")
+ .HasColumnType("longtext");
+
+ b.Property("BuyingWhitelist")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("DefaultCurrencyId")
+ .HasColumnType("char(36)")
+ .HasColumnName("DefaultCurrency")
+ .UseCollation("ascii_general_ci");
+
+ b.Property("Folder")
+ .HasColumnType("longtext");
+
+ b.Property