Example #1
0
 public override void castWhenNear(Camp camp)
 {
     if (Q.IsReady() && camp.campPosition.Distance(player.Position, true) < 1200*1200)
     {
         Q.Cast();
     }
 }
Example #2
0
        public override float getDPS(Camp camp)
        {
            float dps      = 0;
            var   qDmg     = (getSpellDmgRaw(SpellSlot.Q) + 50 + 25 * Q.Level);
            var   tillNext = Qdata.Cooldown / (1 + 0.5f * player.AttackSpeedMod);

            //  Console.WriteLine("tillNext: " + Qdata.Cooldown);
            dps   += qDmg / tillNext;
            dps   += ((player.BaseAttackDamage + player.FlatPhysicalDamageMod) / (1.1f / player.AttackDelay));
            dpsFix = dps;
            return(dps);
        }
Example #3
0
        public static bool isInBuffWay(Camp camp)
        {
            Camp bestBuff = getBestBuffCamp();

            if (bestBuff == null)
            {
                return(false);
            }
            float distTobuff     = bestBuff.campPosition.Distance(HypaJungle.player.Position, true);
            float distToCamp     = camp.campPosition.Distance(HypaJungle.player.Position, true);
            float distCampToBuff = camp.campPosition.Distance(bestBuff.campPosition, true);

            if (distTobuff > distToCamp + 800 && distTobuff > distCampToBuff)
            {
                return(true);
            }
            return(false);
        }
Example #4
0
 public abstract float getTimeToDoDmgAoe(Camp.JungleMinion camp, float damageToDo, float cdResetTime);
Example #5
0
 //  public abstract float getDmgDoneInTime(Camp.JungleMinion camp, float time, float cdResetTime);
 public abstract float getAoeDmgDoneInTime(Camp.JungleMinion camp, float time, float cdResetTime);
Example #6
0
        public static void updateJungleCleaner()
        {
            if (player.IsDead)
            {
                jcState = JungleCleanState.RecallForHeal;
                //Console.WriteLine("RecallForHeal");
                return;
            }

            if (jcState == JungleCleanState.SearchingBestCamp)
            {
                focusedCamp = getBestCampToGo();
                if (focusedCamp != null)
                {
                    if (focusedCamp.priority >= 20)
                    {
                        GamePacket gPacketT;
                        gPacketT = Packet.S2C.Ping.Encoded(new Packet.S2C.Ping.Struct(player.Position[0], player.Position[1], 0, 0, Packet.PingType.Normal));
                        gPacketT.Process();

                        gPacketT = Packet.S2C.Ping.Encoded(new Packet.S2C.Ping.Struct(player.Position[0], player.Position[1], 0, 0, Packet.PingType.Fallback));
                        gPacketT.Process();
                    }

                    Console.WriteLine("New camp found " + focusedCamp);
                    Console.WriteLine("Time to finish camp " + focusedCamp.timeToKill);
                    Console.WriteLine("HP left after camp " + focusedCamp.hpLeftAfterFight);
                    Console.WriteLine("Camp level " + focusedCamp.level);
                    //puss out or kill?
                    if ((focusedCamp.willKillMe || (focusedCamp.priority > 25 && player.Health / player.MaxHealth < 0.85f)))
                    {
                        Console.WriteLine("gona diee");
                        jcState = JungleCleanState.RecallForHeal;
                    }
                    else
                    {
                        jcState = JungleCleanState.RunningToCamp;
                        Console.WriteLine("RunningToCamp");
                    }
                }
                else
                {
                    jcState = JungleCleanState.RecallForHeal;
                    Console.WriteLine("RecallForHeal");
                }
            }

            if (jcState == JungleCleanState.RunningToCamp)
            {
                if (focusedCamp.State != Camp.JungleCampState.Dead && focusedCamp.side != GameObjectTeam.Neutral)
                {
                    jungler.castWhenNear(focusedCamp);
                }
                jungler.checkItems();
                logicRunToCamp();
            }

            if (jcState == JungleCleanState.RunningToCamp && jungler.canMove() && (HypaJungle.player.Position.Distance(focusedCamp.campPosition) < 200 || isCampVisible()))
            {
                jcState = JungleCleanState.WaitingMinions;
                Console.WriteLine("WaitingMinions");
            }

            if (jcState == JungleCleanState.WaitingMinions)
            {
                doWhileIdling();
            }

            if (jcState == JungleCleanState.WaitingMinions && (isCampVisible()))
            {
                jcState = JungleCleanState.AttackingMinions;
                Console.WriteLine("AttackingMinions");
            }

            if (jcState == JungleCleanState.AttackingMinions)
            {
                attackCampMinions();
                if (focusedCamp.inAARangeMinCount() == 0 && !player.IsMelee())
                {
                    player.IssueOrder(GameObjectOrder.MoveTo, focusedCamp.campPosition);
                }
            }

            if (jcState == JungleCleanState.AttackingMinions && isCampFinished())
            {
                if (HypaJungle.Config.Item("autoBuy").GetValue <bool>())
                {
                    jcState = JungleCleanState.GoingToShop;
                    Console.WriteLine("GoingToShop");
                }
                else
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }
            }

            if (jcState == JungleCleanState.ThinkAfterFinishCamp)
            {
                jcState = JungleCleanState.SearchingBestCamp;
                Console.WriteLine("SearchingBestCamp");
            }

            if (jcState == JungleCleanState.RecallForHeal)
            {
                if (jungler.recall.IsReady() && !player.IsChanneling && !jungler.inSpwan() && !recalCasted)
                {
                    jungler.recall.Cast();
                    recalCasted = true;
                }

                if (jungler.inSpwan())
                {
                    if (HypaJungle.Config.Item("autoBuy").GetValue <bool>())
                    {
                        jcState = JungleCleanState.GoingToShop;
                    }
                    else
                    {
                        if (jungler.inSpwan() && player.Health > player.MaxHealth * 0.7f &&
                            (!jungler.gotMana || player.Mana > player.MaxMana * 0.7f))
                        {
                            jcState = JungleCleanState.SearchingBestCamp;
                            Console.WriteLine("SearchingBestCamp");
                        }
                    }
                }
            }

            if (jcState == JungleCleanState.GoingToShop)
            {
                if (!HypaJungle.Config.Item("autoBuy").GetValue <bool>())
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }

                if (jungler.inSpwan())
                {
                    jungler.getItemPassiveBoostDps();
                    jungler.setupSmite();
                }

                if (jungler.inSpwan() && player.IsChanneling)
                {
                    Vector3 stopRecPos = new Vector3(6, 30, 2);
                    player.IssueOrder(GameObjectOrder.MoveTo, player.Position + stopRecPos);
                }

                if (jungler.nextItem != null && player.GoldCurrent - 12 >= jungler.nextItem.goldReach)
                {
                    if (jungler.recall.IsReady() && !player.IsChanneling && !jungler.inSpwan() && !recalCasted)
                    {
                        jungler.recall.Cast();
                        recalCasted = true;
                    }
                }
                else
                {
                    if (jungler.inSpwan() && player.Health > player.MaxHealth * 0.8f &&
                        (!jungler.gotMana || player.Mana > player.MaxMana * 0.8f) && (jungler.nextItem == null || player.GoldCurrent + 40 <= jungler.nextItem.goldReach))
                    {
                        jcState = JungleCleanState.SearchingBestCamp;
                        Console.WriteLine("SearchingBestCamp");
                    }
                    if (!player.IsChanneling && !jungler.inSpwan())
                    {
                        jcState = JungleCleanState.SearchingBestCamp;
                        Console.WriteLine("SearchingBestCamp");
                    }
                }
            }
            else if (jcState != JungleCleanState.RecallForHeal && jcState != JungleCleanState.GoingToShop)
            {
                recalCasted = false;
            }

            if (jcState == JungleCleanState.GoingToShop && jungler.inSpwan())
            {
                if (jungler.nextItem != null && player.GoldCurrent >= jungler.nextItem.goldReach)
                {
                    jungler.buyItems();
                }
                if (player.Health > player.MaxHealth * 0.75f && player.Mana > player.MaxMana * 0.75f)
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }
            }
        }
Example #7
0
        public static int getPriorityNumber(Camp camp)
        {
            if (camp.isDrag && !canDoDragon())
            {
                return(999);
            }

            if (!(canDoDragon() && camp.isDrag))
            {
                if (((camp.side != HypaJungle.player.Team)) && !HypaJungle.Config.Item("enemyJung").GetValue <bool>())
                {
                    return(999);
                }

                if (camp.side == GameObjectTeam.Neutral && !HypaJungle.Config.Item("doCrabs").GetValue <bool>())
                {
                    return(999);
                }
            }



            int priority = 0;

            var timeToCamp = camp.timeToCamp;
            var spawnTime  = (Game.Time < camp.SpawnTime.TotalSeconds) ? camp.SpawnTime.TotalSeconds : camp.RespawnTimer.TotalSeconds;

            float revOn         = camp.ClearTick + (float)spawnTime;
            float timeTillSpawn = (camp.State == Camp.JungleCampState.Dead)?((revOn - Game.Time > 0) ? (revOn - Game.Time) : 0):0;

            camp.willKillMe = false;
            if (camp.willKillMe && HypaJungle.Config.Item("checkKillability").GetValue <bool>())
            {
                priority += 777;
            }

            //Console.WriteLine("emm time?? " + camp.distToCamp/player.MoveSpeed);

            if (camp.isBuff)
            {
                priority -= jungler.buffPriority;
            }

            // priority -= camp.bonusPrio;
            priority += (int)(camp.distToCamp / player.MoveSpeed);
            priority += (int)timeTillSpawn;
            //Console.WriteLine(timeTillSpawn +" wadawdawd");
            // priority -= (camp.isBuff) ? jungler.buffPriority : 0;
            //priority -= (int)(timeTillSpawn - timeToCamp);
            //alive on come is better ;)
            //Priority focus!!
            if (player.Level <= 3)
            {
                priority -= camp.bonusPrioLowLvl;
            }
            else
            {
                priority -= camp.bonusPrio;
            }


            //if(!camp.isBuff)
            //  priority -= (isInBuffWay(camp)) ? 10 : 0;

            return(priority);
        }
Example #8
0
        /*  private void Fight(Camp campFighting)
         * {
         *    Camp.JungleMinion minHpMin = campFighting.Minions.OrderBy(cp => cp.UpdatedStats.health).First();
         *    Camp.JungleMinion maxHpMin = campFighting.Minions.OrderByDescending(cp => cp.UpdatedStats.health).First();
         *
         *    Console.WriteLine("Minion count: " + maxHpMin.UpdatedStats.health);
         *
         *    float heroAoeDps = heroFigher.getSkillAoePerSec();
         *    float heroDps = heroFigher.getDPS(campFighting);
         *
         *    Console.WriteLine("Hero dps:" + heroDps);
         *
         *    float timeToKIllMin = heroFigher.getTimeToDoDmgAoe(minHpMin, minHpMin.UpdatedStats.health, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);
         *    float timeToKIllMax = heroFigher.getTimeToDoDmg(maxHpMin, maxHpMin.UpdatedStats.health, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);
         *
         *    float fullCampDps = campFighting.Minions.Sum(min => min.getDps());
         *
         *    float fullDmgDoneToMe = 0;
         *
         *    float timeToFinish = 0;
         *
         *    //Much aoe
         *    if (timeToKIllMin < timeToKIllMax)
         *    {
         *        Console.WriteLine("Aeo better");
         *        fullDmgDoneToMe += timeToKIllMin*fullCampDps;
         *        float restTimeToKill = timeToKIllMax - timeToKIllMin;
         *        fullDmgDoneToMe += restTimeToKill * maxHpMin.getDps() * heroFigher.getKrugBuffDmgRemove(campFighting.timeToCamp, timeToKIllMax);
         *        timeToFinish += timeToKIllMin+restTimeToKill;
         *    }
         *    else
         *    {
         *        Console.WriteLine("Single dps better: " + maxHpMin.UpdatedStats.health);
         *        fullDmgDoneToMe += timeToKIllMax * fullCampDps;
         *        float dmgDoneAor = timeToKIllMax*heroAoeDps;
         *        float leftMin = campFighting.Minions.Count - 1;
         *        float leftMinHp = leftMin * (minHpMin.UpdatedStats.health - dmgDoneAor);
         *
         *        float tmeToFinish = leftMinHp/(heroAoeDps + heroDps);
         *        timeToFinish = tmeToFinish + timeToKIllMax;
         *        fullDmgDoneToMe += minHpMin.getDps()*2;
         *    }
         *
         *    Console.WriteLine("TimeTOfinish: " + timeToFinish);
         *    float myHpTillThere = heroFigher.getFulHeal((campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3, timeToFinish) + Jungler.player.Health;
         *
         *    float relDmgToMe = heroFigher.realPhysDmgDoneToMe(fullDmgDoneToMe);
         *
         *    Console.WriteLine("HpLeft: " + (myHpTillThere-relDmgToMe));
         *
         * }*/

        public bool AroundFight(Camp campFighting, bool smite = false, bool aoeSmite = false, bool smiteIfNeedTo = false)
        {
            Camp.JungleMinion minHpMin = campFighting.Minions.OrderBy(cp => cp.UpdatedStats.health).First();
            Camp.JungleMinion maxHpMin = campFighting.Minions.OrderByDescending(cp => cp.UpdatedStats.health).First();
            smite = getSmiteCd(campFighting.timeToCamp) == 0 && smite;
            // Console.WriteLine("Smite: " + smite + " dmg: " + heroFigher.getSmiteDmg());
            float maxMinHp = maxHpMin.UpdatedStats.health - ((smite) ? (heroFigher.getSmiteDmg() / 2) : 0);;
            float minMinHp = minHpMin.UpdatedStats.health - ((smite && aoeSmite)?(heroFigher.getSmiteDmg() / 2):0);

            //Console.WriteLine("Fighting: " + campFighting.ToString());

            float timeToKillMin = heroFigher.getTimeToDoDmgAoe(minHpMin, minMinHp, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);
            float timeToKillMax = heroFigher.getTimeToDoDmg(maxHpMin, maxMinHp, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);

            float fullCampDps = campFighting.Minions.Sum(min => min.getDps());

            float fullDmgDoneToMe = 0;

            float timeToKillCamp = 0;

            // Console.WriteLine("timeToKillMin " + timeToKillMin);
            //Console.WriteLine("timeToKillMax " + timeToKillMax);


            if (campFighting.aliveMinCount() == 1)
            {
                timeToKillCamp  = timeToKillMax;
                fullDmgDoneToMe = maxHpMin.getDps() *
                                  heroFigher.getKrugBuffDmgRemove(campFighting.timeToCamp, timeToKillMax);
            }
            else
            {
                //Good aoe
                if (timeToKillMin < timeToKillMax)
                {
                    // Console.WriteLine("Aeo better: " + timeToKillMin);
                    float restTimeToKill = timeToKillMax - timeToKillMin;
                    fullDmgDoneToMe += fullCampDps * timeToKillMin;

                    fullDmgDoneToMe += restTimeToKill * maxHpMin.getDps() * heroFigher.getKrugBuffDmgRemove(campFighting.timeToCamp, timeToKillMax);
                    timeToKillCamp   = restTimeToKill + timeToKillMin;
                }
                else
                {
                    fullDmgDoneToMe += timeToKillMax * fullCampDps;
                    float dmgDoneAor = heroFigher.getAoeDmgDoneInTime(minHpMin, timeToKillMax, campFighting.timeToCamp) + heroFigher.getFrogBuffAoe(campFighting.timeToCamp, timeToKillMin - timeToKillMax);
                    float leftMin    = campFighting.Minions.Count - 1;
                    float leftMinHp  = leftMin * (minMinHp - dmgDoneAor);

                    float tmeToFinish = heroFigher.getTimeToDoDmg(minHpMin, leftMinHp, 6);
                    timeToKillCamp   = tmeToFinish + timeToKillMax;
                    fullDmgDoneToMe += minHpMin.getDps() * tmeToFinish;
                }
            }
            // Console.WriteLine("TimeTOfinish: " + timeToKillCamp);
            float myHpTillThere = heroFigher.getFulHeal((campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3, timeToKillCamp);

            float relDmgToMe = heroFigher.realPhysDmgDoneToMe(fullDmgDoneToMe);

            // Console.WriteLine("HpLeft: " + (myHpTillThere + Jungler.player.Health - relDmgToMe) + " will heal:" + myHpTillThere);

            hpLeftAfter = (myHpTillThere + Jungler.player.Health - relDmgToMe);
            timeToKill  = timeToKillCamp;

            if (smiteIfNeedTo && hpLeftAfter <= 100 && getSmiteCd(campFighting.timeToCamp) == 0)
            {
                AroundFight(campFighting, true, aoeSmite);
                campFighting.forceSmite = true;
                //  Console.WriteLine("force smite!!!!");
            }
            //Update camp
            campFighting.willKillMe       = hpLeftAfter < 250;
            campFighting.hpLeftAfterFight = hpLeftAfter;
            campFighting.timeToKill       = timeToKill;

            return(hpLeftAfter > 250);
        }
Example #9
0
        public override float getTimeToDoDmg(Camp.JungleMinion camp, float damageToDo, float cdResetTime)
        {
            float damage = 0;
            //Qdmg can deal
            var qDmg = camp.UpdatedStats.physicGoesThrough * (getSpellDmgRaw(SpellSlot.Q));
            var tillNext = ((Qdata.Cooldown == 0) ? 10 : Qdata.Cooldown);
            var qDps = qDmg / tillNext;
            // Console.WriteLine(qDmg);

            float aaDps = camp.UpdatedStats.physicGoesThrough * (player.BaseAttackDamage + player.FlatPhysicalDamageMod) * getAAperSecond();
            float timeSkip = 0;
            if (Q.IsReady((int)(cdResetTime * 1000)))
            {
                damage += qDmg;
                timeSkip += tillNext;
            }

            damage += (player.BaseAttackDamage + player.FlatPhysicalDamageMod);
            if (damage >= damageToDo)
                return 1;

            float time = (damageToDo - damage) / (aaDps + getItemPassiveBoostDps());

            float timeWithRed = (damageToDo - damage + timeSkip * qDps) /
                                (aaDps + qDps + getItemPassiveBoostDps() + getRedBuffDmg(cdResetTime, time));

            return timeWithRed;
        }
Example #10
0
        public override float getTimeToDoDmgAoe(Camp.JungleMinion camp, float damageToDo, float cdResetTime)
        {
            //    Console.WriteLine("AS: " + player.AttackSpeedMod + " asbase " + player.AttackDelay);
            //Qdmg can deal
            var qDmg = camp.UpdatedStats.physicGoesThrough * (getSpellDmgRaw(SpellSlot.E));
            //  Console.WriteLine("Qdmg: " + qDmg + " raw: " + getSpellDmgRaw(SpellSlot.Q));
            var tillNext = ((Edata.Cooldown == 0) ? 18 : Edata.Cooldown);
            // Console.WriteLine("Å–eal q cd: " + tillNext);

            var castTimes = 0;
            var cdLeft = (Edata.CooldownExpires - Game.Time - cdResetTime > 0) ? Edata.CooldownExpires - Game.Time - cdResetTime : 0;
            int aproxCastTimes = (int)(damageToDo / (qDmg));
            float aproxTime = aproxCastTimes * tillNext;
            //GotNoFrogBuff
            if (timeTillFrogBuffEnd() <= cdResetTime || timeTillFrogBuffEnd() == 0 || aproxCastTimes == 0)
            {
                // Console.WriteLine("aaprox: " + Qdata.Cooldown);
                return aproxTime * aproxCastTimes + cdLeft;
            }
            float buffDmg = getFrogBuffAoe(cdResetTime, aproxTime);
            float buffQdmg = (qDmg + tillNext * buffDmg);

            //With frog
            castTimes = (int)((damageToDo - cdLeft * buffDmg) / (buffQdmg));
            float bonusTime = 0;
            bonusTime += ((damageToDo - cdLeft * buffDmg) + tillNext * buffDmg - (castTimes) * buffQdmg) / buffDmg;
            return castTimes * tillNext + cdLeft + bonusTime;
        }
Example #11
0
        public override float getAoeDmgDoneInTime(Camp.JungleMinion camp, float time, float cdResetTime)
        {
            float damage = 0;

            //Qdmg can deal
            var qDmg = camp.UpdatedStats.physicGoesThrough * (getSpellDmgRaw(SpellSlot.E));
            var tillNext = ((Edata.Cooldown == 0) ? 18 : Edata.Cooldown);
            if (E.IsReady((int)(cdResetTime * 1000)))
            {
                damage += qDmg;
            }
            int qCastsMore = (int)(time / tillNext);
            damage += qDmg * qCastsMore;

            return damage;
        }
Example #12
0
        public override float getAoeDmgDoneInTime(Camp.JungleMinion camp, float time, float cdResetTime)
        {
            float damage = 0;

            //Qdmg can deal
            var qDmg = camp.UpdatedStats.physicGoesThrough * (getQdmg ()+ 50 + 25 * Q.Level);
            var tillNext = ((Qdata.Cooldown == 0) ? 18 : Qdata.Cooldown) / (1 + getAAperSecond());
            if(Q.IsReady((int)(cdResetTime*1000)))
            {
                damage += qDmg;
            }
            int qCastsMore = (int)(time/tillNext);
            damage += qDmg * qCastsMore;

            return damage;
        }
Example #13
0
        public static void updateJungleCleaner()
        {
            if (player.IsDead)
            {
                jcState = JungleCleanState.RecallForHeal;
                //Console.WriteLine("RecallForHeal");
                return;
            }

            if (jcState == JungleCleanState.SearchingBestCamp)
            {
                focusedCamp = getBestCampToGo();
                if (focusedCamp != null)
                {
                    if (focusedCamp.priority >= 20)
                    {
                        GamePacket gPacketT;
                        gPacketT = Packet.S2C.Ping.Encoded(new Packet.S2C.Ping.Struct(player.Position[0], player.Position[1], 0, 0, Packet.PingType.Normal));
                        gPacketT.Process();

                        gPacketT = Packet.S2C.Ping.Encoded(new Packet.S2C.Ping.Struct(player.Position[0], player.Position[1], 0, 0, Packet.PingType.Fallback));
                        gPacketT.Process();
                    }

                    Console.WriteLine("New camp found "+focusedCamp);
                    Console.WriteLine("Time to finish camp " + focusedCamp.timeToKill);
                    Console.WriteLine("HP left after camp " + focusedCamp.hpLeftAfterFight);
                    Console.WriteLine("Camp level " + focusedCamp.level);
                    //puss out or kill?
                    if ( (focusedCamp.willKillMe  || (focusedCamp.priority>25 && player.Health/player.MaxHealth<0.85f)))
                    {
                        Console.WriteLine("gona diee");
                        jcState = JungleCleanState.RecallForHeal;
                    }
                    else
                    {
                        jcState = JungleCleanState.RunningToCamp;
                        Console.WriteLine("RunningToCamp");
                    }
                }
                else
                {
                    jcState = JungleCleanState.RecallForHeal;
                    Console.WriteLine("RecallForHeal");
                }
            }

            if (jcState == JungleCleanState.RunningToCamp)
            {
                if (focusedCamp.State != Camp.JungleCampState.Dead && focusedCamp.side != GameObjectTeam.Neutral)
                    jungler.castWhenNear(focusedCamp);
                jungler.checkItems();
                logicRunToCamp();
            }

            if (jcState == JungleCleanState.RunningToCamp && jungler.canMove() &&(HypaJungle.player.Position.Distance(focusedCamp.campPosition) < 200 || isCampVisible()))
            {
                jcState = JungleCleanState.WaitingMinions;
                Console.WriteLine("WaitingMinions");
            }

            if (jcState == JungleCleanState.WaitingMinions)
            {
                doWhileIdling();
            }

            if (jcState == JungleCleanState.WaitingMinions && (isCampVisible()))
            {
                jcState = JungleCleanState.AttackingMinions;
                Console.WriteLine("AttackingMinions");
            }

            if (jcState == JungleCleanState.AttackingMinions)
            {
                attackCampMinions();
                if (focusedCamp.inAARangeMinCount() == 0 && !player.IsMelee())
                    player.IssueOrder(GameObjectOrder.MoveTo, focusedCamp.campPosition);
            }

            if (jcState == JungleCleanState.AttackingMinions && isCampFinished())
            {
                if (HypaJungle.Config.Item("autoBuy").GetValue<bool>())
                {
                    jcState = JungleCleanState.GoingToShop;
                    Console.WriteLine("GoingToShop");
                }
                else
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }
            }

            if (jcState == JungleCleanState.ThinkAfterFinishCamp)
            {
                jcState = JungleCleanState.SearchingBestCamp;
                Console.WriteLine("SearchingBestCamp");

            }

            if (jcState == JungleCleanState.RecallForHeal)
            {
                if (jungler.recall.IsReady() && !player.IsChanneling && !jungler.inSpwan() && !recalCasted)
                {
                    jungler.recall.Cast();
                    recalCasted = true;
                }

                if (jungler.inSpwan())
                {
                    if (HypaJungle.Config.Item("autoBuy").GetValue<bool>())
                    {
                        jcState = JungleCleanState.GoingToShop;
                    }
                    else
                    {
                        if (jungler.inSpwan() && player.Health > player.MaxHealth*0.7f &&
                            (!jungler.gotMana || player.Mana > player.MaxMana*0.7f))
                        {
                            jcState = JungleCleanState.SearchingBestCamp;
                            Console.WriteLine("SearchingBestCamp");
                        }
                    }
                }

            }

            if (jcState == JungleCleanState.GoingToShop)
            {
                if (!HypaJungle.Config.Item("autoBuy").GetValue<bool>())
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }

                if (jungler.inSpwan())
                {
                    jungler.getItemPassiveBoostDps();
                    jungler.setupSmite();
                }

                if (jungler.inSpwan() && player.IsChanneling)
                {
                    Vector3 stopRecPos = new Vector3(6, 30, 2);
                    player.IssueOrder(GameObjectOrder.MoveTo, player.Position + stopRecPos);
                }

                if (jungler.nextItem != null && player.GoldCurrent-12 >= jungler.nextItem.goldReach)
                {
                    if (jungler.recall.IsReady() && !player.IsChanneling && !jungler.inSpwan() && !recalCasted)
                    {
                        jungler.recall.Cast();
                        recalCasted = true;
                    }
                }
                else
                {
                    if (jungler.inSpwan() && player.Health > player.MaxHealth*0.8f &&
                        (!jungler.gotMana || player.Mana > player.MaxMana * 0.8f) && (jungler.nextItem == null || player.GoldCurrent+40 <= jungler.nextItem.goldReach))
                    {
                        jcState = JungleCleanState.SearchingBestCamp;
                        Console.WriteLine("SearchingBestCamp");
                    }
                    if (!player.IsChanneling && !jungler.inSpwan())
                    {
                        jcState = JungleCleanState.SearchingBestCamp;
                        Console.WriteLine("SearchingBestCamp");
                    }

                }
            }
            else if (jcState != JungleCleanState.RecallForHeal && jcState != JungleCleanState.GoingToShop)
            {
                recalCasted = false;
            }

            if (jcState == JungleCleanState.GoingToShop && jungler.inSpwan())
            {
                if (jungler.nextItem != null && player.GoldCurrent >= jungler.nextItem.goldReach )
                    jungler.buyItems();
                if (player.Health > player.MaxHealth*0.75f && player.Mana > player.MaxMana*0.75f)
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }
            }
        }
Example #14
0
 public static bool isInBuffWay(Camp camp)
 {
     Camp bestBuff = getBestBuffCamp();
     if (bestBuff == null)
         return false;
     float distTobuff = bestBuff.campPosition.Distance(HypaJungle.player.Position,true);
     float distToCamp = camp.campPosition.Distance(HypaJungle.player.Position, true);
     float distCampToBuff = camp.campPosition.Distance(bestBuff.campPosition, true);
     if (distTobuff > distToCamp + 800 && distTobuff > distCampToBuff)
         return true;
     return false;
 }
Example #15
0
        public static int getPriorityNumber(Camp camp)
        {
            if (camp.isDrag && !canDoDragon())
                return 999;

            if (!(canDoDragon() && camp.isDrag))
            {
                if (((camp.side != HypaJungle.player.Team)) && !HypaJungle.Config.Item("enemyJung").GetValue<bool>())
                    return 999;

                if (camp.side == GameObjectTeam.Neutral && !HypaJungle.Config.Item("doCrabs").GetValue<bool>())
                    return 999;
            }

            int priority = 0;

            var timeToCamp = camp.timeToCamp;
            var spawnTime = (Game.Time < camp.SpawnTime.TotalSeconds) ? camp.SpawnTime.TotalSeconds : camp.RespawnTimer.TotalSeconds;

            float revOn = camp.ClearTick + (float)spawnTime;
            float timeTillSpawn = (camp.State == Camp.JungleCampState.Dead)?((revOn - Game.Time > 0) ? (revOn - Game.Time) : 0):0;

            camp.willKillMe = false;
            if (camp.willKillMe && HypaJungle.Config.Item("checkKillability").GetValue<bool>())
            {
                priority += 777;
            }

            //Console.WriteLine("emm time?? " + camp.distToCamp/player.MoveSpeed);

            if (camp.isBuff)
                priority -= jungler.buffPriority;

               // priority -= camp.bonusPrio;
            priority += (int)(camp.distToCamp / player.MoveSpeed);
            priority += (int) timeTillSpawn;
            //Console.WriteLine(timeTillSpawn +" wadawdawd");
               // priority -= (camp.isBuff) ? jungler.buffPriority : 0;
            //priority -= (int)(timeTillSpawn - timeToCamp);
            //alive on come is better ;)
            //Priority focus!!
            if (player.Level <= 3)
            {
                priority -= camp.bonusPrioLowLvl;
            }
            else
            {

                priority -= camp.bonusPrio;
            }

            //if(!camp.isBuff)
              //  priority -= (isInBuffWay(camp)) ? 10 : 0;

            return priority;
        }
Example #16
0
        public void startAttack(Camp.JungleMinion minion, bool smite)
        {
            usePots();
            getDPS(minion.unit);

            if (minion == null || !minion.unit.IsValid || !minion.unit.IsVisible)
                return;
            if ((smite ||player.Health/player.MaxHealth<0.14f) && minion.smiteBuff != Camp.JungleMinion.SmiteBuff.None)
            {
                if (HypaJungle.Config.Item("smiteToKill").GetValue<bool>())
                {
                    if (player.GetSummonerSpellDamage(minion.unit, Damage.SummonerSpell.Smite) >= minion.unit.Health)
                        doSmite(minion.unit);
                }
                else
                {
                    //if (minion.Health / getDPS(minion) > ((!HypaJungle.jTimer.jungleCamps.Where(cp => cp.isBuff).Any()) ? 8 : 5) * (player.Health / player.MaxHealth) || (JungleClearer.focusedCamp.isBuff && minion.MaxHealth >= 1400))
                    if(minion.unit.Health>getSmiteDmg()*0.70f)
                        doSmite(minion.unit);
                }
            }
            attackMinion(minion.unit,smite);
        }
Example #17
0
 public override float getAoeDmgDoneInTime(Camp.JungleMinion camp, float time, float cdResetTime)
 {
     return 0.1f;
 }
Example #18
0
 public override void castWhenNear(Camp camp)
 {
     if (Q.IsReady() && player.Distance(camp.campPosition) < Q.Range)
         Q.Cast(camp.campPosition);
 }
Example #19
0
 public override float getTimeToDoDmgAoe(Camp.JungleMinion camp, float damageToDo, float cdResetTime)
 {
     var bufDmg = getFrogBuffAoe(cdResetTime, 1);
     if (bufDmg == 0)
         return 0.1f;
     return damageToDo / bufDmg;
 }
Example #20
0
 public override void castWhenNear(Camp camp)
 {
 }
Example #21
0
        public static void updateJungleCleaner()
        {
            if (player.IsDead)
            {
                jcState = JungleCleanState.RecallForHeal;
                Console.WriteLine("RecallForHeal");
                return;
            }

            if (jcState == JungleCleanState.SearchingBestCamp)
            {
                focusedCamp = getBestCampToGo();
                if (focusedCamp != null)
                {
                    //puss out or kill?
                    if ((focusedCamp.willKillMe || (focusedCamp.priority > 25 && player.Health / player.MaxHealth < 0.85f)))
                    {
                        Console.WriteLine("gona diee");
                        jcState = JungleCleanState.RecallForHeal;
                    }
                    else
                    {
                        jcState = JungleCleanState.RunningToCamp;
                        Console.WriteLine("RunningToCamp");
                    }
                }
                else
                {
                    jcState = JungleCleanState.RecallForHeal;
                    Console.WriteLine("RecallForHeal");
                }
            }

            if (jcState == JungleCleanState.RunningToCamp)
            {
                if (focusedCamp.State != Camp.JungleCampState.Dead && focusedCamp.side != GameObjectTeam.Neutral)
                {
                    jungler.castWhenNear(focusedCamp);
                }
                jungler.checkItems();
                logicRunToCamp();
            }

            if (jcState == JungleCleanState.RunningToCamp && jungler.canMove() && (HypaJungle.player.Position.Distance(focusedCamp.campPosition) < 200 || isCampVisible()))
            {
                jcState = JungleCleanState.WaitingMinions;
                Console.WriteLine("WaitingMinions");
            }

            if (jcState == JungleCleanState.WaitingMinions)
            {
                doWhileIdling();
            }

            if (jcState == JungleCleanState.WaitingMinions && (isCampVisible()))
            {
                jcState = JungleCleanState.AttackingMinions;
                Console.WriteLine("AttackingMinions");
            }

            if (jcState == JungleCleanState.AttackingMinions)
            {
                attackCampMinions();
            }

            if (jcState == JungleCleanState.AttackingMinions && isCampFinished())
            {
                if (HypaJungle.Config.Item("autoBuy").GetValue <bool>())
                {
                    jcState = JungleCleanState.GoingToShop;
                    Console.WriteLine("GoingToShop");
                }
                else
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }
            }

            if (jcState == JungleCleanState.ThinkAfterFinishCamp)
            {
                jcState = JungleCleanState.SearchingBestCamp;
                Console.WriteLine("SearchingBestCamp");
            }

            if (jcState == JungleCleanState.RecallForHeal)
            {
                if (jungler.recall.IsReady() && !player.IsChanneling && !jungler.inSpwan() && !recalCasted)
                {
                    jungler.recall.Cast();
                    recalCasted = true;
                }

                if (jungler.inSpwan())
                {
                    if (HypaJungle.Config.Item("autoBuy").GetValue <bool>())
                    {
                        jcState = JungleCleanState.GoingToShop;
                    }
                    else
                    {
                        if (jungler.inSpwan() && player.Health > player.MaxHealth * 0.7f &&
                            (!jungler.gotMana || player.Mana > player.MaxMana * 0.7f))
                        {
                            jcState = JungleCleanState.SearchingBestCamp;
                            Console.WriteLine("SearchingBestCamp");
                        }
                    }
                }
            }

            if (jcState == JungleCleanState.GoingToShop)
            {
                if (!HypaJungle.Config.Item("autoBuy").GetValue <bool>())
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }

                if (jungler.inSpwan())
                {
                    jungler.getItemPassiveBoostDps();
                    jungler.setupSmite();
                }

                if (jungler.inSpwan() && player.IsChanneling)
                {
                    Vector3 stopRecPos = new Vector3(6, 30, 2);
                    player.IssueOrder(GameObjectOrder.MoveTo, player.Position + stopRecPos);
                }

                if (jungler.nextItem != null && player.GoldCurrent >= jungler.nextItem.goldReach && recalCasted)
                {
                    if (jungler.recall.IsReady() && !player.IsChanneling && !jungler.inSpwan() && !recalCasted)
                    {
                        jungler.recall.Cast();
                    }
                }
                else
                {
                    if (jungler.inSpwan() && player.Health > player.MaxHealth * 0.8f &&
                        (!jungler.gotMana || player.Mana > player.MaxMana * 0.8f) && (jungler.nextItem == null))
                    {
                        jcState = JungleCleanState.SearchingBestCamp;
                        Console.WriteLine("SearchingBestCamp");
                    }
                    if (!player.IsChanneling && !jungler.inSpwan())
                    {
                        jcState = JungleCleanState.SearchingBestCamp;
                        Console.WriteLine("SearchingBestCamp");
                    }
                }
            }
            else if (jcState != JungleCleanState.RecallForHeal && jcState != JungleCleanState.GoingToShop)
            {
                recalCasted = false;
            }

            if (jcState == JungleCleanState.GoingToShop && jungler.inSpwan())
            {
                if (jungler.nextItem != null && player.GoldCurrent >= jungler.nextItem.goldReach)
                {
                    jungler.buyItems();
                }
                if (player.Health > player.MaxHealth * 0.75f && player.Mana > player.MaxMana * 0.75f)
                {
                    jcState = JungleCleanState.SearchingBestCamp;
                    Console.WriteLine("SearchingBestCamp");
                }
            }
        }
Example #22
0
 public override void castWhenNear(Camp camp)
 {
 }
Example #23
0
        /*  private void Fight(Camp campFighting)
        {
            Camp.JungleMinion minHpMin = campFighting.Minions.OrderBy(cp => cp.UpdatedStats.health).First();
            Camp.JungleMinion maxHpMin = campFighting.Minions.OrderByDescending(cp => cp.UpdatedStats.health).First();

            Console.WriteLine("Minion count: " + maxHpMin.UpdatedStats.health);

            float heroAoeDps = heroFigher.getSkillAoePerSec();
            float heroDps = heroFigher.getDPS(campFighting);

            Console.WriteLine("Hero dps:" + heroDps);

            float timeToKIllMin = heroFigher.getTimeToDoDmgAoe(minHpMin, minHpMin.UpdatedStats.health, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);
            float timeToKIllMax = heroFigher.getTimeToDoDmg(maxHpMin, maxHpMin.UpdatedStats.health, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);

            float fullCampDps = campFighting.Minions.Sum(min => min.getDps());

            float fullDmgDoneToMe = 0;

            float timeToFinish = 0;

            //Much aoe
            if (timeToKIllMin < timeToKIllMax)
            {
                Console.WriteLine("Aeo better");
                fullDmgDoneToMe += timeToKIllMin*fullCampDps;
                float restTimeToKill = timeToKIllMax - timeToKIllMin;
                fullDmgDoneToMe += restTimeToKill * maxHpMin.getDps() * heroFigher.getKrugBuffDmgRemove(campFighting.timeToCamp, timeToKIllMax);
                timeToFinish += timeToKIllMin+restTimeToKill;
            }
            else
            {
                Console.WriteLine("Single dps better: " + maxHpMin.UpdatedStats.health);
                fullDmgDoneToMe += timeToKIllMax * fullCampDps;
                float dmgDoneAor = timeToKIllMax*heroAoeDps;
                float leftMin = campFighting.Minions.Count - 1;
                float leftMinHp = leftMin * (minHpMin.UpdatedStats.health - dmgDoneAor);

                float tmeToFinish = leftMinHp/(heroAoeDps + heroDps);
                timeToFinish = tmeToFinish + timeToKIllMax;
                fullDmgDoneToMe += minHpMin.getDps()*2;
            }

            Console.WriteLine("TimeTOfinish: " + timeToFinish);
            float myHpTillThere = heroFigher.getFulHeal((campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3, timeToFinish) + Jungler.player.Health;

            float relDmgToMe = heroFigher.realPhysDmgDoneToMe(fullDmgDoneToMe);

            Console.WriteLine("HpLeft: " + (myHpTillThere-relDmgToMe));

        }*/
        public bool AroundFight(Camp campFighting, bool smite=false,bool aoeSmite = false, bool smiteIfNeedTo = false)
        {
            Camp.JungleMinion minHpMin = campFighting.Minions.OrderBy(cp => cp.UpdatedStats.health).First();
            Camp.JungleMinion maxHpMin = campFighting.Minions.OrderByDescending(cp => cp.UpdatedStats.health).First();
            smite = getSmiteCd(campFighting.timeToCamp) == 0 && smite;
               // Console.WriteLine("Smite: " + smite + " dmg: " + heroFigher.getSmiteDmg());
            float maxMinHp = maxHpMin.UpdatedStats.health - ((smite) ? (heroFigher.getSmiteDmg() / 2) : 0); ;
            float minMinHp = minHpMin.UpdatedStats.health - ((smite && aoeSmite)?(heroFigher.getSmiteDmg()/2):0);

            //Console.WriteLine("Fighting: " + campFighting.ToString());

            float timeToKillMin = heroFigher.getTimeToDoDmgAoe(minHpMin, minMinHp, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);
            float timeToKillMax = heroFigher.getTimeToDoDmg(maxHpMin, maxMinHp, (campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3);

            float fullCampDps = campFighting.Minions.Sum(min => min.getDps());

            float fullDmgDoneToMe = 0;

            float timeToKillCamp = 0;

               // Console.WriteLine("timeToKillMin " + timeToKillMin);
            //Console.WriteLine("timeToKillMax " + timeToKillMax);

            if (campFighting.aliveMinCount() == 1)
            {
                timeToKillCamp = timeToKillMax;
                fullDmgDoneToMe = maxHpMin.getDps()*
                                  heroFigher.getKrugBuffDmgRemove(campFighting.timeToCamp, timeToKillMax);
            }
            else
            {
                //Good aoe
                if (timeToKillMin < timeToKillMax)
                {
                   // Console.WriteLine("Aeo better: " + timeToKillMin);
                    float restTimeToKill = timeToKillMax - timeToKillMin;
                    fullDmgDoneToMe += fullCampDps*timeToKillMin;

                    fullDmgDoneToMe += restTimeToKill * maxHpMin.getDps() * heroFigher.getKrugBuffDmgRemove(campFighting.timeToCamp, timeToKillMax);
                    timeToKillCamp = restTimeToKill + timeToKillMin;
                }
                else
                {
                    fullDmgDoneToMe += timeToKillMax * fullCampDps;
                    float dmgDoneAor = heroFigher.getAoeDmgDoneInTime(minHpMin, timeToKillMax, campFighting.timeToCamp) + heroFigher.getFrogBuffAoe(campFighting.timeToCamp, timeToKillMin - timeToKillMax);
                    float leftMin = campFighting.Minions.Count - 1;
                    float leftMinHp = leftMin * (minMinHp - dmgDoneAor);

                    float tmeToFinish = heroFigher.getTimeToDoDmg(minHpMin,leftMinHp,6);
                    timeToKillCamp = tmeToFinish + timeToKillMax;
                    fullDmgDoneToMe += minHpMin.getDps() * tmeToFinish;
                }

            }
               // Console.WriteLine("TimeTOfinish: " + timeToKillCamp);
            float myHpTillThere = heroFigher.getFulHeal((campFighting.timeToCamp - 3) < 0 ? 0 : campFighting.timeToCamp - 3, timeToKillCamp) ;

            float relDmgToMe = heroFigher.realPhysDmgDoneToMe(fullDmgDoneToMe);

               // Console.WriteLine("HpLeft: " + (myHpTillThere + Jungler.player.Health - relDmgToMe) + " will heal:" + myHpTillThere);

            hpLeftAfter = (myHpTillThere + Jungler.player.Health  - relDmgToMe);
            timeToKill = timeToKillCamp;

            if (smiteIfNeedTo && hpLeftAfter <= 100 && getSmiteCd(campFighting.timeToCamp)==0)
            {
                AroundFight(campFighting, true, aoeSmite);
                campFighting.forceSmite = true;
              //  Console.WriteLine("force smite!!!!");
            }
            //Update camp
            campFighting.willKillMe = hpLeftAfter < 250;
            campFighting.hpLeftAfterFight = hpLeftAfter;
            campFighting.timeToKill = timeToKill;

            return hpLeftAfter > 250;
        }
Example #24
0
 public abstract void castWhenNear(Camp camp);
Example #25
0
 public abstract void castWhenNear(Camp camp);
Example #26
0
 public abstract float getDPS(Camp camp);