Misc fixes

This commit is contained in:
hondacrx
2022-02-23 16:28:45 -05:00
parent bbc0c07697
commit 99b4a7ea8b
9 changed files with 33 additions and 293 deletions
@@ -1629,6 +1629,12 @@ namespace Game.BattleGrounds
// buffs are in their positions when Battleground starts
public void HandleTriggerBuff(ObjectGuid goGuid)
{
if (!FindBgMap())
{
Log.outError(LogFilter.Battleground, $"Battleground::HandleTriggerBuff called with null bg map, {goGuid}");
return;
}
GameObject obj = GetBgMap().GetGameObject(goGuid);
if (!obj || obj.GetGoType() != GameObjectTypes.Trap || !obj.IsSpawned())
return;
@@ -288,7 +288,7 @@ namespace Game.Entities
float angle = pair.Value.FollowAngle + MathF.PI; // for some reason, someone thought it was a great idea to invert relativ angles...
float dist = pair.Value.FollowDist;
if (!member.HasUnitState(UnitState.Formation))
if (!member.HasUnitState(UnitState.FollowFormation))
member.GetMotionMaster().MoveFormation(_leader, dist, angle, pair.Value.LeaderWaypointIDs[0], pair.Value.LeaderWaypointIDs[1]);
}
}
+5
View File
@@ -2823,6 +2823,11 @@ namespace Game
}
cInfo.ModDamage *= Creature._GetDamageMod(cInfo.Rank);
if (cInfo.GossipMenuId != 0 && !cInfo.Npcflag.HasAnyFlag((ulong)NPCFlags.Gossip))
Log.outInfo(LogFilter.Sql, $"Creature (Entry: {cInfo.Entry}) has assigned gossip menu {cInfo.GossipMenuId}, but npcflag does not include UNIT_NPC_FLAG_GOSSIP.");
else if (cInfo.GossipMenuId == 0 && cInfo.Npcflag.HasAnyFlag((ulong)NPCFlags.Gossip))
Log.outInfo(LogFilter.Sql, $"Creature (Entry: {cInfo.Entry}) has npcflag UNIT_NPC_FLAG_GOSSIP, but gossip menu is unassigned.");
}
void CheckCreatureMovement(string table, ulong id, CreatureMovementData creatureMovement)
{
+1 -1
View File
@@ -5121,7 +5121,7 @@ namespace Game.Maps
public delegate void FarSpellCallback(Map map);
Queue<FarSpellCallback> _farSpellCallbacks = new();
MultiPersonalPhaseTracker _multiPersonalPhaseTracker;
MultiPersonalPhaseTracker _multiPersonalPhaseTracker = new();
#endregion
}
+18
View File
@@ -1710,6 +1710,24 @@ namespace Game.Spells
switch (SpellFamilyName)
{
case SpellFamilyNames.Generic:
// Frost Tomb
if (Id == 48400)
return DiminishingGroup.None;
// Gnaw
else if (Id == 47481)
return DiminishingGroup.Stun;
// ToC Icehowl Arctic Breath
else if (Id == 66689)
return DiminishingGroup.None;
// Black Plague
else if (Id == 64155)
return DiminishingGroup.None;
// Screams of the Dead (King Ymiron)
else if (Id == 51750)
return DiminishingGroup.None;
// Crystallize (Keristrasza heroic)
else if (Id == 48179)
return DiminishingGroup.None;
break;
case SpellFamilyNames.Mage:
{
-47
View File
@@ -44,53 +44,6 @@ namespace Scripts.Pets
public const uint SaySoulTraderInto = 0;
}
[Script]
class npc_pet_gen_mojo : ScriptedAI
{
public npc_pet_gen_mojo(Creature creature) : base(creature) { }
public override void Reset()
{
_victimGUID.Clear();
Unit owner = me.GetOwner();
if (owner)
me.GetMotionMaster().MoveFollow(owner, 0.0f, 0.0f);
}
public override void JustEngagedWith(Unit who) { }
public override void UpdateAI(uint diff) { }
public override void ReceiveEmote(Player player, TextEmotes emote)
{
me.HandleEmoteCommand((Emote)emote);
Unit owner = me.GetOwner();
if (emote != TextEmotes.Kiss || !owner || !owner.IsTypeId(TypeId.Player) ||
owner.ToPlayer().GetTeam() != player.GetTeam())
{
return;
}
Talk(TextIds.SayMojo, player);
if (!_victimGUID.IsEmpty())
{
Player victim = Global.ObjAccessor.GetPlayer(me, _victimGUID);
if (victim)
victim.RemoveAura(SpellIds.FeelingFroggy);
}
_victimGUID = player.GetGUID();
DoCast(player, SpellIds.FeelingFroggy, new Game.Spells.CastSpellExtraArgs(true));
DoCast(me, SpellIds.SeductionVisual, new Game.Spells.CastSpellExtraArgs(true));
me.GetMotionMaster().MoveFollow(player, 0.0f, 0.0f);
}
ObjectGuid _victimGUID;
}
[Script]
class npc_pet_gen_soul_trader : ScriptedAI
{
+2 -2
View File
@@ -146,7 +146,7 @@ namespace Scripts.World.EmeraldDragons
_scheduler.Update(diff);
Unit target = SelectTarget(SelectAggroTarget.MaxThreat, 0, -50.0f, true);
Unit target = SelectTarget(SelectTargetMethod.MaxThreat, 0, -50.0f, true);
if (target)
DoCast(target, SpellIds.SummonPlayer);
@@ -182,7 +182,7 @@ namespace Scripts.World.EmeraldDragons
if (_roamTimer == 0)
{
// Chase target, but don't attack - otherwise just roam around
Unit target = SelectTarget(SelectAggroTarget.Random, 0, 0.0f, true);
Unit target = SelectTarget(SelectTargetMethod.Random, 0, 0.0f, true);
if (target)
{
_roamTimer = RandomHelper.URand(15000, 30000);
-221
View File
@@ -65,9 +65,6 @@ namespace Scripts.World.GameObjects
public const uint SummonBladeKnightOrc = 56212;
public const uint SummonBladeKnightTroll = 56214;
//Inconspicuouslandmark
public const uint SummonPiratesTreasureAndTriggerMob = 11462;
//Amberpineouthouse
public const uint Indisposed = 53017;
public const uint IndisposedIii = 48341;
@@ -111,11 +108,6 @@ namespace Scripts.World.GameObjects
//Sacredfireoflife
public const uint Arikara = 10882;
//Shrineofthebirds
public const uint HawkGuard = 22992;
public const uint EagleGuard = 22993;
public const uint FalconGuard = 22994;
//Southfury
public const uint Rizzle = 23002;
@@ -131,13 +123,6 @@ namespace Scripts.World.GameObjects
public const uint EbonBladePrisonerTroll = 30196;
public const uint EbonBladePrisonerOrc = 30195;
//Prisonersofwyrmskull
public const uint PrisonerPriest = 24086;
public const uint PrisonerMage = 24088;
public const uint PrisonerWarrior = 24089;
public const uint PrisonerPaladin = 24090;
public const uint CapturedValgardePrisonerProxy = 24124;
//Tadpoles
public const uint WinterfinTadpole = 25201;
@@ -156,11 +141,6 @@ namespace Scripts.World.GameObjects
struct GameObjectIds
{
//Shrineofthebirds
public const uint ShrineHawk = 185551;
public const uint ShrineEagle = 185547;
public const uint ShrineFalcon = 185553;
//Bellhourlyobjects
public const uint HordeBell = 175885;
public const uint AllianceBell = 176573;
@@ -180,9 +160,6 @@ namespace Scripts.World.GameObjects
public const uint MatrixPunchograph3005C = 142476;
public const uint MatrixPunchograph3005D = 142696;
//Inconspicuouslandmark
public const uint CuergosKey = 9275;
//Amberpineouthouse
public const uint AnderholsSliderCider = 37247;
}
@@ -202,9 +179,6 @@ namespace Scripts.World.GameObjects
//Tabletheka
public const uint SpiderGold = 2936;
//Prisonersofwyrmskull
public const uint PrisonersOfWyrmskull = 11255;
//Tadpoles
public const uint OhNoesTheTadpoles = 11560;
@@ -348,20 +322,6 @@ namespace Scripts.World.GameObjects
}
}
[Script]
class go_tablet_of_madness : GameObjectAI
{
public go_tablet_of_madness(GameObject go) : base(go) { }
public override bool GossipHello(Player player)
{
if (player.HasSkill(SkillType.Alchemy) && player.GetSkillValue(SkillType.Alchemy) >= 300 && !player.HasSpell(24266))
player.CastSpell(player, 24267, false);
return true;
}
}
[Script]
class go_tablet_of_the_seven : GameObjectAI
{
@@ -380,20 +340,6 @@ namespace Scripts.World.GameObjects
}
}
[Script]
class go_jump_a_tron : GameObjectAI
{
public go_jump_a_tron(GameObject go) : base(go) { }
public override bool GossipHello(Player player)
{
if (player.GetQuestStatus(10111) == QuestStatus.Incomplete)
player.CastSpell(player, 33382, true);
return true;
}
}
[Script]
class go_ethereum_prison : GameObjectAI
{
@@ -478,37 +424,6 @@ namespace Scripts.World.GameObjects
}
}
[Script]
class go_shrine_of_the_birds : GameObjectAI
{
public go_shrine_of_the_birds(GameObject go) : base(go) { }
public override bool GossipHello(Player player)
{
uint birdEntryId = 0;
me.GetClosePoint(out float fX, out float fY, out float fZ, me.GetCombatReach(), SharedConst.InteractionDistance);
switch (me.GetEntry())
{
case GameObjectIds.ShrineHawk:
birdEntryId = CreatureIds.HawkGuard;
break;
case GameObjectIds.ShrineEagle:
birdEntryId = CreatureIds.EagleGuard;
break;
case GameObjectIds.ShrineFalcon:
birdEntryId = CreatureIds.FalconGuard;
break;
}
if (birdEntryId != 0)
player.SummonCreature(birdEntryId, fX, fY, fZ, me.GetOrientation(), TempSummonType.TimedDespawnOutOfCombat, 60000);
return false;
}
}
[Script]
class go_southfury_moonstone : GameObjectAI
{
@@ -556,94 +471,6 @@ namespace Scripts.World.GameObjects
}
}
[Script]
class go_fel_crystalforge : GameObjectAI
{
public go_fel_crystalforge(GameObject go) : base(go) { }
public override bool GossipHello(Player player)
{
if (me.GetGoType() == GameObjectTypes.QuestGiver) /* != GAMEOBJECT_TYPE_QUESTGIVER) */
player.PrepareQuestMenu(me.GetGUID()); /* return true*/
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipFelCrystalforgeItem1, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipFelCrystalforgeItem5, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 1);
player.SendGossipMenu(GossipConst.GossipFelCrystalforgeText, me.GetGUID());
return true;
}
public override bool GossipSelect(Player player, uint menuId, uint gossipListId)
{
uint action = player.PlayerTalkClass.GetGossipOptionAction(gossipListId);
player.ClearGossipMenu();
switch (action)
{
case eTradeskill.GossipActionInfoDef:
player.CastSpell(player, SpellIds.Create1FlaskOfBeast, false);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipFelCrystalforgeItemReturn, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 2);
player.SendGossipMenu(GossipConst.GossipFelCrystalforgeItemTextReturn, me.GetGUID());
break;
case eTradeskill.GossipActionInfoDef + 1:
player.CastSpell(player, SpellIds.Create5FlaskOfBeast, false);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipFelCrystalforgeItemReturn, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 2);
player.SendGossipMenu(GossipConst.GossipFelCrystalforgeItemTextReturn, me.GetGUID());
break;
case eTradeskill.GossipActionInfoDef + 2:
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipFelCrystalforgeItem1, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipFelCrystalforgeItem5, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 1);
player.SendGossipMenu(GossipConst.GossipFelCrystalforgeText, me.GetGUID());
break;
}
return true;
}
}
[Script]
class go_bashir_crystalforge : GameObjectAI
{
public go_bashir_crystalforge(GameObject go) : base(go) { }
public override bool GossipHello(Player player)
{
if (me.GetGoType() == GameObjectTypes.QuestGiver) /* != GAMEOBJECT_TYPE_QUESTGIVER) */
player.PrepareQuestMenu(me.GetGUID()); /* return true*/
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipBashirCrystalforgeItem1, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipBashirCrystalforgeItem5, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 1);
player.SendGossipMenu(GossipConst.GossipBashirCrystalforgeText, me.GetGUID());
return true;
}
public override bool GossipSelect(Player player, uint menuId, uint gossipListId)
{
uint action = player.PlayerTalkClass.GetGossipOptionAction(gossipListId);
player.ClearGossipMenu();
switch (action)
{
case eTradeskill.GossipActionInfoDef:
player.CastSpell(player, SpellIds.Create1FlaskOfSorcerer, false);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipBashirCrystalforgeItemReturn, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 2);
player.SendGossipMenu(GossipConst.GossipBashirCrystalforgeItemTextReturn, me.GetGUID());
break;
case eTradeskill.GossipActionInfoDef + 1:
player.CastSpell(player, SpellIds.Create5FlaskOfSorcerer, false);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipBashirCrystalforgeItemReturn, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 2);
player.SendGossipMenu(GossipConst.GossipBashirCrystalforgeItemTextReturn, me.GetGUID());
break;
case eTradeskill.GossipActionInfoDef + 2:
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipBashirCrystalforgeItem1, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef);
player.AddGossipItem(GossipOptionIcon.None, GossipConst.GossipBashirCrystalforgeItem5, eTradeskill.GossipSenderMain, eTradeskill.GossipActionInfoDef + 1);
player.SendGossipMenu(GossipConst.GossipBashirCrystalforgeText, me.GetGUID());
break;
}
return true;
}
}
[Script]
class go_matrix_punchograph : GameObjectAI
{
@@ -796,21 +623,6 @@ namespace Scripts.World.GameObjects
}
}
[Script]
class go_inconspicuous_landmark : GameObjectAI
{
public go_inconspicuous_landmark(GameObject go) : base(go) { }
public override bool GossipHello(Player player)
{
if (player.HasItemCount(ItemIds.CuergosKey))
return false;
player.CastSpell(player, SpellIds.SummonPiratesTreasureAndTriggerMob, true);
return true;
}
}
[Script]
class go_soulwell : GameObjectAI
{
@@ -825,39 +637,6 @@ namespace Scripts.World.GameObjects
}
}
[Script]
class go_dragonflayer_cage : GameObjectAI
{
public go_dragonflayer_cage(GameObject go) : base(go) { }
public override bool GossipHello(Player player)
{
me.UseDoorOrButton();
if (player.GetQuestStatus(QuestIds.PrisonersOfWyrmskull) != QuestStatus.Incomplete)
return true;
Creature pPrisoner = me.FindNearestCreature(CreatureIds.PrisonerPriest, 2.0f);
if (!pPrisoner)
{
pPrisoner = me.FindNearestCreature(CreatureIds.PrisonerMage, 2.0f);
if (!pPrisoner)
{
pPrisoner = me.FindNearestCreature(CreatureIds.PrisonerWarrior, 2.0f);
if (!pPrisoner)
pPrisoner = me.FindNearestCreature(CreatureIds.PrisonerPaladin, 2.0f);
}
}
if (!pPrisoner || !pPrisoner.IsAlive())
return true;
/// @todo prisoner should help player for a short period of time
player.KilledMonsterCredit(CreatureIds.CapturedValgardePrisonerProxy);
pPrisoner.DespawnOrUnsummon();
return true;
}
}
[Script]
class go_amberpine_outhouse : GameObjectAI
{
-21
View File
@@ -128,27 +128,6 @@ namespace Scripts.World.ItemScripts
}
}
[Script]
class item_nether_wraith_beacon : ItemScript
{
public item_nether_wraith_beacon() : base("item_nether_wraith_beacon") { }
public override bool OnUse(Player player, Item item, SpellCastTargets targets, ObjectGuid castId)
{
if (player.GetQuestStatus(10832) == QuestStatus.Incomplete)
{
Creature nether = player.SummonCreature(22408, player.GetPositionX(), player.GetPositionY() + 20, player.GetPositionZ(), 0, TempSummonType.TimedDespawn, 180000);
if (nether)
nether.GetAI().AttackStart(player);
nether = player.SummonCreature(22408, player.GetPositionX(), player.GetPositionY() - 20, player.GetPositionZ(), 0, TempSummonType.TimedDespawn, 180000);
if (nether)
nether.GetAI().AttackStart(player);
}
return false;
}
}
[Script]
class item_gor_dreks_ointment : ItemScript
{