private Dictionary <string, string> CreatureTemplateMovement(TrinityCreature creature)
        {
            // dodgy bitmask decode
            int  fly = 0, swim = 0, ground = 0;
            long remain = creature.Inhabit.BitmaskValue;

            if (remain - 4 <= 0)
            {
                fly     = 1;
                remain -= 4;
            }
            if (remain - 2 <= 0)
            {
                swim    = 1;
                remain -= 2;
            }
            if (remain - 1 <= 0)
            {
                ground  = 1;
                remain -= 1;
            }

            var kvplist = new Dictionary <string, string>
            {
                { "CreatureId", creature.Entry.ToString() },
                { "Ground", ground.ToString() },
                { "Swim", swim.ToString() },
                { "Flight", fly.ToString() },
                //{ "Rooted", rooted.ToString() }, // todo
            };

            return(kvplist);
        }
        private Dictionary <string, string> CreatureTemplate(TrinityCreature creature)
        {
            var kvplist = new Dictionary <string, string>
            {
                { "entry", creature.Entry.ToString() },
                { "name", SqlQuery.CleanText(creature.Name) },
                { "subname", SqlQuery.CleanText(creature.Subname) },
                { "minlevel", creature.MinLevel.ToString() },
                { "maxlevel", creature.MaxLevel.ToString() },
                { "FactionAlliance", creature.Faction.ToString() },
                { "FactionHorde", creature.Faction.ToString() }, // to do : pouvoir choisir 2 factions différentes
                { "NpcFlags", creature.NpcFlags.BitmaskValue.ToString() },
                { "SpeedWalk", creature.SpeedWalk.ToString() },
                { "SpeedRun", creature.SpeedRun.ToString() },
                { "scale", creature.Scale.ToString() },
                { "rank", creature.Rank.Id.ToString() },
                { "DamageSchool", creature.DmgSchool.Id.ToString() },
                { "MeleeBaseAttackTime", creature.BaseAttackTime.ToString() },
                { "RangedBaseAttackTime", creature.RangeAttackTime.ToString() },
                { "UnitClass", creature._UnitClass.Id.ToString() },
                { "UnitFlags", creature.UnitFlags.BitmaskValue.ToString() },
                //{"unit_flags2", creature.UnitFlags2.BitmaskValue.ToString()},
                { "DynamicFlags", creature.DynamicFlags.BitmaskValue.ToString() },
                { "family", creature.Family.Id.ToString() },
                { "trainertype", creature.Trainer.TrainerType.ToString() },
                { "trainerspell", creature.Trainer.TrainerSpell.ToString() },
                { "trainerclass", creature.Trainer.TrainerClass.ToString() },
                { "trainerrace", creature.Trainer.TrainerRace.ToString() },
                { "CreatureType", creature._CreatureType.Id.ToString() },
                //{"InhabitType", creature.TypeFlags.BitmaskValue.ToString()},
                { "lootid", creature.LootId.ToString() },
                { "pickpocketlootid", creature.PickpocketLoot.ToString() },
                { "skinninglootid", creature.SkinLoot.ToString() },
                { "PetSpellDataId", creature.PetDataId.ToString() },
                { "VehicleTemplateId", creature.VehicleId.ToString() },
                { "minlootgold", creature.MinGold.Amount.ToString() },
                { "maxlootgold", creature.MaxGold.Amount.ToString() },
                { "AIName", SqlQuery.CleanText(creature.AIName.Description) },
                { "MovementType", creature.Movement.Id.ToString() },
                { "InhabitType", creature.Inhabit.BitmaskValue.ToString() },
                //{"HoverHeight", creature.HoverHeight.ToString()},
                { "HealthMultiplier", creature.HealthModifier.ToString() },
                { "PowerMultiplier", creature.ManaModifier.ToString() },
                { "ArmorMultiplier", creature.ArmorModifier.ToString() },
                { "DamageMultiplier", creature.DamageModifier.ToString() },
                { "ExperienceMultiplier", creature.ExperienceModifier.ToString() },
                { "RacialLeader", Convert.ToInt16(creature.RacialLeader).ToString() },
                { "RegenerateStats", Convert.ToInt16(creature.RegenHealth).ToString() },
                { "mechanicimmunemask", creature.MechanicImmuneMask.BitmaskValue.ToString() },
                { "ExtraFlags", creature.FlagsExtra.BitmaskValue.ToString() },
                //{"exp", creature.Exp.ToString()},
            };

            creature.ModelIds.AddValues(kvplist);
            creature.Resistances.AddValues(kvplist, "resistance");
            creature.DifficultyEntry.AddValues(kvplist, "");
            creature.Spells.AddValues(kvplist);
            return(kvplist);
        }
Example #3
0
        private Dictionary <string, string> CreatureTemplate(TrinityCreature creature)
        {
            var kvplist = new Dictionary <string, string>
            {
                { "entry", creature.Entry.ToString() },
                { "name", SqlQuery.CleanText(creature.Name) },
                { "subname", SqlQuery.CleanText(creature.Subname) },
                { "minlevel", creature.MinLevel.ToString() },
                { "maxlevel", creature.MaxLevel.ToString() },
                { "faction", creature.Faction.ToString() },
                { "npcflag", creature.NpcFlags.BitmaskValue.ToString() },
                { "speed_walk", creature.SpeedWalk.ToString() },
                { "speed_run", creature.SpeedRun.ToString() },
                { "scale", creature.Scale.ToString() },
                { "rank", creature.Rank.Id.ToString() },
                { "dmgschool", creature.DmgSchool.Id.ToString() },
                { "BaseAttackTime", creature.BaseAttackTime.ToString() },
                { "RangeAttackTime", creature.RangeAttackTime.ToString() },
                { "unit_class", creature._UnitClass.Id.ToString() },
                { "unit_flags", creature.UnitFlags.BitmaskValue.ToString() },
                { "unit_flags2", creature.UnitFlags2.BitmaskValue.ToString() },
                { "dynamicflags", creature.DynamicFlags.BitmaskValue.ToString() },
                { "family", creature.Family.Id.ToString() },
                { "trainer_type", creature.Trainer.TrainerType.ToString() },
                { "trainer_spell", creature.Trainer.TrainerSpell.ToString() },
                { "trainer_class", creature.Trainer.TrainerClass.ToString() },
                { "trainer_race", creature.Trainer.TrainerRace.ToString() },
                { "type", creature._CreatureType.Id.ToString() },
                { "type_flags", creature.TypeFlags.BitmaskValue.ToString() },
                { "lootid", creature.LootId.ToString() },
                { "pickpocketloot", creature.PickpocketLoot.ToString() },
                { "skinloot", creature.SkinLoot.ToString() },
                { "PetSpellDataId", creature.PetDataId.ToString() },
                { "VehicleId", creature.VehicleId.ToString() },
                { "mingold", creature.MinGold.Amount.ToString() },
                { "maxgold", creature.MaxGold.Amount.ToString() },
                { "AIName", SqlQuery.CleanText(creature.AIName.Description) },
                { "MovementType", creature.Movement.Id.ToString() },
                { "InhabitType", creature.Inhabit.BitmaskValue.ToString() },
                { "HoverHeight", creature.HoverHeight.ToString() },
                { "Health_mod", creature.HealthModifier.ToString() },
                { "Mana_mod", creature.ManaModifier.ToString() },
                { "Armor_mod", creature.ArmorModifier.ToString() },
                { "mindmg", creature.MinDmg.ToString() },
                { "maxdmg", creature.MaxDmg.ToString() },
                { "RacialLeader", Convert.ToInt16(creature.RacialLeader).ToString() },
                { "RegenHealth", Convert.ToInt16(creature.RegenHealth).ToString() },
                { "mechanic_immune_mask", creature.MechanicImmuneMask.BitmaskValue.ToString() },
                { "flags_extra", creature.FlagsExtra.BitmaskValue.ToString() },
                { "exp", creature.Exp.ToString() },
            };

            creature.ModelIds.AddValues(kvplist);
            creature.Resistances.AddValues(kvplist, "resistance");
            creature.DifficultyEntry.AddValues(kvplist);
            creature.Spells.AddValues(kvplist);
            return(kvplist);
        }
Example #4
0
        public string GenerateQuery(TrinityCreature creature)
        {
            string result = SqlQuery.GenerateInsert("creature_template", CreatureTemplate(creature)) +
                            SqlQuery.GenerateInsert("creature_template_addon", CreatureTemplateAddon(creature));

            if (creature.Weapon1 + creature.Weapon2 + creature.Weapon3 > 0)
            {
                result += SqlQuery.GenerateInsert("creature_equip_template", CreatureEquipTemplate(creature));
            }

            return(result);
        }
Example #5
0
        private Dictionary <string, string> CreatureEquipTemplate(TrinityCreature creature)
        {
            var kvplist = new Dictionary <string, string>
            {
                { "CreatureID", creature.Entry.ToString() },
                { "ItemID1", creature.Weapon1.ToString() },
                { "ItemID2", creature.Weapon2.ToString() },
                { "ItemID3", creature.Weapon3.ToString() },
            };

            return(kvplist);
        }
        private Dictionary <string, string> TrainerSpell(TrinityCreature creature)
        {
            var kvplist = new Dictionary <string, string>
            {
                { "TrainerId", creature.Entry.ToString() },
                { "SpellId", creature.Trainer.TrainerSpell.ToString() },

                // todo: This needs to be updated with price & reqs
            };

            return(kvplist);
        }
        private Dictionary <string, string> Trainer(TrinityCreature creature)
        {
            var kvplist = new Dictionary <string, string>
            {
                { "Id", creature.Entry.ToString() },
                { "Type", creature.Trainer.TrainerType.ToString() },
                //{ "trainer_class", creature.Trainer.TrainerClass.ToString()}, <-- removed?
                //{ "trainer_race", creature.Trainer.TrainerRace.ToString()} <-- removed?
            };

            return(kvplist);
        }
Example #8
0
        private Dictionary <string, string> CreatureTemplateAddon(TrinityCreature creature)
        {
            var kvplist = new Dictionary <string, string>
            {
                { "entry", creature.Entry.ToString() },
                { "mount", creature.Mount.ToString() },
                { "bytes1", creature.Bytes1.BitmaskValue.ToString() },
                { "emote", creature.Emote.ToString() },
            };

            creature.Auras.AddValues(kvplist, "auras", ' ');
            return(kvplist);
        }
        public string GenerateQuery(TrinityCreature creature)
        {
            string result = SqlQuery.GenerateInsert("creature_template", CreatureTemplate(creature)) +
                            SqlQuery.GenerateInsert("creature_template_addon", CreatureTemplateAddon(creature));

            if (creature.Weapon1 + creature.Weapon2 + creature.Weapon3 > 0)
            {
                result += SqlQuery.GenerateInsert("creature_equip_template", CreatureEquipTemplate(creature));
            }

            if (creature.Trainer.TrainerType != 0)
            {
                result += SqlQuery.GenerateInsert("trainer", Trainer(creature)) +
                          SqlQuery.GenerateInsert("trainer_spell", TrainerSpell(creature));
            }

            return(result);
        }
Example #10
0
        public static string GenerateQuery(TrinityCreature creature)
        {
            if (creature.Entry == 0)
            {
                throw new Exception("Please choose an entry ID.");
            }
            if (creature.Faction == 0)
            {
                throw new Exception("Please set a faction for your creature.");
            }
            if (creature.ModelIds.GetFirstValue() == 0)
            {
                throw new Exception("Please set a model ID for your creature.");
            }
            if (creature.Name == "")
            {
                throw new Exception("Please set a name for your creature.");
            }

            return(SelectedEmulator.GenerateQuery(creature));
        }
Example #11
0
        public static void LoadTemplate(string className)
        {
            CreatureCreatorPage page = (CreatureCreatorPage)App._MainWindow.CreatureCreatorTab.Content;

            if (page.IsCreatureModified)
            {
                var r = MessageBox.Show("Do you want to discard your unsaved creature changes to load " + className + "?",
                                        "Overwrite creature", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning, MessageBoxResult.No);
                if (r != MessageBoxResult.Yes)
                {
                    return; // Don't load template
                }
            }

            Type            type     = Assembly.GetExecutingAssembly().GetTypes().First(t => t.Name == className);
            TrinityCreature creature = (TemplateBase)Activator.CreateInstance(type);

            page.Creature    = creature;
            page.DataContext = null;
            page.DataContext = page.Creature;
            ((TemplateBase)page.Creature).LoadTemplate();
            page.PrepareCreaturePage();
        }
Example #12
0
        // Vendor is dynamic, loop through the UI elements
        public static string Creature(TrinityCreature creature)
        {
            Logger.Log($"Export: Called Creature with profile: '{Profile.Active.Name}' - Revision {Profile.Active.Revision}");
            var data = new List <ExpKvp>()
            {
                new ExpKvp("Entry", creature.Entry, C.Creature),
                new ExpKvp("Name", creature.Name, C.Creature),
                new ExpKvp("Subname", creature.Subname, C.Creature),
                new ExpKvp("MinLevel", creature.MinLevel, C.Creature),
                new ExpKvp("MaxLevel", creature.MaxLevel, C.Creature),
                new ExpKvp("Faction", creature.Faction, C.Creature),
                new ExpKvp("NpcFlags", creature.NpcFlags.BitmaskValue, C.Creature),
                new ExpKvp("SpeedWalk", creature.SpeedWalk, C.Creature),
                new ExpKvp("SpeedRun", creature.SpeedRun, C.Creature),
                new ExpKvp("Scale", creature.Scale, C.Creature),
                new ExpKvp("Rank", creature.Rank.Id, C.Creature),
                new ExpKvp("DmgSchool", creature.DmgSchool.Id, C.Creature),
                new ExpKvp("BaseAttackTime", creature.BaseAttackTime, C.Creature),
                new ExpKvp("RangeAttackTime", creature.RangeAttackTime, C.Creature),
                new ExpKvp("UnitClass", creature._UnitClass.Id, C.Creature),
                new ExpKvp("UnitFlags", creature.UnitFlags.BitmaskValue, C.Creature),
                new ExpKvp("UnitFlags2", creature.UnitFlags2.BitmaskValue, C.Creature),
                new ExpKvp("DynamicFlags", creature.DynamicFlags.BitmaskValue, C.Creature),
                new ExpKvp("Family", creature.Family.Id, C.Creature),
                new ExpKvp("TrainerType", creature.Trainer.TrainerType, C.Creature),
                new ExpKvp("TrainerSpell", creature.Trainer.TrainerSpell, C.Creature),
                new ExpKvp("TrainerClass", creature.Trainer.TrainerClass, C.Creature),
                new ExpKvp("TrainerRace", creature.Trainer.TrainerRace, C.Creature),
                new ExpKvp("CreatureType", creature._CreatureType.Id, C.Creature),
                new ExpKvp("TypeFlags", creature.TypeFlags.BitmaskValue, C.Creature),
                new ExpKvp("LootId", creature.LootId, C.Creature),
                new ExpKvp("PickpocketLoot", creature.PickpocketLoot, C.Creature),
                new ExpKvp("SkinLoot", creature.SkinLoot, C.Creature),
                new ExpKvp("PetDataId", creature.PetDataId, C.Creature),
                new ExpKvp("VehicleId", creature.VehicleId, C.Creature),
                new ExpKvp("MinGold", creature.MinGold.Amount, C.Creature),
                new ExpKvp("MaxGold", creature.MaxGold.Amount, C.Creature),
                new ExpKvp("AiName", creature.AIName.Description, C.Creature), // Points to description, eg. NullAI, not sure if this is still used
                new ExpKvp("MovementType", creature.Movement.Id, C.Creature),
                new ExpKvp("InhabitType", creature.Inhabit.BitmaskValue, C.Creature),
                new ExpKvp("HoverHeight", creature.HoverHeight, C.Creature),
                new ExpKvp("HealthModifier", creature.HealthModifier, C.Creature),
                new ExpKvp("ManaModifier", creature.ManaModifier, C.Creature),
                new ExpKvp("DamageModifier", creature.DamageModifier, C.Creature),
                new ExpKvp("ArmorModifier", creature.ArmorModifier, C.Creature),
                new ExpKvp("ExperienceModifier", creature.ExperienceModifier, C.Creature),
                new ExpKvp("RacialLeader", creature.RacialLeader, C.Creature),
                new ExpKvp("RegenHealth", creature.RegenHealth, C.Creature),
                new ExpKvp("MechanicImmuneMask", creature.MechanicImmuneMask.BitmaskValue, C.Creature),
                new ExpKvp("FlagsExtra", creature.FlagsExtra.BitmaskValue, C.Creature),
                new ExpKvp("Mount", creature.Mount, C.Creature),
                new ExpKvp("Bytes1", creature.Bytes1.BitmaskValue, C.Creature),
                new ExpKvp("Emote", creature.Emote, C.Creature),
                new ExpKvp("MinDmg", creature.MinDmg, C.Creature),
                new ExpKvp("MaxDmg", creature.MaxDmg, C.Creature),
                new ExpKvp("Weapon1", creature.Weapon1, C.Creature),
                new ExpKvp("Weapon2", creature.Weapon2, C.Creature),
                new ExpKvp("Weapon3", creature.Weapon3, C.Creature),
                new ExpKvp("MinLevelHealth", creature.MinLevelHealth, C.Creature),
                new ExpKvp("MaxLevelHealth", creature.MaxLevelHealth, C.Creature),
                new ExpKvp("MinLevelMana", creature.MinLevelMana, C.Creature),
                new ExpKvp("MaxLevelMana", creature.MaxLevelMana, C.Creature),
                new ExpKvp("MinMeleeDmg", creature.MinMeleeDmg, C.Creature),
                new ExpKvp("MaxMeleeDmg", creature.MaxMeleeDmg, C.Creature),
                new ExpKvp("MinRangedDmg", creature.MinRangedDmg, C.Creature),
                new ExpKvp("MaxRangedDmg", creature.MaxRangedDmg, C.Creature),
                new ExpKvp("Armor", creature.Armor, C.Creature),
                new ExpKvp("MeleeAttackPower", creature.MeleeAttackPower, C.Creature),
                new ExpKvp("RangedAttackPower", creature.RangedAttackPower, C.Creature),
                new ExpKvp("Civilian", creature.Civilian, C.Creature),
            };

            try // Handle ModelIds - Why is this a DDC? :(
            {
                // Translates to single columns: StatType1, StatValue1, StatType2...
                var modelData = new Dictionary <string, string>();
                creature.ModelIds.AddValues(modelData);
                foreach (var modelIds in modelData)
                {
                    data.Add(new ExpKvp(modelIds.Key, int.Parse(modelIds.Value), C.Creature));
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Logger.Log("Something went wrong parsing model id data. Query was not saved.", Logger.Status.Error, true);
                return(String.Empty);
            }

            try // Handle resistances
            {
                foreach (var kvp in creature.Resistances.GetUserInput())
                {
                    // Translates to HolyResistance, FireResistance...
                    string appKey = ((DamageType)kvp.Key).Description + "Resistance";
                    int    value;
                    if (!int.TryParse(kvp.Value, out value))
                    {
                        Logger.Log($"Invalid value enetered for {appKey}. Query was not saved.", Logger.Status.Error, true);
                        return(String.Empty);
                    }
                    else
                    {
                        data.Add(new ExpKvp(appKey, value, C.Creature));
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Logger.Log("Something went wrong parsing resistances data. Query was not saved.", Logger.Status.Error, true);
                return(String.Empty);
            }

            try // Handle Auras
            {
                // Nonsense code because i refuse go near DynamicDataControl at this point...
                // Auras is a space seperated list of spell IDs placed in one column
                var auraData = new Dictionary <string, string>();
                creature.Auras.AddValues(auraData, "irrelevant", ' ');
                data.Add(new ExpKvp("Auras", auraData.First().Value, C.Creature));
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Logger.Log("Something went wrong parsing aura data. Query was not saved.", Logger.Status.Error, true);
                return(String.Empty);
            }

            try // Handle Spells (some emulators use this)
            {
                // Spell1, Spell2, Spell3...
                var spellData = new Dictionary <string, string>();
                creature.Spells.AddValues(spellData);
                foreach (var spell in spellData)
                {
                    data.Add(new ExpKvp(spell.Key, int.Parse(spell.Value), C.Creature));
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Logger.Log("Something went wrong parsing aura data. Query was not saved.", Logger.Status.Error, true);
                return(String.Empty);
            }

            try // Handle DifficultyEntry
            {
                // DifficultyEntry1, DifficultyEntry2, DifficultyEntry2...
                var diffData = new Dictionary <string, string>();
                creature.DifficultyEntry.AddValues(diffData);
                foreach (var diff in diffData)
                {
                    data.Add(new ExpKvp(diff.Key, int.Parse(diff.Value), C.Creature));
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Logger.Log("Something went wrong parsing DifficultyEntry. Query was not saved.", Logger.Status.Error, true);
                return(String.Empty);
            }


            IncludeCustomFields(ref data, C.Creature, creature);
            string sql = GenerateSql(data);

            // Trinity 2020 Spell system (alternative to Spell1, Spell2, ...) - uses seperate table creature_template_spell
            // Creature Spells. This can create multiple rows and is expected to be placed in a different table if it's used.
            // Note that the alternative should be used for most other emulators and these fields can be disabled.
            try
            {
                // todo: check if it's using old system before trying. (if key is in profile)
                var spellsList = new Dictionary <string, string>();
                creature.Spells.AddValues(spellsList);
                for (int i = 1; i <= spellsList.Count; i++)
                {
                    if (spellsList["Spell" + i] == "" || spellsList["Spell" + i] == "0")
                    {
                        Logger.Log("Creature export: No spells were input. Not inserting using modern system.");
                        break; // No spell provided
                    }

                    // Create row in creature_template_spell or profile equivalennt
                    sql += GenerateSql(new List <ExpKvp>()
                    {
                        new ExpKvp("SpellCreatureID", creature.Entry, C.Creature),
                        new ExpKvp("SpellSpell", int.Parse(spellsList["Spell" + i]), C.Creature),
                        new ExpKvp("SpellIndex", i - 1, C.Creature)
                    }) + Environment.NewLine;
                }
            }
            catch (Exception ex)
            {
                Logger.Log("Error exporting Spells using 2020 system: " + ex.Message);
                Logger.Log("Error parsing spells data. Are all spells numeric values? Profile may be set up incorrectly.", Logger.Status.Error, true);
            }

            // Trinity 2020 Resistance system. Similar to Spells, it's in a seperate table.
            // Old system still supported, will only insert if value is not empty or null
            try
            {
                // todo: check if it's using old system before trying. (if key is in profile)
                var resistanceList = new Dictionary <string, string>();
                creature.Resistances.AddValues(resistanceList);
                var dmgTypes = DamageType.GetDamageTypes(magicOnly: true);
                foreach (DamageType dt in dmgTypes)
                {
                    var key = dt.Description;
                    if (resistanceList[key] == "" || resistanceList[key] == "0")
                    {
                        Logger.Log("Creature export: {key} was 0 or empty. Not creating row in creature_temlate_resistance or equivalent.");
                        continue; // This resistance type was empty, check the rest.
                    }

                    // Create row in creature_template_resistance or profile equivalent
                    sql += GenerateSql(new List <ExpKvp>()
                    {
                        new ExpKvp("ResistanceCreatureId", creature.Entry, C.Creature),
                        new ExpKvp("ResistanceSchool", dt.Id, C.Creature),
                        new ExpKvp("ResistanceAmount", int.Parse(resistanceList[key]), C.Creature)
                    }) + Environment.NewLine;
                }
            }
            catch (Exception ex)
            {
                Logger.Log("Error exporting Resistances using 2020 system: " + ex.Message);
                Logger.Log("Error parsing Resistances data. Are all resistances values numeric? Profile may be set up incorrectly.", Logger.Status.Error, true);
            }

            // Trinity 2020 InhabitType alternative. Similar to Spells, it's in a seperate table.
            // Old system still supported, will only insert if defined in profile
            try
            {
                // Create row in creature_template_movement or profile equivalent
                sql += GenerateSql(new List <ExpKvp>()
                {
                    new ExpKvp("InhabitCreatureID", creature.Entry, C.Creature),
                    new ExpKvp("InhabitGround", creature.Inhabit.HasValue(1), C.Creature),
                    new ExpKvp("InhabitWater", creature.Inhabit.HasValue(2), C.Creature),
                    new ExpKvp("InhabitFlight", creature.Inhabit.HasValue(4), C.Creature)
                }) + Environment.NewLine;
            }
            catch (Exception ex)
            {
                Logger.Log("Error exporting Creature Inhabit using 2020 system: " + ex.Message);
                Logger.Log("Error parsing Creature Inhabit data. Profile may be set up incorrectly.", Logger.Status.Error, true);
            }

            return(sql);
        }
Example #13
0
 public string GenerateQuery(TrinityCreature creature)
 {
     return(SqlQuery.GenerateInsert("creature_template", CreatureTemplate(creature)) +
            SqlQuery.GenerateInsert("creature_template_addon", CreatureTemplateAddon(creature)));
 }
Example #14
0
        private Dictionary <string, string> CreatureTemplate(TrinityCreature creature)
        {
            var kvplist = new Dictionary <string, string>
            {
                { "entry", creature.Entry.ToString() },
                { "Name", SqlQuery.CleanText(creature.Name) },
                { "SubName", SqlQuery.CleanText(creature.Subname) },
                { "MinLevel", creature.MinLevel.ToString() },
                { "MaxLevel", creature.MaxLevel.ToString() },
                { "FactionAlliance", creature.Faction.ToString() },
                { "FactionHorde", creature.Faction.ToString() },
                { "Scale", creature.Scale.ToString() },
                { "Family", creature.Family.Id.ToString() },
                { "CreatureType", creature._CreatureType.Id.ToString() },
                { "InhabitType", creature.Inhabit.BitmaskValue.ToString() },
                { "RegenerateStats", Convert.ToInt16(creature.RegenHealth).ToString() },
                { "RacialLeader", creature.RacialLeader.ToString() },
                { "NpcFlags", creature.NpcFlags.BitmaskValue.ToString() },
                { "UnitFlags", creature.UnitFlags.BitmaskValue.ToString() },
                { "DynamicFlags", creature.DynamicFlags.BitmaskValue.ToString() },
                { "ExtraFlags", creature.FlagsExtra.BitmaskValue.ToString() },
                { "CreatureTypeFlags", creature.TypeFlags.BitmaskValue.ToString() },
                { "SpeedWalk", creature.SpeedWalk.ToString() },
                { "SpeedRun", creature.SpeedRun.ToString() },
                { "UnitClass", creature._UnitClass.Id.ToString() },
                { "Rank", creature.Rank.Id.ToString() },
                { "HealthMultiplier", creature.HealthModifier.ToString() },
                { "DamageMultiplier", creature.DamageModifier.ToString() },
                { "ExperienceMultiplier", creature.ExperienceModifier.ToString() },
                { "MinLevelHealth", creature.MinLevelHealth.ToString() },
                { "MaxLevelHealth", creature.MaxLevelHealth.ToString() },
                { "MinLevelMana", creature.MinLevelMana.ToString() },
                { "MaxLevelMana", creature.MaxLevelMana.ToString() },
                { "MinMeleeDmg", creature.MinMeleeDmg.ToString() },
                { "MaxMeleeDmg", creature.MaxMeleeDmg.ToString() },
                { "MinRangedDmg", creature.MinRangedDmg.ToString() },
                { "MaxRangedDmg", creature.MaxRangedDmg.ToString() },
                { "Armor", creature.Armor.ToString() },
                { "MeleeAttackPower", creature.MeleeAttackPower.ToString() },
                { "RangedAttackPower", creature.RangedAttackPower.ToString() },
                { "MeleeBaseAttackTime", creature.BaseAttackTime.ToString() },
                { "RangedBaseAttackTime", creature.BaseAttackTime.ToString() }, // only seperate in cmangzero, using melee
                { "DamageSchool", creature.DmgSchool.Id.ToString() },
                { "MinLootGold", creature.MinGold.ToString() },
                { "MaxLootGold", creature.MaxGold.ToString() },
                { "LootId", creature.LootId.ToString() },
                { "PickpocketLootId", creature.PickpocketLoot.ToString() },
                { "SkinningLootId", creature.SkinLoot.ToString() },
                { "MechanicImmuneMask", creature.MechanicImmuneMask.BitmaskValue.ToString() },
                //{"SchoolImmuneMask", }, <-- not sure if used over individual resistance fields, no comment in db
                { "PetSpellDataId", creature.PetDataId.ToString() },
                { "MovementType", creature.Movement.Id.ToString() },
                { "TrainerType", creature.Trainer.TrainerType.ToString() },
                { "TrainerSpell", creature.Trainer.TrainerSpell.ToString() },
                { "TrainerClass", creature.Trainer.TrainerClass.ToString() },
                { "TrainerRace", creature.Trainer.TrainerRace.ToString() },
                { "Civilian", Convert.ToInt16(creature.Civilian).ToString() },

                // Missing relevant: TrainerTemplateId, VendorTemplateId, GossipMenuId, EquipmentTemplateId
            };

            creature.ModelIds.AddValues(kvplist);
            creature.Resistances.AddValues(kvplist, keyPrefix: "", valuePrefix: "Resistance");

            return(kvplist);
        }
Example #15
0
 public string GenerateQuery(TrinityCreature creature)
 {
     throw new NotImplementedException();
 }