Successfully aliased the URL <https://topics-manager-r1saetovx.now.sh> to the following aliases:

* https://topics-manager.now.sh
* https://topics-manager.iamstarkov.now.sh
* https://topics-manager-git-master.iamstarkov.now.sh


maybe שציינת would be better than שהזנת


Need to remove the debug


The patch worked in archlinux (patched in my own disto). It is now been included in ufficial systemd? thanks bye luca


I believe `logging.basicConfig(filename='ircprogress.log',level=logging.DEBUG)` only works before a root logger has been established which occurs when optking is imported (I think). I created an `ircprogress.log` file with the most recent `IRCdata.progress_report()` output. If that's not the desired effect I can remove it. The trajectory is also currently logging to the main log file, is that something we'd like to separate?


Oh


7423-CeilingDiffuserConvectionRegimeTransition (RKStrand) - x86_64-MacOS-10.13-clang: OK (2457 of 2458 tests passed, 0 test warnings)

Messages:\n
 * 1 test had: EIO diffs.
 * 1 test had: ERR diffs.
 * 1 test had: ESO big diffs.
 * 1 test had: MTR big diffs.
 * 1 test had: SSZ big diffs.
 * 1 test had: ZSZ big diffs.
 * 1 test had: Table big diffs.

Failures:\n

regression Test Summary
 * Passed: 662
 * Failed: 1

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-99.96%25-yellow.png)


Successfully aliased the URL <https://distance-learning-lp-mentor-uchiru-afcmojmjri.now.sh> to the following alias:

* https://mentor.uchi.ru


Strong typing was added for a better understanding of data input and output


Successfully aliased the URL <https://react-modern-state-management-6erwcd5se.now.sh> to the following aliases:

* https://react-modern-state-management.now.sh
* https://react-modern-state-management.arvigeus.now.sh
* https://react-modern-state-management-git-master.arvigeus.now.sh


How would you code it so any Playert2 can join any open game?


I think it should read as follows:
[!NOTE]
For the Code Integrity Policy, use the ConvertFrom-CIPolicy cmdlet to convert the XML policy into a binary format.
If you are using a custom OMA-URI setting in Intune, select Base64 as the Data type, then upload the binary file directly, without encoding it as Base64.


Now could not deploy this pull request since it contains the following references to invalid secrets in the `env` sections of the `now.json` file:

* `apiKey` (in env: `API_KEY)`
* `authDomain` (in env: `AUTH_DOMAIN)`
* `databaseURL` (in env: `DATABASE_URL)`
* `projectId` (in env: `PROJECT_ID)`
* `storageBucket` (in env: `STORAGE_BUCKET)`
* `messagingSenderId` (in env: `MESSAGING_SENDER_ID)`
* `appId` (in env: `APP_ID)`

Add those secrets or remove them from the `env` maps in the `now.json` file.


Now could not deploy this pull request since it contains the following references to invalid secrets in the `env` sections of the `now.json` file:

* `aws_s3_access_key` (in env: `AWS_S3_ACCESS_KEY)`
* `aws_s3_secret_key` (in env: `AWS_S3_SECRET_KEY)`
* `aws_s3_bucket` (in env: `AWS_S3_BUCKET)`
* `api_key_newsapi` (in env: `API_KEY_NEWSAPI)`
* `scraper_api_origin` (in env: `SCRAPER_API_ORIGIN)`
* `scraper_api_key` (in env: `SCRAPER_API_KEY)`

Add those secrets or remove them from the `env` maps in the `now.json` file.


TeamCity Bvcms / Build [Build 1643](https://builds.tpsdb.com/viewLog.html?buildId=7581&buildTypeId=Bvcms_Build) outcome was **SUCCESS**
Summary: Tests passed: 49 Build time: 00:17:59


This commit description is tripping me out.


TeamCity Bvcms / Build [Build 1644](https://builds.tpsdb.com/viewLog.html?buildId=7584&buildTypeId=Bvcms_Build) is now running


Hi @cognet,
I think there's a typo on this second line and it should be `poll_send` instead of `poll.recv`, right ?


Yeah!!!!!!!!!


🔥 Device tests completed (Failed) on iOS on [Azure DevOps](https://dev.azure.com/devdiv/DevDiv/_build/index?buildId=2914538)(iOS): [Html Report](http://xamarin-storage/jenkins/xamarin-macios/d16-2/a3b8cddd3259be36efb500124e584caaa1ccaa34/2914538/device-tests/jenkins-results/tests/index.html) 🔥

# Test results

<details>
<summary>31 tests failed, 162 tests passed.</summary>

## Failed tests

 * monotouch-test/iOS Unified 64-bits - device/Debug: Failed
 * link all/iOS Unified 64-bits - device/Debug: Failed
 * link sdk/iOS Unified 64-bits - device/Debug: Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/Debug: Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * monotouch-test/iOS Unified 64-bits - device/Release: Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * monotouch-test/iOS Unified 64-bits - device/Release (all optimizations): Failed
 * monotouch-test/iOS Unified 64-bits - device/Debug (all optimizations): Failed
 * monotouch-test/iOS Unified 64-bits - device/Debug: SGenConc: Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * link all/iOS Unified 64-bits - device/Release: Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * link sdk/iOS Unified 64-bits - device/Release: Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/Release: Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
</details>


wine says החלפה windows says the same...


You'd better reset your key. Some crawlers will steal key from commits.


Successfully aliased the URL <https://gatsby-theme-tosh-mfiuloiw2.now.sh> to the following aliases:

* https://tosh-theme.johno.com
* https://gatsby-theme-tosh.johno1.now.sh
* https://gatsby-theme-tosh-git-master.johno1.now.sh


@drozzy see https://github.com/stanfordnmbl/osim-rl/issues/192#issuecomment-518411232


Successfully aliased the URL <https://portfolio-mwvw3f08h.now.sh> to the following aliases:

* https://www.mike-engel.com
* https://mike-engel.com
* https://portfolio.vegemike.now.sh
* https://portfolio-git-master.vegemike.now.sh


Successfully aliased the URL <https://frankbucksv0-kqzykhieo.now.sh> to the following aliases:

* https://frankbucks.com
* https://frankbucksv0.frankalbenesius.now.sh
* https://frankbucksv0-git-master.frankalbenesius.now.sh


Thanks for taking a peek at this i see your still in the testing phase, feel free to push to my fork when
you think it's good to go then i'll credit you and push it to mainline.


Successfully aliased the URL <https://congress-w3pz6y8e1.now.sh> to the following aliases:

* https://congress.now.sh
* https://congress.lachlanjc.now.sh
* https://congress-git-master.lachlanjc.now.sh


Add cgrupp-55's file


created a branch, created a file and made a commit, and opened a pull  request


❌ [Build was (probably) aborted](https://jenkins.internalx.com/job/macios/job/d16-2/45/display/redirect)

🔥 [Jenkins job](https://jenkins.internalx.com/job/macios/job/d16-2/45/display/redirect) (on internal Jenkins) failed in stage(s) 'Test run, Test run' 🔥

✅ [Build succeeded](https://jenkins.internalx.com/job/macios/job/d16-2/45//console)
✅ Packages: [xamarin.ios-12.14.0.116.pkg](https://bosstoragemirror.blob.core.windows.net/wrench/jenkins/d16-2/a3b8cddd3259be36efb500124e584caaa1ccaa34/45/package/xamarin.ios-12.14.0.116.pkg) [xamarin.mac-5.14.0.116.pkg](https://bosstoragemirror.blob.core.windows.net/wrench/jenkins/d16-2/a3b8cddd3259be36efb500124e584caaa1ccaa34/45/package/xamarin.mac-5.14.0.116.pkg)
✅ [API Diff (from stable)](http://xamarin-storage/jenkins/xamarin-macios/d16-2/a3b8cddd3259be36efb500124e584caaa1ccaa34/45/jenkins-results/api-diff/index.html)
✅ [API Diff (from PR only)](http://xamarin-storage/jenkins/xamarin-macios/d16-2/a3b8cddd3259be36efb500124e584caaa1ccaa34/45/jenkins-results/apicomparison/api-diff.html) (no change)
✅ [Generator Diff](http://xamarin-storage/jenkins/xamarin-macios/d16-2/a3b8cddd3259be36efb500124e584caaa1ccaa34/45/jenkins-results/generator-diff/index.html) (no change)
🔥 [Test run failed](http://xamarin-storage/jenkins/xamarin-macios/d16-2/a3b8cddd3259be36efb500124e584caaa1ccaa34/45/jenkins-results/tests/index.html) 🔥

# Test results

<details>
<summary>4 tests failed, 238 tests passed.</summary>

## Failed tests

 * [NUnit] Mono CorlibTests/watchOS 32-bits - simulator/Debug: Crashed
 * monotouch-test/watchOS 32-bits - simulator/Debug (static registrar): Crashed
 * monotouch-test/watchOS 32-bits - simulator/Debug (all optimizations): Crashed
 * introspection/watchOS 32-bits - simulator/Debug (watchOS 2.0): Crashed
</details>


UPDATES SCRIPTS


7423-CeilingDiffuserConvectionRegimeTransition (mjwitte) - x86_64-Linux-Ubuntu-18.04-gcc-7.4-UnitTestsCoverage-Debug: OK (1130 of 1130 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-100.0%25-green.png) ![Coverage Badge](http://img.shields.io/badge/coverage%20status-42.46%25-green.png)


Красива
Закрыто.


I would:
1. Remove `player2` parameter and check from `bet()` method
2. Remove the check and save `player2` in `counter()` method
3. Check if `player1` == `player2` in `counter()` method, although not much point in a player playing against himself


Walts, this is crazy. It is a "algorithm", but the name is very clerky and is similar to the "minimax algorithm".


TeamCity Bvcms / Build [Build 1645](https://builds.tpsdb.com/viewLog.html?buildId=7585&buildTypeId=Bvcms_Build) is now running


TeamCity Bvcms / Build [Build 1644](https://builds.tpsdb.com/viewLog.html?buildId=7584&buildTypeId=Bvcms_Build) outcome was **SUCCESS**
Summary: Tests passed: 49 Build time: 00:18:15


Hi @cbonte ,

Oops you're right of course, we have too many pollers.
Thanks a lot !


Successfully aliased the URL <https://order4-4nvqbfq8p.now.sh> to the following aliases:

* https://order4.dbudi.now.sh
* https://order4-git-master.dbudi.now.sh


Load_Aggregation (mitchute) - x86_64-MacOS-10.13-clang: OK (2435 of 2457 tests passed, 2 test warnings)

Messages:\n
 * 1 test had: EIO diffs.
 * 1 test had: ESO small diffs.
 * 1 test had: BND diffs.

Failures:\n

EnergyPlusFixture Test Summary
 * Passed: 778
 * SEGFAULT: 2

integration Test Summary
 * Passed: 644
 * Failed: 20

![Build Badge](http://img.shields.io/badge/build%20status-warnings-yellow.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-99.1%25-yellow.png)


Successfully aliased the URL <https://topics-manager-7z7uju5qd.now.sh> to the following aliases:

* https://topics-manager.now.sh
* https://topics-manager.iamstarkov.now.sh
* https://topics-manager-git-master.iamstarkov.now.sh


Successfully aliased the URL <https://destiny-report-oungnr7ul.now.sh> to the following aliases:

* https://destiny.report
* https://destiny-report.sarkurd.now.sh
* https://destiny-report-git-master.sarkurd.now.sh


@jimmolinaro Sorry, but I never used Emby and I just don’t know how it works.


I'm fumbling around right now but soon I will get it.


develop (mjwitte) - Win64-Windows-10-VisualStudio-16: OK (1795 of 1795 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-100.0%25-green.png)


Successfully aliased the URL <https://jstntrnr-1vsfpt6r7.now.sh> to the following aliases:

* https://jstntrnr.com
* https://jstntrnr.jstntrnr.now.sh
* https://jstntrnr-git-master.jstntrnr.now.sh


To avoid migration issues I removed previous migrations again.


Successfully aliased the URL <https://wikichronica-4gt60y5d7.now.sh> to the following aliases:

* https://wiki.chronica.xyz
* https://www.wiki.chronica.xyz
* https://wikichronica.ckipp01.now.sh
* https://wikichronica-git-master.ckipp01.now.sh


Successfully aliased the URL <https://ctrlaltdev-k8fx4ztji.now.sh> to the following aliases:

* https://ctrlalt.dev
* https://ctrlaltdev.now.sh
* https://ctrlaltdev.ctrlaltdev.now.sh
* https://ctrlaltdev-git-master.ctrlaltdev.now.sh


[![Visit Site](https://raw.githubusercontent.com/pantheon-systems/ci-drops-8/0.1.0/data/img/visit-site-36.png)](https://ci-528-badcamp-2019.pantheonsite.io/)

Created multidev environment [ci-528](https://dashboard.pantheon.io/sites/77e169f6-098e-4e68-b9b1-67d0b7cc2f02#ci-528) for badcamp-2019.


Story of my life. 😄


Of course, they'd need to know the hash.

Otherwise, if we wanted to enable them to join an open game we could have all active bets in an array and implement a function that gives the first bet (or even a random bet) in that list for a player that wants to join.


Yeah, it likely should be
```
if auth.INDEX_URL not in auth_data and auth.INDEX_NAME in auth_data:
```

Do you mind submitting a PR? Thanks!


Successfully aliased the URL <https://topics-manager-reb8o6qes.now.sh> to the following aliases:

* https://topics-manager.now.sh
* https://topics-manager.iamstarkov.now.sh
* https://topics-manager-git-master.iamstarkov.now.sh


#ifndef TRINITY_UNITAI_H
#define TRINITY_UNITAI_H

#include "Containers.h"
#include "Errors.h"
#include "EventMap.h"
#include "ObjectGuid.h"
#include "SpellDefines.h"
#include "ThreatManager.h"

#define CAST_AI(a, b)   (dynamic_cast<a*>(b))
#define ENSURE_AI(a,b)  (EnsureAI<a>(b))

template<class T, class U>
T* EnsureAI(U* ai)
{
    T* cast_ai = dynamic_cast<T*>(ai);
    ASSERT(cast_ai);
    return cast_ai;
};

class Player;
class Quest;
class SpellInfo;
class Unit;
struct AISpellInfoType;
enum DamageEffectType : uint8;
enum SpellEffIndex : uint8;

//Selection method used by SelectTarget
enum SelectAggroTarget
{
    SELECT_TARGET_RANDOM = 0,  // just pick a random target
    SELECT_TARGET_MAXTHREAT,   // prefer targets higher in the threat list
    SELECT_TARGET_MINTHREAT,   // prefer targets lower in the threat list
    SELECT_TARGET_MAXDISTANCE, // prefer targets further from us
    SELECT_TARGET_MINDISTANCE  // prefer targets closer to us
};

// default predicate function to select target based on distance, player and/or aura criteria
struct TC_GAME_API DefaultTargetSelector
{
    public:
        // unit: the reference unit
        // dist: if 0: ignored, if > 0: maximum distance to the reference unit, if < 0: minimum distance to the reference unit
        // playerOnly: self explaining
        // withMainTank: allow current tank to be selected
        // aura: if 0: ignored, if > 0: the target shall have the aura, if < 0, the target shall NOT have the aura
        DefaultTargetSelector(Unit const* unit, float dist, bool playerOnly, bool withMainTank, int32 aura);
        bool operator()(Unit const* target) const;

    private:
        Unit const* _me;
        float _dist;
        bool _playerOnly;
        Unit const* _exception;
        int32 _aura;
};

// Target selector for spell casts checking range, auras and attributes
/// @todo Add more checks from Spell::CheckCast
struct TC_GAME_API SpellTargetSelector
{
    public:
        SpellTargetSelector(Unit* caster, uint32 spellId);
        bool operator()(Unit const* target) const;

    private:
        Unit const* _caster;
        SpellInfo const* _spellInfo;
};

// Very simple target selector, will just skip main target
// NOTE: When passing to UnitAI::SelectTarget remember to use 0 as position for random selection
//       because tank will not be in the temporary list
struct TC_GAME_API NonTankTargetSelector
{
    public:
        NonTankTargetSelector(Unit* source, bool playerOnly = true) : _source(source), _playerOnly(playerOnly) { }
        bool operator()(Unit const* target) const;

    private:
        Unit* _source;
        bool _playerOnly;
};

// Simple selector for units using mana
struct TC_GAME_API PowerUsersSelector
{
    public:
        PowerUsersSelector(Unit const* unit, Powers power, float dist, bool playerOnly) : _me(unit), _power(power), _dist(dist), _playerOnly(playerOnly) { }
        bool operator()(Unit const* target) const;

    private:
        Unit const* _me;
        Powers const _power;
        float const _dist;
        bool const _playerOnly;
};

struct TC_GAME_API FarthestTargetSelector
{
    public:
        FarthestTargetSelector(Unit const* unit, float dist, bool playerOnly, bool inLos) : _me(unit), _dist(dist), _playerOnly(playerOnly), _inLos(inLos) {}
        bool operator()(Unit const* target) const;

    private:
        Unit const* _me;
        float _dist;
        bool _playerOnly;
        bool _inLos;
};

class TC_GAME_API UnitAI
{
    protected:
        Unit* const me;
    public:
        explicit UnitAI(Unit* unit) : me(unit) { }
        virtual ~UnitAI() { }

        virtual bool CanAIAttack(Unit const* /*target*/) const { return true; }
        virtual void AttackStart(Unit* /*target*/);
        virtual void UpdateAI(uint32 diff) = 0;

        virtual void InitializeAI();

        virtual void Reset() { }

        // Called when unit's charm state changes with isNew = false
        // Implementation should call me->ScheduleAIChange() if AI replacement is desired
        // If this call is made, AI will be replaced on the next tick
        // When replacement is made, OnCharmed is called with isNew = true
        virtual void OnCharmed(bool isNew);

        // Pass parameters between AI
        virtual void DoAction(int32 /*param*/) { }
        virtual uint32 GetData(uint32 /*id = 0*/) const { return 0; }
        virtual void SetData(uint32 /*id*/, uint32 /*value*/) { }
        virtual void SetGUID(ObjectGuid const& /*guid*/, int32 /*id*/ = 0) { }
        virtual ObjectGuid GetGUID(int32 /*id*/ = 0) const { return ObjectGuid::Empty; }

        // Select the best target (in <targetType> order) from the threat list that fulfill the following:
        // - Not among the first <offset> entries in <targetType> order (or MAXTHREAT order, if <targetType> is RANDOM).
        // - Within at most <dist> yards (if dist > 0.0f)
        // - At least -<dist> yards away (if dist < 0.0f)
        // - Is a player (if playerOnly = true)
        // - Not the current tank (if withTank = false)
        // - Has aura with ID <aura> (if aura > 0)
        // - Does not have aura with ID -<aura> (if aura < 0)
        Unit* SelectTarget(SelectAggroTarget targetType, uint32 offset = 0, float dist = 0.0f, bool playerOnly = false, bool withTank = true, int32 aura = 0);
        // Select the best target (in <targetType> order) satisfying <predicate> from the threat list.
        // If <offset> is nonzero, the first <offset> entries in <targetType> order (or MAXTHREAT order, if <targetType> is RANDOM) are skipped.
        template<class PREDICATE>
        Unit* SelectTarget(SelectAggroTarget targetType, uint32 offset, PREDICATE const& predicate)
        {
            ThreatManager& mgr = GetThreatManager();
            // shortcut: if we ignore the first <offset> elements, and there are at most <offset> elements, then we ignore ALL elements
            if (mgr.GetThreatListSize() <= offset)
                return nullptr;

            std::list<Unit*> targetList;
            SelectTargetList(targetList, mgr.GetThreatListSize(), targetType, offset, predicate);

            // maybe nothing fulfills the predicate
            if (targetList.empty())
                return nullptr;

            switch (targetType)
            {
                case SELECT_TARGET_MAXTHREAT:
                case SELECT_TARGET_MINTHREAT:
                case SELECT_TARGET_MAXDISTANCE:
                case SELECT_TARGET_MINDISTANCE:
                    return targetList.front();
                case SELECT_TARGET_RANDOM:
                    return Trinity::Containers::SelectRandomContainerElement(targetList);
                default:
                    return nullptr;
            }
        }

        // Select the best (up to) <num> targets (in <targetType> order) from the threat list that fulfill the following:
        // - Not among the first <offset> entries in <targetType> order (or MAXTHREAT order, if <targetType> is RANDOM).
        // - Within at most <dist> yards (if dist > 0.0f)
        // - At least -<dist> yards away (if dist < 0.0f)
        // - Is a player (if playerOnly = true)
        // - Not the current tank (if withTank = false)
        // - Has aura with ID <aura> (if aura > 0)
        // - Does not have aura with ID -<aura> (if aura < 0)
        // The resulting targets are stored in <targetList> (which is cleared first).
        void SelectTargetList(std::list<Unit*>& targetList, uint32 num, SelectAggroTarget targetType, uint32 offset = 0, float dist = 0.0f, bool playerOnly = false, bool withTank = true, int32 aura = 0);

        // Select the best (up to) <num> targets (in <targetType> order) satisfying <predicate> from the threat list and stores them in <targetList> (which is cleared first).
        // If <offset> is nonzero, the first <offset> entries in <targetType> order (or MAXTHREAT order, if <targetType> is RANDOM) are skipped.
        template <class PREDICATE>
        void SelectTargetList(std::list<Unit*>& targetList, uint32 num, SelectAggroTarget targetType, uint32 offset, PREDICATE const& predicate)
        {
            targetList.clear();
            ThreatManager& mgr = GetThreatManager();
            // shortcut: we're gonna ignore the first <offset> elements, and there's at most <offset> elements, so we ignore them all - nothing to do here
            if (mgr.GetThreatListSize() <= offset)
                return;

            if (targetType == SELECT_TARGET_MAXDISTANCE || targetType == SELECT_TARGET_MINDISTANCE)
            {
                for (ThreatReference const* ref : mgr.GetUnsortedThreatList())
                {
                    if (ref->IsOffline())
                        continue;

                    targetList.push_back(ref->GetVictim());
                }
            }
            else
            {
                Unit* currentVictim = mgr.GetCurrentVictim();
                if (currentVictim)
                    targetList.push_back(currentVictim);

                for (ThreatReference const* ref : mgr.GetSortedThreatList())
                {
                    if (ref->IsOffline())
                        continue;

                    Unit* thisTarget = ref->GetVictim();
                    if (thisTarget != currentVictim)
                        targetList.push_back(thisTarget);
                }
            }

            // shortcut: the list isn't gonna get any larger
            if (targetList.size() <= offset)
            {
                targetList.clear();
                return;
            }

            // right now, list is unsorted for DISTANCE types - re-sort by MAXDISTANCE
            if (targetType == SELECT_TARGET_MAXDISTANCE || targetType == SELECT_TARGET_MINDISTANCE)
                SortByDistance(targetList, targetType == SELECT_TARGET_MINDISTANCE);

            // now the list is MAX sorted, reverse for MIN types
            if (targetType == SELECT_TARGET_MINTHREAT)
                targetList.reverse();

            // ignore the first <offset> elements
            while (offset)
            {
                targetList.pop_front();
                --offset;
            }

            // then finally filter by predicate
            targetList.remove_if([&predicate](Unit* target) { return !predicate(target); });

            if (targetList.size() <= num)
                return;

            if (targetType == SELECT_TARGET_RANDOM)
                Trinity::Containers::RandomResize(targetList, num);
            else
                targetList.resize(num);
        }

        // Called when the unit enters combat
        // (NOTE: Creature engage logic should NOT be here, but in JustEngagedWith, which happens once threat is established!)
        virtual void JustEnteredCombat(Unit* /*who*/) { }

        // Called when the unit leaves combat
        virtual void JustExitedCombat() { }

        // Called when the unit is about to be removed from the world (despawn, grid unload, corpse disappearing, player logging out etc.)
        virtual void LeavingWorld() { }

        // Called at any Damage to any victim (before damage apply)
        virtual void DamageDealt(Unit* /*victim*/, uint32& /*damage*/, DamageEffectType /*damageType*/) { }

        // Called at any Damage from any attacker (before damage apply)
        // Note: it for recalculation damage or special reaction at damage
        virtual void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) { }

        // Called when the creature receives heal
        virtual void HealReceived(Unit* /*done_by*/, uint32& /*addhealth*/) { }

        // Called when the unit heals
        virtual void HealDone(Unit* /*done_to*/, uint32& /*addhealth*/) { }

        /// Called when a spell is interrupted by Spell::EffectInterruptCast
        /// Use to reschedule next planned cast of spell.
        virtual void SpellInterrupted(uint32 /*spellId*/, uint32 /*unTimeMs*/) { }

        void AttackStartCaster(Unit* victim, float dist);

        SpellCastResult DoCast(uint32 spellId);
        SpellCastResult DoCast(Unit* victim, uint32 spellId, CastSpellExtraArgs const& args = {});
        SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const& args = {}) { return DoCast(me, spellId, args); }
        SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const& args = {});
        SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const& args = {}) { return DoCast(nullptr, spellId, args); }

        float DoGetSpellMaxRange(uint32 spellId, bool positive = false);

        virtual bool ShouldSparWith(Unit const* /*target*/) const { return false; }

        void DoMeleeAttackIfReady();
        bool DoSpellAttackIfReady(uint32 spell);

        static AISpellInfoType* AISpellInfo;
        static void FillAISpellInfo();

        // Called when a game event starts or ends
        virtual void OnGameEvent(bool /*start*/, uint16 /*eventId*/) { }

        virtual std::string GetDebugInfo() const;

    private:
        UnitAI(UnitAI const& right) = delete;
        UnitAI& operator=(UnitAI const& right) = delete;

        ThreatManager& GetThreatManager();
        void SortByDistance(std::list<Unit*> list, bool ascending = true);
};

#endif


잘못 적힌 변수 이름 수정


TeamCity Bvcms / Build [Build 1645](https://builds.tpsdb.com/viewLog.html?buildId=7585&buildTypeId=Bvcms_Build) outcome was **SUCCESS**
Summary: Tests passed: 62 Build time: 00:17:42


TeamCity Bvcms / Build [Build 1646](https://builds.tpsdb.com/viewLog.html?buildId=7588&buildTypeId=Bvcms_Build) is now running


Successfully aliased the URL <https://mvl-jz3b53kem.now.sh> to the following aliases:

* https://mvl.mcewan.io
* https://mvl.mce.now.sh
* https://mvl-git-master.mce.now.sh