Changeset 13 for trunk

Show
Ignore:
Timestamp:
11/19/08 13:23:03 (17 years ago)
Author:
yumileroy
Message:

[svn] * Moved Script grid_searchers to core
* Moved an enum from sc_creature.h to CreatureAI.h

Original author: Neo2003
Date: 2008-10-05 11:56:30-05:00

Location:
trunk/src
Files:
1 removed
11 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/bindings/scripts/Makefile.am

    r2 r13  
    4141include/sc_creature.h \ 
    4242include/sc_gossip.h \ 
    43 include/sc_grid_searchers.h \ 
    4443include/sc_instance.h \ 
    4544include/sc_item.h \ 
     
    420419        done 
    421420 
     421 
  • trunk/src/bindings/scripts/VC71/71ScriptDev2.vcproj

    r11 r13  
    15691569                        </File> 
    15701570                        <File 
    1571                                 RelativePath="..\include\sc_grid_searchers.h"> 
    1572                         </File> 
    1573                         <File 
    15741571                                RelativePath="..\include\sc_instance.h"> 
    15751572                        </File> 
  • trunk/src/bindings/scripts/VC80/80ScriptDev2.vcproj

    r11 r13  
    23072307                        <File 
    23082308                                RelativePath="..\include\sc_gossip.h" 
    2309                                 > 
    2310                         </File> 
    2311                         <File 
    2312                                 RelativePath="..\include\sc_grid_searchers.h" 
    23132309                                > 
    23142310                        </File> 
  • trunk/src/bindings/scripts/VC90/90ScriptDev2.vcproj

    r11 r13  
    23052305                        <File 
    23062306                                RelativePath="..\include\sc_gossip.h" 
    2307                                 > 
    2308                         </File> 
    2309                         <File 
    2310                                 RelativePath="..\include\sc_grid_searchers.h" 
    23112307                                > 
    23122308                        </File> 
  • trunk/src/bindings/scripts/include/precompiled.h

    r2 r13  
    77 
    88#include "../ScriptMgr.h" 
     9#include "Cell.h" 
     10#include "CellImpl.h" 
     11#include "GridNotifiers.h" 
     12#include "GridNotifiersImpl.h" 
     13#include "Unit.h" 
     14#include "GameObject.h" 
    915#include "sc_creature.h" 
    1016#include "sc_gossip.h" 
    11 #include "sc_grid_searchers.h" 
    1217#include "sc_instance.h" 
    1318 
  • trunk/src/bindings/scripts/include/sc_creature.cpp

    r12 r13  
    514514    Unit* pUnit = NULL; 
    515515 
    516     MostHPMissingInRange u_check(m_creature, range, MinHPDiff); 
    517     MaNGOS::UnitLastSearcher<MostHPMissingInRange> searcher(pUnit, u_check); 
     516    MaNGOS::MostHPMissingInRange u_check(m_creature, range, MinHPDiff); 
     517    MaNGOS::UnitLastSearcher<MaNGOS::MostHPMissingInRange> searcher(pUnit, u_check); 
    518518 
    519519    /* 
     
    521521    This means that if we only search grid then we cannot possibly return pets or players so this is safe 
    522522    */ 
    523     TypeContainerVisitor<MaNGOS::UnitLastSearcher<MostHPMissingInRange>, GridTypeMapContainer >  grid_unit_searcher(searcher); 
     523    TypeContainerVisitor<MaNGOS::UnitLastSearcher<MaNGOS::MostHPMissingInRange>, GridTypeMapContainer >  grid_unit_searcher(searcher); 
    524524 
    525525    CellLock<GridReadGuard> cell_lock(cell, p); 
     
    537537    std::list<Creature*> pList; 
    538538 
    539     FriendlyCCedInRange u_check(m_creature, range); 
    540     MaNGOS::CreatureListSearcher<FriendlyCCedInRange> searcher(pList, u_check); 
    541  
    542     TypeContainerVisitor<MaNGOS::CreatureListSearcher<FriendlyCCedInRange>, GridTypeMapContainer >  grid_creature_searcher(searcher); 
     539    MaNGOS::FriendlyCCedInRange u_check(m_creature, range); 
     540    MaNGOS::CreatureListSearcher<MaNGOS::FriendlyCCedInRange> searcher(pList, u_check); 
     541 
     542    TypeContainerVisitor<MaNGOS::CreatureListSearcher<MaNGOS::FriendlyCCedInRange>, GridTypeMapContainer >  grid_creature_searcher(searcher); 
    543543 
    544544    CellLock<GridReadGuard> cell_lock(cell, p); 
     
    557557    std::list<Creature*> pList; 
    558558 
    559     FriendlyMissingBuffInRange u_check(m_creature, range, spellid); 
    560     MaNGOS::CreatureListSearcher<FriendlyMissingBuffInRange> searcher(pList, u_check); 
    561  
    562     TypeContainerVisitor<MaNGOS::CreatureListSearcher<FriendlyMissingBuffInRange>, GridTypeMapContainer >  grid_creature_searcher(searcher); 
     559    MaNGOS::FriendlyMissingBuffInRange u_check(m_creature, range, spellid); 
     560    MaNGOS::CreatureListSearcher<MaNGOS::FriendlyMissingBuffInRange> searcher(pList, u_check); 
     561 
     562    TypeContainerVisitor<MaNGOS::CreatureListSearcher<MaNGOS::FriendlyMissingBuffInRange>, GridTypeMapContainer >  grid_creature_searcher(searcher); 
    563563 
    564564    CellLock<GridReadGuard> cell_lock(cell, p); 
  • trunk/src/bindings/scripts/include/sc_creature.h

    r2 r13  
    88#include "CreatureAI.h" 
    99#include "Creature.h" 
    10  
    11 //Spell targets used by SelectSpell 
    12 enum SelectTarget 
    13 { 
    14     SELECT_TARGET_DONTCARE = 0,                             //All target types allowed 
    15  
    16     SELECT_TARGET_SELF,                                     //Only Self casting 
    17  
    18     SELECT_TARGET_SINGLE_ENEMY,                             //Only Single Enemy 
    19     SELECT_TARGET_AOE_ENEMY,                                //Only AoE Enemy 
    20     SELECT_TARGET_ANY_ENEMY,                                //AoE or Single Enemy 
    21  
    22     SELECT_TARGET_SINGLE_FRIEND,                            //Only Single Friend 
    23     SELECT_TARGET_AOE_FRIEND,                               //Only AoE Friend 
    24     SELECT_TARGET_ANY_FRIEND,                               //AoE or Single Friend 
    25 }; 
    26  
    27 //Spell Effects used by SelectSpell 
    28 enum SelectEffect 
    29 { 
    30     SELECT_EFFECT_DONTCARE = 0,                             //All spell effects allowed 
    31     SELECT_EFFECT_DAMAGE,                                   //Spell does damage 
    32     SELECT_EFFECT_HEALING,                                  //Spell does healing 
    33     SELECT_EFFECT_AURA,                                     //Spell applies an aura 
    34 }; 
    35  
    36 //Selection method used by SelectTarget 
    37 enum SelectAggroTarget 
    38 { 
    39     SELECT_TARGET_RANDOM = 0,                               //Just selects a random target 
    40     SELECT_TARGET_TOPAGGRO,                                 //Selects targes from top aggro to bottom 
    41     SELECT_TARGET_BOTTOMAGGRO,                              //Selects targets from bottom aggro to top 
    42 }; 
    4310 
    4411struct MANGOS_DLL_DECL ScriptedAI : public CreatureAI 
  • trunk/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp

    r6 r13  
    2424#include "precompiled.h" 
    2525#include "def_black_temple.h" 
    26 #include "sc_grid_searchers.h" 
    2726 
    2827struct Location 
     
    328327        std::list<Creature*> ChannelerList; 
    329328 
    330         AllCreaturesOfEntryInRange check(m_creature, CREATURE_CHANNELER, 50); 
    331         MaNGOS::CreatureListSearcher<AllCreaturesOfEntryInRange> searcher(ChannelerList, check); 
    332         TypeContainerVisitor<MaNGOS::CreatureListSearcher<AllCreaturesOfEntryInRange>, GridTypeMapContainer> visitor(searcher); 
     329        MaNGOS::AllCreaturesOfEntryInRange check(m_creature, CREATURE_CHANNELER, 50); 
     330        MaNGOS::CreatureListSearcher<MaNGOS::AllCreaturesOfEntryInRange> searcher(ChannelerList, check); 
     331        TypeContainerVisitor<MaNGOS::CreatureListSearcher<MaNGOS::AllCreaturesOfEntryInRange>, GridTypeMapContainer> visitor(searcher); 
    333332 
    334333        CellLock<GridReadGuard> cell_lock(cell, pair); 
  • trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp

    r6 r13  
    317317    // First get all creatures. 
    318318    std::list<Creature*> creatures; 
    319     AllFriendlyCreaturesInGrid creature_check(m_creature); 
    320     MaNGOS::CreatureListSearcher<AllFriendlyCreaturesInGrid> creature_searcher(creatures, creature_check); 
     319    MaNGOS::AllFriendlyCreaturesInGrid creature_check(m_creature); 
     320    MaNGOS::CreatureListSearcher<MaNGOS::AllFriendlyCreaturesInGrid> creature_searcher(creatures, creature_check); 
    321321    TypeContainerVisitor 
    322         <MaNGOS::CreatureListSearcher<AllFriendlyCreaturesInGrid>, 
     322        <MaNGOS::CreatureListSearcher<MaNGOS::AllFriendlyCreaturesInGrid>, 
    323323        GridTypeMapContainer> creature_visitor(creature_searcher); 
    324324 
    325325    // Then get all Ancient Gem Veins. NOTE: Grid Search will only be able to find those in the grid. 
    326326    std::list<GameObject*> goList; 
    327     AllGameObjectsWithEntryInGrid go_check(185557); 
    328     MaNGOS::GameObjectListSearcher<AllGameObjectsWithEntryInGrid> go_search(goList, go_check); 
     327    MaNGOS::AllGameObjectsWithEntryInGrid go_check(185557); 
     328    MaNGOS::GameObjectListSearcher<MaNGOS::AllGameObjectsWithEntryInGrid> go_search(goList, go_check); 
    329329    TypeContainerVisitor 
    330         <MaNGOS::GameObjectListSearcher<AllGameObjectsWithEntryInGrid>, GridTypeMapContainer> go_visit(go_search); 
     330        <MaNGOS::GameObjectListSearcher<MaNGOS::AllGameObjectsWithEntryInGrid>, GridTypeMapContainer> go_visit(go_search); 
    331331 
    332332    CellLock<GridReadGuard> cell_lock(cell, pair); 
  • trunk/src/game/CreatureAI.h

    r2 r13  
    3232#define TIME_INTERVAL_LOOK   5000 
    3333#define VISIBILITY_RANGE    10000 
     34 
     35//Spell targets used by SelectSpell 
     36enum SelectTarget 
     37{ 
     38    SELECT_TARGET_DONTCARE = 0,                             //All target types allowed 
     39 
     40    SELECT_TARGET_SELF,                                     //Only Self casting 
     41 
     42    SELECT_TARGET_SINGLE_ENEMY,                             //Only Single Enemy 
     43    SELECT_TARGET_AOE_ENEMY,                                //Only AoE Enemy 
     44    SELECT_TARGET_ANY_ENEMY,                                //AoE or Single Enemy 
     45 
     46    SELECT_TARGET_SINGLE_FRIEND,                            //Only Single Friend 
     47    SELECT_TARGET_AOE_FRIEND,                               //Only AoE Friend 
     48    SELECT_TARGET_ANY_FRIEND,                               //AoE or Single Friend 
     49}; 
     50 
     51//Spell Effects used by SelectSpell 
     52enum SelectEffect 
     53{ 
     54    SELECT_EFFECT_DONTCARE = 0,                             //All spell effects allowed 
     55    SELECT_EFFECT_DAMAGE,                                   //Spell does damage 
     56    SELECT_EFFECT_HEALING,                                  //Spell does healing 
     57    SELECT_EFFECT_AURA,                                     //Spell applies an aura 
     58}; 
     59 
     60//Selection method used by SelectTarget 
     61enum SelectAggroTarget 
     62{ 
     63    SELECT_TARGET_RANDOM = 0,                               //Just selects a random target 
     64    SELECT_TARGET_TOPAGGRO,                                 //Selects targes from top aggro to bottom 
     65    SELECT_TARGET_BOTTOMAGGRO,                              //Selects targets from bottom aggro to top 
     66}; 
    3467 
    3568class MANGOS_DLL_SPEC CreatureAI 
  • trunk/src/game/GridNotifiers.h

    r6 r13  
    710710    }; 
    711711 
     712    class NearestAssistCreatureInCreatureRangeCheck 
     713    { 
     714        public: 
     715            NearestAssistCreatureInCreatureRangeCheck(Creature* obj,Unit* enemy, float range) 
     716                : i_obj(obj), i_enemy(enemy), i_range(range) {} 
     717 
     718            bool operator()(Creature* u) 
     719            { 
     720                if(u->getFaction() == i_obj->getFaction() && !u->isInCombat() && !u->GetCharmerOrOwnerGUID() && u->IsHostileTo(i_enemy) && u->isAlive()&& i_obj->IsWithinDistInMap(u, i_range) && i_obj->IsWithinLOSInMap(u)) 
     721                { 
     722                    i_range = i_obj->GetDistance(u);         // use found unit range as new range limit for next check 
     723                    return true; 
     724                } 
     725                return false; 
     726            } 
     727            float GetLastRange() const { return i_range; } 
     728        private: 
     729            Creature* const i_obj; 
     730            Unit* const i_enemy; 
     731            float  i_range; 
     732 
     733            // prevent clone this object 
     734            NearestAssistCreatureInCreatureRangeCheck(NearestAssistCreatureInCreatureRangeCheck const&); 
     735    }; 
     736 
    712737    class AnyAssistCreatureInRangeCheck 
    713738    { 
     
    799824        WorldObject const* i_obj; 
    800825        float i_range; 
     826    }; 
     827 
     828    // Searchers used by ScriptedAI 
     829    class MostHPMissingInRange 
     830    { 
     831    public: 
     832        MostHPMissingInRange(Unit const* obj, float range, uint32 hp) : i_obj(obj), i_range(range), i_hp(hp) {} 
     833        bool operator()(Unit* u) 
     834        { 
     835            if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && u->GetMaxHealth() - u->GetHealth() > i_hp) 
     836            { 
     837                i_hp = u->GetMaxHealth() - u->GetHealth(); 
     838                return true; 
     839            } 
     840            return false; 
     841        } 
     842    private: 
     843        Unit const* i_obj; 
     844        float i_range; 
     845        uint32 i_hp; 
     846    }; 
     847 
     848    class FriendlyCCedInRange 
     849    { 
     850    public: 
     851        FriendlyCCedInRange(Unit const* obj, float range) : i_obj(obj), i_range(range) {} 
     852        bool operator()(Unit* u) 
     853        { 
     854            if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && 
     855                (u->isFeared() || u->isCharmed() || u->isFrozen() || u->hasUnitState(UNIT_STAT_STUNDED) || u->hasUnitState(UNIT_STAT_STUNDED) || u->hasUnitState(UNIT_STAT_CONFUSED))) 
     856            { 
     857                return true; 
     858            } 
     859            return false; 
     860        } 
     861    private: 
     862        Unit const* i_obj; 
     863        float i_range; 
     864    }; 
     865 
     866    class FriendlyMissingBuffInRange 
     867    { 
     868    public: 
     869        FriendlyMissingBuffInRange(Unit const* obj, float range, uint32 spellid) : i_obj(obj), i_range(range), i_spell(spellid) {} 
     870        bool operator()(Unit* u) 
     871        { 
     872            if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) &&  
     873                !(u->HasAura(i_spell, 0) || u->HasAura(i_spell, 1) || u->HasAura(i_spell, 2))) 
     874            { 
     875                return true; 
     876            } 
     877            return false; 
     878        } 
     879    private: 
     880        Unit const* i_obj; 
     881        float i_range; 
     882        uint32 i_spell; 
     883    }; 
     884 
     885    class AllFriendlyCreaturesInGrid 
     886    { 
     887    public: 
     888        AllFriendlyCreaturesInGrid(Unit const* obj) : pUnit(obj) {} 
     889        bool operator() (Unit* u) 
     890        { 
     891            if(u->isAlive() && u->GetVisibility() == VISIBILITY_ON && u->IsFriendlyTo(pUnit)) 
     892                return true; 
     893 
     894            return false; 
     895        } 
     896    private: 
     897        Unit const* pUnit; 
     898    }; 
     899 
     900    class AllGameObjectsWithEntryInGrid 
     901    { 
     902    public: 
     903        AllGameObjectsWithEntryInGrid(uint32 ent) : entry(ent) {} 
     904        bool operator() (GameObject* g) 
     905        { 
     906            if(g->GetEntry() == entry) 
     907                return true; 
     908 
     909            return false; 
     910        } 
     911    private: 
     912        uint32 entry; 
     913    }; 
     914 
     915    class AllCreaturesOfEntryInRange 
     916    { 
     917    public: 
     918        AllCreaturesOfEntryInRange(Unit const* obj, uint32 ent, float ran) : pUnit(obj), entry(ent), range(ran) {} 
     919        bool operator() (Unit* u) 
     920        { 
     921            if(u->GetEntry() == entry && pUnit->IsWithinDistInMap(u, range)) 
     922                return true; 
     923 
     924            return false; 
     925        } 
     926    private: 
     927        Unit const* pUnit; 
     928        uint32 entry; 
     929        float range; 
    801930    }; 
    802931