Add fireworks when raid complete
This commit is contained in:
parent
8564a12398
commit
93e5034317
|
@ -55,7 +55,9 @@ local function start_event(p,e)
|
||||||
active_events[idx].percent = 100
|
active_events[idx].percent = 100
|
||||||
active_events[idx].bars = {}
|
active_events[idx].bars = {}
|
||||||
active_events[idx].time_start = os.time()
|
active_events[idx].time_start = os.time()
|
||||||
active_events[idx]:on_start(p.pos)
|
if active_events[idx].on_start then
|
||||||
|
active_events[idx]:on_start(p.pos)
|
||||||
|
end
|
||||||
addbars(active_events[idx])
|
addbars(active_events[idx])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -91,7 +93,7 @@ function check_events(dtime)
|
||||||
ae:on_stage_begin()
|
ae:on_stage_begin()
|
||||||
end
|
end
|
||||||
elseif not ae.finished and ae.on_step then
|
elseif not ae.finished and ae.on_step then
|
||||||
ae:on_step()
|
ae:on_step(dtime)
|
||||||
end
|
end
|
||||||
addbars(ae)
|
addbars(ae)
|
||||||
end
|
end
|
||||||
|
|
|
@ -226,6 +226,27 @@ function mcl_raids.find_village(pos)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_point_on_circle(pos,r,n)
|
||||||
|
local rt = {}
|
||||||
|
for i=1, n do
|
||||||
|
table.insert(rt,vector.offset(pos,r * math.cos(((i-1)/n) * (2*math.pi)),0, r* math.sin(((i-1)/n) * (2*math.pi)) ))
|
||||||
|
end
|
||||||
|
table.shuffle(rt)
|
||||||
|
return rt[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
local function start_firework_rocket(pos)
|
||||||
|
local pp = get_point_on_circle(pos,math.random(32,64),32)
|
||||||
|
local o = minetest.add_entity(pp,"mcl_bows:rocket_entity")
|
||||||
|
o:set_acceleration(vector.new(math.random(0,2),math.random(30,50),math.random(0,2)))
|
||||||
|
end
|
||||||
|
|
||||||
|
local function make_firework(pos)
|
||||||
|
for i=1,math.random(25) do
|
||||||
|
minetest.after(math.random(i),start_firework_rocket,pos)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
mcl_events.register_event("raid",{
|
mcl_events.register_event("raid",{
|
||||||
readable_name = "Raid",
|
readable_name = "Raid",
|
||||||
max_stage = 5,
|
max_stage = 5,
|
||||||
|
@ -290,6 +311,7 @@ mcl_events.register_event("raid",{
|
||||||
on_complete = function(self)
|
on_complete = function(self)
|
||||||
awards.unlock(self.player,"mcl:hero_of_the_village")
|
awards.unlock(self.player,"mcl:hero_of_the_village")
|
||||||
mcl_potions.player_clear_effect(minetest.get_player_by_name(self.player),"bad_omen")
|
mcl_potions.player_clear_effect(minetest.get_player_by_name(self.player),"bad_omen")
|
||||||
|
make_firework(self.pos)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -315,3 +337,39 @@ minetest.register_chatcommand("dump_banner_layers",{
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local function is_new_years()
|
||||||
|
local d = os.date("*t")
|
||||||
|
return d.month == 1 and d.day == 1 and d.hour < 1
|
||||||
|
end
|
||||||
|
|
||||||
|
mcl_events.register_event("new_years",{
|
||||||
|
stage = 0,
|
||||||
|
max_stage = 1,
|
||||||
|
readable_name = "New Years",
|
||||||
|
pos = vector.new(0,0,0),
|
||||||
|
exclusive_to_area = 256,
|
||||||
|
cond_start = function(event)
|
||||||
|
if not is_new_years() then return false end
|
||||||
|
local r = {}
|
||||||
|
for _,p in pairs(minetest.get_connected_players()) do
|
||||||
|
table.insert(r,{ player = p:get_player_name(), pos = p:get_pos()})
|
||||||
|
end
|
||||||
|
return r
|
||||||
|
end,
|
||||||
|
on_start = function(self)
|
||||||
|
minetest.chat_send_player(self.player,"<cora> Happy new year <3")
|
||||||
|
end,
|
||||||
|
on_step = function(self,dtime)
|
||||||
|
if not self.timer or self.timer < 0 then
|
||||||
|
self.timer = math.random(1,5)
|
||||||
|
for i=1,math.random(8) do
|
||||||
|
minetest.after(math.random(i),start_firework_rocket,minetest.get_player_by_name(self.player):get_pos())
|
||||||
|
end
|
||||||
|
end
|
||||||
|
self.timer = self.timer - dtime
|
||||||
|
end,
|
||||||
|
cond_complete = function(event)
|
||||||
|
return not is_new_years()
|
||||||
|
end, --return success
|
||||||
|
})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user