kawaijs 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/build.js +4 -4
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +3 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dev.js +4 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +20 -2
- package/dist/commands/validate.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -3
- package/dist/config.js.map +1 -1
- package/dist/pwa.d.ts +1 -1
- package/dist/pwa.d.ts.map +1 -1
- package/dist/pwa.js +4 -3
- package/dist/pwa.js.map +1 -1
- package/dist/runtime-bundle.d.ts +1 -0
- package/dist/runtime-bundle.d.ts.map +1 -1
- package/dist/runtime-bundle.js +32 -15
- package/dist/runtime-bundle.js.map +1 -1
- package/package.json +8 -7
- package/templates/starter/README.md +11 -0
- package/templates/starter/game/assets/audio/bgm_ambient.mp3 +0 -0
- package/templates/starter/game/assets/audio/bgm_ambient.wav +0 -0
- package/templates/starter/game/assets/audio/bgm_upbeat.mp3 +0 -0
- package/templates/starter/game/assets/audio/bgm_upbeat.wav +0 -0
- package/templates/starter/game/assets/audio/sfx_click.mp3 +0 -0
- package/templates/starter/game/assets/audio/sfx_click.wav +0 -0
- package/templates/starter/game/assets/audio/sfx_sparkle.mp3 +0 -0
- package/templates/starter/game/assets/audio/sfx_sparkle.wav +0 -0
- package/templates/starter/game/assets/backgrounds/cg_celebration.svg +150 -0
- package/templates/starter/game/assets/backgrounds/cg_sunset_promise.svg +70 -0
- package/templates/starter/game/assets/backgrounds/classroom.svg +47 -0
- package/templates/starter/game/assets/backgrounds/rooftop.svg +86 -0
- package/templates/starter/game/assets/backgrounds/sunset_courtyard.svg +75 -0
- package/templates/starter/game/assets/characters/kaori/happy.svg +40 -0
- package/templates/starter/game/assets/characters/kaori/normal.svg +46 -0
- package/templates/starter/game/assets/characters/kaori/smug.svg +38 -0
- package/templates/starter/game/assets/characters/kaori/thinking.svg +38 -0
- package/templates/starter/game/assets/characters/yumia/excited.svg +51 -0
- package/templates/starter/game/assets/characters/yumia/happy.svg +48 -0
- package/templates/starter/game/assets/characters/yumia/normal.svg +41 -0
- package/templates/starter/game/assets/characters/yumia/sad.svg +41 -0
- package/templates/starter/game/favicon.svg +8 -0
- package/templates/starter/game/script.kawa +160 -0
- package/templates/starter/game/style.css +41 -0
- package/templates/starter/package.json +14 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
|
|
4
|
+
<stop offset="0%" stop-color="#fb7185"/>
|
|
5
|
+
<stop offset="100%" stop-color="#e11d48"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
|
|
8
|
+
<stop offset="0%" stop-color="#1e293b"/>
|
|
9
|
+
<stop offset="100%" stop-color="#0f172a"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<!-- Body / School Uniform -->
|
|
14
|
+
<path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
|
|
15
|
+
<!-- White Collar -->
|
|
16
|
+
<polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
|
|
17
|
+
<!-- Red Ribbon -->
|
|
18
|
+
<polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
|
|
19
|
+
|
|
20
|
+
<!-- Neck -->
|
|
21
|
+
<rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
|
|
22
|
+
|
|
23
|
+
<!-- Long Hair (Back) -->
|
|
24
|
+
<path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
|
|
25
|
+
<path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
|
|
26
|
+
|
|
27
|
+
<!-- Face -->
|
|
28
|
+
<ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
|
|
29
|
+
|
|
30
|
+
<!-- Starry / Excited Eyes -->
|
|
31
|
+
<circle cx="245" cy="310" r="16" fill="#881337"/>
|
|
32
|
+
<circle cx="355" cy="310" r="16" fill="#881337"/>
|
|
33
|
+
<polygon points="245,298 249,307 258,307 251,313 253,322 245,317 237,322 239,313 232,307 241,307" fill="#fbbf24"/>
|
|
34
|
+
<polygon points="355,298 359,307 368,307 361,313 363,322 355,317 347,322 349,313 342,307 351,307" fill="#fbbf24"/>
|
|
35
|
+
|
|
36
|
+
<!-- Blush -->
|
|
37
|
+
<ellipse cx="235" cy="355" rx="22" ry="12" fill="#f43f5e" opacity="0.6"/>
|
|
38
|
+
<ellipse cx="365" cy="355" rx="22" ry="12" fill="#f43f5e" opacity="0.6"/>
|
|
39
|
+
|
|
40
|
+
<!-- Wide Open Happy Mouth -->
|
|
41
|
+
<path d="M275 360 Q300 410 325 360 Z" fill="#e11d48"/>
|
|
42
|
+
<path d="M285 390 Q300 405 315 390 Z" fill="#fda4af"/>
|
|
43
|
+
|
|
44
|
+
<!-- Hair (Front & Bangs) -->
|
|
45
|
+
<path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
|
|
46
|
+
<path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
|
|
47
|
+
<path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
|
|
48
|
+
|
|
49
|
+
<!-- Bouncing Ahoge -->
|
|
50
|
+
<path d="M300 170 Q340 80 370 110 Q335 120 305 170" fill="url(#hairGrad)"/>
|
|
51
|
+
</svg>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
|
|
4
|
+
<stop offset="0%" stop-color="#fb7185"/>
|
|
5
|
+
<stop offset="100%" stop-color="#e11d48"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
|
|
8
|
+
<stop offset="0%" stop-color="#1e293b"/>
|
|
9
|
+
<stop offset="100%" stop-color="#0f172a"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<!-- Body / School Uniform -->
|
|
14
|
+
<path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
|
|
15
|
+
<!-- White Collar -->
|
|
16
|
+
<polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
|
|
17
|
+
<!-- Red Ribbon -->
|
|
18
|
+
<polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
|
|
19
|
+
|
|
20
|
+
<!-- Neck -->
|
|
21
|
+
<rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
|
|
22
|
+
|
|
23
|
+
<!-- Long Hair (Back) -->
|
|
24
|
+
<path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
|
|
25
|
+
<path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
|
|
26
|
+
|
|
27
|
+
<!-- Face -->
|
|
28
|
+
<ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
|
|
29
|
+
|
|
30
|
+
<!-- Blush -->
|
|
31
|
+
<ellipse cx="235" cy="355" rx="18" ry="10" fill="#f43f5e" opacity="0.4"/>
|
|
32
|
+
<ellipse cx="365" cy="355" rx="18" ry="10" fill="#f43f5e" opacity="0.4"/>
|
|
33
|
+
|
|
34
|
+
<!-- Cheerful Eyes (Happy Arcs) -->
|
|
35
|
+
<path d="M225 315 Q245 295 265 315" fill="none" stroke="#881337" stroke-width="6" stroke-linecap="round"/>
|
|
36
|
+
<path d="M335 315 Q355 295 375 315" fill="none" stroke="#881337" stroke-width="6" stroke-linecap="round"/>
|
|
37
|
+
|
|
38
|
+
<!-- Smiling Mouth -->
|
|
39
|
+
<path d="M280 365 Q300 395 320 365 Z" fill="#e11d48"/>
|
|
40
|
+
|
|
41
|
+
<!-- Hair (Front & Bangs) -->
|
|
42
|
+
<path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
|
|
43
|
+
<path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
|
|
44
|
+
<path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
|
|
45
|
+
|
|
46
|
+
<!-- Cute Ahoge (Hair Strand) -->
|
|
47
|
+
<path d="M300 170 Q320 100 350 120 Q325 125 305 170" fill="url(#hairGrad)"/>
|
|
48
|
+
</svg>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
|
|
4
|
+
<stop offset="0%" stop-color="#fb7185"/>
|
|
5
|
+
<stop offset="100%" stop-color="#e11d48"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
|
|
8
|
+
<stop offset="0%" stop-color="#1e293b"/>
|
|
9
|
+
<stop offset="100%" stop-color="#0f172a"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<!-- Body / School Uniform -->
|
|
14
|
+
<path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
|
|
15
|
+
<polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
|
|
16
|
+
<polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
|
|
17
|
+
|
|
18
|
+
<!-- Neck -->
|
|
19
|
+
<rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
|
|
20
|
+
|
|
21
|
+
<!-- Long Hair (Back) -->
|
|
22
|
+
<path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
|
|
23
|
+
<path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
|
|
24
|
+
|
|
25
|
+
<!-- Face -->
|
|
26
|
+
<ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
|
|
27
|
+
|
|
28
|
+
<!-- Normal Eyes -->
|
|
29
|
+
<circle cx="245" cy="315" r="14" fill="#881337"/>
|
|
30
|
+
<circle cx="355" cy="315" r="14" fill="#881337"/>
|
|
31
|
+
<circle cx="249" cy="311" r="5" fill="#ffffff"/>
|
|
32
|
+
<circle cx="359" cy="311" r="5" fill="#ffffff"/>
|
|
33
|
+
|
|
34
|
+
<!-- Neutral Gentle Smile -->
|
|
35
|
+
<path d="M285 365 Q300 380 315 365" fill="none" stroke="#e11d48" stroke-width="4" stroke-linecap="round"/>
|
|
36
|
+
|
|
37
|
+
<!-- Hair (Front & Bangs) -->
|
|
38
|
+
<path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
|
|
39
|
+
<path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
|
|
40
|
+
<path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
|
|
41
|
+
</svg>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
|
|
4
|
+
<stop offset="0%" stop-color="#fb7185"/>
|
|
5
|
+
<stop offset="100%" stop-color="#e11d48"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
|
|
8
|
+
<stop offset="0%" stop-color="#1e293b"/>
|
|
9
|
+
<stop offset="100%" stop-color="#0f172a"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<!-- Body / School Uniform -->
|
|
14
|
+
<path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
|
|
15
|
+
<polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
|
|
16
|
+
<polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
|
|
17
|
+
|
|
18
|
+
<!-- Neck -->
|
|
19
|
+
<rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
|
|
20
|
+
|
|
21
|
+
<!-- Long Hair (Back) -->
|
|
22
|
+
<path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
|
|
23
|
+
<path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
|
|
24
|
+
|
|
25
|
+
<!-- Face -->
|
|
26
|
+
<ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
|
|
27
|
+
|
|
28
|
+
<!-- Sad / Pouting Eyes -->
|
|
29
|
+
<circle cx="245" cy="315" r="14" fill="#881337"/>
|
|
30
|
+
<circle cx="355" cy="315" r="14" fill="#881337"/>
|
|
31
|
+
<!-- Tear droplet -->
|
|
32
|
+
<circle cx="230" cy="335" r="5" fill="#38bdf8"/>
|
|
33
|
+
|
|
34
|
+
<!-- Pout / Frown -->
|
|
35
|
+
<path d="M285 375 Q300 360 315 375" fill="none" stroke="#e11d48" stroke-width="4" stroke-linecap="round"/>
|
|
36
|
+
|
|
37
|
+
<!-- Hair (Front & Bangs) -->
|
|
38
|
+
<path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
|
|
39
|
+
<path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
|
|
40
|
+
<path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
|
|
41
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-label="Game icon">
|
|
3
|
+
<rect width="512" height="512" rx="96" fill="#0f172a"/>
|
|
4
|
+
<circle cx="256" cy="210" r="110" fill="#f43f5e" opacity="0.95"/>
|
|
5
|
+
<path d="M120 400c40-70 100-100 136-100s96 30 136 100" fill="none" stroke="#f43f5e" stroke-width="28" stroke-linecap="round"/>
|
|
6
|
+
<circle cx="210" cy="190" r="14" fill="#0f172a"/>
|
|
7
|
+
<circle cx="302" cy="190" r="14" fill="#0f172a"/>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Kawaijs Showcase — "Code of Hearts"
|
|
2
|
+
# Living syntax guide: define, input, transitions, sakura, audio, camera, CG.
|
|
3
|
+
character yumia "Yumia" #f43f5e
|
|
4
|
+
character kaori "Kaori" #0284c7
|
|
5
|
+
|
|
6
|
+
define bg classroom = "classroom.svg"
|
|
7
|
+
define bg rooftop = "rooftop.svg"
|
|
8
|
+
define bg sunset_courtyard = "sunset_courtyard.svg"
|
|
9
|
+
define music ambient = "bgm_ambient"
|
|
10
|
+
define music upbeat = "bgm_upbeat"
|
|
11
|
+
|
|
12
|
+
label start:
|
|
13
|
+
set player_name = "Sensei"
|
|
14
|
+
set dev_score = 0
|
|
15
|
+
set creative_score = 0
|
|
16
|
+
|
|
17
|
+
play music ambient fade 2
|
|
18
|
+
|
|
19
|
+
scene bg classroom with fade
|
|
20
|
+
vfx sakura
|
|
21
|
+
show yumia happy at left with bounce
|
|
22
|
+
show kaori normal at right with dissolve
|
|
23
|
+
|
|
24
|
+
yumia "Welcome to the {b}Game Development Club{/b}! I'm Yumia."
|
|
25
|
+
kaori "And I'm Kaori. Before we begin — what should we call you?"
|
|
26
|
+
|
|
27
|
+
input player_name "What is your name?"
|
|
28
|
+
yumia "Nice to meet you, [player_name]! Watch the {color=#fda4af}sakura{/color} — that's {b}vfx sakura{/b}."
|
|
29
|
+
kaori "Scenes use {b}define{/b} aliases and transitions like {b}fade{/b}, {b}dissolve{/b}, or {b}wipeleft{/b}."
|
|
30
|
+
|
|
31
|
+
window hide
|
|
32
|
+
pause 700
|
|
33
|
+
window show
|
|
34
|
+
|
|
35
|
+
yumia "We need your help choosing our project's direction, [player_name]! What's your strength?"
|
|
36
|
+
|
|
37
|
+
menu:
|
|
38
|
+
"High-performance architecture & Web Audio":
|
|
39
|
+
play sound sfx_click
|
|
40
|
+
camera vpunch
|
|
41
|
+
set dev_score += 2
|
|
42
|
+
show kaori happy at right with nod
|
|
43
|
+
show yumia normal at left
|
|
44
|
+
kaori "Impressive. An engineer with an eye for modularity and crisp performance."
|
|
45
|
+
yumia "Hey! Don't forget that great stories need emotional resonance too!"
|
|
46
|
+
jump technical_route
|
|
47
|
+
|
|
48
|
+
"Rich storytelling, character drama & art":
|
|
49
|
+
play sound sfx_click
|
|
50
|
+
camera shake 500
|
|
51
|
+
set creative_score += 2
|
|
52
|
+
show yumia excited at left with bounce
|
|
53
|
+
show kaori thinking at right
|
|
54
|
+
yumia "Yes!! Players remember characters that touch their hearts."
|
|
55
|
+
kaori "A solid script is essential, provided the memory footprint stays lightweight."
|
|
56
|
+
jump creative_route
|
|
57
|
+
|
|
58
|
+
"Full-stack mastery: Code, Music, and Narrative":
|
|
59
|
+
play sound sfx_click
|
|
60
|
+
camera flash
|
|
61
|
+
set dev_score += 1
|
|
62
|
+
set creative_score += 1
|
|
63
|
+
show yumia excited at left with bounce
|
|
64
|
+
show kaori smug at right with nod
|
|
65
|
+
kaori "Ambitious. A true solo-dev Renaissance creator."
|
|
66
|
+
yumia "That means we can make something unforgettable together, [player_name]!"
|
|
67
|
+
jump courtyard_scene
|
|
68
|
+
|
|
69
|
+
label technical_route:
|
|
70
|
+
play music upbeat fade 1
|
|
71
|
+
scene bg rooftop with wipeleft
|
|
72
|
+
vfx fog
|
|
73
|
+
show kaori smug at center with dissolve
|
|
74
|
+
|
|
75
|
+
kaori "Up here on the misty rooftop — {b}vfx fog{/b} after a wipe transition."
|
|
76
|
+
kaori "Rollback snapshots, live reload, and a modular audio pipeline come free with the toolchain."
|
|
77
|
+
|
|
78
|
+
play sound sfx_sparkle
|
|
79
|
+
camera flash
|
|
80
|
+
pause 600
|
|
81
|
+
cg "cg_sunset_promise.svg" as "sunset_promise"
|
|
82
|
+
kaori "Look at the horizon, [player_name]. Dev score: [dev_score]. That's a fullscreen {b}cg{/b}."
|
|
83
|
+
jump evaluate_ending
|
|
84
|
+
|
|
85
|
+
label creative_route:
|
|
86
|
+
play music upbeat fade 1
|
|
87
|
+
scene bg sunset_courtyard with dissolve
|
|
88
|
+
vfx sakura
|
|
89
|
+
vfx tint "#fda4af"
|
|
90
|
+
show yumia happy at center with bounce
|
|
91
|
+
|
|
92
|
+
yumia "Isn't the sunset courtyard breathtaking, [player_name]?"
|
|
93
|
+
yumia "{b}vfx sakura{/b} plus {b}vfx tint{/b} — pink light over falling petals."
|
|
94
|
+
|
|
95
|
+
play sound sfx_sparkle
|
|
96
|
+
camera flash
|
|
97
|
+
pause 600
|
|
98
|
+
cg "cg_sunset_promise.svg" as "sunset_promise"
|
|
99
|
+
yumia "Creative score: [creative_score]. Great stories bloom when imagination meets great tools."
|
|
100
|
+
jump evaluate_ending
|
|
101
|
+
|
|
102
|
+
label courtyard_scene:
|
|
103
|
+
play music upbeat fade 1
|
|
104
|
+
scene bg sunset_courtyard with wiperight
|
|
105
|
+
vfx sakura
|
|
106
|
+
show yumia happy at left with bounce
|
|
107
|
+
show kaori happy at right with nod
|
|
108
|
+
|
|
109
|
+
yumia "Look at the sunset! Story branches and characters are already outlined."
|
|
110
|
+
kaori "The bundle is light. The Web Audio controller is ready."
|
|
111
|
+
|
|
112
|
+
yumia "Try a web-native {b}theme{/b}, a {b}style{/b} skin, and clickable {b}hotspots{/b}."
|
|
113
|
+
theme "sakura"
|
|
114
|
+
style dialogue glass
|
|
115
|
+
window hide
|
|
116
|
+
hotspot door 8 35 22 40 jump ending_master
|
|
117
|
+
hotspot poster 72 20 20 28 jump evaluate_ending
|
|
118
|
+
window show
|
|
119
|
+
|
|
120
|
+
camera hpunch
|
|
121
|
+
yumia "Let's bring all our talents together, [player_name]!"
|
|
122
|
+
jump evaluate_ending
|
|
123
|
+
|
|
124
|
+
label evaluate_ending:
|
|
125
|
+
if dev_score >= 2:
|
|
126
|
+
jump ending_tech
|
|
127
|
+
else:
|
|
128
|
+
if creative_score >= 2:
|
|
129
|
+
jump ending_creative
|
|
130
|
+
else:
|
|
131
|
+
jump ending_master
|
|
132
|
+
|
|
133
|
+
label ending_tech:
|
|
134
|
+
scene bg rooftop with fade
|
|
135
|
+
vfx fog
|
|
136
|
+
show kaori smug at center with dissolve
|
|
137
|
+
kaori "Engineering mastery with [dev_score] dev points. Our next release will be revolutionary."
|
|
138
|
+
narrator "{b}Ending 1/3: The Master Architect{/b} — High Performance & Flawless Code."
|
|
139
|
+
stop music fade 2
|
|
140
|
+
return
|
|
141
|
+
|
|
142
|
+
label ending_creative:
|
|
143
|
+
scene bg sunset_courtyard with fade
|
|
144
|
+
vfx sakura
|
|
145
|
+
show yumia excited at center with bounce
|
|
146
|
+
yumia "Creative score [creative_score]! This VN will touch hearts around the world!"
|
|
147
|
+
narrator "{b}Ending 2/3: The Renowned Storyteller{/b} — Emotion, Art & Unforgettable Characters."
|
|
148
|
+
stop music fade 2
|
|
149
|
+
return
|
|
150
|
+
|
|
151
|
+
label ending_master:
|
|
152
|
+
play sound sfx_sparkle
|
|
153
|
+
camera flash
|
|
154
|
+
pause 800
|
|
155
|
+
cg "cg_celebration.svg" as "celebration"
|
|
156
|
+
yumia "Code, art, music, and story in harmony! Dev: [dev_score], Creative: [creative_score]!"
|
|
157
|
+
kaori "You have unlocked the full power of Kawaijs, [player_name]."
|
|
158
|
+
narrator "{b}Ending 3/3: The Renaissance Visionary{/b} — A True Master of Interactive Fiction."
|
|
159
|
+
stop music fade 2
|
|
160
|
+
return
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Project CSS — override design tokens or target Kawaijs classes.
|
|
3
|
+
*
|
|
4
|
+
* Script hooks (no CSS edit required):
|
|
5
|
+
* theme "noir" | "sakura" | "ocean" | "dusk"
|
|
6
|
+
* style dialogue glass | solid | minimal
|
|
7
|
+
* style choices pill | card | underline
|
|
8
|
+
* style stage dim | vignette
|
|
9
|
+
*
|
|
10
|
+
* Official tokens (see @kawaijs/renderer-dom/theme.css):
|
|
11
|
+
* --kawa-primary-accent, --kawa-primary-glow, --kawa-dialogue-bg,
|
|
12
|
+
* --kawa-dialogue-border, --kawa-font-body, --kawa-font-heading
|
|
13
|
+
*/
|
|
14
|
+
:root {
|
|
15
|
+
--kawa-primary-accent: #f43f5e;
|
|
16
|
+
--kawa-primary-glow: rgba(244, 63, 94, 0.45);
|
|
17
|
+
--kawa-dialogue-radius: 18px;
|
|
18
|
+
--kawa-choice-radius: 12px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Custom Dialogue Box Glassmorphism */
|
|
22
|
+
.kawa-dialogue-box,
|
|
23
|
+
.kawa-dialogue {
|
|
24
|
+
backdrop-filter: blur(20px) saturate(180%);
|
|
25
|
+
-webkit-backdrop-filter: blur(20px) saturate(180%);
|
|
26
|
+
box-shadow: 0 24px 60px -10px rgba(0, 0, 0, 0.8), 0 0 30px rgba(244, 63, 94, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
27
|
+
border: 1px solid rgba(244, 63, 94, 0.4);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Custom Choice Buttons */
|
|
31
|
+
.kawa-choice-btn,
|
|
32
|
+
.kawa-choice {
|
|
33
|
+
transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
34
|
+
letter-spacing: 0.02em;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.kawa-choice-btn:hover,
|
|
38
|
+
.kawa-choice:hover {
|
|
39
|
+
transform: translateY(-3px) scale(1.025);
|
|
40
|
+
box-shadow: 0 12px 30px rgba(244, 63, 94, 0.5), 0 0 20px rgba(244, 63, 94, 0.3);
|
|
41
|
+
}
|