mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
[7159] Allow GO cast as need (use go coordinates for target select in some cases)
Fixed work all Huter traps target selection More check in ObjectAccessor::Get Object More generic work 22 TARGET_CASTER_COORDINATES target type Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
parent
c2a0a18a38
commit
abaa111eaa
10 changed files with 71 additions and 42 deletions
|
|
@ -354,7 +354,7 @@ void GameObject::Update(uint32 /*p_time*/)
|
||||||
{
|
{
|
||||||
Unit *caster = owner ? owner : ok;
|
Unit *caster = owner ? owner : ok;
|
||||||
|
|
||||||
caster->CastSpell(ok, goInfo->trap.spellId, true);
|
caster->CastSpell(ok, goInfo->trap.spellId, true, 0, 0, GetGUID());
|
||||||
m_cooldownTime = time(NULL) + 4; // 4 seconds
|
m_cooldownTime = time(NULL) + 4; // 4 seconds
|
||||||
|
|
||||||
if(NeedDespawn)
|
if(NeedDespawn)
|
||||||
|
|
@ -404,7 +404,7 @@ void GameObject::Update(uint32 /*p_time*/)
|
||||||
for (; it != end; it++)
|
for (; it != end; it++)
|
||||||
{
|
{
|
||||||
Unit* owner = Unit::GetUnit(*this, uint64(*it));
|
Unit* owner = Unit::GetUnit(*this, uint64(*it));
|
||||||
if (owner) owner->CastSpell(owner, spellId, false);
|
if (owner) owner->CastSpell(owner, spellId, false, 0, 0, GetGUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_unique_users.clear();
|
m_unique_users.clear();
|
||||||
|
|
@ -809,7 +809,7 @@ void GameObject::TriggeringLinkedGameObject( uint32 trapEntry, Unit* target)
|
||||||
// found correct GO
|
// found correct GO
|
||||||
// FIXME: when GO casting will be implemented trap must cast spell to target
|
// FIXME: when GO casting will be implemented trap must cast spell to target
|
||||||
if(trapGO)
|
if(trapGO)
|
||||||
target->CastSpell(target,trapSpell,true);
|
target->CastSpell(target,trapSpell,true, 0, 0, GetGUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
GameObject* GameObject::LookupFishingHoleAround(float range)
|
GameObject* GameObject::LookupFishingHoleAround(float range)
|
||||||
|
|
|
||||||
|
|
@ -171,11 +171,16 @@ Corpse*
|
||||||
ObjectAccessor::GetCorpse(WorldObject const &u, uint64 guid)
|
ObjectAccessor::GetCorpse(WorldObject const &u, uint64 guid)
|
||||||
{
|
{
|
||||||
Corpse * ret = GetObjectInWorld(guid, (Corpse*)NULL);
|
Corpse * ret = GetObjectInWorld(guid, (Corpse*)NULL);
|
||||||
if(ret && ret->GetMapId() != u.GetMapId()) ret = NULL;
|
if(!ret)
|
||||||
|
return NULL;
|
||||||
|
if(ret->GetMapId() != u.GetMapId())
|
||||||
|
ret = NULL;
|
||||||
|
if(ret->GetInstanceId() != u.GetInstanceId())
|
||||||
|
return NULL;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object* ObjectAccessor::GetObjectByTypeMask(Player const &p, uint64 guid, uint32 typemask)
|
Object* ObjectAccessor::GetObjectByTypeMask(WorldObject const &p, uint64 guid, uint32 typemask)
|
||||||
{
|
{
|
||||||
Object *obj = NULL;
|
Object *obj = NULL;
|
||||||
|
|
||||||
|
|
@ -203,9 +208,9 @@ Object* ObjectAccessor::GetObjectByTypeMask(Player const &p, uint64 guid, uint32
|
||||||
if(obj) return obj;
|
if(obj) return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(typemask & TYPEMASK_ITEM)
|
if(typemask & TYPEMASK_ITEM && p.GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
obj = p.GetItemByGuid( guid );
|
obj = ((Player const &)p).GetItemByGuid( guid );
|
||||||
if(obj) return obj;
|
if(obj) return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -216,15 +221,25 @@ GameObject*
|
||||||
ObjectAccessor::GetGameObject(WorldObject const &u, uint64 guid)
|
ObjectAccessor::GetGameObject(WorldObject const &u, uint64 guid)
|
||||||
{
|
{
|
||||||
GameObject * ret = GetObjectInWorld(guid, (GameObject*)NULL);
|
GameObject * ret = GetObjectInWorld(guid, (GameObject*)NULL);
|
||||||
if(ret && ret->GetMapId() != u.GetMapId()) ret = NULL;
|
if(!ret)
|
||||||
|
return NULL;
|
||||||
|
if(ret->GetMapId() != u.GetMapId())
|
||||||
|
ret = NULL;
|
||||||
|
if(ret->GetInstanceId() != u.GetInstanceId())
|
||||||
|
return NULL;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
DynamicObject*
|
DynamicObject*
|
||||||
ObjectAccessor::GetDynamicObject(Unit const &u, uint64 guid)
|
ObjectAccessor::GetDynamicObject(WorldObject const &u, uint64 guid)
|
||||||
{
|
{
|
||||||
DynamicObject * ret = GetObjectInWorld(guid, (DynamicObject*)NULL);
|
DynamicObject * ret = GetObjectInWorld(guid, (DynamicObject*)NULL);
|
||||||
if(ret && ret->GetMapId() != u.GetMapId()) ret = NULL;
|
if(!ret)
|
||||||
|
return NULL;
|
||||||
|
if(ret->GetMapId() != u.GetMapId())
|
||||||
|
ret = NULL;
|
||||||
|
if(ret->GetInstanceId() != u.GetInstanceId())
|
||||||
|
return NULL;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,7 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor,
|
||||||
else return NULL;
|
else return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Object* GetObjectByTypeMask(Player const &, uint64, uint32 typemask);
|
static Object* GetObjectByTypeMask(WorldObject const &, uint64, uint32 typemask);
|
||||||
static Creature* GetNPCIfCanInteractWith(Player const &player, uint64 guid, uint32 npcflagmask);
|
static Creature* GetNPCIfCanInteractWith(Player const &player, uint64 guid, uint32 npcflagmask);
|
||||||
static Creature* GetCreature(WorldObject const &, uint64);
|
static Creature* GetCreature(WorldObject const &, uint64);
|
||||||
static Creature* GetCreatureOrPetOrVehicle(WorldObject const &, uint64);
|
static Creature* GetCreatureOrPetOrVehicle(WorldObject const &, uint64);
|
||||||
|
|
@ -144,7 +144,7 @@ class MANGOS_DLL_DECL ObjectAccessor : public MaNGOS::Singleton<ObjectAccessor,
|
||||||
static Pet* GetPet(Unit const &, uint64 guid) { return GetPet(guid); }
|
static Pet* GetPet(Unit const &, uint64 guid) { return GetPet(guid); }
|
||||||
static Player* GetPlayer(Unit const &, uint64 guid) { return FindPlayer(guid); }
|
static Player* GetPlayer(Unit const &, uint64 guid) { return FindPlayer(guid); }
|
||||||
static GameObject* GetGameObject(WorldObject const &, uint64);
|
static GameObject* GetGameObject(WorldObject const &, uint64);
|
||||||
static DynamicObject* GetDynamicObject(Unit const &, uint64);
|
static DynamicObject* GetDynamicObject(WorldObject const &, uint64);
|
||||||
static Corpse* GetCorpse(WorldObject const &u, uint64 guid);
|
static Corpse* GetCorpse(WorldObject const &u, uint64 guid);
|
||||||
static Pet* GetPet(uint64 guid);
|
static Pet* GetPet(uint64 guid);
|
||||||
static Vehicle* GetVehicle(uint64 guid);
|
static Vehicle* GetVehicle(uint64 guid);
|
||||||
|
|
|
||||||
|
|
@ -807,7 +807,7 @@ enum Targets
|
||||||
TARGET_EFFECT_SELECT = 18, // highly depends on the spell effect
|
TARGET_EFFECT_SELECT = 18, // highly depends on the spell effect
|
||||||
TARGET_ALL_PARTY_AROUND_CASTER = 20,
|
TARGET_ALL_PARTY_AROUND_CASTER = 20,
|
||||||
TARGET_SINGLE_FRIEND = 21,
|
TARGET_SINGLE_FRIEND = 21,
|
||||||
TARGET_ALL_AROUND_CASTER = 22, // used only in TargetA, target selection dependent from TargetB
|
TARGET_CASTER_COORDINATES = 22, // used only in TargetA, target selection dependent from TargetB
|
||||||
TARGET_GAMEOBJECT = 23,
|
TARGET_GAMEOBJECT = 23,
|
||||||
TARGET_IN_FRONT_OF_CASTER = 24,
|
TARGET_IN_FRONT_OF_CASTER = 24,
|
||||||
TARGET_DUELVSPLAYER = 25,
|
TARGET_DUELVSPLAYER = 25,
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,14 @@ void SpellCastTargets::setDestination(float x, float y, float z)
|
||||||
m_targetMask |= TARGET_FLAG_DEST_LOCATION;
|
m_targetMask |= TARGET_FLAG_DEST_LOCATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SpellCastTargets::setSource(float x, float y, float z)
|
||||||
|
{
|
||||||
|
m_srcX = x;
|
||||||
|
m_srcY = y;
|
||||||
|
m_srcZ = z;
|
||||||
|
m_targetMask |= TARGET_FLAG_SOURCE_LOCATION;
|
||||||
|
}
|
||||||
|
|
||||||
void SpellCastTargets::setGOTarget(GameObject *target)
|
void SpellCastTargets::setGOTarget(GameObject *target)
|
||||||
{
|
{
|
||||||
m_GOTarget = target;
|
m_GOTarget = target;
|
||||||
|
|
@ -408,17 +416,11 @@ void Spell::FillTargetMap()
|
||||||
// but need it support in some know cases
|
// but need it support in some know cases
|
||||||
switch(m_spellInfo->EffectImplicitTargetA[i])
|
switch(m_spellInfo->EffectImplicitTargetA[i])
|
||||||
{
|
{
|
||||||
case TARGET_ALL_AROUND_CASTER:
|
case TARGET_CASTER_COORDINATES:
|
||||||
if( m_spellInfo->EffectImplicitTargetB[i]==TARGET_ALL_PARTY ||
|
|
||||||
m_spellInfo->EffectImplicitTargetB[i]==TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER ||
|
|
||||||
m_spellInfo->EffectImplicitTargetB[i]==TARGET_ALL_RAID_AROUND_CASTER )
|
|
||||||
{
|
|
||||||
SetTargetMap(i,m_spellInfo->EffectImplicitTargetB[i],tmpUnitMap);
|
|
||||||
}
|
|
||||||
// Note: this hack with search required until GO casting not implemented
|
// Note: this hack with search required until GO casting not implemented
|
||||||
// environment damage spells already have around enemies targeting but this not help in case not existed GO casting support
|
// environment damage spells already have around enemies targeting but this not help in case not existed GO casting support
|
||||||
// currently each enemy selected explicitly and self cast damage
|
// currently each enemy selected explicitly and self cast damage
|
||||||
else if(m_spellInfo->EffectImplicitTargetB[i]==TARGET_ALL_ENEMY_IN_AREA && m_spellInfo->Effect[i]==SPELL_EFFECT_ENVIRONMENTAL_DAMAGE)
|
if(m_spellInfo->EffectImplicitTargetB[i]==TARGET_ALL_ENEMY_IN_AREA && m_spellInfo->Effect[i]==SPELL_EFFECT_ENVIRONMENTAL_DAMAGE)
|
||||||
{
|
{
|
||||||
if(m_targets.getUnitTarget())
|
if(m_targets.getUnitTarget())
|
||||||
tmpUnitMap.push_back(m_targets.getUnitTarget());
|
tmpUnitMap.push_back(m_targets.getUnitTarget());
|
||||||
|
|
@ -919,7 +921,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Get original caster (if exist) and calculate damage/healing from him data
|
// Get original caster (if exist) and calculate damage/healing from him data
|
||||||
Unit *caster = m_originalCasterGUID ? m_originalCaster : m_caster;
|
Unit *caster = m_originalCaster ? m_originalCaster : m_caster;
|
||||||
|
|
||||||
// Skip if m_originalCaster not avaiable
|
// Skip if m_originalCaster not avaiable
|
||||||
if (!caster)
|
if (!caster)
|
||||||
|
|
@ -1471,6 +1473,19 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
|
||||||
}break;
|
}break;
|
||||||
case TARGET_ALL_ENEMY_IN_AREA:
|
case TARGET_ALL_ENEMY_IN_AREA:
|
||||||
{
|
{
|
||||||
|
CellPair p(MaNGOS::ComputeCellPair(m_targets.m_destX, m_targets.m_destY));
|
||||||
|
Cell cell(p);
|
||||||
|
cell.data.Part.reserved = ALL_DISTRICT;
|
||||||
|
cell.SetNoCreate();
|
||||||
|
|
||||||
|
MaNGOS::SpellNotifierCreatureAndPlayer notifier(*this, TagUnitMap, radius, PUSH_DEST_CENTER,SPELL_TARGETS_AOE_DAMAGE);
|
||||||
|
|
||||||
|
TypeContainerVisitor<MaNGOS::SpellNotifierCreatureAndPlayer, WorldTypeMapContainer > world_object_notifier(notifier);
|
||||||
|
TypeContainerVisitor<MaNGOS::SpellNotifierCreatureAndPlayer, GridTypeMapContainer > grid_object_notifier(notifier);
|
||||||
|
|
||||||
|
CellLock<GridReadGuard> cell_lock(cell, p);
|
||||||
|
cell_lock->Visit(cell_lock, world_object_notifier, *m_caster->GetMap());
|
||||||
|
cell_lock->Visit(cell_lock, grid_object_notifier, *m_caster->GetMap());
|
||||||
}break;
|
}break;
|
||||||
case TARGET_ALL_ENEMY_IN_AREA_INSTANT:
|
case TARGET_ALL_ENEMY_IN_AREA_INSTANT:
|
||||||
{
|
{
|
||||||
|
|
@ -1555,25 +1570,13 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
|
||||||
if( target->GetTypeId() == TYPEID_UNIT && ((Creature*)target)->isPet() && ((Pet*)target)->getPetType() == MINI_PET)
|
if( target->GetTypeId() == TYPEID_UNIT && ((Creature*)target)->isPet() && ((Pet*)target)->getPetType() == MINI_PET)
|
||||||
TagUnitMap.push_back(target);
|
TagUnitMap.push_back(target);
|
||||||
}break;
|
}break;
|
||||||
case TARGET_ALL_AROUND_CASTER:
|
case TARGET_CASTER_COORDINATES:
|
||||||
{
|
{
|
||||||
CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY()));
|
m_targets.setDestination(m_targets.m_srcX, m_targets.m_srcY, m_targets.m_srcZ);
|
||||||
Cell cell(p);
|
|
||||||
cell.data.Part.reserved = ALL_DISTRICT;
|
|
||||||
cell.SetNoCreate();
|
|
||||||
|
|
||||||
MaNGOS::SpellNotifierCreatureAndPlayer notifier(*this, TagUnitMap, radius, PUSH_SELF_CENTER,SPELL_TARGETS_AOE_DAMAGE);
|
|
||||||
|
|
||||||
TypeContainerVisitor<MaNGOS::SpellNotifierCreatureAndPlayer, WorldTypeMapContainer > world_object_notifier(notifier);
|
|
||||||
TypeContainerVisitor<MaNGOS::SpellNotifierCreatureAndPlayer, GridTypeMapContainer > grid_object_notifier(notifier);
|
|
||||||
|
|
||||||
CellLock<GridReadGuard> cell_lock(cell, p);
|
|
||||||
cell_lock->Visit(cell_lock, world_object_notifier, *m_caster->GetMap());
|
|
||||||
cell_lock->Visit(cell_lock, grid_object_notifier, *m_caster->GetMap());
|
|
||||||
}break;
|
}break;
|
||||||
case TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER:
|
case TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER:
|
||||||
{
|
{
|
||||||
CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY()));
|
CellPair p(MaNGOS::ComputeCellPair(m_targets.m_destX, m_targets.m_destY));
|
||||||
Cell cell(p);
|
Cell cell(p);
|
||||||
cell.data.Part.reserved = ALL_DISTRICT;
|
cell.data.Part.reserved = ALL_DISTRICT;
|
||||||
cell.SetNoCreate();
|
cell.SetNoCreate();
|
||||||
|
|
@ -1716,7 +1719,7 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
|
||||||
// targets the ground, not the units in the area
|
// targets the ground, not the units in the area
|
||||||
if (m_spellInfo->Effect[i]!=SPELL_EFFECT_PERSISTENT_AREA_AURA)
|
if (m_spellInfo->Effect[i]!=SPELL_EFFECT_PERSISTENT_AREA_AURA)
|
||||||
{
|
{
|
||||||
CellPair p(MaNGOS::ComputeCellPair(m_caster->GetPositionX(), m_caster->GetPositionY()));
|
CellPair p(MaNGOS::ComputeCellPair(m_targets.m_destX, m_targets.m_destY));
|
||||||
Cell cell(p);
|
Cell cell(p);
|
||||||
cell.data.Part.reserved = ALL_DISTRICT;
|
cell.data.Part.reserved = ALL_DISTRICT;
|
||||||
cell.SetNoCreate();
|
cell.SetNoCreate();
|
||||||
|
|
@ -2041,6 +2044,16 @@ void Spell::prepare(SpellCastTargets const* targets, Aura* triggeredByAura)
|
||||||
|
|
||||||
m_spellState = SPELL_STATE_PREPARING;
|
m_spellState = SPELL_STATE_PREPARING;
|
||||||
|
|
||||||
|
// Check original caster is GO - set its coordinates as src cast
|
||||||
|
WorldObject *caster = NULL;
|
||||||
|
if (m_originalCasterGUID)
|
||||||
|
caster = (WorldObject *)ObjectAccessor::GetObjectByTypeMask(*m_caster, m_originalCasterGUID, TYPEMASK_GAMEOBJECT);
|
||||||
|
if (!caster)
|
||||||
|
caster = m_caster;
|
||||||
|
|
||||||
|
// Set cast source for targets
|
||||||
|
m_targets.setSource(caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ());
|
||||||
|
|
||||||
m_castPositionX = m_caster->GetPositionX();
|
m_castPositionX = m_caster->GetPositionX();
|
||||||
m_castPositionY = m_caster->GetPositionY();
|
m_castPositionY = m_caster->GetPositionY();
|
||||||
m_castPositionZ = m_caster->GetPositionZ();
|
m_castPositionZ = m_caster->GetPositionZ();
|
||||||
|
|
@ -2892,6 +2905,7 @@ void Spell::SendSpellGo()
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldPacket data(SMSG_SPELL_GO, 50); // guess size
|
WorldPacket data(SMSG_SPELL_GO, 50); // guess size
|
||||||
|
|
||||||
if(m_CastItem)
|
if(m_CastItem)
|
||||||
data.append(m_CastItem->GetPackGUID());
|
data.append(m_CastItem->GetPackGUID());
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@ class SpellCastTargets
|
||||||
Unit *getUnitTarget() const { return m_unitTarget; }
|
Unit *getUnitTarget() const { return m_unitTarget; }
|
||||||
void setUnitTarget(Unit *target);
|
void setUnitTarget(Unit *target);
|
||||||
void setDestination(float x, float y, float z);
|
void setDestination(float x, float y, float z);
|
||||||
|
void setSource(float x, float y, float z);
|
||||||
|
|
||||||
uint64 getGOTargetGUID() const { return m_GOTargetGUID; }
|
uint64 getGOTargetGUID() const { return m_GOTargetGUID; }
|
||||||
GameObject *getGOTarget() const { return m_GOTarget; }
|
GameObject *getGOTarget() const { return m_GOTarget; }
|
||||||
|
|
|
||||||
|
|
@ -2218,7 +2218,7 @@ void Spell::EffectApplyAura(uint32 i)
|
||||||
(unitTarget->GetTypeId()!=TYPEID_PLAYER || !((Player*)unitTarget)->GetSession()->PlayerLoading()) )
|
(unitTarget->GetTypeId()!=TYPEID_PLAYER || !((Player*)unitTarget)->GetSession()->PlayerLoading()) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Unit* caster = m_originalCasterGUID ? m_originalCaster : m_caster;
|
Unit* caster = m_originalCaster ? m_originalCaster : m_caster;
|
||||||
if(!caster)
|
if(!caster)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -273,7 +273,7 @@ bool IsPositiveTarget(uint32 targetA, uint32 targetB)
|
||||||
case TARGET_CURRENT_ENEMY_COORDINATES:
|
case TARGET_CURRENT_ENEMY_COORDINATES:
|
||||||
case TARGET_SINGLE_ENEMY:
|
case TARGET_SINGLE_ENEMY:
|
||||||
return false;
|
return false;
|
||||||
case TARGET_ALL_AROUND_CASTER:
|
case TARGET_CASTER_COORDINATES:
|
||||||
return (targetB == TARGET_ALL_PARTY || targetB == TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER);
|
return (targetB == TARGET_ALL_PARTY || targetB == TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -367,7 +367,6 @@ inline bool IsAreaEffectTarget( Targets target )
|
||||||
case TARGET_ALL_ENEMY_IN_AREA:
|
case TARGET_ALL_ENEMY_IN_AREA:
|
||||||
case TARGET_ALL_ENEMY_IN_AREA_INSTANT:
|
case TARGET_ALL_ENEMY_IN_AREA_INSTANT:
|
||||||
case TARGET_ALL_PARTY_AROUND_CASTER:
|
case TARGET_ALL_PARTY_AROUND_CASTER:
|
||||||
case TARGET_ALL_AROUND_CASTER:
|
|
||||||
case TARGET_IN_FRONT_OF_CASTER:
|
case TARGET_IN_FRONT_OF_CASTER:
|
||||||
case TARGET_ALL_ENEMY_IN_AREA_CHANNELED:
|
case TARGET_ALL_ENEMY_IN_AREA_CHANNELED:
|
||||||
case TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER:
|
case TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7158"
|
#define REVISION_NR "7159"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue