// Token: 0x0600001D RID: 29 RVA: 0x00003474 File Offset: 0x00001674
        public void CreateCompanion(CharacterObject companionTemplate)
        {
            bool flag = companionTemplate == null;

            if (!flag)
            {
                Settlement settlement3 = (from settlement in Settlement.All
                                          where settlement.Culture == companionTemplate.Culture && settlement.IsTown
                                          select settlement).GetRandomElement <Settlement>();
                List <Settlement> list = new List <Settlement>();
                foreach (Settlement settlement4 in Settlement.All)
                {
                    bool flag2 = settlement4.IsVillage && Campaign.Current.Models.MapDistanceModel.GetDistance(settlement4, settlement3) < 30f;
                    if (flag2)
                    {
                        list.Add(settlement4);
                    }
                }
                settlement3 = ((list.Any <Settlement>() ? list.GetRandomElement <Settlement>().Village.Bound : settlement3) ?? Settlement.All.GetRandomElement <Settlement>());
                Hero hero = HeroCreator.CreateSpecialHero(companionTemplate, settlement3, null, null, Campaign.Current.Models.AgeModel.HeroComesOfAge + 5 + MBRandom.RandomInt(27));
                Campaign.Current.GetCampaignBehavior <IHeroCreationCampaignBehavior>().DeriveSkillsFromTraits(hero, companionTemplate);
                CharacterObject template = hero.Template;
                bool            flag3    = ((template != null) ? template.HeroObject : null) != null && hero.Template.HeroObject.Clan != null && hero.Template.HeroObject.Clan.IsMinorFaction;
                if (flag3)
                {
                    hero.SupporterOf = hero.Template.HeroObject.Clan;
                }
                else
                {
                    hero.SupporterOf = HeroHelper.GetRandomClanForNotable(hero);
                }
                CampaignEventDispatcher.Instance.OnHeroCreated(hero, false);
                this._companions.Add(hero);
            }
        }
Ejemplo n.º 2
0
        public override async Task <TaskRes> Execute(Account acc)
        {
            var wb = acc.Wb.Driver;
            await HeroHelper.NavigateToHeroAttributes(acc);

            //heroRegeneration
            var reviveButton = acc.Wb.Html.GetElementbyId("heroRegeneration");

            if (reviveButton == null)
            {
                acc.Wb.Log("No revive button!");
                return(TaskRes.Executed);
            }
            if (reviveButton.HasClass("green"))
            {
                wb.ExecuteScript("document.getElementById('heroRegeneration').click()"); //revive hero
                return(TaskRes.Executed);
            }
            else
            {
                //no resources?
                this.NextExecute = DateTime.Now.AddMinutes(10);
                return(TaskRes.Executed);
            }
        }
Ejemplo n.º 3
0
        private void recruitAll(MobileParty recruiter, Settlement settlement)
        {
            DefaultPartyWageModel wageModel = new DefaultPartyWageModel();

            foreach (Hero notable in settlement.Notables)
            {
                List <CharacterObject> recruitables = HeroHelper.GetVolunteerTroopsOfHeroForRecruitment(notable);
                for (int recruitableIndex = 0; recruitableIndex < recruitables.Count; recruitableIndex++)
                {
                    CharacterObject recruitable = recruitables[recruitableIndex];
                    if (recruitable != null && hasSufficientRelationsship(notable, recruitableIndex))
                    {
                        int recruitCost = wageModel.GetTroopRecruitmentCost(recruitable, Hero.MainHero);

                        if (recruitCost > recruiter.PartyTradeGold)
                        {
                            continue;
                        }

                        recruiter.MemberRoster.AddToCounts(recruitable, 1);
                        GiveGoldAction.ApplyForPartyToSettlement(recruiter.Party, settlement, recruitCost);
                        for (int i = 0; i < notable.VolunteerTypes.Length; i++)
                        {
                            if (recruitable == notable.VolunteerTypes[i])
                            {
                                notable.VolunteerTypes[i] = null;
                                break;
                            }
                        }
                    }
                }
            }
        }
        private static readonly FieldInfo IsBattleEncounteredField     = AccessTools.Field(HeroBehaviorsStructType, "IsBattleEncountered");     // type: bool

        //static bool Prefix(DynamicBodyCampaignBehavior __instance, ref Dictionary<Hero, object> ____heroBehaviorsDictionary)
        static bool Prefix(DynamicBodyCampaignBehavior __instance)
        {
            IDictionary dictionary = (IDictionary)AccessTools.Field(typeof(DynamicBodyCampaignBehavior), "_heroBehaviorsDictionary").GetValue(__instance);

            foreach (var hero in dictionary.Keys.Cast <Hero>())
            {
                //This is probably invalid because the bandit soldier is not a hero object
                if (hero.IsChild && hero.MapFaction.IsBanditFaction)
                {
                    float banditAge = 21;
                    hero.SetBirthDay(HeroHelper.GetRandomBirthDayForAge((int)banditAge));
                    DynamicBodyProperties banditDynamicBodyProperties = new DynamicBodyProperties(hero.Age, hero.Weight, hero.Build);
                    BodyProperties        banditBodyProperties        = new BodyProperties(banditDynamicBodyProperties, hero.BodyProperties.StaticProperties);
                    hero.CharacterObject.UpdatePlayerCharacterBodyProperties(banditBodyProperties, hero.IsFemale);
                }

                if (!hero.IsChild && (hero.IsHumanPlayerCharacter || hero.IsPlayerCompanion))
                {
                    float heroAge = hero.Age + 0.0119047f;
                    DynamicBodyProperties dynamicBodyProperties = new DynamicBodyProperties(heroAge, hero.Weight, hero.Build);
                    BodyProperties        heroBodyProperties    = new BodyProperties(dynamicBodyProperties, hero.BodyProperties.StaticProperties);
                    hero.CharacterObject.UpdatePlayerCharacterBodyProperties(heroBodyProperties, hero.IsFemale);
                }
            }

            return(false);
        }
Ejemplo n.º 5
0
        public override async Task <TaskRes> Execute(HtmlDocument htmlDoc, ChromeDriver wb, Files.Models.AccModels.Account acc)
        {
            await acc.Wb.Navigate($"{acc.AccInfo.ServerUrl}/hero.php");

            acc.Hero.HeroInfo = HeroParser.GetHeroInfo(htmlDoc);
            var points = acc.Hero.HeroInfo.AvaliblePoints;

            for (int i = 0; i < 4; i++)
            {
                var amount = acc.Hero.Settings.Upgrades[i];
                if (amount == 0)
                {
                    continue;
                }
                var id     = HeroHelper.AttributeDomId(i);
                var script = $"var attribute = document.getElementById('{id}');";
                script += "var upPoint = attribute.getElementsByClassName('pointsValueSetter')[1];";
                script += "upPoint.getElementsByTagName('a')[0].click();";

                for (int j = 0; j < amount; j++)
                {
                    // Execute the script (set point) to add 1 point
                    wb.ExecuteScript(script);
                }
                await Task.Delay(AccountHelper.Delay());
            }

            await Task.Delay(AccountHelper.Delay());

            return(TaskRes.Executed);
        }
Ejemplo n.º 6
0
        private static bool GenerateBasicTroop(Hero notable, int index)
        {
            CultureObject cultureObject = notable.CurrentSettlement != null ? notable.CurrentSettlement.Culture : notable.Clan.Culture;

            // chance = Math.Max(chance, 0);
            // chance = Math.Sqrt(chance);
            if (HeroHelper.HeroShouldGiveEliteTroop(notable))
            {
                double notableMinPowerForNobleRecruit = 200;
                double chance = ((double)notable.Power - notableMinPowerForNobleRecruit) / (SubModule.Settings.notablePowerThresholdForNobleRecruit - notableMinPowerForNobleRecruit);
                if ((double)MBRandom.RandomFloat < chance)
                {
                    notable.VolunteerTypes[index] = cultureObject.EliteBasicTroop;
                    int powerMinus = Math.Min(notable.Power - 1, (int)SubModule.Settings.notableNobleRecruitPowerCost);
                    notable.AddPower(-powerMinus);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                notable.VolunteerTypes[index] = cultureObject.BasicTroop;
            }
            return(true);
        }
Ejemplo n.º 7
0
        public void WeeklyTick()
        {
            if (null != this._sneaker)
            {
                this._alertCoefficientReduceWeek++;
                if (this._alertCoefficientReduceWeek >= AlertReducWeekPeriod)
                {
                    AlertCoefficientReduce();
                    if (this._sneaker.CurrentSettlement != null &&
                        this._sneaker.IsAlive &&
                        !this._sneaker.IsPrisoner &&
                        null == this._sneaker.PartyBelongedTo
                        )
                    {
                        MoveSpecialCharacter(this._sneaker.CharacterObject, this._sneaker.CurrentSettlement);
                    }
                    this._alertCoefficientReduceWeek = 0;
                }

                if (this._sneaker.HeroState == Hero.CharacterStates.NotSpawned)
                {
                    this._sneaker.ChangeState(Hero.CharacterStates.Active);
                }

                if (this._sneaker.Age >= 50)
                {
                    this._sneaker.SetBirthDay(HeroHelper.GetRandomBirthDayForAge((float)22));
                    InformationManager.DisplayMessage(new InformationMessage(this._sneaker.Name.ToString() + "变年轻了", Colors.Blue));
                }
            }
        }
            static bool Prefix(CharacterObject __instance, BodyProperties properties, ref bool isFemale)
            {
                try
                {
                    var piSBP = typeof(Hero).GetProperty("StaticBodyProperties", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);
                    //var piSBB = typeof(Hero).GetProperty("DynamicBodyProperties", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);

                    if (__instance.IsHero)
                    {
                        if (Settings.Instance.DebugMode == true)
                        {
                            InformationManager.DisplayMessage(new InformationMessage("Hero updated: " + __instance.HeroObject.Name, ColorManager.Purple));
                        }
                        //__instance.HeroObject.StaticBodyProperties = __properties.StaticProperties;
                        piSBP.SetValue(__instance.HeroObject, properties.StaticProperties);
                        __instance.HeroObject.DynamicBodyProperties = properties.DynamicProperties;
                        __instance.HeroObject.UpdatePlayerGender(isFemale);

                        if (Settings.Instance.OverrideAge == false)
                        {
                            float age = properties.DynamicProperties.Age;
                            __instance.HeroObject.BirthDay = HeroHelper.GetRandomBirthDayForAge(age);
                        }
                    }
                    return(false);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"An exception occurred whilst trying to apply the changes.\n\nException:\n{ex.Message}\n\n{ex.InnerException?.Message}");
                }
                return(true);
            }
        private static Hero DealNPC(CharacterObject target, CampaignGameStarter campaignGameStarter)
        {
            Hero hero = null;

            if (null != target)
            {
                CharacterObject character = CharacterObject.OneToOneConversationCharacter;
                hero = HeroCreator.CreateSpecialHero(character, null, Clan.PlayerClan, Clan.PlayerClan);
                // hero.StringId = "sms_npc_" + System.Enum.GetName(typeof(Occupation), character.Occupation) + hero.StringId;


                hero.ChangeState(Hero.CharacterStates.Active);
                hero.CacheLastSeenInformation(hero.HomeSettlement, true);
                hero.SyncLastSeenInformation();
                HeroInitPropertyUtils.InitHeroForNPC(hero);


                AddHeroToPartyAction.Apply(hero, MobileParty.MainParty, true);
                CampaignEventDispatcher.Instance.OnHeroCreated(hero, false);
                ConversationUtils.ChangeCurrentCharaObject(campaignGameStarter, hero);

                if (hero.Age > 30)
                {
                    hero.SetBirthDay(HeroHelper.GetRandomBirthDayForAge((float)22));
                }
            }
            return(hero);
        }
Ejemplo n.º 10
0
            public override float GetScoreOfClanToLeaveKingdom(Clan clan, Kingdom kingdom)
            {
                var numClanHeroes = clan.CommanderHeroes.Count;

                if ((kingdom.RulingClan == clan) ||
                    (numClanHeroes == 0))
                {
                    return(-1E+08f);
                }

                // Start with a basis of 0.
                var valueProposition = 0.0f;

                if (!clan.IsMinorFaction)
                {
                    // Apply a penalty for losing the possibility of getting slices of pie in the kingdom.
                    // This also reflects on the kingdom's success at war as a reflection of how likely it is
                    // the pie will increase or decrease.
                    var warMult = GetWarMultForClan(clan, kingdom);
                    var existingHeroesInKingdom      = GetNumberOfHeroesInKingdom(kingdom);
                    var hypotheticalValuePerClanHero = GetValueOfKingdomFortifications(kingdom) / (existingHeroesInKingdom + numClanHeroes);
                    valueProposition -= hypotheticalValuePerClanHero * (float)Math.Sqrt(numClanHeroes) * 0.300000011920929f * warMult;
                }

                // Apply a penalty ~ the number of towns and honor of the lord.
                var reliabilityConstant = HeroHelper.CalculateReliabilityConstant(clan.Leader);
                var townMult            = 40000f + clan.Fortifications.Count * 20000f;

                valueProposition -= townMult * reliabilityConstant;

                // Apply a penalty ~ the strength of the clan and honor of the lord.
                var clanStrength = GetClanStrength(clan, numClanHeroes);

                valueProposition -= clanStrength * reliabilityConstant;

                // Apply a penalty ~ how recently the clan has swapped kingdoms.
                const float maxDaysForPenalty    = 365;
                var         timeRemainingPenalty = (maxDaysForPenalty - Math.Min(maxDaysForPenalty, (float)(CampaignTime.Now - clan.LastFactionChangeTime).ToDays)) / maxDaysForPenalty;
                var         kingdomSwapPenalty   = 100000f * reliabilityConstant * timeRemainingPenalty;

                valueProposition -= kingdomSwapPenalty;

                // Increase the value for happier relations.
                var relationMult = GetRelationMult(clan, kingdom);

                valueProposition *= relationMult;

                // Increase the value for the same culture.
                var sameCultureMult = GetSameCultureMult(clan, kingdom);

                valueProposition *= sameCultureMult;

                // Add the expected change in settlement value.
                var expectedChangeInSettlementValue = clan.CalculateSettlementValue() - clan.CalculateSettlementValue(clan.Kingdom);

                valueProposition += expectedChangeInSettlementValue;

                return(valueProposition);
            }
 // Mercifully, this does something. Although there might be an issue with birthdays causing edited heroes to age up
 // more often than not, so this needs to be rewritten.
 // Needs to differentiate if the game is under setup or in progress, but that is something for another update.
 public static void ResetBirthDayForAge(CharacterObject characterObject, float targetAge, bool randomize = false)
 {
     if (!characterObject.IsHero)
     {
         return;
     }
     characterObject.HeroObject.SetBirthDay(randomize ? HeroHelper.GetRandomBirthDayForAge(targetAge) : CampaignTime.YearsFromNow(-targetAge));
 }
Ejemplo n.º 12
0
        public static Mission OpenBattleJustHero(string scene, string upgradeLevel)
        {
            MissionInitializerRecord record = new MissionInitializerRecord(scene)
            {
                PlayingInCampaignMode = Campaign.Current.GameMode == CampaignGameMode.Campaign,
                AtmosphereOnCampaign  = (Campaign.Current.GameMode == CampaignGameMode.Campaign) ? Campaign.Current.Models.MapWeatherModel.GetAtmosphereModel(CampaignTime.Now, MobileParty.MainParty.GetLogicalPosition()) : null,
                SceneLevels           = upgradeLevel
            };

            MissionAgentSpawnLogic lc2 = new MissionAgentSpawnLogic(new IMissionTroopSupplier[]
            {
                new PartyGroupTroopSupplier(MapEvent.PlayerMapEvent, BattleSideEnum.Defender, null),
                new PartyGroupTroopSupplier(MapEvent.PlayerMapEvent, BattleSideEnum.Attacker, null)
            }, PartyBase.MainParty.Side);

            bool          isPlayerSergeant             = MobileParty.MainParty.MapEvent.IsPlayerSergeant();
            bool          isPlayerInArmy               = MobileParty.MainParty.Army != null;
            List <string> heroesOnPlayerSideByPriority = HeroHelper.OrderHeroesOnPlayerSideByPriority();

            return(MissionState.OpenNew("Battle", record, delegate(Mission mission)
            {
                List <MissionBehaviour> list = new List <MissionBehaviour>();
                list.Add(new MissionOptionsComponent());
                list.Add(new CampaignMissionComponent());
                list.Add(new BattleEndLogic());
                list.Add(new MissionCombatantsLogic(MobileParty.MainParty.MapEvent.InvolvedParties, PartyBase.MainParty, MobileParty.MainParty.MapEvent.GetLeaderParty(BattleSideEnum.Defender), MobileParty.MainParty.MapEvent.GetLeaderParty(BattleSideEnum.Attacker), Mission.MissionTeamAITypeEnum.FieldBattle, isPlayerSergeant));
                list.Add(new BattleMissionStarterLogic());
                //list.Add(new MissionDefaultCaptainAssignmentLogic());
                list.Add(new BattleSpawnLogic("battle_set"));
                list.Add(new MissionAgentPanicHandler());
                list.Add(new AgentBattleAILogic());
                list.Add(new BattleObserverMissionLogic());
                list.Add(lc2);
                list.Add(new MissionFightHandler());
                list.Add(new AgentFadeOutLogic());
                list.Add(new BattleAgentLogic());
                list.Add(new AgentVictoryLogic());
                list.Add(new MissionDebugHandler());
                list.Add(new MissionHardBorderPlacer());
                list.Add(new MissionBoundaryPlacer());
                list.Add(new MissionBoundaryCrossingHandler());
                list.Add(new BattleMissionAgentInteractionLogic());
                list.Add(new HighlightsController());
                list.Add(new BattleHighlightsController());

                list.Add(new BattleHeroJustTroopSpawnHandler());
                list.Add(new FieldBattleController());
                //list.Add(new AgentMoraleInteractionLogic());
                //list.Add(new  AssignPlayerRoleInTeamMissionController(!isPlayerSergeant, isPlayerSergeant, isPlayerInArmy, heroesOnPlayerSideByPriority, FormationClass.NumberOfRegularFormations));

                //int arg_190_1 = 25;
                Hero expr_152 = MapEvent.PlayerMapEvent.AttackerSide.LeaderParty.LeaderHero;
                string arg_18B_0 = (expr_152 != null) ? expr_152.Name.ToString() : null;
                Hero expr_177 = MapEvent.PlayerMapEvent.DefenderSide.LeaderParty.LeaderHero;
                list.Add(new CreateBodyguardMissionBehavior(arg_18B_0, (expr_177 != null) ? expr_177.Name.ToString() : null, null, null, true));
                return list.ToArray();
            }, true, true));
        }
Ejemplo n.º 13
0
        private void OnSessionLaunched(CampaignGameStarter game)
        {
            game.BlockSentences(
                () => !TelepathyBehaviour.MeetingInProgress,
                "main_option_discussions_1"                 // joining army
                );
            game.BlockSentences(
                () => !TelepathyBehaviour.MeetingInProgress || !TelepathySettings.Instance.HideQuestDialogLines,
                "hero_give_issue",                 // taking a quest
                "hero_task_given",                 // discuss a quest
                "caravan_create_conversation_1"    // form a caravan
                );

            game.AddPlayerLine(
                "lord_talk_ask_something_2",
                "lord_talk_ask_something_2",
                "telepathy_tell_location",
                new TextObject("{=Telepathy_Where_Are_You}Where are you?", null).ToString(),
                new ConversationSentence.OnConditionDelegate(() => meetingEncounter != null),
                null, 101, null, null);
            game.AddDialogLine(
                "telepathy_tell_location",
                "telepathy_tell_location",
                "lord_talk_ask_something_again",
                "{LORD_LOCATION_ANSWER}",
                new ConversationSentence.OnConditionDelegate(() => {
                HeroHelper.SetLastSeenLocation(meetingHero, true);
                var answer = meetingHero.LastSeenInSettlement
                                                ? new TextObject("{=Telepathy_Im_In}I'm in {Settlement}.", null)
                                                : new TextObject("{=Telepathy_Im_Near}I'm near {Settlement}.", null);
                answer.SetTextVariable("Settlement", meetingHero.LastSeenPlace.EncyclopediaLinkWithName);
                MBTextManager.SetTextVariable("LORD_LOCATION_ANSWER", answer, false);
                return(true);
            }),
                null, 100, null);
            game.AddPlayerLine(
                "lord_talk_ask_something_2",
                "lord_talk_ask_something_2",
                "telepathy_tell_objective",
                new TextObject("{=Telepathy_What_Are_You_Doing}What are you doing?", null).ToString(),
                new ConversationSentence.OnConditionDelegate(() => meetingEncounter != null),
                null, 101, null, null);
            game.AddDialogLine(
                "telepathy_tell_objective",
                "telepathy_tell_objective",
                "lord_talk_ask_something_again",
                "{LORD_OBJECTIVE_ANSWER}",
                new ConversationSentence.OnConditionDelegate(() => {
                string answer = meetingHero.PartyBelongedTo == null
                                                ? new TextObject("{=Telepathy_Nothing}Nothing actually.", null).ToString()
                                                : CampaignUIHelper.GetMobilePartyBehaviorText(meetingHero.PartyBelongedTo);
                MBTextManager.SetTextVariable("LORD_OBJECTIVE_ANSWER", answer, false);
                return(true);
            }),
                null, 100, null);
        }
Ejemplo n.º 14
0
 static bool Prefix(BodyGenerator __instance)
 {
     __instance.Character.UpdatePlayerCharacterBodyProperties(__instance.CurrentBodyProperties, __instance.IsFemale);
     if (__instance.Character is CharacterObject characterObject)
     {
         float bodyAge = __instance.CurrentBodyProperties.DynamicProperties.Age;
         characterObject.HeroObject.SetBirthDay(HeroHelper.GetRandomBirthDayForAge((int)bodyAge));
     }
     return(false);
 }
Ejemplo n.º 15
0
 public static void SetHeroLastSeenLocation(this Hero hero, bool willUpdateImmediately)
 {
     try
     {
         HeroHelper.SetLastSeenLocation(hero, willUpdateImmediately);
     }
     catch (Exception e)
     {
         DisplayMessage(e);
     }
 }
Ejemplo n.º 16
0
 public static void UpdateHeroCharacterBodyProperties(CharacterObject character, BodyProperties properties, bool isFemale)
 {
     if (character.IsHero)
     {
         Hero hero = character.HeroObject;
         ReflectUtils.ReflectPropertyAndSetValue("StaticBodyProperties", properties.StaticProperties, hero);
         hero.Weight = properties.Weight;
         hero.Build  = properties.Build;
         hero.SetBirthDay(HeroHelper.GetRandomBirthDayForAge((int)properties.Age));
         hero.UpdatePlayerGender(isFemale);
     }
 }
Ejemplo n.º 17
0
        public static string Age(List <string> strings)
        {
            if (CampaignCheats.CheckParameters(strings, 0) || CampaignCheats.CheckHelp(strings))
            {
                return($"{FormatMsgHeader} \"dcc.age [{AgeText}]\".");
            }

            if (!int.TryParse(strings[0], out int num))
            {
                return(EnterAgeMsg.ToString());
            }
            Hero.MainHero.BirthDay = HeroHelper.GetRandomBirthDayForAge(num);
            return(SuccessMsg.ToString());
        }
Ejemplo n.º 18
0
        public static Mission OpenBattleNormal(string scene, string sceneLevels)
        {
            MissionAgentSpawnLogic lc = new MissionAgentSpawnLogic(new IMissionTroopSupplier[]
            {
                new PartyGroupTroopSupplier(MapEvent.PlayerMapEvent, BattleSideEnum.Defender, null),
                new PartyGroupTroopSupplier(MapEvent.PlayerMapEvent, BattleSideEnum.Attacker, null)
            }, PartyBase.MainParty.Side);


            bool          isPlayerSergeant             = MobileParty.MainParty.MapEvent.IsPlayerSergeant();
            bool          isPlayerInArmy               = MobileParty.MainParty.Army != null;
            List <string> heroesOnPlayerSideByPriority = HeroHelper.OrderHeroesOnPlayerSideByPriority();

            return(MissionState.OpenNew("Battle", SandBoxMissions.CreateSandBoxMissionInitializerRecord(scene, sceneLevels, false), delegate(Mission mission)
            {
                MissionBehaviour[] expr_07 = new MissionBehaviour[26];
                expr_07[0] = new MissionOptionsComponent();
                expr_07[1] = new CampaignMissionComponent();
                expr_07[2] = new BattleEndLogic();
                expr_07[3] = new MissionCombatantsLogic(MobileParty.MainParty.MapEvent.InvolvedParties, PartyBase.MainParty, MobileParty.MainParty.MapEvent.GetLeaderParty(BattleSideEnum.Defender), MobileParty.MainParty.MapEvent.GetLeaderParty(BattleSideEnum.Attacker), Mission.MissionTeamAITypeEnum.FieldBattle, isPlayerSergeant);
                expr_07[4] = new MissionDefaultCaptainAssignmentLogic();
                expr_07[5] = new BattleMissionStarterLogic();
                expr_07[6] = new BattleSpawnLogic("battle_set");
                expr_07[7] = new AgentBattleAILogic();
                expr_07[8] = lc;
                expr_07[9] = new BaseMissionTroopSpawnHandler();
                expr_07[10] = new AgentFadeOutLogic();
                expr_07[11] = new BattleObserverMissionLogic();
                expr_07[12] = new BattleAgentLogic();
                expr_07[13] = new AgentVictoryLogic();
                expr_07[14] = new MissionDebugHandler();
                expr_07[15] = new MissionAgentPanicHandler();
                expr_07[16] = new MissionHardBorderPlacer();
                expr_07[17] = new MissionBoundaryPlacer();
                expr_07[18] = new MissionBoundaryCrossingHandler();
                expr_07[19] = new BattleMissionAgentInteractionLogic();
                expr_07[20] = new FieldBattleController();
                expr_07[21] = new AgentMoraleInteractionLogic();
                expr_07[22] = new HighlightsController();
                expr_07[23] = new BattleHighlightsController();
                expr_07[24] = new AssignPlayerRoleInTeamMissionController(!isPlayerSergeant, isPlayerSergeant, isPlayerInArmy, heroesOnPlayerSideByPriority, FormationClass.NumberOfRegularFormations);
                int arg_190_1 = 25;
                Hero expr_152 = MapEvent.PlayerMapEvent.AttackerSide.LeaderParty.LeaderHero;
                string arg_18B_0 = (expr_152 != null) ? expr_152.Name.ToString() : null;
                Hero expr_177 = MapEvent.PlayerMapEvent.DefenderSide.LeaderParty.LeaderHero;
                expr_07[arg_190_1] = new CreateBodyguardMissionBehavior(arg_18B_0, (expr_177 != null) ? expr_177.Name.ToString() : null, null, null, true);
                return expr_07;
            }, true, true));
        }
Ejemplo n.º 19
0
        private void OnUpdateFunctions()
        {
            if (MenuHelper.getKeybindValue("dzaio.caitlyn.dashtomouse"))
            {
                if (_spells[SpellSlot.E].IsReady())
                {
                    _spells[SpellSlot.E].Cast(WhereToEForPosition(Game.CursorPos));
                }
            }

            if (MenuHelper.getKeybindValue("dzaio.caitlyn.manualr"))
            {
                var rTarget = TargetSelector.GetTarget(_spells[SpellSlot.R].Range, TargetSelector.DamageType.Physical);
                if (_spells[SpellSlot.R].IsEnabledAndReady(Mode.Combo))
                {
                    if (HeroHelper.IsSafePosition(ObjectManager.Player.ServerPosition) && _spells[SpellSlot.R].GetDamage(rTarget) >= rTarget.Health + 25 &&
                        rTarget.CountEnemiesInRange(800f) <= 2 && rTarget.CountAlliesInRange(600f) < 3 && rTarget.Distance(ObjectManager.Player) >= ObjectManager.Player.AttackRange)
                    {
                        _spells[SpellSlot.R].CastOnUnit(rTarget);
                    }
                }
            }

            if (MenuHelper.getKeybindValue("dzaio.caitlyn.eq"))
            {
                var eqTarget = TargetSelector.GetTarget(_spells[SpellSlot.Q].Range + 505f, TargetSelector.DamageType.Physical);

                if (_spells[SpellSlot.E].IsReady() && _spells[SpellSlot.Q].IsReady() && eqTarget.IsValidTarget() && eqTarget.Distance(ObjectManager.Player) >= Orbwalking.GetRealAutoAttackRange(null))
                {
                    var afterEPosition = GetPositionAfterE(WhereToEForPosition(eqTarget.ServerPosition));
                    if (!CaitlynIsSafePosition(afterEPosition))
                    {
                        return;
                    }
                    var delay = (int)Math.Ceiling(ObjectManager.Player.Distance(afterEPosition) / _spells[SpellSlot.E].Speed * 1000 + 100);
                    //var delayPrediction = Prediction.GetPrediction(eqTarget, delay);
                    //E Q
                    PredictionOutput customPrediction = PredictionHelper.GetP(afterEPosition, _spells[SpellSlot.Q], eqTarget, false);
                    if (_spells[SpellSlot.Q].IsKillable(eqTarget) && _spells[SpellSlot.Q].IsReady() &&
                        afterEPosition.Distance(eqTarget.ServerPosition) <= _spells[SpellSlot.Q].Range &&
                        !(afterEPosition.Distance(eqTarget.ServerPosition) <= Orbwalking.GetRealAutoAttackRange(null) &&
                          ObjectManager.Player.GetAutoAttackDamage(eqTarget) >= eqTarget.Health + 20))
                    {
                        _spells[SpellSlot.E].Cast(WhereToEForPosition(eqTarget.ServerPosition));
                        LeagueSharp.Common.Utility.DelayAction.Add(delay, () => _spells[SpellSlot.Q].Cast(customPrediction.CastPosition));
                    }
                }
            }
        }
Ejemplo n.º 20
0
 public static string GetHeroLastKnownLocation(this Hero hero, bool refresh = true, bool willUpdateImmediately = true)
 {
     try
     {
         if (refresh)
         {
             HeroHelper.SetLastSeenLocation(hero, willUpdateImmediately);
         }
         return(StringHelpers.GetLastKnownLocation(hero)?.ToString());
     }
     catch (Exception e)
     {
         return(e.ToString());
     }
 }
Ejemplo n.º 21
0
        public static string Age(List <string> strings)
        {
            if (CampaignCheats.CheckParameters(strings, 0) || CampaignCheats.CheckHelp(strings))
            {
                return("Format is \"dcc.age [Age]\".");
            }
            int num = 1;

            if (!int.TryParse(strings[0], out num))
            {
                return("Please enter a age");
            }
            Hero.MainHero.BirthDay = HeroHelper.GetRandomBirthDayForAge((float)num);
            return("Success");
        }
Ejemplo n.º 22
0
        public override async Task <TaskRes> Execute(Account acc)
        {
            var wb = acc.Wb.Driver;
            await HeroHelper.NavigateToHeroAttributes(acc);

            HeroHelper.ParseHeroPage(acc);

            float sum = 0;

            for (int i = 0; i < 4; i++)
            {
                sum += acc.Hero.Settings.Upgrades[i];
            }
            if (sum == 0)
            {
                // Upgrade points were not set. Set points to default
                acc.Hero.Settings.Upgrades = new byte[4] {
                    2, 0, 0, 2
                };
                sum = 4;
            }

            var points = acc.Hero.HeroInfo.AvaliblePoints;

            for (int i = 0; i < 4; i++)
            {
                var amount = Math.Ceiling(acc.Hero.Settings.Upgrades[i] * points / sum);
                if (amount == 0)
                {
                    continue;
                }

                var script = $"var attribute = document.getElementById('{domId[i]}');";
                script += "var upPoint = attribute.getElementsByClassName('pointsValueSetter')[1];";
                script += "upPoint.getElementsByTagName('a')[0].click();";

                for (int j = 0; j < (int)amount; j++)
                {
                    // Execute the script (set point) to add 1 point
                    wb.ExecuteScript(script);
                }
                await Task.Delay(AccountHelper.Delay());
            }

            wb.ExecuteScript("document.getElementById('saveHeroAttributes').click();");
            return(TaskRes.Executed);
        }
Ejemplo n.º 23
0
        public override async Task <TaskRes> Execute(Account acc)
        {
            await acc.Wb.Navigate($"{acc.AccInfo.ServerUrl}/hero.php");

            HeroHelper.ParseHeroPage(acc);

            TaskExecutor.RemoveSameTasks(acc, typeof(HeroUpdateInfo), this);

            if (acc.Hero.Settings.AutoRefreshInfo)
            {
                var ran = new Random();
                this.NextExecute = DateTime.Now.AddMinutes(ran.Next(40, 80));
                TaskExecutor.RemoveSameTasks(acc, this);
            }

            return(TaskRes.Executed);
        }
Ejemplo n.º 24
0
            static void Postfix(CharacterObject __instance, BodyProperties properties, bool isFemale)
            {
                if (__instance.IsPlayerCharacter && __instance.IsHero)
                {
                    __instance.HeroObject.SetBirthDay(HeroHelper.GetRandomBirthDayForAge((int)properties.Age));
                }

                if (!__instance.IsPlayerCharacter && __instance.IsHero)
                {
                    Hero hero = __instance.HeroObject;
                    ReflectUtils.ReflectPropertyAndSetValue("StaticBodyProperties", properties.StaticProperties, hero);
                    hero.Weight = properties.Weight;
                    hero.Build  = properties.Build;
                    hero.SetBirthDay(HeroHelper.GetRandomBirthDayForAge((int)properties.Age));
                    hero.UpdatePlayerGender(isFemale);
                }
            }
Ejemplo n.º 25
0
        private static bool Prefix(ref Hero buyerHero, Hero sellerHero, int index, ref bool __result)
        {
            Hero leader = buyerHero;

            if ((leader != null ? leader.getTemplate() : (TroopRoster)null) != (TroopRoster)null && buyerHero?.PartyBelongedTo?.Party != null)
            {
                TroopRoster     template      = buyerHero.getTemplate();
                CharacterObject volunteerType = sellerHero.VolunteerTypes[index];
                CharacterObject troop         = volunteerType;
                int             troopCount    = template.GetTroopCount(troop);
                if (buyerHero.PartyBelongedTo.Party.PartySizeLimit <= buyerHero.PartyBelongedTo.Party.NumberOfAllMembers)
                {
                    __result = false;
                    return(false);
                }
                switch (troopCount)
                {
                case 0:
                    __result = false;
                    break;

                case 1:
                    if (buyerHero.Clan == Clan.PlayerClan)
                    {
                        buyerHero = CharacterObject.PlayerCharacter.HeroObject;
                    }
                    __result = index < HeroHelper.MaximumIndexHeroCanRecruitFromHero(buyerHero, sellerHero);
                    break;

                default:
                    if (troopCount - buyerHero.PartyBelongedTo.MemberRoster.GetTroopCount(volunteerType) <= 0)
                    {
                        __result = false;
                        break;
                    }
                    goto case 1;
                }
                return(false);
            }
            if (buyerHero.Clan == Clan.PlayerClan)
            {
                buyerHero = CharacterObject.PlayerCharacter.HeroObject;
            }
            return(true);
        }
        private static void RecruitAllAvailableTroops(MenuCallbackArgs args)
        {
            try
            {
                var minusMoney        = 0;
                var recruitedAnyTroop = false;
                foreach (var notable in Settlement.CurrentSettlement.Notables)
                {
                    for (var i = 0; i < 6; ++i)
                    {
                        if (notable.VolunteerTypes[i] == null ||
                            !HeroHelper.HeroCanRecruitFromHero(Hero.MainHero, notable, i))
                        {
                            continue;
                        }

                        var troop = notable.VolunteerTypes[i];
                        var cost  = Campaign.Current.Models.PartyWageModel.GetTroopRecruitmentCost(troop, Hero.MainHero, false);

                        if (cost > Hero.MainHero.Gold)
                        {
                            continue;
                        }
                        minusMoney       += cost;
                        recruitedAnyTroop = true;
                        GiveGoldAction.ApplyBetweenCharacters(Hero.MainHero, null, cost, true);
                        notable.VolunteerTypes[i] = null;
                        MobileParty.MainParty.MemberRoster.AddToCounts(troop, 1, false, 0, 0, true, -1);
                        CampaignEventDispatcher.Instance.OnUnitRecruited(troop, 1);

                        InformationManager.DisplayMessage(new InformationMessage($"You recruited one {troop.Name}."));
                    }
                }

                if (recruitedAnyTroop)
                {
                    MBTextManager.SetTextVariable("GOLD_AMOUNT", minusMoney, false);
                    InformationManager.DisplayMessage(new InformationMessage(GameTexts.FindText("str_gold_removed_with_icon", null).ToString(), "event:/ui/notification/coins_negative"));
                }
            }
            catch (Exception ex)
            {
                NativeMethods.MessageBox(IntPtr.Zero, ex.Message, "RecruitAllButton -- RecruitAllAvailableTroops", NativeMethods.MB_ICONERROR | NativeMethods.MB_OK);
            }
        }
        public static int GrowTargetHeroWithoutSideEffect(Hero hero)
        {
            if (hero == null)
            {
                return(-1);
            }

            int currentAge = (int)hero.Age;

            if ((int)hero.Age < SettingClass.Instance.GrowthStopAge)
            {
                hero.BirthDay = HeroHelper.GetRandomBirthDayForAge((int)hero.Age + 1);
            }

            currentAge = (int)hero.Age;

            return(currentAge);
        }
Ejemplo n.º 28
0
        bool OkToE(Vector3 position)
        {
            if (position.UnderTurret(true) && !ObjectManager.Player.UnderTurret(true))
            {
                return(false);
            }
            var allies    = position.CountAlliesInRange(ObjectManager.Player.AttackRange);
            var enemies   = position.CountEnemiesInRange(ObjectManager.Player.AttackRange);
            var lhEnemies = HeroHelper.GetLhEnemiesNearPosition(position, ObjectManager.Player.AttackRange).Count();

            if (enemies == 1) //It's a 1v1, safe to assume I can E
            {
                return(true);
            }

            //Adding 1 for the Player
            return(allies + 1 > enemies - lhEnemies);
        }
        // Mercifully, this does something. Although there might be an issue with birthdays causing edited heroes to age up
        // more often than not, so this needs to be rewritten.
        // Needs to differentiate if the game is under setup or in progress, but that is something for another update.
        public static void ResetBirthDayForAge(CharacterObject characterObject, float targetAge, bool randomize = false)
        {
            if (characterObject.IsHero == false)
            {
                return;
            }

            Hero hero = characterObject.HeroObject;

            if (DCCSettings.Instance == null || DCCSettings.Instance.OverrideAge)
            {
                return;
            }

            hero.BirthDay = randomize ?
                            HeroHelper.GetRandomBirthDayForAge(targetAge) :
                            CampaignTime.Years((float)(CampaignTime.Now.ToYears - targetAge));
        }
Ejemplo n.º 30
0
        public void SetWeaponIcon(ItemSlot item)
        {
            if (CurrentWeaponContainer == null)
            {
                return;
            }

            if (CurrentWeaponContainer.childCount > 0)
            {
                for (var i = 0; i < CurrentWeaponContainer.childCount; i++)
                {
                    Destroy(CurrentWeaponContainer.GetChild(i).gameObject);
                }
            }

            if (item == null)
            {
                return;
            }

            var prefabName = string.Empty;

            var type = HeroHelper.GetActiveItemType(item);

            switch (type)
            {
            case WeaponType.Anh:
                prefabName = "Prefabs\\Anh";
                break;

            case WeaponType.Sword:
                prefabName = "Prefabs\\Sword";
                break;

            case WeaponType.Banana:
                prefabName = "Prefabs\\Banana";
                break;
            }

            var weaponTamplate = Resources.Load <GameObject>(prefabName);
            var weaponObj      = Instantiate <GameObject>(weaponTamplate, CurrentWeaponContainer);

            weaponObj.transform.localPosition = Vector3.zero;
        }