From 874064afe022cc7b2d2de790464d4eddba8da2cb Mon Sep 17 00:00:00 2001 From: hanakocz <hanakocz@users.noreply.github.com> Date: Sun, 19 Jul 2020 16:43:56 +0200 Subject: [PATCH] rpg - personal tax variable + health bonused units always grant bonus xp --- modules/rpg_v2.lua | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/modules/rpg_v2.lua b/modules/rpg_v2.lua index d30d3a67..3d8b410d 100644 --- a/modules/rpg_v2.lua +++ b/modules/rpg_v2.lua @@ -32,6 +32,7 @@ local rpg_extra = { reward_new_players = 0, level_limit_enabled = false, global_pool = 0, + personal_tax_rate = 0.3, leftover_pool = 0, turret_kills_to_global_pool = true, difficulty = false, @@ -659,12 +660,16 @@ local function level_up(player) level_up_effects(player) end -local function add_to_global_pool(amount) +local function add_to_global_pool(amount, personal_tax) if not rpg_extra.global_pool then return end - - local fee = amount * 0.3 + local fee + if personal_tax then + fee = amount * rpg_extra.personal_tax_rate + else + fee = amount * 0.3 + end rpg_extra.global_pool = rpg_extra.global_pool + fee return fee @@ -903,10 +908,10 @@ local function on_entity_died(event) local amount = rpg_xp_yield[event.entity.name] amount = amount / 5 if rpg_extra.turret_kills_to_global_pool then - add_to_global_pool(amount) + add_to_global_pool(amount, false) end else - add_to_global_pool(0.5) + add_to_global_pool(0.5, false) end return end @@ -933,20 +938,23 @@ local function on_entity_died(event) --Grant modified XP for health boosted units if global.biter_health_boost then if enemy_types[event.entity.type] then + local health_pool = global.biter_health_boost_units[event.entity.unit_number] + if health_pool then for _, player in pairs(players) do if rpg_xp_yield[event.entity.name] then - local amount = rpg_xp_yield[event.entity.name] * global.biter_health_boost + local amount = rpg_xp_yield[event.entity.name] * (1 / health_pool[2]) if rpg_extra.turret_kills_to_global_pool then - local inserted = add_to_global_pool(amount) + local inserted = add_to_global_pool(amount, true) Public.gain_xp(player, inserted, true) else Public.gain_xp(player, amount) end else - Public.gain_xp(player, 0.5 * global.biter_health_boost) + Public.gain_xp(player, 0.5 * (1 / health_pool[2])) end end return + end end end @@ -955,7 +963,7 @@ local function on_entity_died(event) if rpg_xp_yield[event.entity.name] then local amount = rpg_xp_yield[event.entity.name] if rpg_extra.turret_kills_to_global_pool then - local inserted = add_to_global_pool(amount) + local inserted = add_to_global_pool(amount, true) Public.gain_xp(player, inserted, true) else Public.gain_xp(player, amount) @@ -1413,7 +1421,7 @@ end function Public.gain_xp(player, amount, added_to_pool, text) if level_limit_exceeded(player) then - add_to_global_pool(amount) + add_to_global_pool(amount, false) if not rpg_t[player.index].capped then rpg_t[player.index].capped = true local message = teller_level_limit .. 'You have hit the max level for the current zone.' @@ -1430,7 +1438,7 @@ function Public.gain_xp(player, amount, added_to_pool, text) if not added_to_pool then Public.debug_log('RPG - ' .. player.name .. ' got org xp: ' .. amount) - local fee = add_to_global_pool(amount) + local fee = add_to_global_pool(amount, true) Public.debug_log('RPG - ' .. player.name .. ' got fee: ' .. fee) amount = math.round(amount, 3) - fee if rpg_extra.difficulty then