// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.GameLogic.MuHelper; /// /// The Mu Helper player settings. /// public interface IMuHelperSettings { /// Gets the always-active basic attack skill ID (0 = no skill, use normal attack). int BasicSkillId { get; } /// Gets the first conditional skill ID. int ActivationSkill1Id { get; } /// Gets the second conditional skill ID. int ActivationSkill2Id { get; } /// Gets the timer interval (seconds) for ActivationSkill1 when Skill1Delay is set. int DelayMinSkill1 { get; } /// Gets the timer interval (seconds) for ActivationSkill2 when Skill2Delay is set. int DelayMinSkill2 { get; } /// Gets a value indicating whether to use timer for the skill 1. bool Skill1UseTimer { get; } /// Gets a value indicating whether to use condition for the skill 1. bool Skill1UseCondition { get; } /// Gets a value indicating whether to use the precondition for Skill1 (false = nearby, true = attacking). bool Skill1ConditionAttacking { get; } /// Gets the mob count threshold for Skill1 condition: 0=2+, 1=3+, 2=4+, 3=5+. int Skill1SubCondition { get; } /// Gets a value indicating whether to use timer for the skill 2. bool Skill2UseTimer { get; } /// Gets a value indicating whether to use condition for the skill 2. bool Skill2UseCondition { get; } /// Gets a value indicating whether to use the precondition for Skill2 (false = nearby, true = attacking). bool Skill2ConditionAttacking { get; } /// Gets the mob count threshold for Skill2 condition. int Skill2SubCondition { get; } /// Gets a value indicating whether to use combo mode. bool UseCombo { get; } /// Gets the hunting range nibble (0-15); multiply to get tile distance. int HuntingRange { get; } /// Gets the max seconds away from original position before regrouping. int MaxSecondsAway { get; } /// Gets a value indicating whether to counter-attack enemies that attack from long range. bool LongRangeCounterAttack { get; } /// Gets a value indicating whether to return to original spawn position when away too long. bool ReturnToOriginalPosition { get; } /// Gets the Buff 0 skill id. int BuffSkill0Id { get; } /// Gets the Buff 1 skill id. int BuffSkill1Id { get; } /// Gets the Buff 2 skill id. int BuffSkill2Id { get; } /// Gets a value indicating whether apply buffs based on duration (i.e. when the buff expires). bool BuffOnDuration { get; } /// Gets a value indicating whether apply buff duration logic to party members too. bool BuffDurationForParty { get; } /// Gets the buff cast interval in seconds (0 = disabled). int BuffCastIntervalSeconds { get; } /// Gets a value indicating whether to use auto-heal. bool AutoHeal { get; } /// Gets the self-heal threshold (% HP, e.g. 30 means heal when below 30%). int HealThresholdPercent { get; } /// Gets a value indicating whether to use drain life. bool UseDrainLife { get; } /// Gets a value indicating whether to use healing potion. bool UseHealPotion { get; } /// Gets the potion use threshold (% HP). int PotionThresholdPercent { get; } /// Gets a value indicating whether to support party. bool SupportParty { get; } /// Gets a value indicating whether to auto heal party. bool AutoHealParty { get; } /// Gets the party member HP threshold (%) below which healing is applied. int HealPartyThresholdPercent { get; } /// Gets a value indicating whether to use dark raven. bool UseDarkRaven { get; } /// Gets the dark raven mode 0 = cease, 1 = auto-attack, 2 = attack with owner. int DarkRavenMode { get; } /// Gets the obtain range. int ObtainRange { get; } /// Gets a value indicating whether pickup all items. bool PickAllItems { get; } /// Gets a value indicating whether pickup selected items. bool PickSelectItems { get; } /// Gets a value indicating whether pickup jewels. bool PickJewel { get; } /// Gets a value indicating whether pickup zen. bool PickZen { get; } /// Gets a value indicating whether pickup ancient items. bool PickAncient { get; } /// Gets a value indicating whether pickup excellent items. bool PickExcellent { get; } /// Gets a value indicating whether pickup extra items. bool PickExtraItems { get; } /// Gets the extra item names. Up to 12 item name substrings; pick any dropped item whose name contains one of these. IReadOnlyList ExtraItemNames { get; } /// Gets a value indicating whether to repair items. bool RepairItem { get; } /// Gets a value indicating whether to automatically defend against players attacking the character. bool UseSelfDefense { get; } /// Gets a value indicating whether to automatically accept requests from friends. bool AutoAcceptFriend { get; } /// Gets a value indicating whether to automatically accept requests from guild. bool AutoAcceptGuild { get; } /// /// Gets a value indicating whether to automatically accept party requests from anyone, not just /// friends or guild mates. Defaults to false; used by server-side bots so they group up /// with players who invite them (see Bots.BotPartyHandler for the applied safeguards). /// bool AutoAcceptAnyone => false; /// Gets a value indicating whether to use basic attack as fallback when the configured skill cannot be used. bool FallbackBasicAttack { get; } /// /// Gets a value indicating whether the combat AI should automatically cast the strongest learned /// attack skill the character can currently afford, instead of relying on the explicitly configured /// skill IDs. Used by server-side bots (which have no client-side MU Helper config) so they fight /// with class- and level-appropriate skills; human offline sessions keep their explicit configuration. /// bool AutoSelectBestSkill { get; } /// /// Gets a value indicating whether the buff AI should automatically cast the learned buff skills /// of the character, instead of relying on the explicitly configured buff slot IDs. Used by /// server-side bots so each class keeps its own buffs up (e.g. elf Greater Defense/Greater Damage); /// human offline sessions keep their explicit configuration. /// bool AutoSelectBuffs { get; } /// /// Gets a value indicating whether to drink a mana potion when mana runs low, so casters can keep /// casting. There is no client-side MU Helper setting for this; it is used by server-side bots. /// bool UseManaPotion { get; } /// /// Gets a value indicating whether the combat AI only engages monsters the character can safely /// handle (up to half its own level, like the bot navigator's hunting-ground selection). Without /// this, a bot travelling through hostile territory would pick fights with monsters far above its /// level and die. Human offline sessions keep the unrestricted behavior - the player chose the spot. /// bool OnlyHuntSafeMonsters { get; } /// /// Gets a value indicating whether to also pick up equippable items which are an upgrade over the /// character's currently equipped gear (evaluated before pickup), so bots progress their equipment /// like a real player without hoarding junk. /// bool PickUpgradeItems { get; } }