diff --git a/maps/biter_battles_v2/ai.lua b/maps/biter_battles_v2/ai.lua index 821b99d5..38c14ee0 100644 --- a/maps/biter_battles_v2/ai.lua +++ b/maps/biter_battles_v2/ai.lua @@ -155,11 +155,18 @@ local function ignore_pvp(event) end --Biter Evasion +local random_max = 10000 + +local function get_evade_chance(force_name) + return random_max - (random_max / global.bb_evasion[force_name]) +end + local function evade(event) if not event.entity.valid then return end - if event.entity.type ~= "unit" then return end - if global.bb_evasion[event.entity.force.name] < math_random(1,1000) then return end - event.entity.health = event.entity.health + event.final_damage_amount + if not global.bb_evasion[event.entity.force.name] then return end + if event.final_damage_amount > event.entity.prototype.max_health * global.bb_evasion[event.entity.force.name] then return end + if math_random(1, random_max) > get_evade_chance(event.entity.force.name) then return end + event.entity.health = event.entity.health + event.final_damage_amount end local function on_entity_damaged(event) diff --git a/maps/biter_battles_v2/biter_battles_v2.lua b/maps/biter_battles_v2/biter_battles_v2.lua index 0ffbd804..73bc08fb 100644 --- a/maps/biter_battles_v2/biter_battles_v2.lua +++ b/maps/biter_battles_v2/biter_battles_v2.lua @@ -122,7 +122,6 @@ local function init_forces() global.spectator_rejoin_delay = {} global.spy_fish_timeout = {} global.force_area = {} - global.bb_total_food = {} global.bb_evolution = {} global.bb_evasion = {} global.bb_threat_income = {} @@ -138,9 +137,8 @@ local function init_forces() game.forces[force.name].set_ammo_damage_modifier("shotgun-shell", 1) game.forces[force.name].research_queue_enabled = true global.spy_fish_timeout[force.name] = 0 - global.bb_total_food[force.name] = 0 global.bb_evolution[force.name] = 0 - global.bb_evasion[force.name] = 0 + global.bb_evasion[force.name] = false global.bb_threat_income[force.name] = 0 global.bb_threat[force.name] = 0 end diff --git a/maps/biter_battles_v2/feeding.lua b/maps/biter_battles_v2/feeding.lua index 4ab55115..e58faebc 100644 --- a/maps/biter_battles_v2/feeding.lua +++ b/maps/biter_battles_v2/feeding.lua @@ -18,15 +18,18 @@ local enemy_team_of = { ["south"] = "north" } -local function set_biter_endgame_damage(force_name, biter_force) - if biter_force.evolution_factor ~= 1 then return end - local m = (math.ceil(global.bb_evolution[force_name] * 100) / 100) - 1 - m = m * 3 - biter_force.set_ammo_damage_modifier("melee", m) - biter_force.set_ammo_damage_modifier("biological", m) - biter_force.set_ammo_damage_modifier("artillery-shell", m) - biter_force.set_ammo_damage_modifier("flamethrower", m) - biter_force.set_ammo_damage_modifier("laser-turret", m) +local function set_biter_endgame_modifiers(force) + if force.evolution_factor ~= 1 then return end + local damage_mod = (global.bb_evolution[force.name] - 1) * 2 + local evasion_mod = ((global.bb_evolution[force.name] - 1) * 2) + 1 + + force.set_ammo_damage_modifier("melee", damage_mod) + force.set_ammo_damage_modifier("biological", damage_mod) + force.set_ammo_damage_modifier("artillery-shell", damage_mod) + force.set_ammo_damage_modifier("flamethrower", damage_mod) + force.set_ammo_damage_modifier("laser-turret", damage_mod) + + global.bb_evasion[force.name] = evasion_mod end local function feed_biters(player, food) @@ -54,8 +57,6 @@ local function feed_biters(player, food) end end - --ADD TOTAL FOOD FEED - --global.bb_total_food[biter_force_name] = global.bb_total_food[biter_force_name] + (food_values[food].value * flask_amount) local decimals = 12 local math_round = math.round @@ -68,7 +69,7 @@ local function feed_biters(player, food) ---SET EVOLUTION local e2 = (game.forces[biter_force_name].evolution_factor * 100) + 1 - local diminishing_modifier = (1 / (10 ^ (e2 * 0.016))) / (e2 * 0.5) + local diminishing_modifier = (1 / (10 ^ (e2 * 0.017))) / (e2 * 0.5) local evo_gain = (food_values[food].value * diminishing_modifier) global.bb_evolution[biter_force_name] = global.bb_evolution[biter_force_name] + evo_gain global.bb_evolution[biter_force_name] = math_round(global.bb_evolution[biter_force_name], decimals) @@ -76,21 +77,15 @@ local function feed_biters(player, food) game.forces[biter_force_name].evolution_factor = global.bb_evolution[biter_force_name] else game.forces[biter_force_name].evolution_factor = 1 - - --SET EVASION - local e3 = global.bb_evasion[biter_force_name] + 1 - local diminishing_modifier = 1 / (0.05 + (e3 * 0.0005)) - global.bb_evasion[biter_force_name] = global.bb_evasion[biter_force_name] + 125 * evo_gain * diminishing_modifier - global.bb_evasion[biter_force_name] = math_round(global.bb_evasion[biter_force_name], decimals) - if global.bb_evasion[biter_force_name] > 950 then global.bb_evasion[biter_force_name] = 950 end end --ADD INSTANT THREAT local diminishing_modifier = 1 / (0.2 + (e2 * 0.018)) - global.bb_threat[biter_force_name] = global.bb_threat[biter_force_name] + (food_values[food].value * 200 * diminishing_modifier) + global.bb_threat[biter_force_name] = global.bb_threat[biter_force_name] + (food_values[food].value * 175 * diminishing_modifier) global.bb_threat[biter_force_name] = math_round(global.bb_threat[biter_force_name], decimals) - end - set_biter_endgame_damage(biter_force_name, game.forces[biter_force_name]) + end + + set_biter_endgame_modifiers(game.forces[biter_force_name]) end return feed_biters \ No newline at end of file