Core/Units: Added helper functions to modify UNIT_FLAG_UNINTERACTIBLE
Port From (https://github.com/TrinityCore/TrinityCore/commit/88ff97c1f96381565c47f8ca1993bdc7fce19fd6)
This commit is contained in:
@@ -374,7 +374,7 @@ namespace Game.AI
|
|||||||
point.SetUnitFlag(UnitFlags.Stunned);
|
point.SetUnitFlag(UnitFlags.Stunned);
|
||||||
point.SetImmuneToAll(true);
|
point.SetImmuneToAll(true);
|
||||||
if (!hasOutOfBoundsNeighbor)
|
if (!hasOutOfBoundsNeighbor)
|
||||||
point.SetUnitFlag(UnitFlags.Uninteractible);
|
point.SetUninteractible(true);
|
||||||
}
|
}
|
||||||
Q.Remove(front);
|
Q.Remove(front);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2408,15 +2408,8 @@ namespace Game.AI
|
|||||||
case SmartActions.SetUninteractible:
|
case SmartActions.SetUninteractible:
|
||||||
{
|
{
|
||||||
foreach (var target in targets)
|
foreach (var target in targets)
|
||||||
{
|
|
||||||
if (IsUnit(target))
|
if (IsUnit(target))
|
||||||
{
|
target.ToUnit().SetUninteractible(e.Action.setUninteractible.uninteractible != 0);
|
||||||
if (e.Action.setUninteractible.uninteractible != 0)
|
|
||||||
target.ToUnit().SetUnitFlag(UnitFlags.Uninteractible);
|
|
||||||
else
|
|
||||||
target.ToUnit().RemoveUnitFlag(UnitFlags.Uninteractible);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SmartActions.ActivateGameobject:
|
case SmartActions.ActivateGameobject:
|
||||||
|
|||||||
@@ -461,7 +461,8 @@ namespace Game.BattleFields
|
|||||||
{
|
{
|
||||||
creature.CombatStop();
|
creature.CombatStop();
|
||||||
creature.SetReactState(ReactStates.Passive);
|
creature.SetReactState(ReactStates.Passive);
|
||||||
creature.SetUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible);
|
creature.SetUnitFlag(UnitFlags.NonAttackable);
|
||||||
|
creature.SetUninteractible(true);
|
||||||
creature.DisappearAndDie();
|
creature.DisappearAndDie();
|
||||||
creature.SetVisible(false);
|
creature.SetVisible(false);
|
||||||
}
|
}
|
||||||
@@ -469,7 +470,8 @@ namespace Game.BattleFields
|
|||||||
public void ShowNpc(Creature creature, bool aggressive)
|
public void ShowNpc(Creature creature, bool aggressive)
|
||||||
{
|
{
|
||||||
creature.SetVisible(true);
|
creature.SetVisible(true);
|
||||||
creature.RemoveUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible);
|
creature.RemoveUnitFlag(UnitFlags.NonAttackable);
|
||||||
|
creature.SetUninteractible(false);
|
||||||
if (!creature.IsAlive())
|
if (!creature.IsAlive())
|
||||||
creature.Respawn(true);
|
creature.Respawn(true);
|
||||||
if (aggressive)
|
if (aggressive)
|
||||||
|
|||||||
@@ -629,9 +629,15 @@ namespace Game.BattleGrounds.Zones
|
|||||||
if (dem)
|
if (dem)
|
||||||
{
|
{
|
||||||
if (start)
|
if (start)
|
||||||
dem.SetUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible);
|
{
|
||||||
|
dem.SetUnitFlag(UnitFlags.NonAttackable);
|
||||||
|
dem.SetUninteractible(true);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
dem.RemoveUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible);
|
{
|
||||||
|
dem.RemoveUnitFlag(UnitFlags.NonAttackable);
|
||||||
|
dem.SetUninteractible(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
// trigger creature is always not selectable and can not be attacked
|
// trigger creature is always not selectable and can not be attacked
|
||||||
if (IsTrigger())
|
if (IsTrigger())
|
||||||
SetUnitFlag(UnitFlags.Uninteractible);
|
SetUninteractible(true);
|
||||||
|
|
||||||
InitializeReactState();
|
InitializeReactState();
|
||||||
|
|
||||||
@@ -2305,7 +2305,7 @@ namespace Game.Entities
|
|||||||
if (IsCivilian())
|
if (IsCivilian())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible) || IsImmuneToNPC())
|
if (HasUnitFlag(UnitFlags.NonAttackable) || IsImmuneToNPC() || IsUninteractible())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// skip fighting creature
|
// skip fighting creature
|
||||||
|
|||||||
@@ -2557,7 +2557,7 @@ namespace Game.Entities
|
|||||||
if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2))
|
if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.Uninteractible))
|
if (unitTarget != null && unitTarget.IsUninteractible())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Player playerAttacker = ToPlayer();
|
Player playerAttacker = ToPlayer();
|
||||||
@@ -2714,7 +2714,7 @@ namespace Game.Entities
|
|||||||
if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2))
|
if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.Uninteractible))
|
if (unitTarget != null && unitTarget.IsUninteractible())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// check flags for negative spells
|
// check flags for negative spells
|
||||||
|
|||||||
@@ -3371,7 +3371,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
Creature creature = GetMap().GetCreature(guid);
|
Creature creature = GetMap().GetCreature(guid);
|
||||||
// Update fields of triggers, transformed units or unselectable units (values dependent on GM state)
|
// Update fields of triggers, transformed units or unselectable units (values dependent on GM state)
|
||||||
if (creature == null || (!creature.IsTrigger() && !creature.HasAuraType(AuraType.Transform) && !creature.HasUnitFlag(UnitFlags.Uninteractible)))
|
if (creature == null || (!creature.IsTrigger() && !creature.HasAuraType(AuraType.Transform) && !creature.IsUninteractible()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
creature.m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.DisplayID);
|
creature.m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.DisplayID);
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ namespace Game.Entities
|
|||||||
if (!IsAlive())
|
if (!IsAlive())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.Uninteractible))
|
if (HasUnitFlag(UnitFlags.NonAttackable) || IsUninteractible())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (IsTypeId(TypeId.Player) && ToPlayer().IsGameMaster())
|
if (IsTypeId(TypeId.Player) && ToPlayer().IsGameMaster())
|
||||||
|
|||||||
@@ -3209,6 +3209,16 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public virtual void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, false); }
|
public virtual void SetImmuneToNPC(bool apply) { SetImmuneToNPC(apply, false); }
|
||||||
|
|
||||||
|
public bool IsUninteractible() { return HasUnitFlag(UnitFlags.Uninteractible); }
|
||||||
|
|
||||||
|
public void SetUninteractible(bool apply)
|
||||||
|
{
|
||||||
|
if (apply)
|
||||||
|
SetUnitFlag(UnitFlags.Uninteractible);
|
||||||
|
else
|
||||||
|
RemoveUnitFlag(UnitFlags.Uninteractible);
|
||||||
|
}
|
||||||
|
|
||||||
public virtual float GetBlockPercent(uint attackerLevel) { return 30.0f; }
|
public virtual float GetBlockPercent(uint attackerLevel) { return 30.0f; }
|
||||||
|
|
||||||
void UpdateReactives(uint p_time)
|
void UpdateReactives(uint p_time)
|
||||||
|
|||||||
@@ -365,7 +365,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
|
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
|
||||||
if (seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.PassengerNotSelectable) && !seat.Value.Passenger.IsUninteractible)
|
if (seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.PassengerNotSelectable) && !seat.Value.Passenger.IsUninteractible)
|
||||||
unit.RemoveUnitFlag(UnitFlags.Uninteractible);
|
unit.SetUninteractible(false);
|
||||||
|
|
||||||
seat.Value.Passenger.Reset();
|
seat.Value.Passenger.Reset();
|
||||||
|
|
||||||
@@ -642,7 +642,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
Passenger.SetVehicle(Target);
|
Passenger.SetVehicle(Target);
|
||||||
Seat.Value.Passenger.Guid = Passenger.GetGUID();
|
Seat.Value.Passenger.Guid = Passenger.GetGUID();
|
||||||
Seat.Value.Passenger.IsUninteractible = Passenger.HasUnitFlag(UnitFlags.Uninteractible);
|
Seat.Value.Passenger.IsUninteractible = Passenger.IsUninteractible();
|
||||||
Seat.Value.Passenger.IsGravityDisabled = Passenger.HasUnitMovementFlag(MovementFlag.DisableGravity);
|
Seat.Value.Passenger.IsGravityDisabled = Passenger.HasUnitMovementFlag(MovementFlag.DisableGravity);
|
||||||
if (Seat.Value.SeatInfo.CanEnterOrExit())
|
if (Seat.Value.SeatInfo.CanEnterOrExit())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker
|
|||||||
_events.Reset();
|
_events.Reset();
|
||||||
_events.ScheduleEvent(EventIds.ReengagePlayers, TimeSpan.FromSeconds(3.5));
|
_events.ScheduleEvent(EventIds.ReengagePlayers, TimeSpan.FromSeconds(3.5));
|
||||||
HideCannons();
|
HideCannons();
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -229,14 +229,14 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker
|
|||||||
DoCastSelf(SpellIds.ApocalypseDriveFinalDamage);
|
DoCastSelf(SpellIds.ApocalypseDriveFinalDamage);
|
||||||
Talk(TextIds.SayAnnounceApocalypseDrive);
|
Talk(TextIds.SayAnnounceApocalypseDrive);
|
||||||
Talk(TextIds.SayApocalypseDrive);
|
Talk(TextIds.SayApocalypseDrive);
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
|
|
||||||
Creature decimator = instance.GetCreature(DataTypes.Decimator);
|
Creature decimator = instance.GetCreature(DataTypes.Decimator);
|
||||||
if (decimator)
|
if (decimator)
|
||||||
{
|
{
|
||||||
instance.SendEncounterUnit(EncounterFrameType.Engage, decimator, 2);
|
instance.SendEncounterUnit(EncounterFrameType.Engage, decimator, 2);
|
||||||
decimator.SetUnitFlag(UnitFlags.InCombat);
|
decimator.SetUnitFlag(UnitFlags.InCombat);
|
||||||
decimator.RemoveUnitFlag(UnitFlags.Uninteractible);
|
decimator.SetUninteractible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Creature annihilator = instance.GetCreature(DataTypes.Annihilator);
|
Creature annihilator = instance.GetCreature(DataTypes.Annihilator);
|
||||||
@@ -244,7 +244,7 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker
|
|||||||
{
|
{
|
||||||
instance.SendEncounterUnit(EncounterFrameType.Engage, annihilator, 2);
|
instance.SendEncounterUnit(EncounterFrameType.Engage, annihilator, 2);
|
||||||
annihilator.SetUnitFlag(UnitFlags.InCombat);
|
annihilator.SetUnitFlag(UnitFlags.InCombat);
|
||||||
annihilator.RemoveUnitFlag(UnitFlags.Uninteractible);
|
annihilator.SetUninteractible(false);
|
||||||
}
|
}
|
||||||
++_apocalypseDriveCount;
|
++_apocalypseDriveCount;
|
||||||
}
|
}
|
||||||
@@ -279,7 +279,7 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker
|
|||||||
case CreatureIds.Annihilator:
|
case CreatureIds.Annihilator:
|
||||||
me.InterruptNonMeleeSpells(true);
|
me.InterruptNonMeleeSpells(true);
|
||||||
me.RemoveAurasDueToSpell(SpellIds.ApocalypseDrive);
|
me.RemoveAurasDueToSpell(SpellIds.ApocalypseDrive);
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
|
|
||||||
if (summon.GetEntry() == CreatureIds.Annihilator)
|
if (summon.GetEntry() == CreatureIds.Annihilator)
|
||||||
_searingBarrageSpellId = SpellIds.SearingBarrageAnnihilator;
|
_searingBarrageSpellId = SpellIds.SearingBarrageAnnihilator;
|
||||||
@@ -411,14 +411,16 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker
|
|||||||
if (decimator)
|
if (decimator)
|
||||||
{
|
{
|
||||||
instance.SendEncounterUnit(EncounterFrameType.Disengage, decimator);
|
instance.SendEncounterUnit(EncounterFrameType.Disengage, decimator);
|
||||||
decimator.SetUnitFlag(UnitFlags.Uninteractible | UnitFlags.Immune);
|
decimator.SetUninteractible(true);
|
||||||
|
decimator.SetUnitFlag(UnitFlags.Immune);
|
||||||
}
|
}
|
||||||
|
|
||||||
Creature annihilator = instance.GetCreature(DataTypes.Annihilator);
|
Creature annihilator = instance.GetCreature(DataTypes.Annihilator);
|
||||||
if (annihilator)
|
if (annihilator)
|
||||||
{
|
{
|
||||||
instance.SendEncounterUnit(EncounterFrameType.Disengage, annihilator);
|
instance.SendEncounterUnit(EncounterFrameType.Disengage, annihilator);
|
||||||
annihilator.SetUnitFlag(UnitFlags.Uninteractible | UnitFlags.Immune);
|
annihilator.SetUninteractible(true);
|
||||||
|
annihilator.SetUnitFlag(UnitFlags.Immune);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -46,7 +46,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackrockSpire.PyroguardEmbe
|
|||||||
|
|
||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
me.SetImmuneToPC(true);
|
me.SetImmuneToPC(true);
|
||||||
_scheduler.CancelAll();
|
_scheduler.CancelAll();
|
||||||
// Apply auras on spawn and reset
|
// Apply auras on spawn and reset
|
||||||
@@ -172,7 +172,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackrockSpire.PyroguardEmbe
|
|||||||
me.CastSpell(me, SpellIds.EmberseerFullStrength);
|
me.CastSpell(me, SpellIds.EmberseerFullStrength);
|
||||||
Talk(TextIds.EmoteFreeOfBonds);
|
Talk(TextIds.EmoteFreeOfBonds);
|
||||||
Talk(TextIds.YellFreeOfBonds);
|
Talk(TextIds.YellFreeOfBonds);
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
me.SetImmuneToPC(false);
|
me.SetImmuneToPC(false);
|
||||||
_scheduler.Schedule(TimeSpan.FromSeconds(2), task =>
|
_scheduler.Schedule(TimeSpan.FromSeconds(2), task =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair.VictorNefarius
|
|||||||
if (summon.GetEntry() != BWLCreatureIds.Nefarian)
|
if (summon.GetEntry() != BWLCreatureIds.Nefarian)
|
||||||
{
|
{
|
||||||
summon.UpdateEntry(CreatureIds.BoneConstruct);
|
summon.UpdateEntry(CreatureIds.BoneConstruct);
|
||||||
summon.SetUnitFlag(UnitFlags.Uninteractible);
|
summon.SetUninteractible(true);
|
||||||
summon.SetReactState(ReactStates.Passive);
|
summon.SetReactState(ReactStates.Passive);
|
||||||
summon.SetStandState(UnitStandStateType.Dead);
|
summon.SetStandState(UnitStandStateType.Dead);
|
||||||
}
|
}
|
||||||
@@ -561,7 +561,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair.VictorNefarius
|
|||||||
{
|
{
|
||||||
creature.Respawn();
|
creature.Respawn();
|
||||||
DoZoneInCombat(creature);
|
DoZoneInCombat(creature);
|
||||||
creature.RemoveUnitFlag(UnitFlags.Uninteractible);
|
creature.SetUninteractible(false);
|
||||||
creature.SetReactState(ReactStates.Aggressive);
|
creature.SetReactState(ReactStates.Aggressive);
|
||||||
creature.SetStandState(UnitStandStateType.Stand);
|
creature.SetStandState(UnitStandStateType.Stand);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair.Vaelastrasz
|
|||||||
Initialize();
|
Initialize();
|
||||||
creature.SetNpcFlag(NPCFlags.Gossip);
|
creature.SetNpcFlag(NPCFlags.Gossip);
|
||||||
creature.SetFaction((uint)FactionTemplates.Friendly);
|
creature.SetFaction((uint)FactionTemplates.Friendly);
|
||||||
creature.RemoveUnitFlag(UnitFlags.Uninteractible);
|
creature.SetUninteractible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize()
|
void Initialize()
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
|
|||||||
//Become unbanished again
|
//Become unbanished again
|
||||||
me.SetReactState(ReactStates.Aggressive);
|
me.SetReactState(ReactStates.Aggressive);
|
||||||
me.SetFaction((uint)FactionTemplates.Monster);
|
me.SetFaction((uint)FactionTemplates.Monster);
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
me.SetEmoteState(Emote.OneshotNone);
|
me.SetEmoteState(Emote.OneshotNone);
|
||||||
me.HandleEmoteCommand(Emote.OneshotEmerge);
|
me.HandleEmoteCommand(Emote.OneshotEmerge);
|
||||||
Unit target = SelectTarget(SelectTargetMethod.Random, 0);
|
Unit target = SelectTarget(SelectTargetMethod.Random, 0);
|
||||||
@@ -240,7 +240,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
|
|||||||
//Root self
|
//Root self
|
||||||
//DoCast(me, 23973);
|
//DoCast(me, 23973);
|
||||||
me.SetFaction((uint)FactionTemplates.Friendly);
|
me.SetFaction((uint)FactionTemplates.Friendly);
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
me.SetEmoteState(Emote.StateSubmerged);
|
me.SetEmoteState(Emote.StateSubmerged);
|
||||||
me.HandleEmoteCommand(Emote.OneshotSubmerge);
|
me.HandleEmoteCommand(Emote.OneshotSubmerge);
|
||||||
instance.SetData(MCMiscConst.DataRagnarosAdds, 0);
|
instance.SetData(MCMiscConst.DataRagnarosAdds, 0);
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Curator
|
|||||||
_scheduler.Schedule(TimeSpan.FromSeconds(2), task =>
|
_scheduler.Schedule(TimeSpan.FromSeconds(2), task =>
|
||||||
{
|
{
|
||||||
me.SetReactState(ReactStates.Aggressive);
|
me.SetReactState(ReactStates.Aggressive);
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Nightbane
|
|||||||
phase = NightbanePhases.Intro;
|
phase = NightbanePhases.Intro;
|
||||||
me.SetActive(true);
|
me.SetActive(true);
|
||||||
me.SetFarVisible(true);
|
me.SetFarVisible(true);
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
me.GetMotionMaster().MoveAlongSplineChain(PointIds.IntroStart, SplineChainIds.IntroStart, false);
|
me.GetMotionMaster().MoveAlongSplineChain(PointIds.IntroStart, SplineChainIds.IntroStart, false);
|
||||||
HandleTerraceDoors(false);
|
HandleTerraceDoors(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
|
|||||||
creature.InterruptNonMeleeSpells(true);
|
creature.InterruptNonMeleeSpells(true);
|
||||||
creature.RemoveAllAuras();
|
creature.RemoveAllAuras();
|
||||||
creature.SetHealth(0);
|
creature.SetHealth(0);
|
||||||
creature.SetUnitFlag(UnitFlags.Uninteractible);
|
creature.SetUninteractible(true);
|
||||||
creature.GetMotionMaster().Clear();
|
creature.GetMotionMaster().Clear();
|
||||||
creature.GetMotionMaster().MoveIdle();
|
creature.GetMotionMaster().MoveIdle();
|
||||||
creature.SetStandState(UnitStandStateType.Dead);
|
creature.SetStandState(UnitStandStateType.Dead);
|
||||||
@@ -158,7 +158,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
|
|||||||
|
|
||||||
public static void Resurrect(Creature target)
|
public static void Resurrect(Creature target)
|
||||||
{
|
{
|
||||||
target.RemoveUnitFlag(UnitFlags.Uninteractible);
|
target.SetUninteractible(false);
|
||||||
target.SetFullHealth();
|
target.SetFullHealth();
|
||||||
target.SetStandState(UnitStandStateType.Stand);
|
target.SetStandState(UnitStandStateType.Stand);
|
||||||
target.CastSpell(target, SpellIds.ResVisual, true);
|
target.CastSpell(target, SpellIds.ResVisual, true);
|
||||||
@@ -1070,7 +1070,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
|
|||||||
Creature Romulo = ObjectAccessor.GetCreature(me, RomuloGUID);
|
Creature Romulo = ObjectAccessor.GetCreature(me, RomuloGUID);
|
||||||
if (Romulo)
|
if (Romulo)
|
||||||
{
|
{
|
||||||
Romulo.RemoveUnitFlag(UnitFlags.Uninteractible);
|
Romulo.SetUninteractible(false);
|
||||||
Romulo.GetMotionMaster().Clear();
|
Romulo.GetMotionMaster().Clear();
|
||||||
Romulo.SetDeathState(DeathState.JustDied);
|
Romulo.SetDeathState(DeathState.JustDied);
|
||||||
Romulo.CombatStop(true);
|
Romulo.CombatStop(true);
|
||||||
@@ -1320,7 +1320,7 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
|
|||||||
Creature Julianne = ObjectAccessor.GetCreature(me, JulianneGUID);
|
Creature Julianne = ObjectAccessor.GetCreature(me, JulianneGUID);
|
||||||
if (Julianne)
|
if (Julianne)
|
||||||
{
|
{
|
||||||
Julianne.RemoveUnitFlag(UnitFlags.Uninteractible);
|
Julianne.SetUninteractible(false);
|
||||||
Julianne.GetMotionMaster().Clear();
|
Julianne.GetMotionMaster().Clear();
|
||||||
Julianne.SetDeathState(DeathState.JustDied);
|
Julianne.SetDeathState(DeathState.JustDied);
|
||||||
Julianne.CombatStop(true);
|
Julianne.CombatStop(true);
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ namespace Scripts.EasternKingdoms.Karazhan.PrinceMalchezaar
|
|||||||
if (spellInfo.Id == SpellIds.InfernalRelay)
|
if (spellInfo.Id == SpellIds.InfernalRelay)
|
||||||
{
|
{
|
||||||
me.SetDisplayId(me.GetNativeDisplayId());
|
me.SetDisplayId(me.GetNativeDisplayId());
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
|
|
||||||
_scheduler.Schedule(TimeSpan.FromSeconds(4), task => DoCast(me, SpellIds.Hellfire));
|
_scheduler.Schedule(TimeSpan.FromSeconds(4), task => DoCast(me, SpellIds.Hellfire));
|
||||||
_scheduler.Schedule(TimeSpan.FromSeconds(170), task =>
|
_scheduler.Schedule(TimeSpan.FromSeconds(170), task =>
|
||||||
@@ -402,7 +402,7 @@ namespace Scripts.EasternKingdoms.Karazhan.PrinceMalchezaar
|
|||||||
Creature axe = me.SummonCreature(MiscConst.MalchezarsAxe, me.GetPositionX(), me.GetPositionY(), me.GetPositionZ(), 0, TempSummonType.TimedDespawnOutOfCombat, TimeSpan.FromSeconds(1));
|
Creature axe = me.SummonCreature(MiscConst.MalchezarsAxe, me.GetPositionX(), me.GetPositionY(), me.GetPositionZ(), 0, TempSummonType.TimedDespawnOutOfCombat, TimeSpan.FromSeconds(1));
|
||||||
if (axe)
|
if (axe)
|
||||||
{
|
{
|
||||||
axe.SetUnitFlag(UnitFlags.Uninteractible);
|
axe.SetUninteractible(true);
|
||||||
axe.SetFaction(me.GetFaction());
|
axe.SetFaction(me.GetFaction());
|
||||||
axes[i] = axe.GetGUID();
|
axes[i] = axe.GetGUID();
|
||||||
if (target)
|
if (target)
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ namespace Scripts.EasternKingdoms.MagistersTerrace.FelbloodKaelthas
|
|||||||
me.AttackStop();
|
me.AttackStop();
|
||||||
me.SetReactState(ReactStates.Passive);
|
me.SetReactState(ReactStates.Passive);
|
||||||
me.RemoveAllAuras();
|
me.RemoveAllAuras();
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
DoCastSelf(SpellIds.EmberBlast);
|
DoCastSelf(SpellIds.EmberBlast);
|
||||||
// DoCastSelf(SpellSummonPhoenixEgg); -- We do a manual summon for now. Feel free to move it to spelleffect_dbc
|
// DoCastSelf(SpellSummonPhoenixEgg); -- We do a manual summon for now. Feel free to move it to spelleffect_dbc
|
||||||
Creature egg = DoSummon(CreatureIds.PhoenixEgg, me.GetPosition(), TimeSpan.FromSeconds(0));
|
Creature egg = DoSummon(CreatureIds.PhoenixEgg, me.GetPosition(), TimeSpan.FromSeconds(0));
|
||||||
@@ -407,7 +407,7 @@ namespace Scripts.EasternKingdoms.MagistersTerrace.FelbloodKaelthas
|
|||||||
_isInEgg = false;
|
_isInEgg = false;
|
||||||
DoCastSelf(SpellIds.FullHeal);
|
DoCastSelf(SpellIds.FullHeal);
|
||||||
DoCastSelf(SpellIds.Burn);
|
DoCastSelf(SpellIds.Burn);
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
engageTask.Schedule(TimeSpan.FromSeconds(2), task => me.SetReactState(ReactStates.Aggressive));
|
engageTask.Schedule(TimeSpan.FromSeconds(2), task => me.SetReactState(ReactStates.Aggressive));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ namespace Scripts.EasternKingdoms.MagistersTerrace.SelinFireheart
|
|||||||
Unit CrystalChosen = Global.ObjAccessor.GetUnit(me, CrystalGUID);
|
Unit CrystalChosen = Global.ObjAccessor.GetUnit(me, CrystalGUID);
|
||||||
if (CrystalChosen != null && CrystalChosen.IsAlive())
|
if (CrystalChosen != null && CrystalChosen.IsAlive())
|
||||||
{
|
{
|
||||||
CrystalChosen.RemoveUnitFlag(UnitFlags.Uninteractible);
|
CrystalChosen.SetUninteractible(false);
|
||||||
CrystalChosen.CastSpell(me, SpellIds.ManaRage, true);
|
CrystalChosen.CastSpell(me, SpellIds.ManaRage, true);
|
||||||
_events.ScheduleEvent(EventIds.Empower, TimeSpan.FromSeconds(10), PhaseIds.Drain);
|
_events.ScheduleEvent(EventIds.Empower, TimeSpan.FromSeconds(10), PhaseIds.Drain);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1916,7 +1916,9 @@ namespace Scripts.Spells.Generic
|
|||||||
Unit target = GetTarget();
|
Unit target = GetTarget();
|
||||||
target.SetUnitFlag3(UnitFlags3.FakeDead);
|
target.SetUnitFlag3(UnitFlags3.FakeDead);
|
||||||
target.SetUnitFlag2(UnitFlags2.FeignDeath);
|
target.SetUnitFlag2(UnitFlags2.FeignDeath);
|
||||||
target.SetUnitFlag(UnitFlags.PreventEmotesFromChatText | UnitFlags.ImmuneToPc | UnitFlags.ImmuneToNpc | UnitFlags.Uninteractible);
|
target.SetUnitFlag(UnitFlags.PreventEmotesFromChatText);
|
||||||
|
target.SetImmuneToAll(true);
|
||||||
|
target.SetUninteractible(true);
|
||||||
|
|
||||||
target.ToCreature()?.SetReactState(ReactStates.Passive);
|
target.ToCreature()?.SetReactState(ReactStates.Passive);
|
||||||
}
|
}
|
||||||
@@ -1926,7 +1928,9 @@ namespace Scripts.Spells.Generic
|
|||||||
Unit target = GetTarget();
|
Unit target = GetTarget();
|
||||||
target.RemoveUnitFlag3(UnitFlags3.FakeDead);
|
target.RemoveUnitFlag3(UnitFlags3.FakeDead);
|
||||||
target.RemoveUnitFlag2(UnitFlags2.FeignDeath);
|
target.RemoveUnitFlag2(UnitFlags2.FeignDeath);
|
||||||
target.RemoveUnitFlag(UnitFlags.PreventEmotesFromChatText | UnitFlags.ImmuneToPc | UnitFlags.ImmuneToNpc | UnitFlags.Uninteractible);
|
target.RemoveUnitFlag(UnitFlags.PreventEmotesFromChatText);
|
||||||
|
target.SetImmuneToAll(false);
|
||||||
|
target.SetUninteractible(false);
|
||||||
|
|
||||||
target.ToCreature()?.InitializeReactState();
|
target.ToCreature()?.InitializeReactState();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,8 @@ namespace Scripts.World.EmeraldDragons
|
|||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
base.Reset();
|
base.Reset();
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible | UnitFlags.NonAttackable);
|
me.RemoveUnitFlag(UnitFlags.NonAttackable);
|
||||||
|
me.SetUninteractible(false);
|
||||||
me.SetReactState(ReactStates.Aggressive);
|
me.SetReactState(ReactStates.Aggressive);
|
||||||
DoCast(me, SpellIds.MarkOfNatureAura, new CastSpellExtraArgs(true));
|
DoCast(me, SpellIds.MarkOfNatureAura, new CastSpellExtraArgs(true));
|
||||||
|
|
||||||
@@ -439,7 +440,8 @@ namespace Scripts.World.EmeraldDragons
|
|||||||
_shades += (byte)SpellIds.TaerarShadeSpells.Length;
|
_shades += (byte)SpellIds.TaerarShadeSpells.Length;
|
||||||
|
|
||||||
DoCast(SpellIds.Shade);
|
DoCast(SpellIds.Shade);
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible | UnitFlags.NonAttackable);
|
me.SetUnitFlag(UnitFlags.NonAttackable);
|
||||||
|
me.SetUninteractible(true);
|
||||||
me.SetReactState(ReactStates.Passive);
|
me.SetReactState(ReactStates.Passive);
|
||||||
|
|
||||||
++_stage;
|
++_stage;
|
||||||
@@ -458,7 +460,8 @@ namespace Scripts.World.EmeraldDragons
|
|||||||
{
|
{
|
||||||
_banished = false;
|
_banished = false;
|
||||||
|
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible | UnitFlags.NonAttackable);
|
me.RemoveUnitFlag(UnitFlags.NonAttackable);
|
||||||
|
me.SetUninteractible(false);
|
||||||
me.RemoveAurasDueToSpell(SpellIds.Shade);
|
me.RemoveAurasDueToSpell(SpellIds.Shade);
|
||||||
me.SetReactState(ReactStates.Aggressive);
|
me.SetReactState(ReactStates.Aggressive);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -779,7 +779,7 @@ namespace Scripts.World.NpcSpecial
|
|||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BeginEvent(Player player)
|
public void BeginEvent(Player player)
|
||||||
@@ -804,7 +804,7 @@ namespace Scripts.World.NpcSpecial
|
|||||||
}
|
}
|
||||||
|
|
||||||
Event = true;
|
Event = true;
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PatientDied(Position point)
|
public void PatientDied(Position point)
|
||||||
@@ -961,7 +961,7 @@ namespace Scripts.World.NpcSpecial
|
|||||||
Initialize();
|
Initialize();
|
||||||
|
|
||||||
//no select
|
//no select
|
||||||
me.RemoveUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(false);
|
||||||
|
|
||||||
//no regen health
|
//no regen health
|
||||||
me.SetUnitFlag(UnitFlags.InCombat);
|
me.SetUnitFlag(UnitFlags.InCombat);
|
||||||
@@ -1007,7 +1007,7 @@ namespace Scripts.World.NpcSpecial
|
|||||||
}
|
}
|
||||||
|
|
||||||
//make not selectable
|
//make not selectable
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
|
|
||||||
//regen health
|
//regen health
|
||||||
me.RemoveUnitFlag(UnitFlags.InCombat);
|
me.RemoveUnitFlag(UnitFlags.InCombat);
|
||||||
@@ -1044,7 +1044,7 @@ namespace Scripts.World.NpcSpecial
|
|||||||
if (me.IsAlive() && me.GetHealth() <= 6)
|
if (me.IsAlive() && me.GetHealth() <= 6)
|
||||||
{
|
{
|
||||||
me.RemoveUnitFlag(UnitFlags.InCombat);
|
me.RemoveUnitFlag(UnitFlags.InCombat);
|
||||||
me.SetUnitFlag(UnitFlags.Uninteractible);
|
me.SetUninteractible(true);
|
||||||
me.SetDeathState(DeathState.JustDied);
|
me.SetDeathState(DeathState.JustDied);
|
||||||
me.SetUnitFlag3(UnitFlags3.FakeDead);
|
me.SetUnitFlag3(UnitFlags3.FakeDead);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user