diff --git a/Common.Models/BotType.cs b/Common.Models/BotType.cs index 70b7a3b..39bdc1e 100644 --- a/Common.Models/BotType.cs +++ b/Common.Models/BotType.cs @@ -30,6 +30,7 @@ followerbirdeye = 26, followerbigpipe = 27, bosszryachiy = 28, - followerzryachiy = 29 + followerzryachiy = 29, + arenafighterevent = 30 } } diff --git a/Common.Models/Output/Output.cs b/Common.Models/Output/Output.cs index 587a75e..20232a8 100644 --- a/Common.Models/Output/Output.cs +++ b/Common.Models/Output/Output.cs @@ -215,13 +215,13 @@ public class ItemChances { public ItemChances() { - specialItems = new MinMax(0, 1); - healing = new MinMax(1, 2); - drugs = new MinMax(0, 1); - stims = new MinMax(0, 1); - looseLoot = new MinMax(0, 3); - magazines = new MinMax(2, 4); - grenades = new MinMax(0, 5); + specialItems = new MinMaxWithWhitelist(0, 1, System.Array.Empty()); + healing = new MinMaxWithWhitelist(1, 2, System.Array.Empty()); + drugs = new MinMaxWithWhitelist(0, 1, System.Array.Empty()); + stims = new MinMaxWithWhitelist(0, 1, System.Array.Empty()); + looseLoot = new MinMaxWithWhitelist(0, 3, System.Array.Empty()); + magazines = new MinMaxWithWhitelist(2, 4, System.Array.Empty()); + grenades = new MinMaxWithWhitelist(0, 5, System.Array.Empty()); } public MinMax specialItems { get; set; } @@ -244,3 +244,15 @@ public class MinMax public int min { get; set; } public int max { get; set; } } + +public class MinMaxWithWhitelist : MinMax +{ + public MinMaxWithWhitelist(int min, int max, string[] whitelist) : base(min, max) + { + this.min = min; + this.max = max; + this.whitelist = whitelist; + } + + public string[] whitelist { get; set; } +} diff --git a/Common/Bot/BotParser.cs b/Common/Bot/BotParser.cs index d18d369..ee3b1aa 100644 --- a/Common/Bot/BotParser.cs +++ b/Common/Bot/BotParser.cs @@ -29,7 +29,7 @@ public static class BotParser { MaxDegreeOfParallelism = Environment.ProcessorCount }; - await Parallel.ForEachAsync(botFiles, parallelOptions, async(file, token) => + await Parallel.ForEachAsync(botFiles, parallelOptions, async (file, token) => { var splitFilePath = file.Split("\\"); @@ -53,7 +53,7 @@ public static class BotParser throw; } - + if (bots == null || bots.Count == 0) { Console.WriteLine($"skipping file: {splitFilePath.Last()}. no bots found, "); @@ -63,6 +63,11 @@ public static class BotParser Console.WriteLine($"parsing: {bots.Count} bots in file {splitFilePath.Last()}"); foreach (var bot in bots) { + if (bot._id == "6483938c53cc9087c70eae86") + { + Console.WriteLine("oh no"); + } + if (!botTypes.Contains(bot.Info.Settings.Role.ToLower())) { continue; @@ -74,8 +79,10 @@ public static class BotParser dupeCount++; continue; } - - parsedBotsDict.Add(bot._id, bot); + if (!parsedBotsDict.ContainsKey(bot._id)) + { + parsedBotsDict.Add(bot._id, bot); + } } totalDupeCount += dupeCount; diff --git a/Generator/Assets/easy_marksman_BotGlobalSettings.txt b/Generator/Assets/easy_marksman_BotGlobalSettings.txt index abcd208..749e085 100644 --- a/Generator/Assets/easy_marksman_BotGlobalSettings.txt +++ b/Generator/Assets/easy_marksman_BotGlobalSettings.txt @@ -342,7 +342,7 @@ "FRIEND_DEAD_AGR_LOW": -0.2, "FRIEND_AGR_KILL": 0.2, "LAST_ENEMY_LOOK_TO": 40.0, - "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": true, + "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": false, "CAN_RECEIVE_PLAYER_REQUESTS_BEAR": false, "CAN_RECEIVE_PLAYER_REQUESTS_USEC": false, "CAN_USE_MEDS": true, diff --git a/Generator/Assets/hard_marksman_BotGlobalSettings.txt b/Generator/Assets/hard_marksman_BotGlobalSettings.txt index 4d4a180..c8b4a06 100644 --- a/Generator/Assets/hard_marksman_BotGlobalSettings.txt +++ b/Generator/Assets/hard_marksman_BotGlobalSettings.txt @@ -342,7 +342,7 @@ "FRIEND_DEAD_AGR_LOW": -0.2, "FRIEND_AGR_KILL": 0.2, "LAST_ENEMY_LOOK_TO": 40.0, - "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": true, + "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": false, "CAN_RECEIVE_PLAYER_REQUESTS_BEAR": false, "CAN_RECEIVE_PLAYER_REQUESTS_USEC": false, "CAN_USE_MEDS": true, diff --git a/Generator/Assets/impossible_marksman_BotGlobalSettings.txt b/Generator/Assets/impossible_marksman_BotGlobalSettings.txt index d2223f6..871bc56 100644 --- a/Generator/Assets/impossible_marksman_BotGlobalSettings.txt +++ b/Generator/Assets/impossible_marksman_BotGlobalSettings.txt @@ -340,7 +340,7 @@ "FRIEND_DEAD_AGR_LOW": -0.2, "FRIEND_AGR_KILL": 0.2, "LAST_ENEMY_LOOK_TO": 40.0, - "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": true, + "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": false, "CAN_RECEIVE_PLAYER_REQUESTS_BEAR": false, "CAN_RECEIVE_PLAYER_REQUESTS_USEC": false, "CAN_USE_MEDS": true, diff --git a/Generator/Assets/normal_arenaFighter_BotGlobalSettings.txt b/Generator/Assets/normal_arenaFighter_BotGlobalSettings.txt new file mode 100644 index 0000000..7e7af1f --- /dev/null +++ b/Generator/Assets/normal_arenaFighter_BotGlobalSettings.txt @@ -0,0 +1,479 @@ +{ + "Lay": { + "CHECK_SHOOT_WHEN_LAYING": false, + "DELTA_LAY_CHECK": 2.0, + "DELTA_GETUP": 2.7, + "DELTA_AFTER_GETUP": 10.0, + "CLEAR_POINTS_OF_SCARE_SEC": 20.0, + "MAX_LAY_TIME": 35.0, + "DELTA_WANT_LAY_CHECL_SEC": 5.0, + "ATTACK_LAY_CHANCE": 25.0, + "DIST_TO_COVER_TO_LAY": 3.5, + "DIST_TO_COVER_TO_LAY_SQRT": 12.25, + "DIST_GRASS_TERRAIN_SQRT": 0.160000011, + "DIST_ENEMY_NULL_DANGER_LAY": 15.0, + "DIST_ENEMY_NULL_DANGER_LAY_SQRT": 225.0, + "DIST_ENEMY_GETUP_LAY": 10.0, + "DIST_ENEMY_GETUP_LAY_SQRT": 100.0, + "DIST_ENEMY_CAN_LAY": 15.0, + "DIST_ENEMY_CAN_LAY_SQRT": 225.0, + "LAY_AIM": 0.6, + "MIN_CAN_LAY_DIST_SQRT": 121.0, + "MIN_CAN_LAY_DIST": 11.0, + "MAX_CAN_LAY_DIST_SQRT": 40000.0, + "MAX_CAN_LAY_DIST": 200.0, + "LAY_CHANCE_DANGER": 40.0, + "DAMAGE_TIME_TO_GETUP": 3 + }, + "Aiming": { + "MAX_AIM_PRECICING": 2.0, + "BETTER_PRECICING_COEF": 0.9, + "RECALC_DIST": 0.7, + "RECALC_SQR_DIST": 0.48999998, + "COEF_FROM_COVER": 0.45, + "PANIC_COEF": 1.2, + "PANIC_ACCURATY_COEF": 1.2, + "HARD_AIM": 0.75, + "PANIC_TIME": 2.0, + "RECALC_MUST_TIME": 3, + "DAMAGE_PANIC_TIME": 15.0, + "DANGER_UP_POINT": 1.3, + "MAX_AIMING_UPGRADE_BY_TIME": 0.25, + "DAMAGE_TO_DISCARD_AIM_0_100": 86.0, + "MIN_TIME_DISCARD_AIM_SEC": 0.3, + "MAX_TIME_DISCARD_AIM_SEC": 0.6, + "XZ_COEF": 0.40, + "SHOOT_TO_CHANGE_PRIORITY": 5525, + "BOTTOM_COEF": 0.1, + "FIRST_CONTACT_ADD_SEC": 0.1, + "FIRST_CONTACT_ADD_CHANCE_100": 80.0, + "BASE_HIT_AFFECTION_DELAY_SEC": 0.57, + "BASE_HIT_AFFECTION_MIN_ANG": 4.0, + "BASE_HIT_AFFECTION_MAX_ANG": 10.0, + "BASE_SHIEF": 0.05, + "SCATTERING_HAVE_DAMAGE_COEF": 2.0, + "SCATTERING_DIST_MODIF": 0.67, + "SCATTERING_DIST_MODIF_CLOSE": 0.6, + "AIMING_TYPE": 2, + "DIST_TO_SHOOT_TO_CENTER": 3.0, + "DIST_TO_SHOOT_NO_OFFSET": 3.0, + "SHPERE_FRIENDY_FIRE_SIZE": -0.1, + "COEF_IF_MOVE": 1.0, + "TIME_COEF_IF_MOVE": 1.1, + "BOT_MOVE_IF_DELTA": 3.01, + "NEXT_SHOT_MISS_CHANCE_100": 100.0, + "NEXT_SHOT_MISS_Y_OFFSET": 1.0, + "ANYTIME_LIGHT_WHEN_AIM_100": 10.0, + "ANY_PART_SHOOT_TIME": 5.0, + "WEAPON_ROOT_OFFSET": 0.35, + "MIN_DAMAGE_TO_GET_HIT_AFFETS": 1.0, + "MAX_AIM_TIME": 1.5, + "OFFSET_RECAL_ANYWAY_TIME": 1.0, + "BASE_SHIEF_STATIONARY_GRENADE": 1.1, + "XZ_COEF_STATIONARY_GRENADE": 0.8 + }, + "Look": { + "OLD_TIME_POINT": 11.0, + "WAIT_NEW_SENSOR": 2.1, + "WAIT_NEW__LOOK_SENSOR": 7.8, + "LOOK_AROUND_DELTA": 1.1, + "MAX_VISION_GRASS_METERS": 0.8, + "MAX_VISION_GRASS_METERS_FLARE": 8.0, + "MAX_VISION_GRASS_METERS_OPT": 0.9090909, + "MAX_VISION_GRASS_METERS_FLARE_OPT": 0.125, + "LightOnVisionDistance": 45.0, + "FAR_DISTANCE": 160.0, + "FarDeltaTimeSec": 3.0, + "MIDDLE_DIST": 90.0, + "MiddleDeltaTimeSec": 1.0, + "CloseDeltaTimeSec": 0.1, + "POSIBLE_VISION_SPACE": 1.2, + "GOAL_TO_FULL_DISSAPEAR": 0.2, + "GOAL_TO_FULL_DISSAPEAR_SHOOT": 0.03, + "BODY_DELTA_TIME_SEARCH_SEC": 1.7, + "COME_TO_BODY_DIST": 1.2, + "MARKSMAN_VISIBLE_DIST_COEF": 1.15, + "VISIBLE_DISNACE_WITH_LIGHT": 100.0, + "ENEMY_LIGHT_ADD": 48.0, + "ENEMY_LIGHT_START_DIST": 90.0, + "CAN_LOOK_TO_WALL": true, + "DIST_NOT_TO_IGNORE_WALL": 15.0, + "DIST_CHECK_WALL": 20.0, + "LOOK_LAST_POSENEMY_IF_NO_DANGER_SEC": 25.0, + "MIN_LOOK_AROUD_TIME": 20.0, + "OPTIMIZE_TO_ONLY_BODY": true + }, + "Shoot": { + "RECOIL_TIME_NORMALIZE": 1.0, + "RECOIL_PER_METER": 0.02, + "MAX_RECOIL_PER_METER": 0.04, + "HORIZONT_RECOIL_COEF": 0.04, + "WAIT_NEXT_SINGLE_SHOT": 0.2, + "WAIT_NEXT_SINGLE_SHOT_LONG_MAX": 3.3, + "WAIT_NEXT_SINGLE_SHOT_LONG_MIN": 0.4, + "MARKSMAN_DIST_SEK_COEF": 44.0, + "FINGER_HOLD_SINGLE_SHOT": 0.14, + "BASE_AUTOMATIC_TIME": 0.2, + "AUTOMATIC_FIRE_SCATTERING_COEF": 1.5, + "CHANCE_TO_CHANGE_TO_AUTOMATIC_FIRE_100": 94.0, + "FAR_DIST_ENEMY": 20.0, + "SHOOT_FROM_COVER": 4, + "FAR_DIST_ENEMY_SQR": 400.0, + "MAX_DIST_COEF": 1.35, + "RECOIL_DELTA_PRESS": 0.15, + "RUN_DIST_NO_AMMO": 25.0, + "RUN_DIST_NO_AMMO_SQRT": 625.0, + "CAN_SHOOTS_TIME_TO_AMBUSH": 993, + "NOT_TO_SEE_ENEMY_TO_WANT_RELOAD_PERCENT": 0.5, + "NOT_TO_SEE_ENEMY_TO_WANT_RELOAD_SEC": 2.0, + "RELOAD_PECNET_NO_ENEMY": 0.6, + "CHANCE_TO_CHANGE_WEAPON": 80.0, + "CHANCE_TO_CHANGE_WEAPON_WITH_HELMET": 40.0, + "LOW_DIST_TO_CHANGE_WEAPON": 5.0, + "FAR_DIST_TO_CHANGE_WEAPON": 30.0, + "SUPPRESS_BY_SHOOT_TIME": 6.0, + "SUPPRESS_TRIGGERS_DOWN": 3, + "WAIT_NEXT_STATIONARY_GRENADE": 1.0, + "FINGER_HOLD_STATIONARY_GRENADE": 0.3, + "VALIDATE_MALFUNCTION_CHANCE": 100, + "REPAIR_MALFUNCTION_IMMEDIATE_CHANCE": 25, + "DELAY_BEFORE_EXAMINE_MALFUNCTION": 0.5, + "DELAY_BEFORE_FIX_MALFUNCTION": 0.5 + }, + "Move": { + "BASE_ROTATE_SPEED": 270.0, + "REACH_DIST": 0.5, + "REACH_DIST_RUN": 0.8, + "START_SLOW_DIST": 1.5, + "BASESTART_SLOW_DIST": 1.1, + "SLOW_COEF": 7.0, + "DIST_TO_CAN_CHANGE_WAY": 8.0, + "DIST_TO_START_RAYCAST": 15.0, + "BASE_START_SERACH": 35.0, + "UPDATE_TIME_RECAL_WAY": 7.0, + "FAR_DIST": 4.0, + "FAR_DIST_SQR": 16.0, + "DIST_TO_CAN_CHANGE_WAY_SQR": 64.0, + "DIST_TO_START_RAYCAST_SQR": 225.0, + "BASE_SQRT_START_SERACH": 1225.0, + "Y_APPROXIMATION": 0.7, + "DELTA_LAST_SEEN_ENEMY": 20.0, + "REACH_DIST_COVER": 2.0, + "RUN_TO_COVER_MIN": 2.0, + "CHANCE_TO_RUN_IF_NO_AMMO_0_100": 100.0, + "RUN_IF_CANT_SHOOT": false, + "RUN_IF_GAOL_FAR_THEN": 10.0, + "SEC_TO_CHANGE_TO_RUN": 3.0 + }, + "Grenade": { + "DELTA_NEXT_ATTEMPT_FROM_COVER": 5.0, + "DELTA_NEXT_ATTEMPT": 10.0, + "MIN_DIST_NOT_TO_THROW": 8.0, + "NEAR_DELTA_THROW_TIME_SEC": 2.0, + "MIN_THROW_GRENADE_DIST": 12.0, + "MIN_THROW_GRENADE_DIST_SQRT": 144.0, + "MIN_DIST_NOT_TO_THROW_SQR": 64.0, + "RUN_AWAY": 22.0, + "RUN_AWAY_SQR": 484.0, + "ADD_GRENADE_AS_DANGER": 65.0, + "ADD_GRENADE_AS_DANGER_SQR": 4225.0, + "CHANCE_TO_NOTIFY_ENEMY_GR_100": 100.0, + "GrenadePerMeter": 0.15, + "REQUEST_DIST_MUST_THROW_SQRT": 9.0, + "REQUEST_DIST_MUST_THROW": 3.0, + "BEWARE_TYPE": 2, + "SHOOT_TO_SMOKE_CHANCE_100": 50.0, + "CHANCE_RUN_FLASHED_100": 100.0, + "MAX_FLASHED_DIST_TO_SHOOT": 10.0, + "MAX_FLASHED_DIST_TO_SHOOT_SQRT": 100.0, + "FLASH_GRENADE_TIME_COEF": 0.25, + "SIZE_SPOTTED_COEF": 2.0, + "BE_ATTENTION_COEF": 4.0, + "TIME_SHOOT_TO_FLASH": 4.0, + "CLOSE_TO_SMOKE_TO_SHOOT": 10.0, + "CLOSE_TO_SMOKE_TO_SHOOT_SQRT": 100.0, + "CLOSE_TO_SMOKE_TIME_DELTA": 5.0, + "SMOKE_CHECK_DELTA": 1.0, + "DELTA_GRENADE_START_TIME": 0.01, + "AMBUSH_IF_SMOKE_IN_ZONE_100": 40.0, + "AMBUSH_IF_SMOKE_RETURN_TO_ATTACK_SEC": 30.0, + "NO_RUN_FROM_AI_GRENADES": true, + "MIN_THROW_DIST_PERCENT_0_1": 0.7, + "MAX_THROW_POWER": 18.7, + "GrenadePrecision": 0.1, + "STOP_WHEN_THROW_GRENADE": true, + "WAIT_TIME_TURN_AWAY": 0.2, + "SMOKE_SUPPRESS_DELTA": 20.0, + "DAMAGE_GRENADE_SUPPRESS_DELTA": 8.0, + "STUN_SUPPRESS_DELTA": 9.0, + "CHEAT_START_GRENADE_PLACE": false, + "CAN_THROW_STRAIGHT_CONTACT": true, + "STRAIGHT_CONTACT_DELTA_SEC": -1.0, + "ANG_TYPE": 4 + }, + "Change": { + "SMOKE_VISION_DIST": 0.6, + "SMOKE_GAIN_SIGHT": 1.6, + "SMOKE_SCATTERING": 1.6, + "SMOKE_PRECICING": 1.6, + "SMOKE_HEARING": 1.0, + "SMOKE_ACCURATY": 1.6, + "SMOKE_LAY_CHANCE": 1.6, + "FLASH_VISION_DIST": 0.05, + "FLASH_GAIN_SIGHT": 1.8, + "FLASH_SCATTERING": 1.6, + "FLASH_PRECICING": 1.6, + "FLASH_HEARING": 1.0, + "FLASH_ACCURATY": 1.6, + "FLASH_LAY_CHANCE": 1.0, + "STUN_HEARING": 0.01 + }, + "Cover": { + "RETURN_TO_ATTACK_AFTER_AMBUSH_MIN": 20.0, + "RETURN_TO_ATTACK_AFTER_AMBUSH_MAX": 50.0, + "SOUND_TO_GET_SPOTTED": 2.0, + "TIME_TO_MOVE_TO_COVER": 15.0, + "MAX_DIST_OF_COVER": 4.0, + "CHANGE_RUN_TO_COVER_SEC": 5.0, + "CHANGE_RUN_TO_COVER_SEC_GREANDE": 0.6, + "MIN_DIST_TO_ENEMY": 9.0, + "DIST_CANT_CHANGE_WAY": 5.0, + "DIST_CHECK_SFETY": 9.0, + "TIME_CHECK_SAFE": 2.0, + "HIDE_TO_COVER_TIME": 1.5, + "MAX_DIST_OF_COVER_SQR": 16.0, + "DIST_CANT_CHANGE_WAY_SQR": 25.0, + "SPOTTED_COVERS_RADIUS": 2.5, + "LOOK_LAST_ENEMY_POS_MOVING": 1.5, + "LOOK_TO_HIT_POINT_IF_LAST_ENEMY": 3.0, + "LOOK_LAST_ENEMY_POS_LOOKAROUND": 45.0, + "OFFSET_LOOK_ALONG_WALL_ANG": 20, + "SPOTTED_GRENADE_RADIUS": 16.0, + "MAX_SPOTTED_TIME_SEC": 55.0, + "WAIT_INT_COVER_FINDING_ENEMY": 2.0, + "CLOSE_DIST_POINT_SQRT": 4.0, + "DELTA_SEEN_FROM_COVE_LAST_POS": 15.0, + "MOVE_TO_COVER_WHEN_TARGET": false, + "RUN_COVER_IF_CAN_AND_NO_ENEMIES": false, + "SPOTTED_GRENADE_TIME": 7.0, + "DEPENDS_Y_DIST_TO_BOT": false, + "RUN_IF_FAR": 15.0, + "RUN_IF_FAR_SQRT": 225.0, + "STAY_IF_FAR": 25.0, + "STAY_IF_FAR_SQRT": 625.0, + "CHECK_COVER_ENEMY_LOOK": false, + "SHOOT_NEAR_TO_LEAVE": 2, + "SHOOT_NEAR_SEC_PERIOD": 0.5, + "HITS_TO_LEAVE_COVER": 1, + "HITS_TO_LEAVE_COVER_UNKNOWN": 1, + "DOG_FIGHT_AFTER_LEAVE": 4.0, + "NOT_LOOK_AT_WALL_IS_DANGER": true, + "MIN_DEFENCE_LEVEL": 5.0, + "GOOD_DIST_TO_POINT_COEF": 9999.0, + "ENEMY_DIST_TO_GO_OUT": 1.0, + "STATIONARY_WEAPON_NO_ENEMY_GETUP": 15.0, + "STATIONARY_WEAPON_MAX_DIST_TO_USE": 25 + }, + "Patrol": { + "LOOK_TIME_BASE": 12.0, + "RESERVE_TIME_STAY": 72.0, + "FRIEND_SEARCH_SEC": 12.0, + "TALK_DELAY": 1.1, + "MIN_TALK_DELAY": 35.0, + "TALK_DELAY_BIG": 45.1, + "CHANGE_WAY_TIME": 325.1, + "MIN_DIST_TO_CLOSE_TALK": 5.0, + "VISION_DIST_COEF_PEACE": 0.75, + "MIN_DIST_TO_CLOSE_TALK_SQR": 25.0, + "CHANCE_TO_CUT_WAY_0_100": 75.0, + "CUT_WAY_MIN_0_1": 0.4, + "CUT_WAY_MAX_0_1": 0.65, + "CHANCE_TO_CHANGE_WAY_0_100": 30.0, + "CHANCE_TO_SHOOT_DEADBODY": 52, + "SUSPETION_PLACE_LIFETIME": 7.0, + "RESERVE_OUT_TIME": 60.0, + "CLOSE_TO_SELECT_RESERV_WAY": 25.0, + "MAX_YDIST_TO_START_WARN_REQUEST_TO_REQUESTER": 5.0, + "CAN_CHECK_MAGAZINE": false, + "CAN_WATCH_SECOND_WEAPON": true + }, + "Hearing": { + "BOT_CLOSE_PANIC_DIST": 1.0, + "CHANCE_TO_HEAR_SIMPLE_SOUND_0_1": 0.88, + "DISPERSION_COEF": 10.0, + "CLOSE_DIST": 26.0, + "FAR_DIST": 56.0, + "SOUND_DIR_DEEFREE": 30.0, + "DIST_PLACE_TO_FIND_POINT": 70.0, + "DEAD_BODY_SOUND_RAD": 30.0, + "LOOK_ONLY_DANGER": false, + "RESET_TIMER_DIST": 17.0, + "HEAR_DELAY_WHEN_PEACE": 0.0, + "HEAR_DELAY_WHEN_HAVE_SMT": 0.0, + "LOOK_ONLY_DANGER_DELTA": 9.0 + }, + "Mind": { + "MIN_SHOOTS_TIME": 2, + "MAX_SHOOTS_TIME": 4, + "TIME_TO_RUN_TO_COVER_CAUSE_SHOOT_SEC": 15.0, + "DAMAGE_REDUCTION_TIME_SEC": 20.0, + "MIN_DAMAGE_SCARE": 20.0, + "CHANCE_TO_RUN_CAUSE_DAMAGE_0_100": 35.0, + "TIME_TO_FORGOR_ABOUT_ENEMY_SEC": 52.0, + "TIME_TO_FIND_ENEMY": 22.0, + "MAX_AGGRO_BOT_DIST": 100.0, + "HIT_POINT_DETECTION": 4.0, + "DANGER_POINT_CHOOSE_COEF": 1.0, + "SIMPLE_POINT_CHOOSE_COEF": 0.4, + "LASTSEEN_POINT_CHOOSE_COEF": 0.2, + "COVER_DIST_COEF": 1.5, + "DIST_TO_FOUND_SQRT": 400.0, + "MAX_AGGRO_BOT_DIST_SQR": 10000.0, + "DIST_TO_STOP_RUN_ENEMY": 15.0, + "ENEMY_LOOK_AT_ME_ANG": 15.0, + "MIN_START_AGGRESION_COEF": 1.0, + "MAX_START_AGGRESION_COEF": 3.0, + "BULLET_FEEL_DIST": 360.0, + "BULLET_FEEL_CLOSE_SDIST": 1.0, + "ATTACK_IMMEDIATLY_CHANCE_0_100": 40.0, + "CHANCE_FUCK_YOU_ON_CONTACT_100": 0.01, + "FRIEND_DEAD_AGR_LOW": -0.2, + "FRIEND_AGR_KILL": 0.2, + "LAST_ENEMY_LOOK_TO": 40.0, + "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": false, + "CAN_RECEIVE_PLAYER_REQUESTS_BEAR": false, + "CAN_RECEIVE_PLAYER_REQUESTS_USEC": false, + "CAN_USE_MEDS": true, + "SUSPETION_POINT_CHANCE_ADD100": 0.0, + "AMBUSH_WHEN_UNDER_FIRE": true, + "AMBUSH_WHEN_UNDER_FIRE_TIME_RESIST": 60.0, + "ATTACK_ENEMY_IF_PROTECT_DELTA_LAST_TIME_SEEN": 1.5, + "HOLD_IF_PROTECT_DELTA_LAST_TIME_SEEN": 8.5, + "FIND_COVER_TO_GET_POSITION_WITH_SHOOT": 2.0, + "PROTECT_TIME_REAL": true, + "CHANCE_SHOOT_WHEN_WARN_PLAYER_100": 25.0, + "CAN_PANIC_IS_PROTECT": false, + "NO_RUN_AWAY_FOR_SAFE": true, + "PART_PERCENT_TO_HEAL": 0.65, + "PROTECT_DELTA_HEAL_SEC": 10.0, + "CAN_STAND_BY": false, + "CAN_THROW_REQUESTS": true, + "GROUP_ANY_PHRASE_DELAY": 5.0, + "GROUP_EXACTLY_PHRASE_DELAY": 20.0, + "DIST_TO_ENEMY_YO_CAN_HEAL": 30.0, + "CHANCE_TO_STAY_WHEN_WARN_PLAYER_100": 80.0, + "DOG_FIGHT_OUT": 6.0, + "DOG_FIGHT_IN": 3.0, + "SHOOT_INSTEAD_DOG_FIGHT": 9.0, + "PISTOL_SHOTGUN_AMBUSH_DIST": 30.0, + "STANDART_AMBUSH_DIST": 100.0, + "AI_POWER_COEF": 120.0, + "COVER_SECONDS_AFTER_LOSE_VISION": 10.0, + "COVER_SELF_ALWAYS_IF_DAMAGED": false, + "SEC_TO_MORE_DIST_TO_RUN": 10.0, + "HEAL_DELAY_SEC": 5.0, + "AGGRESSOR_LOYALTY_BONUS": 0.0, + "HIT_DELAY_WHEN_HAVE_SMT": -1.0, + "HIT_DELAY_WHEN_PEACE": -1.0, + "TALK_WITH_QUERY": true, + "DEFAULT_SAVAGE_BEHAVIOUR": "Warn", + "DEFAULT_BEAR_BEHAVIOUR": "Attack", + "DEFAULT_USEC_BEHAVIOUR": "Attack", + "FRIENDLY_BOT_TYPES": [], + "WARN_BOT_TYPES": ["assault"], + "ENEMY_BOT_TYPES": [], + "REVENGE_BOT_TYPES": ["pmcBot", "gifter"], + "REVENGE_FOR_SAVAGE_PLAYERS": false + }, + "Boss": { + "BOSS_DIST_TO_WARNING": 25.0, + "BOSS_DIST_TO_WARNING_SQRT": 625.0, + "BOSS_DIST_TO_WARNING_OUT": 30.0, + "BOSS_DIST_TO_WARNING_OUT_SQRT": 900.0, + "BOSS_DIST_TO_SHOOT": 7.0, + "BOSS_DIST_TO_SHOOT_SQRT": 49.0, + "CHANCE_TO_SEND_GRENADE_100": 100.0, + "MAX_DIST_COVER_BOSS": 65.0, + "MAX_DIST_COVER_BOSS_SQRT": 4225.0, + "MAX_DIST_DECIDER_TO_SEND": 35.0, + "MAX_DIST_DECIDER_TO_SEND_SQRT": 1225.0, + "TIME_AFTER_LOSE": 15.0, + "TIME_AFTER_LOSE_DELTA": 60.0, + "PERSONS_SEND": 2, + "DELTA_SEARCH_TIME": 18.0, + "COVER_TO_SEND": true, + "WAIT_NO_ATTACK_SAVAGE": 10.0, + "CHANCE_USE_RESERVE_PATROL_100": 30.0, + "KILLA_Y_DELTA_TO_BE_ENEMY_BOSS": 5.0, + "KILLA_DITANCE_TO_BE_ENEMY_BOSS": 45.0, + "KILLA_START_SEARCH_SEC": 40.0, + "KILLA_CONTUTION_TIME": 5.0, + "KILLA_CLOSE_ATTACK_DIST": 8.0, + "KILLA_MIDDLE_ATTACK_DIST": 22.0, + "KILLA_LARGE_ATTACK_DIST": 41.0, + "KILLA_SEARCH_METERS": 30.0, + "KILLA_DEF_DIST_SQRT": 225.0, + "KILLA_SEARCH_SEC_STOP_AFTER_COMING": 25.0, + "KILLA_DIST_TO_GO_TO_SUPPRESS": 6.0, + "KILLA_AFTER_GRENADE_SUPPRESS_DELAY": 2.0, + "KILLA_CLOSEATTACK_TIMES": 3, + "KILLA_CLOSEATTACK_DELAY": 10.0, + "KILLA_HOLD_DELAY": 5.0, + "KILLA_BULLET_TO_RELOAD": 15, + "SHALL_WARN": true, + "KILLA_ENEMIES_TO_ATTACK": 3, + "KILLA_ONE_IS_CLOSE": 30.0, + "KILLA_TRIGGER_DOWN_DELAY": 1.0, + "KILLA_WAIT_IN_COVER_COEF": 1.0 + }, + "Core": { + "VisibleAngle": 160.0, + "VisibleDistance": 142.0, + "GainSightCoef": 0.1, + "ScatteringPerMeter": 0.045, + "ScatteringClosePerMeter": 0.12, + "DamageCoeff": 1.0, + "HearingSense": 2.9, + "CanRun": true, + "CanGrenade": true, + "AimingType": "normal", + "PistolFireDistancePref": 35.0, + "ShotgunFireDistancePref": 50.0, + "RifleFireDistancePref": 100.0, + "AccuratySpeed": 0.2, + "WaitInCoverBetweenShotsSec": 0.3 + }, + "Scattering": { + "MinScatter": 0.03, + "WorkingScatter": 0.15, + "MaxScatter": 0.4, + "SpeedUp": 0.3, + "SpeedUpAim": 1.4, + "SpeedDown": -0.3, + "ToSlowBotSpeed": 1.5, + "ToLowBotSpeed": 2.4, + "ToUpBotSpeed": 3.6, + "MovingSlowCoef": 1.5, + "ToLowBotAngularSpeed": 80.0, + "ToStopBotAngularSpeed": 40.0, + "FromShot": 0.001, + "TracerCoef": 1.3, + "HandDamageScatteringMinMax": 0.7, + "HandDamageAccuracySpeed": 1.3, + "BloodFall": 1.45, + "Caution": 0.3, + "ToCaution": 0.6, + "RecoilControlCoefShootDone": 0.0003, + "RecoilControlCoefShootDoneAuto": 0.00015, + "AMPLITUDE_FACTOR": 0.25, + "AMPLITUDE_SPEED": 0.1, + "DIST_FROM_OLD_POINT_TO_NOT_AIM": 15.0, + "DIST_FROM_OLD_POINT_TO_NOT_AIM_SQRT": 225.0, + "DIST_NOT_TO_SHOOT": 0.3, + "PoseChnageCoef": 0.1, + "LayFactor": 0.1, + "RecoilYCoef": 0.0005, + "RecoilYCoefSppedDown": -0.52, + "RecoilYMax": 1.0 + } +} \ No newline at end of file diff --git a/Generator/Assets/normal_bossZryachiy_BotGlobalSettings.txt b/Generator/Assets/normal_bossZryachiy_BotGlobalSettings.txt index ea756f1..87c1bae 100644 --- a/Generator/Assets/normal_bossZryachiy_BotGlobalSettings.txt +++ b/Generator/Assets/normal_bossZryachiy_BotGlobalSettings.txt @@ -111,6 +111,7 @@ }, "Shoot": { "RECOIL_TIME_NORMALIZE": 1.0, + "NO_OFFSET_SHOOTING_FROM_PLAYER": true, "RECOIL_PER_METER": 0.01, "MAX_RECOIL_PER_METER": 0.02, "HORIZONT_RECOIL_COEF": 0.02, diff --git a/Generator/Assets/normal_followerZryachiy_BotGlobalSettings.txt b/Generator/Assets/normal_followerZryachiy_BotGlobalSettings.txt index 24fe5c5..e4927a0 100644 --- a/Generator/Assets/normal_followerZryachiy_BotGlobalSettings.txt +++ b/Generator/Assets/normal_followerZryachiy_BotGlobalSettings.txt @@ -112,6 +112,7 @@ "Shoot": { "RECOIL_TIME_NORMALIZE": 1.0, "RECOIL_PER_METER": 0.02, + "NO_OFFSET_SHOOTING_FROM_PLAYER": true, "MAX_RECOIL_PER_METER": 0.04, "HORIZONT_RECOIL_COEF": 0.04, "WAIT_NEXT_SINGLE_SHOT": 0.2, diff --git a/Generator/Assets/normal_marksman_BotGlobalSettings.txt b/Generator/Assets/normal_marksman_BotGlobalSettings.txt index 5c0d369..bbeaf23 100644 --- a/Generator/Assets/normal_marksman_BotGlobalSettings.txt +++ b/Generator/Assets/normal_marksman_BotGlobalSettings.txt @@ -342,7 +342,7 @@ "FRIEND_DEAD_AGR_LOW": -0.2, "FRIEND_AGR_KILL": 0.2, "LAST_ENEMY_LOOK_TO": 40.0, - "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": true, + "CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE": false, "CAN_RECEIVE_PLAYER_REQUESTS_BEAR": false, "CAN_RECEIVE_PLAYER_REQUESTS_USEC": false, "CAN_USE_MEDS": true, diff --git a/Generator/Generator.csproj b/Generator/Generator.csproj index 0f41044..26596bd 100644 --- a/Generator/Generator.csproj +++ b/Generator/Generator.csproj @@ -16,6 +16,7 @@ + @@ -174,4 +175,10 @@ + + + Always + + + diff --git a/UniqueTemplates/Extensions/Bot.cs b/UniqueTemplates/Extensions/Bot.cs deleted file mode 100644 index 43301e1..0000000 --- a/UniqueTemplates/Extensions/Bot.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Common.Models.Input; -using System.Collections.Generic; -using System.Linq; - -namespace UniqueTemplates.Extensions -{ - public static class BotExtensions - { - public static bool ContainsBot(this List list, Datum botToCheck) - { - foreach (var bot in list) - { - var botGear = GetEquippedGear(bot); - if (botGear.CheckMatch(botToCheck.GetEquippedGear())) - { - return true; - } - } - - return false; - } - - public static EquippedGear GetEquippedGear(this Datum bot) - { - return new EquippedGear - { - ArmorVest = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "ArmorVest"), - Backpack = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Backpack"), - Eyewear = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Eyewear"), - FaceCover = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "FaceCover"), - FirstPrimaryWeapon = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "FirstPrimaryWeapon"), - Headwear = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Headwear"), - Scabbard = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Scabbard"), - TacticalVest = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "TacticalVest"), - }; - } - - private static string GeEquipmentItemTemplateIdOrNull(List inventoryItems, string itemTypeWanted) - { - var item = inventoryItems.FirstOrDefault(x => x.slotId == itemTypeWanted); - if (item == null) - { - return null; - } - - return item._tpl; - } - - public class EquippedGear - { - public string FirstPrimaryWeapon { get; set; } - public string TacticalVest { get; set; } - public string Headwear { get; set; } - public string Scabbard { get; set; } - public string Backpack { get; set; } - public string ArmorVest { get; set; } - public string FaceCover { get; set; } - public string Eyewear { get; set; } - - public bool CheckMatch(EquippedGear gearToCheck) - { - if (gearToCheck.FirstPrimaryWeapon == FirstPrimaryWeapon - && gearToCheck.TacticalVest == TacticalVest - && gearToCheck.Headwear == Headwear - && gearToCheck.Scabbard == Scabbard - && gearToCheck.Backpack == Backpack - && gearToCheck.ArmorVest == ArmorVest - && gearToCheck.FaceCover == FaceCover - && gearToCheck.Eyewear == Eyewear) - { - return true; - } - - return false; - } - } - } -}