[NEW] Afegit sistema de mood per a l'abad

This commit is contained in:
2026-04-05 00:33:21 +02:00
parent b2cb8698b4
commit 82ca7cb2b5
5 changed files with 104 additions and 27 deletions

View File

@@ -62,7 +62,8 @@ function abad_init()
anim={0,1,0,2}, anim={0,1,0,2},
bb={x=8,y=0,w=16,h=32}, bb={x=8,y=0,w=16,h=32},
safe={hab=10,x=40,y=24}, safe={hab=10,x=40,y=24},
move=abad.move } move=abad.move,
mood="normal"}
abad.update=abad_state_normal abad.update=abad_state_normal
abad.objects={} abad.objects={}
end end
@@ -74,6 +75,25 @@ function abad:move( x, y )
self.hab = hab self.hab = hab
end end
function abad_add_mood(abad_x, spr_off_x, abad_y, spr_off_y, flip, mood)
flip = flip or false
mood = mood or "normal"
if flip then
abad_x = abad_x-15+4
end
if mood~="normal" then
if mood=="sorpresa" then
draw.surf(240,0,11,4,abad_x+16-spr_off_x,abad_y+5-spr_off_y,11,4,flip)
elseif mood=="enfadat" then
draw.surf(240,4,11,4,abad_x+16-spr_off_x,abad_y+5-spr_off_y,11,4,flip)
elseif mood=="interessant" then
draw.surf(240,8,11,4,abad_x+16-spr_off_x,abad_y+5-spr_off_y,11,4,flip)
end
end
end
function abad:draw() function abad:draw()
local flip = abad.flip local flip = abad.flip
local x, y = viewp:screen_coords(self.x, self.y) local x, y = viewp:screen_coords(self.x, self.y)
@@ -87,6 +107,10 @@ function abad:draw()
end end
if (abad.respawning==0) or (math.floor(abad.respawning/15)%2==0) then if (abad.respawning==0) or (math.floor(abad.respawning/15)%2==0) then
draw.surf(abad.frame*abad.w,0,abad.w,abad.h,x,y,abad.w,abad.h,flip) draw.surf(abad.frame*abad.w,0,abad.w,abad.h,x,y,abad.w,abad.h,flip)
-- caminant, parat, disparant o saltant
if abad.frame<=3 or abad.frame==6 then
abad_add_mood(x,0,y,0,flip,abad.mood)
end
end end
if abad.respawning > 0 then if abad.respawning > 0 then

View File

@@ -19,9 +19,11 @@ function draw_escenari ()
draw_item_intro("pas porta") draw_item_intro("pas porta")
end end
function draw_item_intro( name, flip ) function draw_item_intro( name, flip, mood )
if ( name == "abad" ) then if ( name == "abad" ) then
-- abad.mood = mood or "normal"
draw.surf(abad.x, abad.y, abad.w, abad.h, abad.dx, abad.dy, abad.dw, abad.dh, flip) draw.surf(abad.x, abad.y, abad.w, abad.h, abad.dx, abad.dy, abad.dw, abad.dh, flip)
abad_add_mood(abad.dx,0,abad.dy,0,flip,mood)
elseif (name == "batman" ) then elseif (name == "batman" ) then
draw.surf(batman.x, batman.y, batman.w, batman.h, batman.dx, batman.dy, batman.dw, batman.dh, flip) draw.surf(batman.x, batman.y, batman.w, batman.h, batman.dx, batman.dy, batman.dw, batman.dh, flip)
elseif (name == "cacaus" ) then elseif (name == "cacaus" ) then
@@ -73,7 +75,7 @@ function intro_update()
-- STEP 0 -- STEP 0
if intro_step==0 then if intro_step==0 then
draw_escenari() draw_escenari()
draw_item_intro("abad", true) draw_item_intro("abad", false)
view.origin(0,0) view.origin(0,0)
intro_step=intro_step+1 intro_step=intro_step+1
-- STEP 1 -- STEP 1
@@ -85,7 +87,7 @@ function intro_update()
-- STEP 2 -- STEP 2
elseif intro_step==2 then elseif intro_step==2 then
draw_escenari() draw_escenari()
draw_item_intro("abad", true) draw_item_intro("abad", true, "sorpresa")
draw_item_intro("cacaus trans", false) draw_item_intro("cacaus trans", false)
view.origin(0,0) view.origin(0,0)
intro_step=intro_step+1 intro_step=intro_step+1

View File

@@ -87,7 +87,7 @@ function mini.init()
surf.target(0) surf.target(0)
surf.cls(16) surf.cls(16)
flow:executar("game") flow:executar("intro")
end end
function mini.update() function mini.update()

View File

@@ -4,7 +4,7 @@
o2aX = arcade_config.org2arc_escala o2aX = arcade_config.org2arc_escala
avatar_abad_x = 6 avatar_abad_x = 6
avatar_abad2_x = 8 avatar_abad2_x = 6
avatar_abad_y = 0 avatar_abad_y = 0
avatar_batman_x = 8 avatar_batman_x = 8
avatar_batman_y = 96 avatar_batman_y = 96
@@ -12,11 +12,14 @@ avatar_premiere_x = 138
avatar_premiere_y = 40 avatar_premiere_y = 40
avatar_elalien_x = 6 avatar_elalien_x = 6
avatar_elalien_y = 32 avatar_elalien_y = 32
avatar_w = 20 avatar_w = 22
avatar_h = 20 avatar_h = 21
avatar_photo_w = avatar_w*2
avatar_photo_h = avatar_h*2
avatar_imp_x = 134 avatar_imp_x = 134
avatar_imp_y = 96 avatar_imp_y = 96
avatar_sf=surf.new(avatar_w, avatar_h)
scenes={ scenes={
lluita_imp= { lluita_imp= {
@@ -29,7 +32,7 @@ scenes={
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"A saber que li he dit!","TRANQUIL! TRANQUIL!!!"," CACAUS A MI!!!!"},die=20}, {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"A saber que li he dit!","TRANQUIL! TRANQUIL!!!"," CACAUS A MI!!!!"},die=20},
}, },
llibre_trobat={ llibre_trobat={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Este llibre...","Es el de les tècniques","especials dels abad..."}}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Este llibre...","Es el de les tècniques","especials dels abad..."},mood="interessant"},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"...","TÈCNICA 'CACAU AERI'","salt i dispar"}}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"...","TÈCNICA 'CACAU AERI'","salt i dispar"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ja se"," 'CACAU AERI'",""}}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ja se"," 'CACAU AERI'",""}},
}, },
@@ -37,7 +40,7 @@ scenes={
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ah!, què bo!","Nit de Netflix amb","un bon bol de cacaus!"},die=20}, {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ah!, què bo!","Nit de Netflix amb","un bon bol de cacaus!"},die=20},
}, },
intro_02= { intro_02= {
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Eh! On està el","bol de cacaus???",""},die=20}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Eh! On està el","bol de cacaus???",""},die=20, mood="sorpresa"},
}, },
intro_03= { intro_03= {
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",musica=audio_song_batman,text={"ME L'HE ENDUT JO!!!", "S'HAN ACABAT ELS","CACAUS PA TU!"},die=20}, {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",musica=audio_song_batman,text={"ME L'HE ENDUT JO!!!", "S'HAN ACABAT ELS","CACAUS PA TU!"},die=20},
@@ -56,9 +59,9 @@ scenes={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Vaig a parlar en Premiere","que està al pis de dalt", "a vore si me pot ajudar"}}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Vaig a parlar en Premiere","que està al pis de dalt", "a vore si me pot ajudar"}},
}, },
abad_corfes={ abad_corfes={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Osti, està ple de","monstruacos.",""}}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Osti, està ple de","monstruacos.",""}, mood="sorpresa"},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Pos al que s'acoste","s'endurà una corfa","de cacau al cap!"}}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Els enviaré a altra","dimensió d'una cacauà!",""}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"I si van altets","igual val la pena","ajupir-se..."}} {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Si van altets","igual val la pena","ajupir-se..."}}
}, },
abad_portes={ abad_portes={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Qui ha tancat totes","les portes?",""}}, {x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Qui ha tancat totes","les portes?",""}},
@@ -208,12 +211,40 @@ end
function play_music() function play_music()
if scenes.current_scene[scenes.dnum].musica then if scenes.current_scene[scenes.dnum].musica then
print("PLAY MUSIC "..scenes.dnum) -- print("PLAY MUSIC "..scenes.dnum)
music.stop() music.stop()
music.play(scenes.current_scene[scenes.dnum].musica) music.play(scenes.current_scene[scenes.dnum].musica)
end end
end end
function draw_abad_with_mood(mood, dx, dy, dw, dh)
local ox, oy =view.origin()
view.origin(0,0)
-- -- composicio
local curr_sf = surf.target()
surf.target(avatar_sf)
surf.cls(16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,0,0,avatar_w,avatar_h)
abad_add_mood(0,scenes.current_scene[scenes.dnum].x,0,scenes.current_scene[scenes.dnum].y,false,mood)
-- if mood=="sorpresa" then
-- draw.surf(240,0,11,4,16-scenes.current_scene[scenes.dnum].x,5-scenes.current_scene[scenes.dnum].y,11,4)
-- elseif mood=="enfadat" then
-- draw.surf(240,4,11,4,16-scenes.current_scene[scenes.dnum].x,5-scenes.current_scene[scenes.dnum].y,11,4)
-- elseif mood=="interessant" then
-- draw.surf(240,8,11,4,16-scenes.current_scene[scenes.dnum].x,5-scenes.current_scene[scenes.dnum].y,11,4)
-- else
-- abad.mood="normal"
-- end
-- Dibuixar
view.origin(ox, oy)
surf.target(curr_sf)
curr_sf = surf.source()
surf.source(avatar_sf)
draw.surf(0,0,avatar_w,avatar_h, dx, dy, dw, dh)
surf.source(curr_sf)
-- draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h, dx, dy, dw, dh)
end
function draw_scene() function draw_scene()
local txt_x = not scenes.current_scene[scenes.dnum].flip and 38 or 8 local txt_x = not scenes.current_scene[scenes.dnum].flip and 38 or 8
@@ -235,19 +266,33 @@ function draw_scene()
-- 3, 4 -> Desplegar el avatar -- 3, 4 -> Desplegar el avatar
elseif scenes.step==3 then elseif scenes.step==3 then
if not scenes.current_scene[scenes.dnum].flip then if not scenes.current_scene[scenes.dnum].flip then
draw.rectf(8*o2aX,12*o2aX,24*o2aX,12*o2aX,16) draw.rectf(8*o2aX,12*o2aX,avatar_photo_w+8, (avatar_photo_h+8)/2,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,13*o2aX,20*o2aX,10*o2aX) -- Només està disponible per a l'abad
if scenes.current_scene[scenes.dnum].mood then
draw_abad_with_mood(scenes.current_scene[scenes.dnum].mood, 18, 26, avatar_photo_w, avatar_photo_h/2)
-- draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,13*o2aX,20*o2aX,10*o2aX)
else else
draw.rectf(97*o2aX,12*o2aX,24*o2aX,12*o2aX,16) abad.mood="normal"
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,13*o2aX,20*o2aX,10*o2aX,true) draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,13*o2aX,avatar_photo_w, avatar_photo_h/2)
end
else
draw.rectf(97*o2aX,12*o2aX,avatar_photo_w+8, (avatar_photo_h+8)/2,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,13*o2aX,avatar_photo_w, avatar_photo_h/2,true)
end end
elseif scenes.step==4 then elseif scenes.step==4 then
if not scenes.current_scene[scenes.dnum].flip then if not scenes.current_scene[scenes.dnum].flip then
draw.rectf(8*o2aX,7*o2aX,24*o2aX,22*o2aX,16) draw.rectf(8*o2aX,7*o2aX,avatar_photo_w+8,avatar_photo_h+4,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,20*o2aX,20*o2aX) -- Només està disponible per a l'abad
if scenes.current_scene[scenes.dnum].mood then
draw_abad_with_mood(scenes.current_scene[scenes.dnum].mood, 18, 16, avatar_photo_w, avatar_photo_h)
-- draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,20*o2aX,20*o2aX)
else else
draw.rectf(97*o2aX,7*o2aX,24*o2aX,22*o2aX,16) abad.mood="normal"
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,20*o2aX,20*o2aX,true) draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,avatar_photo_w, avatar_photo_h)
end
else
draw.rectf(97*o2aX,7*o2aX,avatar_photo_w+8,avatar_photo_h+4,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,avatar_photo_w, avatar_photo_h,true)
end end
-- 5, 6, 7 -> Escriure les 3 frases de diàleg -- 5, 6, 7 -> Escriure les 3 frases de diàleg
elseif scenes.step==5 then elseif scenes.step==5 then
@@ -283,11 +328,17 @@ function draw_scene()
draw.line(0,0,128*o2aX,0,16) draw.line(0,0,128*o2aX,0,16)
draw.line(0,34*o2aX+1,128*o2aX,34*o2aX+1,16) draw.line(0,34*o2aX+1,128*o2aX,34*o2aX+1,16)
if not scenes.current_scene[scenes.dnum].flip then if not scenes.current_scene[scenes.dnum].flip then
draw.rectf(8*o2aX,7*o2aX,24*o2aX,22*o2aX,16) draw.rectf(8*o2aX,7*o2aX,avatar_photo_w+8,avatar_photo_h+4,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,20*o2aX,20*o2aX) if scenes.current_scene[scenes.dnum].mood then
draw_abad_with_mood(scenes.current_scene[scenes.dnum].mood, 18, 16, avatar_photo_w, avatar_photo_h)
-- draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,13*o2aX,20*o2aX,10*o2aX)
else else
draw.rectf(97*o2aX,7*o2aX,24*o2aX,22*o2aX,16) abad.mood="normal"
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,20*o2aX,20*o2aX,true) draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,avatar_photo_w, avatar_photo_h)
end
else
draw.rectf(97*o2aX,7*o2aX,avatar_photo_w+8,avatar_photo_h+4,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,avatar_photo_w, avatar_photo_h,true)
end end
arc_textB(scenes.current_scene[scenes.dnum].text[1],txt_x*o2aX,7*o2aX,2) arc_textB(scenes.current_scene[scenes.dnum].text[1],txt_x*o2aX,7*o2aX,2)
arc_textB(scenes.current_scene[scenes.dnum].text[2],txt_x*o2aX,15*o2aX,2) arc_textB(scenes.current_scene[scenes.dnum].text[2],txt_x*o2aX,15*o2aX,2)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB