diff --git a/mods/ctf/ctf/teams.lua b/mods/ctf/ctf/teams.lua index 426c98a..b13d7ea 100644 --- a/mods/ctf/ctf/teams.lua +++ b/mods/ctf/ctf/teams.lua @@ -437,86 +437,6 @@ minetest.register_on_joinplayer(function(player) end end) -local kill_assists = {} -function ctf.clear_assists(victim) - if kill_assists[victim] and kill_assists[victim]["is_empty"] then - return - end - kill_assists[victim] = {} - kill_assists[victim]["is_empty"] = true - kill_assists[victim]["players"] = {} -end - -function ctf.add_assist(victim, attacker, damage)-- player names - kill_assists[victim]["players"][attacker] = (kill_assists[victim]["players"][attacker] or 0) + damage - kill_assists[victim]["is_empty"] = false -end - -function ctf.add_heal_assist(victim, healed_hp) - if kill_assists[victim] and kill_assists[victim]["is_empty"] then - return - end - if not kill_assists[victim] then - ctf.clear_assists(victim) - end - for name, damage in pairs(kill_assists[victim]["players"]) do - kill_assists[victim]["players"][name] = math.max(damage - healed_hp, 0) - end -end - -function ctf.reward_assists(victim, killer, reward, is_suicide) - local hitLength = 0 - for a,b in pairs(kill_assists[victim]["players"]) do - hitLength = hitLength + 1 - end - - if hitLength > 0 then - for name, damage in pairs(kill_assists[victim]["players"]) do - local playerExists = minetest.get_player_by_name(name) - if playerExists and name ~= victim then - local hpClass = { - knight = 30, - shooter = 16, - medic = 20 - } - local victimClass = minetest.get_player_by_name(victim):get_meta():to_table().fields["ctf_classes:class"] - local playerHP_max = (hpClass[victimClass] or hpClass.shooter)-8 - local standard = 0 - local percentofhelp = damage / playerHP_max - if name ~= killer then - standard = 0.5 - percentofhelp = math.min(percentofhelp, 0.75) - else - percentofhelp = math.min(percentofhelp, 1) - end - if percentofhelp >= standard then - local main, match = ctf_stats.player(name) - local newReward = math.floor((reward * percentofhelp)*100)/100 - match.score = match.score + newReward - main.score = main.score + newReward - if newReward < 1 then - newReward = 1 - end - local colour = "0x00FFFF" - if name == killer then - colour = "0x00FF00" - main.kills = main.kills + 1 - match.kills = match.kills + 1 - match.kills_since_death = match.kills_since_death + 1 - end - local _ = hud_score.new(name, { - name = "ctf_stats:kill_score", - color = colour, - value = newReward - }) - end - end - end - end - ctf_stats.request_save() - ctf.clear_assists(victim) -end - -- Disable friendly fire. ctf.registered_on_killedplayer = {} function ctf.register_on_killedplayer(func) @@ -553,8 +473,6 @@ minetest.register_on_punchplayer(function(player, hitter, end end - ctf.add_assist(pname, hname, damage) - local hp = player:get_hp() if hp == 0 then return false diff --git a/mods/ctf/ctf_bandages/init.lua b/mods/ctf/ctf_bandages/init.lua index aca70b1..a6a4bec 100644 --- a/mods/ctf/ctf_bandages/init.lua +++ b/mods/ctf/ctf_bandages/init.lua @@ -24,9 +24,7 @@ minetest.register_craftitem("ctf_bandages:bandage", { local limit = ctf_bandages.heal_percent * object:get_properties().hp_max if hp > 0 and hp < limit then - local hp_add = math.random(3,4) - ctf.add_heal_assist(pname, hp_add) - hp = hp + hp_add + hp = hp + math.random(3,4) if hp > limit then hp = limit end diff --git a/mods/ctf/ctf_stats/init.lua b/mods/ctf/ctf_stats/init.lua index d656622..19c4a07 100644 --- a/mods/ctf/ctf_stats/init.lua +++ b/mods/ctf/ctf_stats/init.lua @@ -418,9 +418,28 @@ local function calculateKillReward(victim, killer, toolcaps) end ctf.register_on_killedplayer(function(victim, killer, _, toolcaps) - local reward = calculateKillReward(victim, killer, toolcaps) - reward = math.floor(reward * 100) / 100 - ctf.reward_assists(victim, killer, reward, (victim == killer)) + -- Suicide is not encouraged here at CTF + if victim == killer then + return + end + local main, match = ctf_stats.player(killer) + if main and match then + local reward = calculateKillReward(victim, killer, toolcaps) + main.kills = main.kills + 1 + main.score = main.score + reward + match.kills = match.kills + 1 + match.score = match.score + reward + match.kills_since_death = match.kills_since_death + 1 + _needs_save = true + + reward = math.floor(reward * 100) / 100 + + hud_score.new(killer, { + name = "ctf_stats:kill_score", + color = "0x00FF00", + value = reward + }) + end end) minetest.register_on_dieplayer(function(player) diff --git a/mods/mtg/wool/init.lua b/mods/mtg/wool/init.lua index fa6b569..a969e0c 100644 --- a/mods/mtg/wool/init.lua +++ b/mods/mtg/wool/init.lua @@ -29,7 +29,7 @@ for i = 1, #dyes do is_ground_content = false, groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, flammable = 3, wool = 1}, - sounds = default.node_sound_defaults(), + sounds = default.node_sound_dirt_defaults(), }) end diff --git a/mods/pvp/anticoward/init.lua b/mods/pvp/anticoward/init.lua index 474a171..1dc70ec 100644 --- a/mods/pvp/anticoward/init.lua +++ b/mods/pvp/anticoward/init.lua @@ -153,7 +153,6 @@ minetest.register_globalstep(function(dtime) if player then player:hud_remove(potential_cowards[k].hud or 0) - ctf.clear_assists(k) end potential_cowards[k] = nil diff --git a/mods/pvp/hpregen/init.lua b/mods/pvp/hpregen/init.lua index e0d830b..3b83e7e 100644 --- a/mods/pvp/hpregen/init.lua +++ b/mods/pvp/hpregen/init.lua @@ -16,10 +16,8 @@ local function regen_all() local newhp = oldhp + hpregen.amount if newhp > player:get_properties().hp_max then newhp = player:get_properties().hp_max - ctf.clear_assists(player:get_player_name()) end if oldhp ~= newhp then - ctf.add_heal_assist(player:get_player_name(), hpregen.amount) player:set_hp(newhp) end end diff --git a/mods/pvp/medkits/init.lua b/mods/pvp/medkits/init.lua index 1db40ca..a9f6c11 100644 --- a/mods/pvp/medkits/init.lua +++ b/mods/pvp/medkits/init.lua @@ -117,7 +117,6 @@ minetest.register_globalstep(function(dtime) if pstat then local hp = player:get_hp() if hp < pstat.regen_max then - ctf.add_heal_assist(name, regen_step) player:set_hp(math.min(hp + regen_step, pstat.regen_max)) else stop_healing(player)