class CBotDifficultyDefinition{public: // MPropertyDescription = Difficulty EnumECitadelBotDifficulty difficulty; // MPropertyDescription = Bots get free gold over time float32 free_gold_per_minute; // MPropertyDescription = GPM that scales with game time float32 free_gold_per_minute_scaled; // MPropertyDescription = How much time until a takeover bot till spend gold/ap float32 takeover_spend_currency_time; // MPropertyDescription = Are bots allowed to buy items from anywhere bool allow_purchasing_anywhere; // MPropertyDescription = Forces bots to avoid human allies bool avoid_human_ally; // MPropertyDescription = Higher values encourage bots to engage players over troopers when a player is within engagement range. 0 means players and troopers are roughly equal int32 engage_extra_player_priority; // MPropertyDescription = Forces bots to prioritize getting last hits on enemies below this health int32 engage_last_hit_threshold; // MPropertyDescription = Extra distance bots are willing to engage enemies at to get last hits float32 engage_distance_last_hit_bonus; // MPropertyDescription = Extra distance bots are willing to engage heroes at float32 engage_distance_hero_bonus; // MPropertyDescription = Distance bots are willing to engage enemies at float32 engage_distance; // MPropertyDescription = Distance bots will engage to the left or right of the target float32 engage_lane_side_dist; // MPropertyDescription = Distance bots will engage to the left or right of the target float32 engage_player_side_dist; // MPropertyDescription = Distance behind creep wave midpoint where bots will prefer to be float32 safety_distance_behind_ally_creeps; // MPropertyDescription = Distance to keep away from enemy bosses. A value of 1.0 is right outside that tower's attack range. float32 safety_distance_away_from_tower_range; // MPropertyDescription = Bots pick on a time interval float32 choose_lane_on_interval; // MPropertyDescription = Duration Bot prioritizes changing lanes vs fighting float32 lane_change_duration; // MPropertyDescription = Bots try to balance lanes bool choose_balanced_lanes; // MPropertyDescription = Desired bot miss chance float32 attack_miss_chance; // MPropertyDescription = Bots choose a random angle in this range to offset their perfect aim float32 attack_enemies_inaccuracy; // MPropertyDescription = When trying to miss float32 attack_enemies_inaccuracy_scale; // MPropertyDescription = Distance (m) to make bots even worse accuracy float32 attack_enemies_inaccuracy_distance; // MPropertyDescription = Scale the accuracy by this amount at distance float32 attack_enemies_inaccuracy_distance_scale; // MPropertyDescription = Scale inaccuracy by this amount when threatened float32 attack_enemies_inaccuracy_threat_scale; // MPropertyDescription = Bot reloads when clip is this low float32 reload_pct; // MPropertyDescription = Citadel bots will randomly purchase available upgrades every few seconds float32 purchase_random_upgrades; // MPropertyDescription = Citadel bots will purchase available upgrades in order every few seconds float32 purchase_upgrades_in_order; // MPropertyDescription = Time between bot using ability float32 use_ability_cooldown; // MPropertyDescription = Chance to do a melee attack when within range float32 heavy_melee_chance; // MPropertyDescription = Chance to do a melee attack when within range while reloading float32 heavy_melee_chance_in_reload; // MPropertyDescription = Chance to parry when bot sees a melee attack float32 parry_chance; // MPropertyDescription = Penalty to parrying when bot has no LoS float32 parry_no_los_penalty; // MPropertyDescription = How much parry chance goes up after each recent melee attack float32 parry_chance_escalation; // MPropertyDescription = At what percentage of melee charge does a bot decide to parry, lower values mean the bot will parry earlier float32 parry_melee_charge_detection_pct; // MPropertyDescription = How long to remember recent attackers float32 max_attacker_memory; // MPropertyDescription = How long to remember recent melee attacks float32 max_melee_attack_memory; // MPropertyDescription = Forces bots to attack nearby enemies bool jump_sometimes; // MPropertyDescription = Forces bots to attack nearby enemies bool roll_after_damage; // MPropertyDescription = How often bots will roll given damage conditions float32 roll_chance; // MPropertyDescription = Roll chance amplification when low health float32 roll_chance_lowhealth_scale; // MPropertyDescription = Time between roll attempts float32 roll_frequency; // MPropertyDescription = Fight the midboss bool fight_midboss; // MPropertyDescription = Fight for the idol bool fight_for_idol; // MPropertyDescription = How many ticks between the bot performing sensing int32 sensing_tick_interval; // MPropertyDescription = Seconds after a bot sees you before it can react float32 visual_reaction_time; // MPropertyDescription = Seconds after a bot sees you before it can react float32 shoot_duration; // MPropertyDescription = Factor from Projectile speed to usable range float32 projectile_range_scale; // MPropertyDescription = Default Cast Range for abilities that don't specify float32 ability_min_cast_range; // MPropertyDescription = Default Enemy range to use friendly abilities float32 ability_min_cast_range_friendly; // MPropertyDescription = Maximum life for friendly ability to be used (prevents healing when full health) float32 ability_friendly_life_threshold; // MPropertyDescription = Pitch (aiming down) for bots when using a friendly ability float32 ability_friendly_pitch; // MPropertyDescription = How much in range before doing an ability (ie not casting on edges) float32 ability_window_size; // MPropertyDescription = Interval in seconds at which to spend AP randomly float32 spend_random_ap; // MPropertyDescription = Bonus regen all the time float32 bonus_regen; // MPropertyDescription = Regen when not seen by enemy players float32 bonus_regen_outofsight; // MPropertyDescription = Bonus run speed float32 bonus_run_speed; // MPropertyDescription = Radius for bots to look for better locations to path to float32 safe_spot_target_radius; // MPropertyDescription = Radius for bots to consider whether a position is safe float32 safe_spot_safety_radius; // MPropertyDescription = Distance away from target to search for an attack location float32 enemy_hero_engage_distance; // MPropertyDescription = Minimum number of spots to sample looking for good positioning int32 safe_spot_samples_min; // MPropertyDescription = Maximum number of spots to sample looking for good positioning int32 safe_spot_samples_max; // MPropertyDescription = Try to deny orbs int32 attempt_orb_start_time; // MPropertyDescription = Percentage of the time to look for red orbs to shoot int32 attempt_deny_orb_pct; // MPropertyDescription = Percentage of the time to look for gold orbs to shoot int32 attempt_secure_orb_pct; // MPropertyDescription = Range(m) to Scan for Orbs float32 attempt_orb_range; // MPropertyDescription = Low Health float32 low_health; // MPropertyDescription = When pushed against tower float32 low_health_pushed; // MPropertyDescription = Guide bot talks about neutrals bool guide_bot_neutral_info; // MPropertyDescription = Min time between messages a player bot can send float32 message_interval; // MPropertyDescription = How many frames between LOS check refreshes on the Bots? int32 los_check_interval;};