62 lines
1.6 KiB
Lua
62 lines
1.6 KiB
Lua
|
-- Armorball: Test entity for testing armor groups
|
||
|
-- Rightclick to change armor group
|
||
|
|
||
|
local phasearmor = {
|
||
|
[0]={icy=100},
|
||
|
[1]={fiery=100},
|
||
|
[2]={icy=100, fiery=100},
|
||
|
[3]={fleshy=-100},
|
||
|
[4]={fleshy=1},
|
||
|
[5]={fleshy=10},
|
||
|
[6]={fleshy=50},
|
||
|
[7]={fleshy=100},
|
||
|
[8]={fleshy=200},
|
||
|
[9]={fleshy=1000},
|
||
|
[10]={fleshy=32767},
|
||
|
[11]={immortal=1},
|
||
|
[12]={punch_operable=1},
|
||
|
}
|
||
|
local max_phase = 12
|
||
|
|
||
|
minetest.register_entity("testentities:armorball", {
|
||
|
initial_properties = {
|
||
|
hp_max = 20,
|
||
|
physical = false,
|
||
|
collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4},
|
||
|
visual = "sprite",
|
||
|
visual_size = {x=1, y=1},
|
||
|
textures = {"testentities_armorball.png"},
|
||
|
spritediv = {x=1, y=max_phase+1},
|
||
|
initial_sprite_basepos = {x=0, y=0},
|
||
|
},
|
||
|
|
||
|
_phase = 7,
|
||
|
|
||
|
on_activate = function(self, staticdata)
|
||
|
minetest.log("action", "[testentities] armorball.on_activate")
|
||
|
self.object:set_armor_groups(phasearmor[self._phase])
|
||
|
self.object:set_sprite({x=0, y=self._phase})
|
||
|
end,
|
||
|
|
||
|
on_rightclick = function(self, clicker)
|
||
|
-- Change armor group and sprite
|
||
|
self._phase = self._phase + 1
|
||
|
if self._phase >= max_phase + 1 then
|
||
|
self._phase = 0
|
||
|
end
|
||
|
self.object:set_sprite({x=0, y=self._phase})
|
||
|
self.object:set_armor_groups(phasearmor[self._phase])
|
||
|
end,
|
||
|
|
||
|
on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)
|
||
|
if not puncher then
|
||
|
return
|
||
|
end
|
||
|
local name = puncher:get_player_name()
|
||
|
if not name then
|
||
|
return
|
||
|
end
|
||
|
minetest.chat_send_player(name, "time_from_last_punch="..string.format("%.3f", time_from_last_punch).."; damage="..tostring(damage))
|
||
|
end,
|
||
|
})
|