L'odio per Zaizen continua a crescere
parent
a213ba333c
commit
85e5e97d60
|
@ -13,6 +13,7 @@ arena_lib.on_load("block_league", function(arena)
|
||||||
reset_meta(pl_name)
|
reset_meta(pl_name)
|
||||||
equip_weapons(pl_name, arena)
|
equip_weapons(pl_name, arena)
|
||||||
create_and_show_HUD(arena, pl_name)
|
create_and_show_HUD(arena, pl_name)
|
||||||
|
block_league.refill_weapons(arena, pl_name)
|
||||||
|
|
||||||
minetest.sound_play("bl_voice_countdown", {to_player = pl_name})
|
minetest.sound_play("bl_voice_countdown", {to_player = pl_name})
|
||||||
end
|
end
|
||||||
|
@ -44,6 +45,7 @@ arena_lib.on_join("block_league", function(p_name, arena)
|
||||||
reset_meta(p_name)
|
reset_meta(p_name)
|
||||||
equip_weapons(p_name, arena)
|
equip_weapons(p_name, arena)
|
||||||
create_and_show_HUD(arena, p_name)
|
create_and_show_HUD(arena, p_name)
|
||||||
|
block_league.refill_weapons(arena, p_name)
|
||||||
|
|
||||||
minetest.get_player_by_name(p_name):set_armor_groups({immortal = nil})
|
minetest.get_player_by_name(p_name):set_armor_groups({immortal = nil})
|
||||||
|
|
||||||
|
@ -158,19 +160,12 @@ end
|
||||||
|
|
||||||
function equip_weapons(p_name, arena)
|
function equip_weapons(p_name, arena)
|
||||||
|
|
||||||
|
--TODO avere una tabella per giocatore che tenga traccia delle armi equipaggiate
|
||||||
|
local default_weapons = {"block_league:smg", "block_league:sword", "block_league:pixelgun"}
|
||||||
local inv = minetest.get_player_by_name(p_name):get_inventory()
|
local inv = minetest.get_player_by_name(p_name):get_inventory()
|
||||||
|
|
||||||
-- TODO: ottenere armi in database giocatori, dato che potranno cambiarle
|
|
||||||
local default_weapons = {"block_league:smg", "block_league:sword", "block_league:pixelgun"}
|
|
||||||
|
|
||||||
for i, weapon_name in pairs(default_weapons) do
|
for i, weapon_name in pairs(default_weapons) do
|
||||||
local magazine = minetest.registered_nodes[weapon_name].magazine
|
|
||||||
|
|
||||||
if magazine then
|
|
||||||
arena.players[p_name].weapons_magazine[weapon_name] = magazine
|
|
||||||
end
|
|
||||||
inv:add_item("main", ItemStack(weapon_name))
|
inv:add_item("main", ItemStack(weapon_name))
|
||||||
end
|
end
|
||||||
|
|
||||||
inv:add_item("main", ItemStack("block_league:bouncer"))
|
inv:add_item("main", ItemStack("block_league:bouncer"))
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,15 +10,28 @@ function block_league.round_start(arena)
|
||||||
player:set_hp(20)
|
player:set_hp(20)
|
||||||
arena.players[p_name].energy = 100
|
arena.players[p_name].energy = 100
|
||||||
|
|
||||||
|
block_league.refill_weapons(arena, p_name)
|
||||||
|
player:get_meta():set_int("bl_reloading", 0)
|
||||||
|
|
||||||
player:set_physics_override({
|
player:set_physics_override({
|
||||||
speed = vel,
|
speed = vel,
|
||||||
jump = 1.5
|
jump = 1.5
|
||||||
})
|
})
|
||||||
|
|
||||||
player:get_meta():set_int("bl_reloading", 0)
|
|
||||||
player:set_pos(arena_lib.get_random_spawner(arena, stats.teamID))
|
player:set_pos(arena_lib.get_random_spawner(arena, stats.teamID))
|
||||||
|
end
|
||||||
|
|
||||||
-- TEMP: da rimuovere quando giocatori avranno tabella armi
|
if arena.mod == 1 then
|
||||||
|
load_ball(arena)
|
||||||
|
end
|
||||||
|
|
||||||
|
arena.weapons_disabled = false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function block_league.refill_weapons(arena, p_name)
|
||||||
|
--TODO avere una tabella per giocatore che tenga traccia delle armi equipaggiate
|
||||||
local default_weapons = {"block_league:smg", "block_league:sword", "block_league:pixelgun"}
|
local default_weapons = {"block_league:smg", "block_league:sword", "block_league:pixelgun"}
|
||||||
|
|
||||||
for i, weapon_name in pairs(default_weapons) do
|
for i, weapon_name in pairs(default_weapons) do
|
||||||
|
@ -29,14 +42,6 @@ function block_league.round_start(arena)
|
||||||
block_league.weapons_hud_update(arena, p_name, weapon_name, magazine)
|
block_league.weapons_hud_update(arena, p_name, weapon_name, magazine)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
if arena.mod == 1 then
|
|
||||||
load_ball(arena)
|
|
||||||
end
|
|
||||||
|
|
||||||
arena.weapons_disabled = false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
tiles = def.tiles or nil,
|
tiles = def.tiles or nil,
|
||||||
wield_image = def.wield_image or nil,
|
wield_image = def.wield_image or nil,
|
||||||
|
|
||||||
impaling = def.impaling,
|
pierce = def.pierce,
|
||||||
knockback = def.knockback,
|
knockback = def.knockback,
|
||||||
decrease_damage_with_distance = def.decrease_damage_with_distance,
|
decrease_damage_with_distance = def.decrease_damage_with_distance,
|
||||||
bullet_damage = def.bullet_damage,
|
bullet_damage = def.bullet_damage,
|
||||||
|
|
|
@ -5,7 +5,7 @@ block_league.register_bullet("block_league:grenade", {
|
||||||
wield_scale = {x=1.5, y=1.5, z=1.5},
|
wield_scale = {x=1.5, y=1.5, z=1.5},
|
||||||
inventory_image = "bl_grenade_icon.png",
|
inventory_image = "bl_grenade_icon.png",
|
||||||
stack_max = 99,
|
stack_max = 99,
|
||||||
impaling = false,
|
pierce = false,
|
||||||
throwable_by_hand = true,
|
throwable_by_hand = true,
|
||||||
bullet_damage = 10,
|
bullet_damage = 10,
|
||||||
decrease_damage_with_distance = false,
|
decrease_damage_with_distance = false,
|
||||||
|
|
|
@ -10,7 +10,7 @@ block_league.register_weapon("block_league:pixelgun", {
|
||||||
weap_sound_shooting = "bl_pixelgun_shoot",
|
weap_sound_shooting = "bl_pixelgun_shoot",
|
||||||
consume_bullets = false,
|
consume_bullets = false,
|
||||||
magazine = 4,
|
magazine = 4,
|
||||||
reload_delay = 4,
|
reload_time = 4,
|
||||||
type = 1,
|
type = 1,
|
||||||
weap_delay = 0.9,
|
weap_delay = 0.9,
|
||||||
slow_down_when_firing = true,
|
slow_down_when_firing = true,
|
||||||
|
|
|
@ -6,7 +6,7 @@ block_league.register_bullet("block_league:pixelgun_bullet", {
|
||||||
inventory_image = "bl_grenade_icon.png",
|
inventory_image = "bl_grenade_icon.png",
|
||||||
stack_max = 99,
|
stack_max = 99,
|
||||||
throwable_by_hand = false,
|
throwable_by_hand = false,
|
||||||
impaling = true,
|
pierce = true,
|
||||||
knockback = 0,
|
knockback = 0,
|
||||||
decrease_damage_with_distance = false,
|
decrease_damage_with_distance = false,
|
||||||
bullet_damage = 777,
|
bullet_damage = 777,
|
||||||
|
|
|
@ -8,7 +8,7 @@ block_league.register_bullet("block_league:rocket",{
|
||||||
bullet_damage = 10,
|
bullet_damage = 10,
|
||||||
throwable_by_hand = false,
|
throwable_by_hand = false,
|
||||||
duration = 5,
|
duration = 5,
|
||||||
impaling = false,
|
pierce = false,
|
||||||
decrease_damage_with_distance = false,
|
decrease_damage_with_distance = false,
|
||||||
bullet_trail = {
|
bullet_trail = {
|
||||||
image = "bl_bullet_rocket.png",
|
image = "bl_bullet_rocket.png",
|
||||||
|
|
|
@ -22,7 +22,7 @@ block_league.register_weapon("block_league:nomearma", {
|
||||||
slow_down_when_firing = true, --Se rallentare chi spara
|
slow_down_when_firing = true, --Se rallentare chi spara
|
||||||
consume_bullets = true, --Se usa proiettili
|
consume_bullets = true, --Se usa proiettili
|
||||||
magazine = 0, --Dopo quanti colpi ricaricare
|
magazine = 0, --Dopo quanti colpi ricaricare
|
||||||
reload_delay = 5,
|
reload_time = 5,
|
||||||
bullet = "block_league:nomeproiettile", --Che proiettile/granata spara aka quello che viene consumato all'uso
|
bullet = "block_league:nomeproiettile", --Che proiettile/granata spara aka quello che viene consumato all'uso
|
||||||
on_right_click = function(arena, name, def, itemstack, user, pointed_thing) end, --Cosa fare quando si clicca destro
|
on_right_click = function(arena, name, def, itemstack, user, pointed_thing) end, --Cosa fare quando si clicca destro
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ block_league.register_weapon("block_league:nomearma", {
|
||||||
slow_down_when_firing = true, --Se rallentare chi spara
|
slow_down_when_firing = true, --Se rallentare chi spara
|
||||||
consume_bullets = true, --Se usa proiettili
|
consume_bullets = true, --Se usa proiettili
|
||||||
magazine = 0, --Dopo quanti colpi ricaricare
|
magazine = 0, --Dopo quanti colpi ricaricare
|
||||||
reload_delay = 5,
|
reload_time = 5,
|
||||||
launching_force = 10,
|
launching_force = 10,
|
||||||
bullet = "block_league:nomeproiettile", --Che proiettile/granata spara
|
bullet = "block_league:nomeproiettile", --Che proiettile/granata spara
|
||||||
on_right_click = function(arena, name, def, itemstack, user, pointed_thing) end, --Cosa fare quando si clicca destro
|
on_right_click = function(arena, name, def, itemstack, user, pointed_thing) end, --Cosa fare quando si clicca destro
|
||||||
|
@ -61,7 +61,7 @@ block_league.register_bullet("block_league:nomeproiettile", {
|
||||||
throwable_by_hand = true, --Se si può lanciare a mano
|
throwable_by_hand = true, --Se si può lanciare a mano
|
||||||
consume_on_throw = true,
|
consume_on_throw = true,
|
||||||
|
|
||||||
impaling = true, --Se può attraversare il bersaglio NB: Utilizzabile solo con proiettili hitscan
|
pierce = true, --Se può attraversare il bersaglio NB: Utilizzabile solo con proiettili hitscan
|
||||||
knockback = 0, --Il contraccolpo da applicare al bersaglio
|
knockback = 0, --Il contraccolpo da applicare al bersaglio
|
||||||
decrease_damage_with_distance = true, --Se il danno diminuisce con la distanza
|
decrease_damage_with_distance = true, --Se il danno diminuisce con la distanza
|
||||||
bullet_damage = 10, --Danno inflitto
|
bullet_damage = 10, --Danno inflitto
|
||||||
|
|
|
@ -15,7 +15,7 @@ block_league.register_weapon("block_league:smg", {
|
||||||
|
|
||||||
consume_bullets = false,
|
consume_bullets = false,
|
||||||
magazine = 30,
|
magazine = 30,
|
||||||
reload_delay = 2,
|
reload_time = 2,
|
||||||
|
|
||||||
range = 30, --Se non hitscan calcolarsi il tempo necessario per percorrere quello
|
range = 30, --Se non hitscan calcolarsi il tempo necessario per percorrere quello
|
||||||
--spazio in base alla velocità
|
--spazio in base alla velocità
|
||||||
|
|
|
@ -6,7 +6,7 @@ block_league.register_bullet("block_league:smg_bullet", {
|
||||||
|
|
||||||
stack_max = 99,
|
stack_max = 99,
|
||||||
throwable_by_hand = false,
|
throwable_by_hand = false,
|
||||||
impaling = false,
|
pierce = false,
|
||||||
knockback = 0,
|
knockback = 0,
|
||||||
decrease_damage_with_distance = true,
|
decrease_damage_with_distance = true,
|
||||||
bullet_damage = 3,
|
bullet_damage = 3,
|
||||||
|
|
|
@ -17,7 +17,7 @@ block_league.register_weapon("block_league:sword", {
|
||||||
local dir = user:get_look_dir()
|
local dir = user:get_look_dir()
|
||||||
local pos = user:get_pos()
|
local pos = user:get_pos()
|
||||||
local pos_head = {x = pos.x, y = pos.y+1.475, z = pos.z}
|
local pos_head = {x = pos.x, y = pos.y+1.475, z = pos.z}
|
||||||
local pointed_players = block_league.get_pointed_players(pos_head, dir, 0, 5, user, nil, true)
|
local pointed_players = block_league.get_pointed_players(pos_head, dir, 5, user, nil, true)
|
||||||
|
|
||||||
dir.y = 0
|
dir.y = 0
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
local function get_dist() end
|
local function get_dist() end
|
||||||
|
local function draw_particles() end
|
||||||
local function weapon_reload() end
|
local function weapon_reload() end
|
||||||
local function weapon_right_click() end
|
local function weapon_right_click() end
|
||||||
local function gestione_sparo() end
|
local function gestione_sparo() end
|
||||||
|
@ -142,7 +143,7 @@ function block_league.shoot_hitscan(name, def, bullet_definition, itemstack, use
|
||||||
local dir = user:get_look_dir()
|
local dir = user:get_look_dir()
|
||||||
local pos = user:get_pos()
|
local pos = user:get_pos()
|
||||||
local pos_head = {x = pos.x, y = pos.y+1.475, z = pos.z}
|
local pos_head = {x = pos.x, y = pos.y+1.475, z = pos.z}
|
||||||
local pointed_players = block_league.get_pointed_players(pos_head, dir, 0, def.range, user, bullet_definition.bullet_trail, bullet_definition.impaling)
|
local pointed_players = block_league.get_pointed_players(pos_head, dir, def.range, user, bullet_definition.bullet_trail, bullet_definition.pierce)
|
||||||
if pointed_players then
|
if pointed_players then
|
||||||
block_league.apply_damage(user, pointed_players, bullet_definition.bullet_damage, bullet_definition.knockback, bullet_definition.decrease_damage_with_distance)
|
block_league.apply_damage(user, pointed_players, bullet_definition.bullet_damage, bullet_definition.knockback, bullet_definition.decrease_damage_with_distance)
|
||||||
end
|
end
|
||||||
|
@ -182,12 +183,13 @@ end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- ritorna un array di player con il numero di player trovati a index 1. Se non
|
-- ritorna un array di giocatori con il numero di giocatori trovati a indice 1.
|
||||||
-- trova player diversi da se stessi ritorna nil
|
-- Se non trova giocatori diversi da se stesso ritorna nil
|
||||||
function block_league.get_pointed_players(head_pos, dir, dist1, dist2, user, particle, trafigge)
|
function block_league.get_pointed_players(head_pos, dir, range, user, particle, has_piercing)
|
||||||
|
|
||||||
|
local p1 = vector.add(head_pos, vector.multiply(dir, 0))
|
||||||
|
local p2 = vector.add(head_pos, vector.multiply(dir, range))
|
||||||
|
|
||||||
local p1 = vector.add(head_pos, vector.multiply(dir, dist1))
|
|
||||||
local p2 = vector.add(head_pos, vector.multiply(dir, dist2))
|
|
||||||
local ray = minetest.raycast(p1, p2, true, false)
|
local ray = minetest.raycast(p1, p2, true, false)
|
||||||
local players = {}
|
local players = {}
|
||||||
|
|
||||||
|
@ -195,9 +197,8 @@ function block_league.get_pointed_players(head_pos, dir, dist1, dist2, user, par
|
||||||
for hit in ray do
|
for hit in ray do
|
||||||
-- se è un oggetto
|
-- se è un oggetto
|
||||||
if hit.type == "object" then
|
if hit.type == "object" then
|
||||||
if hit.ref then
|
|
||||||
-- se è un giocatore
|
-- se è un giocatore
|
||||||
if hit.ref:is_player() then
|
if hit.ref and hit.ref:is_player() then
|
||||||
-- e non è colui che spara
|
-- e non è colui che spara
|
||||||
if hit.ref ~= user then
|
if hit.ref ~= user then
|
||||||
table.insert(players, hit.ref)
|
table.insert(players, hit.ref)
|
||||||
|
@ -214,65 +215,25 @@ function block_league.get_pointed_players(head_pos, dir, dist1, dist2, user, par
|
||||||
entity:_destroy()
|
entity:_destroy()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- se è un nodo mi fermo, e ritorno l'array se > 0 (ovvero ha trovato giocatori)
|
-- se è un nodo mi fermo, e ritorno l'array se > 0 (ovvero ha trovato giocatori)
|
||||||
if hit.type == "node" then
|
if hit.type == "node" then
|
||||||
if #players > 0 then
|
if #players > 0 then
|
||||||
if particle ~= nil and particle ~= false then
|
if particle ~= nil and particle ~= false then
|
||||||
if not trafigge then
|
if not has_piercing then
|
||||||
local dist3 = get_dist(head_pos, players[1]:get_pos())
|
local dist3 = get_dist(head_pos, players[1]:get_pos())
|
||||||
minetest.add_particlespawner({
|
draw_particles(particle, dir, p1, range, dist3)
|
||||||
amount = particle.amount,
|
|
||||||
time = 0.3,
|
|
||||||
minpos = p1,
|
|
||||||
maxpos = p1,
|
|
||||||
minvel = vector.multiply(dir, dist2),
|
|
||||||
maxvel = vector.multiply(dir, dist2),
|
|
||||||
minexptime = dist3/(dist2 * 1.5),
|
|
||||||
maxexptime = dist3/(dist2 * 1.5),
|
|
||||||
size = 2,
|
|
||||||
collisiondetection = false,
|
|
||||||
vertical = false,
|
|
||||||
texture = particle.image
|
|
||||||
})
|
|
||||||
else
|
else
|
||||||
local dist3 = get_dist(head_pos, hit.intersection_point)
|
local dist3 = get_dist(head_pos, hit.intersection_point)
|
||||||
minetest.add_particlespawner({
|
draw_particles(particle, dir, p1, range, dist3)
|
||||||
amount = particle.amount,
|
|
||||||
time = 0.3,
|
|
||||||
minpos = p1,
|
|
||||||
maxpos = p1,
|
|
||||||
minvel = vector.multiply(dir, dist2),
|
|
||||||
maxvel = vector.multiply(dir, dist2),
|
|
||||||
minexptime = dist3/(dist2 * 1.5),
|
|
||||||
maxexptime = dist3/(dist2 * 1.5),
|
|
||||||
size = 2,
|
|
||||||
collisiondetection = false,
|
|
||||||
vertical = false,
|
|
||||||
texture = particle.image
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return players
|
return players
|
||||||
else
|
else
|
||||||
if particle ~= nil and particle ~= false then
|
if particle ~= nil and particle ~= false then
|
||||||
local dist3 = get_dist(head_pos, hit.intersection_point)
|
local dist3 = get_dist(head_pos, hit.intersection_point)
|
||||||
minetest.add_particlespawner({
|
draw_particles(particle, dir, p1, range, dist3)
|
||||||
amount = particle.amount,
|
|
||||||
time = 0.3,
|
|
||||||
minpos = p1,
|
|
||||||
maxpos = p1,
|
|
||||||
minvel = vector.multiply(dir, dist2),
|
|
||||||
maxvel = vector.multiply(dir, dist2),
|
|
||||||
minexptime = dist3/(dist2 * 1.5),
|
|
||||||
maxexptime = dist3/(dist2 * 1.5),
|
|
||||||
size = 2,
|
|
||||||
collisiondetection = false,
|
|
||||||
vertical = false,
|
|
||||||
texture = particle.image
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
@ -280,64 +241,21 @@ function block_league.get_pointed_players(head_pos, dir, dist1, dist2, user, par
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- se ho sparato a qualcuno puntando in aria (quindi senza incrociare blocchi)
|
-- se ho sparato a qualcuno senza incrociare blocchi
|
||||||
if #players > 0 then
|
if #players > 0 then
|
||||||
if trafigge then
|
|
||||||
if particle ~= nil and particle ~= false then
|
if particle ~= nil and particle ~= false then
|
||||||
minetest.add_particlespawner({
|
if has_piercing then
|
||||||
amount = particle.amount,
|
draw_particles(particle, dir, p1, range, 120)
|
||||||
time = 0.3,
|
|
||||||
minpos = p1,
|
|
||||||
maxpos = p1,
|
|
||||||
minvel = vector.multiply(dir, 120),
|
|
||||||
maxvel = vector.multiply(dir, 120),
|
|
||||||
minexptime = dist2/120,
|
|
||||||
maxexptime = dist2/120,
|
|
||||||
size = 2,
|
|
||||||
collisiondetection = false,
|
|
||||||
vertical = false,
|
|
||||||
texture = particle.image
|
|
||||||
})
|
|
||||||
end
|
|
||||||
return players
|
return players
|
||||||
else
|
else
|
||||||
if particle ~= nil and particle ~= false then
|
|
||||||
|
|
||||||
local dist3 = get_dist(head_pos, players[1]:get_pos())
|
local dist3 = get_dist(head_pos, players[1]:get_pos())
|
||||||
minetest.add_particlespawner({
|
draw_particles(particle, dir, p1, range, dist3)
|
||||||
amount = particle.amount,
|
|
||||||
time = 0.3,
|
|
||||||
minpos = p1,
|
|
||||||
maxpos = p1,
|
|
||||||
minvel = vector.multiply(dir, dist2),
|
|
||||||
maxvel = vector.multiply(dir, dist2),
|
|
||||||
minexptime = dist3/(dist2 * 1.5),
|
|
||||||
maxexptime = dist3/(dist2 * 1.5),
|
|
||||||
size = 2,
|
|
||||||
collisiondetection = false,
|
|
||||||
vertical = false,
|
|
||||||
texture = particle.image
|
|
||||||
})
|
|
||||||
|
|
||||||
end
|
|
||||||
return {players[1]}
|
return {players[1]}
|
||||||
end
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
if particle ~= nil and particle ~= false then
|
if particle ~= nil and particle ~= false then
|
||||||
minetest.add_particlespawner({
|
draw_particles(particle, dir, p1, range, 120)
|
||||||
amount = particle.amount,
|
|
||||||
time = 0.3,
|
|
||||||
minpos = p1,
|
|
||||||
maxpos = p1,
|
|
||||||
minvel = vector.multiply(dir, 120),
|
|
||||||
maxvel = vector.multiply(dir, 120),
|
|
||||||
minexptime = dist2/120,
|
|
||||||
maxexptime = dist2/120,
|
|
||||||
size = 2,
|
|
||||||
collisiondetection = false,
|
|
||||||
vertical = false,
|
|
||||||
texture = particle.image
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
@ -425,6 +343,25 @@ end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function draw_particles(particle, dir, p1, dist2, dist3)
|
||||||
|
minetest.add_particlespawner({
|
||||||
|
amount = particle.amount,
|
||||||
|
time = 0.3,
|
||||||
|
minpos = p1,
|
||||||
|
maxpos = p1,
|
||||||
|
minvel = vector.multiply(dir, dist2),
|
||||||
|
maxvel = vector.multiply(dir, dist2),
|
||||||
|
minexptime = dist3/(dist2 * 1.5),
|
||||||
|
maxexptime = dist3/(dist2 * 1.5),
|
||||||
|
size = 2,
|
||||||
|
collisiondetection = false,
|
||||||
|
vertical = false,
|
||||||
|
texture = particle.image
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function weapon_reload(user, def, name)
|
function weapon_reload(user, def, name)
|
||||||
|
|
||||||
local p_name = user:get_player_name()
|
local p_name = user:get_player_name()
|
||||||
|
@ -438,7 +375,7 @@ function weapon_reload(user, def, name)
|
||||||
|
|
||||||
p_meta:set_int("bl_reloading", 1)
|
p_meta:set_int("bl_reloading", 1)
|
||||||
|
|
||||||
minetest.after(def.reload_delay, function()
|
minetest.after(def.reload_time, function()
|
||||||
if not arena_lib.is_player_in_arena(p_name, "block_league") then return end
|
if not arena_lib.is_player_in_arena(p_name, "block_league") then return end
|
||||||
p_meta:set_int("bl_weap_delay", 0)
|
p_meta:set_int("bl_weap_delay", 0)
|
||||||
p_meta:set_int("bl_reloading", 0)
|
p_meta:set_int("bl_reloading", 0)
|
||||||
|
@ -538,7 +475,7 @@ function gestione_sparo(p_name, user, def, name)
|
||||||
if arena.players[p_name].weapons_magazine[name] == 0 and user:get_meta():get_int("bl_reloading") == 0 then
|
if arena.players[p_name].weapons_magazine[name] == 0 and user:get_meta():get_int("bl_reloading") == 0 then
|
||||||
p_meta:set_int("bl_reloading", 1)
|
p_meta:set_int("bl_reloading", 1)
|
||||||
|
|
||||||
minetest.after(def.reload_delay, function()
|
minetest.after(def.reload_time, function()
|
||||||
if user and user:get_meta() then
|
if user and user:get_meta() then
|
||||||
p_meta:set_int("bl_weap_delay", 0)
|
p_meta:set_int("bl_weap_delay", 0)
|
||||||
p_meta:set_int("bl_reloading", 0)
|
p_meta:set_int("bl_reloading", 0)
|
||||||
|
|
|
@ -55,28 +55,13 @@ minetest.register_on_respawnplayer(function(player)
|
||||||
|
|
||||||
if not arena_lib.is_player_in_arena(player:get_player_name(), "block_league") then return end
|
if not arena_lib.is_player_in_arena(player:get_player_name(), "block_league") then return end
|
||||||
|
|
||||||
local pos = player:get_pos()
|
death_delay(player, player:get_pos())
|
||||||
|
|
||||||
death_delay(player, pos)
|
|
||||||
player:set_physics_override({
|
player:set_physics_override({
|
||||||
speed = block_league.SPEED,
|
speed = block_league.SPEED,
|
||||||
jump = 1.5
|
jump = 1.5
|
||||||
})
|
})
|
||||||
|
|
||||||
-- TEMP: da rimuovere quando giocatori avranno tabella armi
|
block_league.refill_weapons(arena, p_name)
|
||||||
local p_name = player:get_player_name()
|
|
||||||
local arena = arena_lib.get_arena_by_player(p_name)
|
|
||||||
local default_weapons = {"block_league:smg", "block_league:sword", "block_league:pixelgun"}
|
|
||||||
|
|
||||||
for i, weapon_name in pairs(default_weapons) do
|
|
||||||
local magazine = minetest.registered_nodes[weapon_name].magazine
|
|
||||||
|
|
||||||
if magazine then
|
|
||||||
arena.players[p_name].weapons_magazine[weapon_name] = magazine
|
|
||||||
block_league.weapons_hud_update(arena, p_name, weapon_name, magazine)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
block_league.immunity(player)
|
block_league.immunity(player)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -89,7 +74,7 @@ end)
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
function death_delay(player, pos)
|
function death_delay(player, pos)
|
||||||
if player and player:get_meta() then
|
if player then
|
||||||
local delay = player:get_meta():get_int("bl_death_delay")
|
local delay = player:get_meta():get_int("bl_death_delay")
|
||||||
if delay == 1 and arena_lib.is_player_in_arena(player:get_player_name(), "block_league") then
|
if delay == 1 and arena_lib.is_player_in_arena(player:get_player_name(), "block_league") then
|
||||||
player:set_pos(pos)
|
player:set_pos(pos)
|
||||||
|
@ -97,7 +82,7 @@ function death_delay(player, pos)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
minetest.after(0.1, function() death_delay(player, pos) end)
|
minetest.after(0.2, function() death_delay(player, pos) end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue