Skip to content

Commit

Permalink
Creatures for cMangos Zero 1.12
Browse files Browse the repository at this point in the history
- Creatures now export for cMangos Zero 1.12
- Creature support for future 1.12-2.4.3 emus
  • Loading branch information
Nadromar committed Jan 20, 2019
1 parent cb0f762 commit b088f7d
Show file tree
Hide file tree
Showing 5 changed files with 264 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ NOTE: You need to reload tables or restart your server before you can see your n
* TrinityCore WotLK 3.3.5a (full, TDB 335.64 & latest version (2019-01-17))
* CMangos WotLK 3.3.5a (full, 2016 DB)
* AzerothCore 3.3.5a (Items, quests & creatures)
* CMangos Zero 1.12 (Items, quests & creatures)
* CMangos Zero 1.12 (Items & quests)

### Requirements ###
* Windows 10 (has all requirements pre-installed)
Expand Down
53 changes: 53 additions & 0 deletions TrinityCreator/CreatureCreatorPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,59 @@
</StackPanel>
</GroupBox>

<GroupBox Name="cMangosZeroDetailedStatsGb" Header="Detailed Stats (required for cMangos Zero 1.12)">
<StackPanel DockPanel.Dock="Left">

<DockPanel Margin="2">
<StackPanel Orientation="Horizontal">
<Label Content="Health" DockPanel.Dock="Left" Width="120" />
<TextBox Text="{Binding MinLevelHealth}" DockPanel.Dock="Left" Width="50"/>
<Label Content=" - "/>
<TextBox Text="{Binding MaxLevelHealth}" DockPanel.Dock="Left" Width="50"/>
</StackPanel>
</DockPanel>
<DockPanel Margin="2">
<StackPanel Orientation="Horizontal">
<Label Content="Mana" DockPanel.Dock="Left" Width="120" />
<TextBox Text="{Binding MinLevelMana}" DockPanel.Dock="Left" Width="50"/>
<Label Content=" - "/>
<TextBox Text="{Binding MaxLevelMana}" DockPanel.Dock="Left" Width="50"/>
</StackPanel>
</DockPanel>
<DockPanel Margin="2">
<StackPanel Orientation="Horizontal">
<Label Content="Melee Damage" DockPanel.Dock="Left" Width="120" />
<TextBox Text="{Binding MinMeleeDmg}" DockPanel.Dock="Left" Width="50"/>
<Label Content=" - "/>
<TextBox Text="{Binding MaxMeleeDmg}" DockPanel.Dock="Left" Width="50"/>
</StackPanel>
</DockPanel>
<DockPanel Margin="2">
<StackPanel Orientation="Horizontal">
<Label Content="Ranged Damage" DockPanel.Dock="Left" Width="120" />
<TextBox Text="{Binding MinRangedDmg}" DockPanel.Dock="Left" Width="50"/>
<Label Content=" - "/>
<TextBox Text="{Binding MaxRangedDmg}" DockPanel.Dock="Left" Width="50"/>
</StackPanel>
</DockPanel>
<DockPanel Margin="2">
<Label Content="Melee Attack Power" DockPanel.Dock="Left" Width="120" />
<TextBox Text="{Binding MeleeAttackPower}" DockPanel.Dock="Left" />
</DockPanel>
<DockPanel Margin="2">
<Label Content="Ranged Attack Power" DockPanel.Dock="Left" Width="120" />
<TextBox Text="{Binding RangedAttackPower}" DockPanel.Dock="Left" />
</DockPanel>
<DockPanel Margin="2">
<Label Content="Armor" DockPanel.Dock="Left" Width="120" />
<TextBox Text="{Binding Armor}" DockPanel.Dock="Left" />
</DockPanel>
<StackPanel Margin="2" Orientation="Horizontal">
<CheckBox Content="Is civilian? (Dishonorable Kill)" IsChecked="{Binding Civilian}" Margin="0,0,10,0"/>
</StackPanel>
</StackPanel>
</GroupBox>

<GroupBox Header="Stat modifiers" Visibility="{Binding ElementName=statModifierCb, Path=IsChecked, Converter={StaticResource ValueVisibilityConverter}}">
<StackPanel DockPanel.Dock="Left">
<DockPanel Margin="2">
Expand Down
8 changes: 7 additions & 1 deletion TrinityCreator/CreatureCreatorPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ private void CreatureCreatorPage_Loaded(object sender, RoutedEventArgs e)
FirstLoad = false;
ShowTemplateWindow();
}

}
#endregion

Expand Down Expand Up @@ -154,7 +155,12 @@ private void Page_Loaded(object sender, RoutedEventArgs e)

// Compatability
if (!(Properties.Settings.Default.emulator == 0) && !(Properties.Settings.Default.emulator == 3)) // Azerothcore
equipmentGb.Visibility = Visibility.Hidden;
equipmentGb.Visibility = Visibility.Collapsed;


// Emu support
if (Properties.Settings.Default.emulator != 1) // not cmangos zero
cMangosZeroDetailedStatsGb.Visibility = Visibility.Collapsed;
}
}
}
84 changes: 83 additions & 1 deletion TrinityCreator/Emulator/cmangosZero.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public string GenerateQuery(TrinityQuest quest)

public string GenerateQuery(TrinityCreature creature)
{
throw new NotImplementedException();
return SqlQuery.GenerateInsert("creature_template", CreatureTemplate(creature))
+ SqlQuery.GenerateInsert("creature_template_addon", CreatureTemplateAddon(creature));
}

public string GenerateQuery(LootPage loot)
Expand Down Expand Up @@ -153,5 +154,86 @@ public string GenerateQuery(VendorPage vendor)

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()},
{"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;
}

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;
}
}
}
120 changes: 120 additions & 0 deletions TrinityCreator/TrinityCreature.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,18 @@ public TrinityCreature()
private int _weapon1;
private int _weapon2;
private int _weapon3;
private int _minLevelHealth;
private int _maxLevelHealth;
private int _minLevelMana;
private int _maxLevelMana;
private int _minMeleeDmg;
private int _maxMeleeDmg;
private int _minRangedDmg;
private int _maxRangedDmg;
private int _armor;
private int _meleeAttackPower;
private int _rangedAttackPower;
private bool _civilian;


#region Properties
Expand Down Expand Up @@ -679,6 +691,114 @@ public int Weapon3
}
}

public int MinLevelHealth
{
get { return _weapon3; }
set
{
_minLevelHealth = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MinLevelHealth");
}
}
public int MaxLevelHealth
{
get { return _maxLevelHealth; }
set
{
_maxLevelHealth = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MaxLevelHealth");
}
}
public int MinLevelMana
{
get { return _minLevelMana; }
set
{
_minLevelMana = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MinLevelMana");
}
}
public int MaxLevelMana
{
get { return _maxLevelMana; }
set
{
_maxLevelMana = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MaxLevelMana");
}
}
public int MinMeleeDmg
{
get { return _minMeleeDmg; }
set
{
_minMeleeDmg = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MinMeleeDmg");
}
}
public int MaxMeleeDmg
{
get { return _maxMeleeDmg; }
set
{
_maxMeleeDmg = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MaxMeleeDmg");
}
}
public int MinRangedDmg
{
get { return _minRangedDmg; }
set
{
_minRangedDmg = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MinRangedDmg");
}
}
public int MaxRangedDmg
{
get { return _maxRangedDmg; }
set
{
_maxRangedDmg = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MaxRangedDmg");
}
}
public int Armor
{
get { return _armor; }
set
{
_armor = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("Armor");
}
}
public int MeleeAttackPower
{
get { return _meleeAttackPower; }
set
{
_meleeAttackPower = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("MeleeAttackPower");
}
}
public int RangedAttackPower
{
get { return _rangedAttackPower; }
set
{
_rangedAttackPower = DataType.LimitLength(value, "mediumint(8)");
RaisePropertyChanged("RangedAttackPower");
}
}
public bool Civilian
{
get { return _civilian; }
set
{
_civilian = value;
RaisePropertyChanged("Civilian");
}
}

#endregion

Expand Down

0 comments on commit b088f7d

Please sign in to comment.