initialisation du repository
parent
dece7bf08d
commit
e31f50922d
60
README.md
60
README.md
|
@ -1,2 +1,58 @@
|
|||
# minetest-pandore
|
||||
Mod minetest permettant de générer une boîte de Pandore
|
||||
# Minetest : Pandore
|
||||
|
||||
## Un peu d'histoire pour placer le contexte
|
||||
|
||||
*Pour plus d'infos sur le mythe, faites un saut sur [wikipédia](https://fr.wikipedia.org/wiki/Pandore) par exemple!*
|
||||
|
||||
La mythologie grecque nous raconte que Pandore était une femme fabriquée par les dieux de l'Olympe. Zeus lui remit une boîte, avec ordre de ne pas l'ouvrir.
|
||||
|
||||
Humaine comme pas deux, Pandore a ouvert la boîte, et là, c'est le drame! Parce que Zeus y avait enfermé tous les maux de l'humanité, qui purent donc joyeusement se répandre sur Terre. A nous la vieillesse, la mort, la famine, la misère, j'en passe et des meilleures. Au fond de la boîte, il y avait quand même un truc qui trainait et qu'on appel l'espoir... Bref, c'est pas gagné, mais on peut le faire, Just Do It comme dirait l'autre!
|
||||
|
||||
## Pandore et Minetest
|
||||
|
||||
Et c'est là qu'arrive Minetest.
|
||||
|
||||
Minetest étant un micro-monde, il est normal qu'il vive aussi ce fabuleux mythe de Pandore. Graines2Tech a donc initié un mod Pandore pour Minetest.
|
||||
|
||||
[Graines2Tech](http://graines2tech.com) propose de faire découvrir le numérique à tous ceux qui se sentent jeunes, par des activités ludiques et créatives, du pixel-art au stop-motion, de la programmation à la robotique, des jeux déconnectés à l'impression 3D.
|
||||
|
||||
Et quoi de mieux pour découvrir la programmation que de réalise son propre mod sous Minetest? Ben rien, je suis bien d'accord :) Graines2Tech a donc proposé à des participants, lors d'un stage, de créer des plaies pour une boîte de Pandore.
|
||||
|
||||
Et vous avez le résultat sous les yeux!
|
||||
|
||||
# Le mod Pandore
|
||||
|
||||
## Compatibilité
|
||||
|
||||
Le mod Pandore a été développé et testé pour minetest 0.4.17.1.
|
||||
|
||||
## Mode d'emploi
|
||||
|
||||
Ce repository comprend plusieurs mods:
|
||||
- le mod principal **pandore**
|
||||
- un répertoire pour chacune des plaies créées par les participants
|
||||
|
||||
Pour créer une plaie, il suffit de créer un mod! [Plus d'informations sur la création de mod minetest.](https://dev.minetest.net/Installing_Mods)
|
||||
|
||||
Vous aurez besoin du mod *pandore* pour initier la boîte de Pandore dans minetest.
|
||||
|
||||
Pour charger une plaie dans la boîte de Pandore, il suffit de faire appel à la méthode *pandore.register_plaie* ; cette méthode prend 3 paramètres:
|
||||
1. le nom de la plaie
|
||||
2. une fonction permettant d'exécuter la plaie sur un joueur; un paramètre sera passé à cette fonction qui contiendra un objet [player](https://dev.minetest.net/Player) correspondant à la victime de la plaie
|
||||
3. *[optionnel, défaut = false]* un booléen indiquant que la plaie doit s'appliquer à tous les joueurs ; si la valeur est *false*, un joueur sera choisi au hasard parmi les joueurs connectés
|
||||
|
||||
## Fonctionnement
|
||||
|
||||
Lorsqu'un joueur se connecte dans le monde, après un délai (*pandore.delai_pop*) de quelques secondes, le mod *pandore* créé une boîte de Pandore (*pandore:boite*) a proximité du joueur s'il n'en existe pas déjà.
|
||||
|
||||
La boîte de Pandore s'ouvre automatiquement et libère une plaie au hasard au bout d'un certain délai (compris entre *pandore.delai_min* et *pandore.delai_max*). La boîte peut également être ouverte par un joueur via un clic droit. Un joueur ne pourra pas ré-ouvrir la boîte avant un certain délai (*pandore.delai_min*).
|
||||
|
||||
Lorsque la boîte s'ouvre, un message est affiché pour tous les joueurs si la plaie concerne tous les joueurs, ou pour le joueur concerné le cas échéant. Si la plaie ne concerne pas tous les joueurs, un joueur est choisi au hasard parmi les joueurs connectés. Après un certain délai (*pandore.delai_plaie*), la plaie est lancé sur la ou les vicitime.s.
|
||||
|
||||
# A votre écoute!
|
||||
|
||||
N'hésitez pas à nous faire part de tous vos commentaires, et à créer des tickets pour de nouvelles fonctionnalités sur le mod *pandore* ou des bugs que vous pourriez trouver.
|
||||
|
||||
Un grand merci à vous!
|
||||
|
||||
L'équipe Graines2Tech
|
|
@ -0,0 +1,116 @@
|
|||
--initialisation du mod
|
||||
pandore = {
|
||||
mod_name = "pandore", --nom du mod
|
||||
nombre_plaies = 0, --nombre total de plaies chargées
|
||||
plaies = {}, --liste des plaies disponibles
|
||||
limite = 30, --rayon de la limite en block pour poser une boîte autour du joueur
|
||||
delai_max = 180, --temps d'attente maximum en secondes entre le déclenchement de deux plaies
|
||||
delai_min = 60, --temps d'attente minimum en secondes entre le déclenchement de deux plaies
|
||||
delai_pop = 10, --delai entre l'apparition du joueur et la création de sa boîte
|
||||
delai_plaie = 2, --delai entre l'ouverture de la boîte et le lancement de la plaie
|
||||
players = {}, --liste associative des noms des joueurs et de la date de dernière activation d'une boîte
|
||||
register_plaie = function(name,fn,all) --enregistre une plaie dans la liste de plaies; si all = true, la plaie s'exécute sur tous les joueurs (par défaut, all=false => joueur au hasard)
|
||||
all = all or false
|
||||
if pandore.plaies[name] == nil then
|
||||
pandore.plaies[name] = {
|
||||
action = fn,
|
||||
tous = al
|
||||
}
|
||||
pandore.nombre_plaies = pandore.nombre_plaies+1
|
||||
minetest.log("info","La plaie "..name.." a été chargée")
|
||||
else
|
||||
minetest.log("info","La plaie '"..name.."' a déjà été chargée.")
|
||||
end
|
||||
end,
|
||||
ouvrir = function(player_name) --ouvre la boite de Pandore
|
||||
if pandore.nombre_plaies > 0 then
|
||||
local ouv_ok = true
|
||||
local player = ""
|
||||
if not (player_name == nil) then
|
||||
--un joueur a ouvert la boîte
|
||||
player = " par "..player_name
|
||||
local now = minetest.get_gametime()
|
||||
if pandore.players[player_name] == nil then
|
||||
pandore.players[player_name] = minetest.get_gametime()
|
||||
elseif (now - pandore.players[player_name]) > pandore.delai_min then
|
||||
pandore.players[player_name] = minetest.get_gametime()
|
||||
else
|
||||
ouv_ok = false
|
||||
minetest.chat_send_all("Il ne faut pas abuser de la boîte de Pandore, "..player_name.."...")
|
||||
end
|
||||
end
|
||||
if ouv_ok then
|
||||
--ouverture de la boîte
|
||||
local plaie_names = {}
|
||||
for i,v in pairs(pandore.plaies) do
|
||||
plaie_names[#plaie_names+1] = i
|
||||
end
|
||||
local plaie = pandore.plaies[plaie_names[math.random(#plaie_names)]]
|
||||
local joueurs = minetest.get_connected_players()
|
||||
if plaie.tous then
|
||||
minetest.chat_send_all("Une boîte de Pandore a été ouverte"..player.."!")
|
||||
minetest.after(pandore.delai_plaie,function(joueurs)
|
||||
for _, victime in ipairs(joueurs) do
|
||||
plaie.action(victime)
|
||||
end
|
||||
end,joueurs)
|
||||
else
|
||||
local victime = joueurs[math.random(#joueurs)]
|
||||
minetest.chat_send_player(victime:get_player_name(),"Une boîte de Pandore a été ouverte pour toi"..player.."!")
|
||||
minetest.after(pandore.delai_plaie,plaie.action,victime)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
ajouter = function(player) --ajoute une boîte de Pandore près du joueur player
|
||||
if pandore.nombre_plaies > 0 then
|
||||
local nom = player:get_player_name()
|
||||
local pos = player:get_pos()
|
||||
local pos_inf = vector.subtract(pos,pandore.limite)
|
||||
local pos_sup = vector.add(pos,pandore.limite)
|
||||
local pos_boites = minetest.find_nodes_in_area_under_air(pos_inf, pos_sup,{"pandore:boite"})
|
||||
if #pos_boites == 0 then
|
||||
local pos_sols = minetest.find_nodes_in_area_under_air(pos_inf, pos_sup,{"group:soil"})
|
||||
if #pos_sols > 0 then
|
||||
local pos_boite = vector.add(pos_sols[math.random(#pos_sols)],{x=0,y=1,z=0})
|
||||
minetest.set_node(pos_boite, {name ='pandore:boite'})
|
||||
minetest.log("info","Une boîte de Pandore a été posée à "..dump(pos_boite))
|
||||
minetest.chat_send_all("Bienvenue "..nom..", une boîte de Pandore a été déposée pour toi!")
|
||||
else
|
||||
minetest.log("info","Aucune boîte de Pandore posée pour "..nom)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
-- on place une boîte de Pandore après le chargement des joueurs
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
minetest.after(pandore.delai_pop,pandore.ajouter,player)
|
||||
end)
|
||||
|
||||
--la boîte de Pandore
|
||||
minetest.register_node(pandore.mod_name..":boite", {
|
||||
description = "La boîte de Pandore",
|
||||
tiles = {"pandore.png"},
|
||||
is_ground_content = true,
|
||||
groups ={not_in_creative_inventory = 1},
|
||||
sunlight_propagates = false,
|
||||
walkable = false,
|
||||
pointable = true,
|
||||
diggable = false,
|
||||
climbable = false,
|
||||
buildable_to =false,
|
||||
drawtype = "normal",
|
||||
light_source = 2,
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
pandore.ouvrir(player:get_player_name())
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
local timer=minetest.get_node_timer(pos)
|
||||
timer:set((math.random(pandore.delai_max - pandore.delai_min) + pandore.delai_min),0)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
pandore.ouvrir()
|
||||
end
|
||||
})
|
Binary file not shown.
After Width: | Height: | Size: 690 B |
|
@ -0,0 +1,2 @@
|
|||
default
|
||||
pandore
|
|
@ -0,0 +1,61 @@
|
|||
--initialisation du mod
|
||||
pandore_cage = {
|
||||
mod_name = "pandore_cage", --nom du mod
|
||||
node_base = "default:obsidian_block", --nom du node servant de sol et de toit à la cage
|
||||
node_paroi = "default:glass", --nom du node servant de paroi à la cage
|
||||
node_interieur = "default:lava_source", --nom du node servant de contenu à la cage
|
||||
delai_cage = 5, --délai avant disparition de la cage
|
||||
set_cage = function(player) --place une cage autour du joueur player
|
||||
local pos = player:get_pos()
|
||||
|
||||
minetest.chat_send_all(player:get_player_name() .. ": bonne baignade!")
|
||||
|
||||
--etage du bas
|
||||
for i=-2,2 do
|
||||
for a=-2,2 do
|
||||
minetest.set_node(vector.add(pos,{x=a,y=-1,z=i}),{name=pandore_cage.node_base})
|
||||
end
|
||||
end
|
||||
--etage du haut
|
||||
for i=-2,2 do
|
||||
for a=-2,2 do
|
||||
minetest.set_node(vector.add(pos,{x=a,y=3,z=i}),{name=pandore_cage.node_base})
|
||||
end
|
||||
end
|
||||
--etage milieu
|
||||
for b=0,2 do
|
||||
--paroi
|
||||
for i=-2,2 do
|
||||
minetest.set_node(vector.add(pos,{x=2,y=b,z=i}),{name=pandore_cage.node_paroi})
|
||||
minetest.set_node(vector.add(pos,{x=-2,y=b,z=i}),{name=pandore_cage.node_paroi})
|
||||
end
|
||||
for a=-1,1 do
|
||||
minetest.set_node(vector.add(pos,{x=a,y=b,z=2}),{name=pandore_cage.node_paroi})
|
||||
minetest.set_node(vector.add(pos,{x=a,y=b,z=-2}),{name=pandore_cage.node_paroi})
|
||||
end
|
||||
--contenu
|
||||
for i=-1,1 do
|
||||
for a=-1,1 do
|
||||
minetest.set_node(vector.add(pos,{x=a,y=b,z=i}),{name=pandore_cage.node_interieur})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--suppression de la cage
|
||||
minetest.after(pandore_cage.delai_cage,function(pos)
|
||||
pandore_cage.remove_cage(pos)
|
||||
end,pos)
|
||||
end,
|
||||
remove_cage = function(pos) --supprimer une cage à la position pos
|
||||
for b=-1,3 do
|
||||
for i=-2,2 do
|
||||
for a=-2,2 do
|
||||
minetest.remove_node(vector.add(pos,{x=a,y=b,z=i}))
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
pandore.register_plaie(pandore_cage.mod_name,pandore_cage.set_cage)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
default
|
||||
pandore
|
||||
fire
|
|
@ -0,0 +1,104 @@
|
|||
--initialisation du mod
|
||||
pandore_ivy = {
|
||||
mod_name = "pandore_ivy", --nom du mod
|
||||
delai_expansion = 15, --délai d'expansion de la plaie
|
||||
rayon_max_expansion = 10, --rayon maximal d'expansion de la plaie
|
||||
dommages = 20, --dommages infligés par la plaie
|
||||
delai_remede = 2, --délai d'expansion du remède
|
||||
rayon_max_remede = 10, --rayon maximal d'expansion du remède
|
||||
delai_suppression = 5, --délai avant suppression du remede
|
||||
node_test = "default:dirt_with_grass", --node à tester avant de placer la plaie
|
||||
set_ivy = function(player) --place une plante au pied du joueur player
|
||||
local pos_under = vector.subtract(player:get_pos(),{x=0,y=1,z=0})
|
||||
local node_under = minetest.get_node(pos_under)
|
||||
local nom = player:get_player_name()
|
||||
if node_under.name == pandore_ivy.node_test then
|
||||
minetest.chat_send_all(nom .. ": tu vas te faire planter...")
|
||||
minetest.set_node(pos, {name =pandore_ivy.mod_name..":ivy"})
|
||||
else
|
||||
minetest.chat_send_all(nom .. " ne se trouve pas sur l'herbe, dommage...")
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
minetest.register_node(pandore_ivy.mod_name .. ":ivy", {
|
||||
description = "Ivy",
|
||||
tiles = {"ivy.png"},
|
||||
is_ground_content = false,
|
||||
groups ={
|
||||
snappy = 2,
|
||||
choppy = 2,
|
||||
oddly_breakable_by_hand = 3,
|
||||
flammable = 18,
|
||||
},
|
||||
sunlight_propagates = false,
|
||||
walkable = false,
|
||||
pointable = true,
|
||||
diggable = true,
|
||||
climbable = false,
|
||||
buildable_to =true,
|
||||
drawtype = "plantlike",
|
||||
light_source = 0,
|
||||
drop = pandore_ivy.mod_name .. ":ivy",
|
||||
damage_per_second = pandore_ivy.dommages,
|
||||
on_construct = function(pos)
|
||||
local timer=minetest.get_node_timer(pos)
|
||||
timer:set(math.random(pandore_ivy.delai_expansion) + 15,0)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
local pos_grasss = minetest.find_nodes_in_area_under_air(vector.add(pos,{x=-math.random(pandore_ivy.rayon_max_expansion),y=-math.random(pandore_ivy.rayon_max_expansion),z=-math.random(pandore_ivy.rayon_max_expansion)}),vector.add(pos,{x=math.random(pandore_ivy.rayon_max_expansion),y=math.random(pandore_ivy.rayon_max_expansion),z=math.random(pandore_ivy.rayon_max_expansion)}),{pandore_ivy.node_test})
|
||||
if #pos_grasss > 0 then
|
||||
minetest.set_node(vector.add(pos_grasss[math.random(#pos_grasss)],{x=0,y=1,z=0}), {name =pandore_ivy.mod_name..":ivy"})
|
||||
local timer=minetest.get_node_timer(pos)
|
||||
timer:set(math.random(pandore_ivy.delai_expansion) + 15,0)
|
||||
end
|
||||
end
|
||||
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = pandore_ivy.mod_name .. ":ivy2",
|
||||
recipe = {pandore_ivy.mod_name .. ":ivy", "fire:flint_and_steel"},
|
||||
})
|
||||
|
||||
minetest.register_node(pandore_ivy.mod_name .. ":ivy2", {
|
||||
description = "Ivy Brulée",
|
||||
tiles = {"ivy2.png"},
|
||||
is_ground_content = false,
|
||||
groups ={
|
||||
snappy = 2,
|
||||
choppy = 2,
|
||||
oddly_breakable_by_hand = 3,
|
||||
flammable = 3
|
||||
},
|
||||
sunlight_propagates = false,
|
||||
walkable = false,
|
||||
pointable = true,
|
||||
diggable = true,
|
||||
climbable = false,
|
||||
buildable_to =true,
|
||||
drawtype = "plantlike",
|
||||
light_source = 0,
|
||||
drop = pandore_ivy.mod_name .. ":ivy2",
|
||||
damage_per_second = 0,
|
||||
on_construct = function(pos)
|
||||
local timer=minetest.get_node_timer(pos)
|
||||
timer:set(pandore_ivy.delai_suppression,0)
|
||||
minetest.after(pandore_ivy.delai_remede,function(pos)
|
||||
local pos_inf = vector.add(pos,{x=-math.random(pandore_ivy.rayon_max_remede),y=-math.random(pandore_ivy.rayon_max_remede),z=-math.random(pandore_ivy.rayon_max_remede)})
|
||||
local pos_sup = vector.add(pos,{x=math.random(pandore_ivy.rayon_max_remede),y=math.random(pandore_ivy.rayon_max_remede),z=math.random(pandore_ivy.rayon_max_remede)})
|
||||
local pos_ivys = minetest.find_nodes_in_area(pos_inf,pos_sup,{pandore_ivy.mod_name..":ivy"})
|
||||
for i,v in ipairs(pos_ivys) do
|
||||
minetest.set_node(v,{name=pandore_ivy.mod_name..":ivy2"})
|
||||
end
|
||||
end,pos)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
minetest.remove_node(pos)
|
||||
end
|
||||
|
||||
})
|
||||
|
||||
pandore.register_plaie(pandore_ivy.mod_name,pandore_ivy.set_ivy)
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,2 @@
|
|||
default
|
||||
pandore
|
|
@ -0,0 +1,31 @@
|
|||
--initialisation du mod
|
||||
pandore_lave = {
|
||||
mod_name = "pandore_lave", --nom du mod
|
||||
duree_lave = 5, --durée avant disparition de la lave
|
||||
node_test = "default:dirt_with_grass", --node à remplacer par de la lave
|
||||
rayon = 0, --étendue de la lave (0=1 seul node)
|
||||
set_lave = function(player) --place de la lave sous le joueur player
|
||||
local pos_under = vector.subtract(player:get_pos(),{x=0,y=1,z=0})
|
||||
local nom = player:get_player_name()
|
||||
local node_under = minetest.get_node(pos_under)
|
||||
if node_under.name == pandore_lave.node_test then
|
||||
minetest.chat_send_all(nom .. ": le sol c'est de la lave!")
|
||||
for i=0-pandore_lave.rayon,0+pandore_lave.rayon do
|
||||
for j=0-pandore_lave.rayon,0+pandore_lave.rayon do
|
||||
minetest.set_node(vector.add(pos_under,{x=i,y=0,z=j}), {name = 'default:lava_source'})
|
||||
end
|
||||
end
|
||||
minetest.after(pandore_lave.duree_lave,function(pos)
|
||||
for i=0-pandore_lave.rayon,0+pandore_lave.rayon do
|
||||
for j=0-pandore_lave.rayon,0+pandore_lave.rayon do
|
||||
minetest.set_node(vector.add(pos_under,{x=i,y=0,z=j}), {name = pandore_lave.node_test})
|
||||
end
|
||||
end
|
||||
end,pos_under)
|
||||
else
|
||||
minetest.chat_send_all(nom .. " échappe à la lave, dommage...")
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
pandore.register_plaie(pandore_lave.mod_name,pandore_lave.set_lave)
|
|
@ -0,0 +1,2 @@
|
|||
default
|
||||
pandore
|
|
@ -0,0 +1,78 @@
|
|||
--initialisation du mod
|
||||
pandore_nuage = {
|
||||
mod_name = "pandore_nuage", --nom du mod
|
||||
dommages = 10, --dommages infligées par les flèches
|
||||
vitesse_fleche = 10, --vitesse de chute d'une flèche
|
||||
delai_fleches = 3, --coefficient de délai entre deux flèches
|
||||
hauteur_nuage = 10, --hauteur du nuage par rapport au joueur
|
||||
duree_nuage = 10, --durée en secondes du nuage
|
||||
set_nuage = function(player) --place un nuage au dessus du joueur player
|
||||
minetest.chat_send_all(player:get_player_name() .. ": tu es maudit!")
|
||||
local pos = vector.add(player:get_pos(),{x=0, y=pandore_nuage.hauteur_nuage, z=0})
|
||||
minetest.set_node(pos, {name =pandore_nuage.mod_name .. ":nuage_maudit"})
|
||||
minetest.set_node(vector.add(pos,{x=-1, y=0, z=0}), {name =pandore_nuage.mod_name .. ":nuage_maudit"})
|
||||
minetest.set_node(vector.add(pos,{x=1, y=0, z=0}), {name =pandore_nuage.mod_name .. ":nuage_maudit"})
|
||||
minetest.set_node(vector.add(pos,{x=0, y=0, z=-1}), {name =pandore_nuage.mod_name .. ":nuage_maudit"})
|
||||
minetest.set_node(vector.add(pos,{x=0, y=0, z=1}), {name =pandore_nuage.mod_name .. ":nuage_maudit"})
|
||||
end
|
||||
}
|
||||
|
||||
minetest.register_node(pandore_nuage.mod_name .. ":nuage_maudit", {
|
||||
description = "vole et envoi des fleches enpoisones",
|
||||
tiles = {"nuage.png"},
|
||||
groups ={
|
||||
snappy = 2,
|
||||
},
|
||||
is_ground_content = false,
|
||||
sunlight_propagates = false,
|
||||
walkable = false,
|
||||
pointable = true,
|
||||
diggable = true,
|
||||
climbable = false,
|
||||
buildable_to =false,
|
||||
drawtype = "normal",
|
||||
light_source = 0,
|
||||
on_construct = function(pos)
|
||||
local timer=minetest.get_node_timer(pos)
|
||||
timer:set((math.random(pandore_nuage.delai_fleches)+8)/10,0)
|
||||
minetest.after(pandore_nuage.duree_nuage,function(pos)
|
||||
minetest.remove_node(pos)
|
||||
end,pos)
|
||||
end,
|
||||
on_timer = function (pos,elapsed)
|
||||
minetest.set_node(vector.add(pos,{x=0,y=-1,z=0}),{name=pandore_nuage.mod_name .. ":fleche"})
|
||||
local timer=minetest.get_node_timer(pos)
|
||||
timer:set((math.random(pandore_nuage.delai_fleches)+1)/10,0)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node(pandore_nuage.mod_name .. ":fleche", {
|
||||
description='enpoisoner',
|
||||
tiles={'fleche.png'},
|
||||
drawtype="plantlike",
|
||||
groups={
|
||||
not_in_creative_inventory=1,
|
||||
},
|
||||
is_ground_content = false,
|
||||
sunlight_propagates = false,
|
||||
walkable = false,
|
||||
pointable = false,
|
||||
diggable = false,
|
||||
climbable = false,
|
||||
buildable_to =false,
|
||||
damage_per_second = pandore_nuage.dommages,
|
||||
on_construct = function(pos)
|
||||
local timer=minetest.get_node_timer(pos)
|
||||
timer:set(1/pandore_nuage.vitesse_fleche,0)
|
||||
end,
|
||||
on_timer = function (pos,elapsed)
|
||||
local pos_under = vector.add(pos,{x=0,y=-1,z=0})
|
||||
local node_under = minetest.get_node(pos_under)
|
||||
if node_under.name == "air" then
|
||||
minetest.set_node(pos_under,{name=pandore_nuage.mod_name .. ":fleche"})
|
||||
end
|
||||
minetest.remove_node(pos)
|
||||
end
|
||||
})
|
||||
|
||||
pandore.register_plaie(pandore_nuage.mod_name,pandore_nuage.set_nuage)
|
Binary file not shown.
After Width: | Height: | Size: 150 B |
Binary file not shown.
After Width: | Height: | Size: 174 B |
Loading…
Reference in New Issue