Add bomb
@ -2,7 +2,7 @@
|
||||
|
||||
## Mechanics
|
||||
### Critical hits
|
||||
Hitting players to their head with a raycast attack results in a critical hit (it can't be done with e.g. melee attacks for now, due to MT limitations).
|
||||
Hitting players to their head with a raycast attack results in a critical hit (it can't be done with e.g. melee attacks for now, due to LT limitations).
|
||||
|
||||
The formula is
|
||||
```
|
||||
@ -25,14 +25,44 @@ As a general rule, every player metadata is set to `0` when entering the arena a
|
||||
* set to `0` when successfully shooting (+ general rule)
|
||||
* set to `1` when dying and when the celebration phase starts
|
||||
|
||||
## Custom entity properties
|
||||
Block League entities use specific fields, which are all `nil` by default
|
||||
## Custom Properties
|
||||
Block League weapons, actions and entities use specific fields, which are all `nil` by default
|
||||
|
||||
### Weapon properties
|
||||
|
||||
* `_profile_description`: (string) the description that appears when selecting the weapon in the Block League profile
|
||||
|
||||
#### Action properties
|
||||
|
||||
* `_description`: (string) describes the action when selecting the weapon in the Block League profile
|
||||
* `_friendly_fire`: (boolean) whether it should hurt your team (including yourself) as well
|
||||
* `_friendly_dmg_perc`: (float) how much damage should deal in percentage, in case `_friendly_fire` is `true`. Range `0-1`
|
||||
|
||||
### Entity properties
|
||||
Shared:
|
||||
|
||||
* `_teamID`: (int) the ID of the team the entity belongs to
|
||||
|
||||
#### Stand-alone weapons
|
||||
(As for now, sentry guns)
|
||||
|
||||
* `_name`: (string) the name of the entity. Used to display it in the kill log
|
||||
* `_loggable`: (boolean) whether the entity, once destroyed, shall appear in the kill log
|
||||
* `_owner`: (string) who owns the entity, e.g. sentry guns
|
||||
* `_can_be_targeted`: (boolean) whether the entity can be hit by stand-alone weapons such as sentries
|
||||
* `_no_knockback`: (boolean) whether the weapon is subject to weapons' knocback. It requires `_can_be_targeted`
|
||||
* `_dmg_received`: (table) tracks the damage dealt by every player and targettable entity, same as in the arena player property with the same name. Format `[p_name/p_name@ent._name] = {dmg, timestamp}`
|
||||
* `_kill`: (function(self, killer)) custom actions to run when the entity is killed
|
||||
* `_is_dying`: (boolean) whether the entity is dying. Used by `_kill`, hp are set to 1 in meanwhile
|
||||
|
||||
Each entity can then feature its unique fields
|
||||
|
||||
* Sentry guns: `_is_spawning`, `_arena`
|
||||
|
||||
#### Bullets
|
||||
|
||||
Unique fields
|
||||
|
||||
* Bombs: `_collided`, `_ignited`
|
||||
|
||||
* `_name`: the name of the entity. Used to display it in the kill log
|
||||
* `_loggable`: whether the entity, once destroyed, shall appear in the kill log
|
||||
* `_is_targettable`: whether the entity can be hit by stand-alone weapons such as sentries
|
||||
* `_no_knockback`: whether the weapon is subject to weapons' knocback. It requires `_is_targettable`
|
||||
* `_dmg_received`: table tracking the damage dealt by every player and targettable entity, same as in the arena player property with the same name. Format `[p_name/p_name@ent._name] = {dmg, timestamp}`
|
||||
* `_kill(self, killer)`: custom actions to run when the entity is killed
|
||||
* `_is_dying`: whether the entity is dying. Used by `_kill`, hp are set to 1 in meanwhile
|
||||
|
||||
|
@ -5,6 +5,8 @@ CC BY-SA 4.0
|
||||
bl_tutorial_sentry_explosion by Giov4
|
||||
all the rest by Zughy
|
||||
|
||||
CC0
|
||||
bl_bomb_smoke.png by Giov4
|
||||
|
||||
|
||||
------------
|
||||
@ -23,6 +25,7 @@ Sounds
|
||||
(most audio files have been tweaked by Zughy)
|
||||
|
||||
CC BY 3.0
|
||||
bl_bomb_ignite.ogg by THE_bizniss
|
||||
bl_sentrygun_shoot.ogg by GreenFireSound, Francesco Corrado
|
||||
bl_hmg_shoot.ogg by tcpp (currently unused)
|
||||
bl_peacifier_shoot_ifitonlyworkedproperly.ogg by Michael Klier (currently unused, MT ruins the quality)
|
||||
@ -34,6 +37,7 @@ bl_voice_critical.ogg by EFlexMusic
|
||||
bl_voice_fight.ogg by EFlexMusic
|
||||
|
||||
CC BY 4.0
|
||||
bl_bomb_explosion.ogg by timgormly
|
||||
bl_crowd_ohno.ogg by dobroide
|
||||
bl_kunai_swing.* by Glaneur de sons
|
||||
bl_kunai_teleport.ogg by EminYILDIRIM
|
||||
@ -46,6 +50,7 @@ CC BY-SA 4.0
|
||||
bl_pixelgun_shoot.ogg by Francesco Corrado
|
||||
|
||||
CC0
|
||||
bl_bomb_throw.ogg by bay_area_bob
|
||||
bl_crowd_cheer.ogg by wangzhuokun
|
||||
bl_gui_equip_confirm.ogg by EminYILDIRIM
|
||||
bl_hit.ogg by cabled_mess
|
||||
|
@ -150,6 +150,7 @@ dofile(srcpath .. "/skills/sp+.lua")
|
||||
-- abstract weapons
|
||||
dofile(srcpath .. "/weapons/weapons_utils.lua")
|
||||
-- weapons
|
||||
dofile(srcpath .. "/weapons/bomb.lua")
|
||||
dofile(srcpath .. "/weapons/peacifier.lua")
|
||||
dofile(srcpath .. "/weapons/pixelgun.lua")
|
||||
dofile(srcpath .. "/weapons/propulsor.lua")
|
||||
|
@ -38,6 +38,9 @@ Spectators: @1=Zuschauer: @1
|
||||
|
||||
##[ src/_load.lua ]##
|
||||
Voices=Stimmen
|
||||
Bomb ignites=
|
||||
Bomb explodes=
|
||||
Bomb thrown=
|
||||
Crowd cheering=Publikum jubelt
|
||||
Sad crowd=Trauriges Publikum
|
||||
Confirmation sound=Bestätigungston
|
||||
@ -150,6 +153,11 @@ Expose yourself without any risk=Zeigen Sie sich ohne Risiko
|
||||
Increases your stamina points by 25 @1(100>125)=Erhöht ihre Ausdauerpunkte um 25 @1(100>125)
|
||||
Great choice for strikers, as it allows players to run more and perform tricks more often.=Gute Wahl für Stürmer, da dies Spielern erlaubt, mehr zu rennen und mehr Tricks durchzuführen.
|
||||
|
||||
##[ src/weapons/bomb.lua ]##
|
||||
Bomb=
|
||||
K A B O O M !=
|
||||
Throw, AoE damage. It dies with you, @1♥=
|
||||
|
||||
##[ src/weapons/entities/sentrygun_entity.lua ]##
|
||||
@1's Sentry Gun=Wachkanone von @1
|
||||
|
||||
|
@ -38,6 +38,9 @@ Spectators: @1=Espectadores: @1
|
||||
|
||||
##[ src/_load.lua ]##
|
||||
Voices=Voces
|
||||
Bomb ignites=
|
||||
Bomb explodes=
|
||||
Bomb thrown=
|
||||
Crowd cheering=Aplausos de la multitud
|
||||
Sad crowd=Multitud triste
|
||||
Confirmation sound=Sonido de confirmación
|
||||
@ -150,6 +153,11 @@ Expose yourself without any risk=Exponerte a ti mismo sin ningún riesgo
|
||||
Increases your stamina points by 25 @1(100>125)=Aumenta tu puntos de estamina en 25 @1(100>125)
|
||||
Great choice for strikers, as it allows players to run more and perform tricks more often.=Excelente para delanteros, ya que permite a los jugadores correr más y hacer más acrobacias.
|
||||
|
||||
##[ src/weapons/bomb.lua ]##
|
||||
Bomb=
|
||||
K A B O O M !=
|
||||
Throw, AoE damage. It dies with you, @1♥=
|
||||
|
||||
##[ src/weapons/entities/sentrygun_entity.lua ]##
|
||||
@1's Sentry Gun=Torreta de @1
|
||||
|
||||
|
@ -38,6 +38,9 @@ Spectators: @1=
|
||||
|
||||
##[ src/_load.lua ]##
|
||||
Voices=
|
||||
Bomb ignites=
|
||||
Bomb explodes=
|
||||
Bomb thrown=
|
||||
Crowd cheering=
|
||||
Sad crowd=
|
||||
Confirmation sound=
|
||||
@ -150,6 +153,11 @@ Expose yourself without any risk=
|
||||
Increases your stamina points by 25 @1(100>125)=Hozzáad az állóképességed 25-tel @1(100>125)
|
||||
Great choice for strikers, as it allows players to run more and perform tricks more often.=Nagyszerű választás csatároknak, mivel így a játékosok többet futhatnak és gyakrabban hajthatnak végre trükköket.
|
||||
|
||||
##[ src/weapons/bomb.lua ]##
|
||||
Bomb=
|
||||
K A B O O M !=
|
||||
Throw, AoE damage. It dies with you, @1♥=
|
||||
|
||||
##[ src/weapons/entities/sentrygun_entity.lua ]##
|
||||
@1's Sentry Gun=
|
||||
|
||||
|
@ -38,6 +38,9 @@ Spectators: @1=Spettanti: @1
|
||||
|
||||
##[ src/_load.lua ]##
|
||||
Voices=Voci
|
||||
Bomb ignites=Bomba si innesca
|
||||
Bomb explodes=Bomba esplode
|
||||
Bomb thrown=Lancio bomba
|
||||
Crowd cheering=Folla esulta
|
||||
Sad crowd=Folla si abbatte
|
||||
Confirmation sound=Suono di conferma
|
||||
@ -150,6 +153,11 @@ Expose yourself without any risk=Esponiti senza alcun rischio
|
||||
Increases your stamina points by 25 @1(100>125)=Aumenta i tuoi punti stamina di 25 @1(100>125)
|
||||
Great choice for strikers, as it allows players to run more and perform tricks more often.=Ottima scelta per le punte, poiché permette di correre di più ed eseguire più acrobazie.
|
||||
|
||||
##[ src/weapons/bomb.lua ]##
|
||||
Bomb=Bomba
|
||||
K A B O O M !=K A B U M !
|
||||
Throw, AoE damage. It dies with you, @1♥=Lancia, danno ad area. Muore con te, @1♥
|
||||
|
||||
##[ src/weapons/entities/sentrygun_entity.lua ]##
|
||||
@1's Sentry Gun=Torretta Autom. di @1
|
||||
|
||||
|
@ -38,6 +38,9 @@ Spectators: @1=Obserwatorzy: @1
|
||||
|
||||
##[ src/_load.lua ]##
|
||||
Voices=Głosy
|
||||
Bomb ignites=
|
||||
Bomb explodes=
|
||||
Bomb thrown=
|
||||
Crowd cheering=Tłum wiwatuje
|
||||
Sad crowd=Smutny tłum
|
||||
Confirmation sound=Dźwięk potwierdzenia
|
||||
@ -150,6 +153,11 @@ Expose yourself without any risk=
|
||||
Increases your stamina points by 25 @1(100>125)=Zwiększa punkty kondycji o 25 @1(100>125)
|
||||
Great choice for strikers, as it allows players to run more and perform tricks more often.=Dobry wybór dla napastników, ponieważ pozwala graczom biegać dłużej i częściej wykonywać sztuczki.
|
||||
|
||||
##[ src/weapons/bomb.lua ]##
|
||||
Bomb=
|
||||
K A B O O M !=
|
||||
Throw, AoE damage. It dies with you, @1♥=
|
||||
|
||||
##[ src/weapons/entities/sentrygun_entity.lua ]##
|
||||
@1's Sentry Gun=
|
||||
|
||||
|
@ -40,6 +40,9 @@ Spectators: @1=Наблюдатели: @1
|
||||
|
||||
##[ src/_load.lua ]##
|
||||
Voices=Голоса
|
||||
Bomb ignites=
|
||||
Bomb explodes=
|
||||
Bomb thrown=
|
||||
Crowd cheering=Аплодирует толпа
|
||||
Sad crowd=Грустит толпа
|
||||
Confirmation sound=Звук подтверждения
|
||||
@ -152,6 +155,11 @@ Expose yourself without any risk=Откройся без какого-либо
|
||||
Increases your stamina points by 25 @1(100>125)=Восстанавливает твою выносливость на 25 очков @1(100>125)
|
||||
Great choice for strikers, as it allows players to run more and perform tricks more often.=Хороший выбор для нападения, так как он позволяет игрокам бежать больше и делать трюки гораздо чаще.
|
||||
|
||||
##[ src/weapons/bomb.lua ]##
|
||||
Bomb=
|
||||
K A B O O M !=
|
||||
Throw, AoE damage. It dies with you, @1♥=
|
||||
|
||||
##[ src/weapons/entities/sentrygun_entity.lua ]##
|
||||
@1's Sentry Gun=Турель @1
|
||||
|
||||
|
@ -38,6 +38,9 @@ Spectators: @1=
|
||||
|
||||
##[ src/_load.lua ]##
|
||||
Voices=
|
||||
Bomb ignites=
|
||||
Bomb explodes=
|
||||
Bomb thrown=
|
||||
Crowd cheering=
|
||||
Sad crowd=
|
||||
Confirmation sound=
|
||||
@ -150,6 +153,11 @@ Expose yourself without any risk=
|
||||
Increases your stamina points by 25 @1(100>125)=
|
||||
Great choice for strikers, as it allows players to run more and perform tricks more often.=
|
||||
|
||||
##[ src/weapons/bomb.lua ]##
|
||||
Bomb=
|
||||
K A B O O M !=
|
||||
Throw, AoE damage. It dies with you, @1♥=
|
||||
|
||||
##[ src/weapons/entities/sentrygun_entity.lua ]##
|
||||
@1's Sentry Gun=
|
||||
|
||||
|
BIN
block_league/models/bl_bomb.glb
Normal file
BIN
block_league/sounds/bl_bomb_explosion.ogg
Normal file
BIN
block_league/sounds/bl_bomb_ignite.ogg
Normal file
BIN
block_league/sounds/bl_bomb_throw.ogg
Normal file
@ -89,7 +89,9 @@ function get_formspec(p_name)
|
||||
local right_elem = table.concat(info_section, "")
|
||||
local curr_achvmt_amnt = #achvmt_lib.get_player_achievements(p_name, {mod = "block_league"})
|
||||
local all_achvmt_amnt = achvmt_lib.get_amount({mod = "block_league"})
|
||||
local soon = minetest.check_player_privs(p_name, "blockleague_admin") and "image_button[6.35.10,1.11;0.85,0.85;bl_sentrygun.png;wslot;sentry_gun]" or
|
||||
local soon = minetest.check_player_privs(p_name, "blockleague_admin") and "image_button[6.35.10,1.11;0.85,0.85;bl_sentrygun.png;wslot;sentry_gun]" ..
|
||||
"image[0,2.2;1.05,1.05;bl_gui_profile_inv_weapon_unlocked.png]" .. "image_button[0.1,2.3;0.85,0.85;bl_bomb.png;wslot;bomb]"
|
||||
or
|
||||
"image[6.35,1.11;0.85,0.85;blank.png^[multiply:#777777]" ..
|
||||
"hypertext[6.28,1.05;0.95,0.95;soon_tm;<global size=13 halign=center valign=middle><style color=#abc0c0><b>" .. S("Soon") .. "</b>]"
|
||||
|
||||
|
@ -5,6 +5,9 @@ local S = minetest.get_translator("block_league")
|
||||
----------------------------------------------
|
||||
audio_lib.register_type("block_league", "voices", {mod = S("Block League"), type = S("Voices")})
|
||||
|
||||
audio_lib.register_sound("sfx", "bl_bomb_ignite", S("Bomb ignites"), {ephemeral = false}, 1.89)
|
||||
audio_lib.register_sound("sfx", "bl_bomb_explosion", S("Bomb explodes"), {gain = 2, pitch = 0.7})
|
||||
audio_lib.register_sound("sfx", "bl_bomb_throw", S("Bomb thrown"), {pitch = 0.85})
|
||||
audio_lib.register_sound("sfx", "bl_crowd_cheer", S("Crowd cheering"), nil, 2.95)
|
||||
audio_lib.register_sound("sfx", "bl_crowd_ohno", S("Sad crowd"), nil, 2.12)
|
||||
audio_lib.register_sound("sfx", "bl_gui_equip_confirm", S("Confirmation sound"))
|
||||
|
188
block_league/src/weapons/bomb.lua
Normal file
@ -0,0 +1,188 @@
|
||||
local S = minetest.get_translator("block_league")
|
||||
local dmg = 24
|
||||
|
||||
local function ignite_animation() end
|
||||
|
||||
local bomb_bullet = {
|
||||
initial_properties = {
|
||||
name = "block_league:bomb",
|
||||
visual = "mesh",
|
||||
mesh = "bl_bomb.glb",
|
||||
textures = {"bl_bomb_texture.png"},
|
||||
collisionbox = {-0.35, -0.35, -0.35, 0.35, 0.35, 0.35},
|
||||
visual_size = {x=5, y=5},
|
||||
|
||||
physical = true,
|
||||
collide_with_objects = false
|
||||
},
|
||||
|
||||
_collided = false,
|
||||
_ignited = false,
|
||||
_teamID = nil,
|
||||
|
||||
-- cambia texture a seconda del colore della squadra
|
||||
on_activate = function(self, staticdata)
|
||||
if not arena_lib.is_player_playing(self._p_name) then return end
|
||||
|
||||
self._teamID = arena_lib.get_teamID(self._p_name)
|
||||
|
||||
local col = self._teamID == 1 and "orange" or "blue"
|
||||
local bomb = self.object
|
||||
|
||||
bomb:set_properties({textures = {bomb:get_properties().textures[1] .. "^[colorize:" .. col .. ":85"}})
|
||||
end,
|
||||
|
||||
|
||||
on_step = function(self, dtime, moveresult)
|
||||
local owner = core.get_player_by_name(self._p_name)
|
||||
|
||||
-- distruggi se proprietariə muore
|
||||
if owner and owner:get_hp() <= 0 then
|
||||
for _, obj in ipairs(core.get_objects_inside_radius(self.object:get_pos(), 20)) do
|
||||
if obj:is_player() then
|
||||
audio_lib.stop_sound(obj:get_player_name(), "bl_bomb_ignite")
|
||||
end
|
||||
end
|
||||
|
||||
self:_destroy()
|
||||
end
|
||||
|
||||
if moveresult.collides then
|
||||
if not self._collided then
|
||||
self._collided = true
|
||||
ignite_animation(self)
|
||||
end
|
||||
end
|
||||
|
||||
if self._collided and not self._ignited then
|
||||
core.after(2, function()
|
||||
self:_destroy()
|
||||
end)
|
||||
self._ignited = true
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
|
||||
|
||||
weapons_lib.register_weapon("block_league:bomb", {
|
||||
description = S("Bomb"),
|
||||
_profile_description = S("K A B O O M !"),
|
||||
|
||||
mesh = "bl_bomb.glb",
|
||||
tiles = {"bl_bomb_texture.png"},
|
||||
wield_scale = {x=6.5, y=6.5, z=6.5},
|
||||
inventory_image = "bl_bomb.png",
|
||||
|
||||
weapon_type = "ranged",
|
||||
magazine = 1,
|
||||
limited_magazine = true, -- TODO: sarebbe carino se potessi averne due in tutto, con capienza max 1
|
||||
crosshair = "bl_bomb_crosshair.png",
|
||||
|
||||
can_use_weapon = function(player, action)
|
||||
return block_league.util_weapon_use_check(player)
|
||||
end,
|
||||
|
||||
can_alter_speed = function(player)
|
||||
return block_league.util_on_can_alter_speed(player:get_player_name())
|
||||
end,
|
||||
|
||||
on_after_hit = function(hitter, weapon, action, objects_hit, total_damage)
|
||||
block_league.util_on_after_hit(hitter, weapon, objects_hit, total_damage)
|
||||
end,
|
||||
|
||||
action1 = {
|
||||
type = "bullet",
|
||||
_description = S("Throw, AoE damage. It dies with you, @1♥", "<style color=#f66c77>" .. dmg),
|
||||
damage = dmg,
|
||||
delay = 1,
|
||||
_friendly_fire = true,
|
||||
_friendly_dmg_perc = 0.25,
|
||||
|
||||
sound = "bl_bomb_throw",
|
||||
|
||||
trail = {
|
||||
image = "weaponslib_test1_trail2.png",
|
||||
life = 1,
|
||||
size = 2,
|
||||
amount = 5,
|
||||
},
|
||||
|
||||
bullet = {
|
||||
entity = bomb_bullet,
|
||||
|
||||
speed = 25,
|
||||
bounciness = 0,
|
||||
weight = 50,
|
||||
friction = 0.1,
|
||||
lifetime = 20,
|
||||
|
||||
explosion = {
|
||||
range = 5,
|
||||
texture = "weaponslib_test1_trail2.png",
|
||||
sound = "bl_bomb_explosion",
|
||||
},
|
||||
|
||||
remove_on_contact = false,
|
||||
has_gravity = true,
|
||||
},
|
||||
|
||||
on_hit = function(hitter, target, weapon, action, hit_point, damage, knockback)
|
||||
return block_league.util_on_hit(hitter, target, weapon, action, hit_point, damage, knockback)
|
||||
end,
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------
|
||||
---------------FUNZIONI LOCALI----------------
|
||||
----------------------------------------------
|
||||
---
|
||||
function ignite_animation(self)
|
||||
local bomb = self.object
|
||||
|
||||
core.add_particlespawner({
|
||||
amount = 40,
|
||||
time = 2,
|
||||
attached = bomb,
|
||||
minvel = {x = -0.5, y = 0.1, z = -0.5},
|
||||
maxvel = {x = 0.5, y = 1, z = 0.5},
|
||||
minsize = 5,
|
||||
maxsize = 8,
|
||||
texture = {
|
||||
name = "bl_bomb_smoke.png",
|
||||
alpha_tween = {1, 0},
|
||||
scale_tween = {
|
||||
{x = 0.2, y = 0.2},
|
||||
{x = 1, y = 1},
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
audio_lib.play_sound("bl_bomb_ignite", {object = bomb, max_hear_distance = 8})
|
||||
bomb:set_properties({textures = {"bl_bomb_texture_igniting1.png"}})
|
||||
|
||||
core.after(1, function()
|
||||
if not self then return end
|
||||
bomb:set_properties({textures = {"bl_bomb_texture_igniting1.png^[colorize:red:50"}})
|
||||
|
||||
core.after(0.8, function()
|
||||
if not self then return end
|
||||
bomb:set_properties({textures = {"bl_bomb_texture_igniting2.png^[colorize:orange:100"}})
|
||||
|
||||
core.after(0.1, function()
|
||||
if not self then return end
|
||||
bomb:set_properties({visual_size = {x=6, y=6}, textures = {"bl_bomb_texture_igniting3.png^[brighten"}})
|
||||
|
||||
-- questo non dovrebbe vedersi praticamente mai, ma giusto nel caso
|
||||
core.after(0.1, function()
|
||||
if not self then return end
|
||||
bomb:set_properties({visual_size = {x=6.5, y=6.5}, textures = {"bl_bomb_texture_igniting4.png^[brighten"}})
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end
|
@ -48,12 +48,27 @@ function block_league.util_on_hit(hitter, target, weapon, action, hit_point, dam
|
||||
then return 0 end
|
||||
|
||||
local arena = arena_lib.get_arena_by_player(p_name)
|
||||
local self_hit = p_name == t_name
|
||||
|
||||
if is_target_player then
|
||||
if arena_lib.is_player_in_same_team(arena, p_name, t_name) and not self_hit then return 0 end -- TODO: in futuro per bomba usa proprietà personalizzata arma tipo _can_dmg_team
|
||||
-- se non c'è fuoco amico, non fare danno allɜ componenti della stessa squadra..
|
||||
if not action._friendly_fire then
|
||||
local self_hit = p_name == t_name
|
||||
|
||||
if is_target_player then
|
||||
if arena_lib.is_player_in_same_team(arena, p_name, t_name) and not self_hit then return 0 end
|
||||
else
|
||||
if block_league.is_entity_in_player_team(p_name, target:get_luaentity()) then return 0 end
|
||||
end
|
||||
-- ..sennò riduci a seconda della percentuale specificata
|
||||
else
|
||||
if block_league.is_entity_in_player_team(p_name, target:get_luaentity()) then return 0 end
|
||||
if is_target_player then
|
||||
if arena_lib.is_player_in_same_team(arena, p_name, t_name) then
|
||||
damage = damage * action._friendly_dmg_perc
|
||||
end
|
||||
else
|
||||
if block_league.is_entity_in_player_team(p_name, target:get_luaentity()) then
|
||||
damage = damage * action._friendly_dmg_perc
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local is_critical = hit_point and hit_point.y - target:get_pos().y > 1.275 -- TODO: la spada non lo passa
|
||||
@ -64,10 +79,6 @@ function block_league.util_on_hit(hitter, target, weapon, action, hit_point, dam
|
||||
audio_lib.play_sound("bl_voice_critical", {to_player = p_name})
|
||||
end
|
||||
|
||||
if self_hit then
|
||||
damage = damage / 2
|
||||
end
|
||||
|
||||
if not is_target_player and target:get_luaentity()._no_knockback then
|
||||
knockback = 0
|
||||
end
|
||||
|
BIN
block_league/textures/bl_bomb.png
Normal file
After Width: | Height: | Size: 240 B |
BIN
block_league/textures/bl_bomb_crosshair.png
Normal file
After Width: | Height: | Size: 179 B |
BIN
block_league/textures/bl_bomb_smoke.png
Normal file
After Width: | Height: | Size: 178 B |
BIN
block_league/textures/bl_bomb_texture.png
Normal file
After Width: | Height: | Size: 373 B |
BIN
block_league/textures/bl_bomb_texture_igniting1.png
Normal file
After Width: | Height: | Size: 375 B |
BIN
block_league/textures/bl_bomb_texture_igniting2.png
Normal file
After Width: | Height: | Size: 369 B |
BIN
block_league/textures/bl_bomb_texture_igniting3.png
Normal file
After Width: | Height: | Size: 360 B |
BIN
block_league/textures/bl_bomb_texture_igniting4.png
Normal file
After Width: | Height: | Size: 372 B |