// 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); } }
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); } }
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); }
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); }
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); }
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); }
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)); }
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)); }
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); }
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); }
public static void SetHeroLastSeenLocation(this Hero hero, bool willUpdateImmediately) { try { HeroHelper.SetLastSeenLocation(hero, willUpdateImmediately); } catch (Exception e) { DisplayMessage(e); } }
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); } }
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()); }
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)); }
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)); } } } }
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()); } }
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"); }
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); }
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); }
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); } }
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); }
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)); }
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; }