Skip to content

Commit

Permalink
πŸŽ₯ add red flashing intro + Flowey laugh cutscene on fight start (#241)
Browse files Browse the repository at this point in the history
* 🍱 add `intro_flashing_red` variant to `arena_box` model

* πŸ“‹ copy-paste `summit/soul` to `summit/cutscene`

* 🍱 add pitch-black variants for each Flowey model
- used later during intro cutscene

* πŸ”₯ delete unused copy-pasted code

* πŸŽ₯ configure infrastructure for `cutscene` bossfight phase

* πŸ’« add intro `darken` animation functions

* πŸ’« add intro `brighten` animation functions

* πŸ’« convert default Flowey model animation functions from `play` to `resume`
- since will be called after the intro cutscene paused the animations

* 🍱 add intro music file

* πŸŽ₯ add victory sound when player finishes bossfight

* πŸ’« add slow variants of largesidevine rotate animations

* πŸ’« add slow variant of nose idle animation

* ♻️ add animate flag to skip large_side_vine reanimation

* πŸŽ₯ add red flashing intro + laugh cutscene

* πŸ’« add mouth laugh animation

* πŸ”₯ delete mouth/teeth animation keyframes
- they werent properly applied to the whole animation anyway. we can delete the teeth specific bones later too

* ⚑️ remove extra teeth bones from mouth

* πŸ’« add randomized shake to mouth/nose/tvscreen during laugh animation

* πŸ’« add randomized shake to remaining Flowey models during intro laugh
- upper/lower eyes
- petal pipes

* πŸ’« decrease amount of shake tvscreen has during laugh animation

* temp, lots of glow + laughing animation/texture stuff

* πŸŽ₯ switch first phase in summit bossfight from attack phase to intro cutscene

* 🍱 fix texture mapping issues

* 🍱 auto save some ajblueprints

* 🍱 fix wrong sound file definition name

* πŸ› fix wrong flowey namespace

* πŸ’« fix largesidevine `pause` -> `slow`

* πŸ’« add and apply `black` variant to simplified petalpipes

* πŸ’« add and apply `intro_shake` animations to simplified petalpipes

* 🍱 fix intro_laugh variant and tvscreen brightness

* πŸ’„ blind and unblind player right before Flowey intro reveal

* πŸ’„ improve tvscreen smiling glow effect
- make it more outer than before

* πŸ’„ improve tvscreen warning glow effect

* 🍱 pixel perfect `screen_glow` element dimensions

* 🍱 fix tvscreen intro lighting
- is blue at night just barely kinda
- fix black variant missing one

* 🍱 delete tvscreen `screen_glow_laughing` element

* πŸ’„ make blind player effect in intro tighter to reveal

* πŸ› flip arena box 180 degrees

* πŸŽ₯ fix wrong smiling variant at laughing stop during intro

* πŸŽ₯ fix nose still shaking after laughing stops

* 🍱 fix nose zfighting during shake animation

* 🍱 convert all shake animation keyframes to step interpolation

* πŸ’« tween to shake animations

* πŸŽ₯ fix nose not moving fast once fight starts

* πŸ’„ improve tvscreen static glow effect

* πŸ’„ add static-noglow variant and use it appropriately during outside tvscreen transitions
- copy pasted code from `reset_variant` for speed

* πŸ’„ make smiling box glow noshade

* 🚸 replace `@a`'s in cutscene code

* 🍱 move `intro_laughing` element back so its not as far away from tvscreen

* πŸŽ₯ set to smiling variant post-laugh later than the shake stop
- else we see a gap at top of screen

* πŸ”₯ remove invalid `schedule clear` command

* 🚨 delete unused `blank_3` texture

* πŸ’„ adjust brightness of static/warning glow

* ✏️ make all instances of `ARENA_VOLUME` consistent

* πŸ› ⚑️ fix x-bullets not despawning and causing massive lag over time
- by making all instances of `GLOBAL_VOLUME` consistent

* πŸ› fix warning animation changing tvscreen bone.box brightness unintentionally
- not needed now that we animate it properly anyway

* πŸ’„ adjust tvscreen box brightness upon brighten

* πŸŽ₯ add face reveal animation during intro cutscene

* πŸŽ₯ add sound when screen turns on
- since we can't really do fade in from black to white

* πŸŽ₯ add 1s to turn_on screen animation

* πŸŽ₯ use smiling_wide after laugh
- and fix texture issue, was missing emissive in some white pixels

* πŸŽ₯ add DEMO title above Flowey during laugh

* πŸ”Š decrease volume of some intro sounds
- convert laugh back to stereo

* πŸ› fix DEMO not being deleted if player leaves while it exists

* πŸŽ₯ add sounds + animation when being teleported to bossfight

* 🚨 delete unused texture
  • Loading branch information
TheAfroOfDoom authored Oct 24, 2024
1 parent b843c16 commit d479643
Show file tree
Hide file tree
Showing 126 changed files with 6,237 additions and 499 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ function omegaflowey.entity:remove_animated_java_models/summit with storage omeg

# Remove other preexisting decorative entities
# NOTE: TAG_SUMMIT_HARDCODED_GLOBAL_VOLUME
kill @e[x=-186, dx=91, y=12, dy=93, z=12, dz=95, tag=decorative, tag=omega-flowey-remastered]
kill @e[x=-186, dx=91, y=10, dy=95, z=12, dz=95, tag=decorative, tag=omega-flowey-remastered]
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Assume the active player does not exist
scoreboard players set #omegaflowey.bossfight.stop_reason omegaflowey.global.flag 1

# TAG_SUMMIT_HARDCODED_ARENA_VOLUME
$execute as $(active_player_uuid) run function omegaflowey.entity:directorial/boss_fight/shared/loop/check_active_player_still_exists/as_active_player
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ execute unless entity @s[tag=omegaflowey.player.fighting_flowey] run return run
# - active player is within the arena bounds
# (if player is not within arena bounds, set stop_reason to 3)
# TAG_SUMMIT_HARDCODED_ARENA_VOLUME
execute unless entity @s[x=-186, dx=61, y=12, dy=44, z=47, dz=60] run return run \
execute unless entity @s[x=-186, dx=61, y=10, dy=46, z=47, dz=60] run return run \
scoreboard players set #omegaflowey.bossfight.stop_reason omegaflowey.global.flag 3
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function omegaflowey.main:telemetry/bossfight/tag/root/end
function omegaflowey.entity:remove_animated_java_models/boss_fight
# TAG_SUMMIT_HARDCODED_ARENA_VOLUME
execute as @e[ \
x=-186, dx=61, y=12, dy=44, z=47, dz=60, \
x=-186, dx=61, y=10, dy=46, z=47, dz=60, \
tag=omega-flowey-remastered \
] run function omegaflowey.entity:directorial/boss_fight/shared/stop/as_root

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
execute if entity @s[tag=boss_fight] run kill @s
execute if entity @s[tag=attack] run kill @s
execute if entity @s[tag=soul] run kill @s
execute if entity @s[tag=boss_fight.decorative] run kill @s
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@
function omegaflowey.entity:directorial/boss_fight/shared/initialize

# Summon and initialize `arena_box` entity
function animated_java:omegaflowey_arena_box/summon/default
function omegaflowey.entity:directorial/boss_fight/summit/origin/at { command: "\
execute positioned ~ ~ ~-20.5 rotated 0 0 run function animated_java:omegaflowey_arena_box/summon/default\
"}

# Add tags
tag @s add boss_fight.summit

# Summon Omega Flowey entity
function omegaflowey.entity:directorial/boss_fight/summit/origin/at { \
command: "function omegaflowey.entity:hostile/omega-flowey/summon/relative" \
}

# Set all attack parameters to default
function omegaflowey.entity:hostile/omega-flowey/attack/reset_scores

Expand All @@ -22,11 +19,10 @@ function omegaflowey.entity:directorial/boss_fight/shared/reset_scores
scoreboard players set @s omegaflowey.boss-fight.attack.delay -1
scoreboard players set @s omegaflowey.boss-fight.attack.phase.i 0
scoreboard players set @s omegaflowey.boss-fight.attack.phase.total 2
scoreboard players set @s omegaflowey.boss-fight.cutscene.phase.i 0
scoreboard players set @s omegaflowey.boss-fight.cutscene.phase.total 2
scoreboard players set @s omegaflowey.boss-fight.progress.phase.i 0
scoreboard players set @s omegaflowey.boss-fight.progress.phase.total 2

# Begin animating Omega Flowey entity
function omegaflowey.entity:hostile/omega-flowey/animate

# Initialize attack phase
function omegaflowey.entity:directorial/boss_fight/summit/phase/attack/initialize
# Initialize first cutscene
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/initialize
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ execute unless score #omegaflowey.bossfight.stop_reason omegaflowey.global.flag

# Run loop logic based on what phase the boss_fight is in
execute if entity @s[tag=boss_fight.phase.attack] run function omegaflowey.entity:directorial/boss_fight/summit/phase/attack/loop
execute if entity @s[tag=boss_fight.phase.cutscene] run function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop
execute if entity @s[tag=boss_fight.phase.soul] run function omegaflowey.entity:directorial/boss_fight/summit/phase/soul/loop
execute if entity @s[tag=boss_fight.phase.warn] run function omegaflowey.entity:directorial/boss_fight/summit/phase/warn/loop

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Set scores
scoreboard players set @s omegaflowey.boss-fight.cutscene.clock.i -1

# Add tags
tag @s add boss_fight.phase.cutscene

# Split on phase score
execute if score @s omegaflowey.boss-fight.cutscene.phase.i matches 0 run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/initialize/0 with storage omegaflowey:bossfight
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Delay before music/red flashing starts
scoreboard players set @s omegaflowey.boss-fight.cutscene.clock.i -14
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
scoreboard players add @s omegaflowey.boss-fight.cutscene.clock.i 1
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches ..-1 run return 0

# Run cutscene specific logic
execute if score @s omegaflowey.boss-fight.cutscene.phase.i matches 0 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 0 run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/start_cutscene with storage omegaflowey:bossfight

execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 1 run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/clear_player_blindness with storage omegaflowey:bossfight

execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 0..293 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/approach
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 332 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/turn_on_screen with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 362 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_2 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 363 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_3 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 365 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_4 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 366 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_5 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 367 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_6 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 380 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_7 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 381 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_8 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 383 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_9 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 384 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_10 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 385 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/reveal_11 with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 422 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/undarken with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 442 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/laugh_start with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 562 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/laugh_stop with storage omegaflowey:bossfight
execute if score @s omegaflowey.boss-fight.cutscene.clock.i matches 564 run return run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/loop/0/laugh_stop/screen with storage omegaflowey:bossfight
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# move Flowey models -29.4 Z blocks over 294 seconds
### TAG_SUMMIT_HARDCODED_ARENA_VOLUME (and +31 blocks in Z direction)
execute as @e[ \
x=-186, dx=61, y=10, dy=46, z=47, dz=91, \
type=minecraft:item_display, \
tag=aj.rig_root, \
tag=!aj.omegaflowey_arena_box.root, \
tag=omega-flowey-remastered \
] at @s run teleport @s ~ ~ ~-0.1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$effect clear $(active_player_uuid) minecraft:blindness
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
function omegaflowey.entity:shared/run_as_active_player_or_spectator { command: "\
execute at @s run playsound omega-flowey:cutscene.intro.laugh ambient @s ~ ~ ~ 1 1\
"}

$execute as $(attack_lower_eye_left_uuid) run \
function animated_java:omegaflowey_lower_eye/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
$execute as $(attack_lower_eye_right_uuid) run \
function animated_java:omegaflowey_lower_eye/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }

$execute as $(model_mouth_uuid) run \
function animated_java:omegaflowey_mouth/animations/omegaflowey_laugh/tween { duration: 1, to_frame: 0 }

data modify storage omegaflowey:bossfight temp set value { duration: 1 }
execute store result storage omegaflowey:bossfight temp.to_frame int 1 run scoreboard players get @s aj.omegaflowey_nose_move_slow.frame
$execute as $(model_nose_uuid) run \
function animated_java:omegaflowey_nose/animations/omegaflowey_nose_move_slow_shake/tween with storage omegaflowey:bossfight temp

$execute as $(petal_pipe_lower_left_uuid) run \
function animated_java:omegaflowey_petal_pipe_circle_simplified/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
$execute as $(petal_pipe_upper_left_uuid) run \
function animated_java:omegaflowey_petal_pipe_circle_simplified/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
$execute as $(petal_pipe_lower_right_uuid) run \
function animated_java:omegaflowey_petal_pipe_circle_simplified/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
$execute as $(petal_pipe_upper_right_uuid) run \
function animated_java:omegaflowey_petal_pipe_circle_simplified/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }

$execute as $(petal_pipe_middle_right_uuid) run \
function animated_java:omegaflowey_petal_pipe_middle_simplified/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
$execute as $(petal_pipe_middle_left_uuid) run \
function animated_java:omegaflowey_petal_pipe_middle_simplified/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }

$execute as $(bossfight_tvscreen_uuid) run \
function animated_java:omegaflowey_tv_screen/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
$execute as $(bossfight_tvscreen_uuid) run \
function animated_java:omegaflowey_tv_screen/variants/intro_laughing/apply

$execute as $(attack_upper_eye_left_uuid) run \
function animated_java:omegaflowey_upper_eye/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
$execute as $(attack_upper_eye_right_uuid) run \
function animated_java:omegaflowey_upper_eye/animations/omegaflowey_intro_shake/tween { duration: 1, to_frame: 0 }
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
data modify storage omegaflowey:bossfight temp set value { duration: 1 }
execute store result storage omegaflowey:bossfight temp.to_frame int 1 run scoreboard players get @s aj.omegaflowey_nose_move_slow_shake.frame
$execute as $(model_nose_uuid) run function animated_java:omegaflowey_nose/animations/omegaflowey_nose_move_slow/tween with storage omegaflowey:bossfight temp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/smiling_wide/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_10/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_11/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_2/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_3/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_4/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_5/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_6/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_7/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_8/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_9/apply
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Summon and animate Omega Flowey entity
function omegaflowey.entity:directorial/boss_fight/summit/origin/at { \
command: "execute positioned ~ ~ ~29.4 run function omegaflowey.entity:hostile/omega-flowey/summon/relative" \
}
execute as @e[ \
x=-186, dx=61, y=12, dy=44, z=47, dz=91, \
type=minecraft:item_display, \
tag=aj.rig_root, \
tag=omega-flowey-remastered \
] run function omegaflowey.entity:hostile/omega-flowey/animate/intro/darken/as_root

function omegaflowey.entity:shared/run_as_active_player_or_spectator { command: "\
execute at @s run playsound omega-flowey:cutscene.intro.music record @s ~ ~ ~ 1 1\
"}

# Set arena box to flashing red variant
$execute as $(arena_box_uuid) run function animated_java:omegaflowey_arena_box/variants/intro_flashing_red/apply

schedule function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/terminate/scheduled 575t
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
$execute as $(bossfight_tvscreen_uuid) run function animated_java:omegaflowey_tv_screen/variants/reveal_1/apply
$execute as $(bossfight_tvscreen_uuid) on passengers if entity @s[tag=aj.omegaflowey_tv_screen.bone] run \
data merge entity @s { brightness: { block: 11, sky: 0 } }

$execute at $(bossfight_tvscreen_uuid) run function omegaflowey.entity:shared/run_as_active_player_or_spectator { command: "\
playsound omega-flowey:cutscene.intro.turn_on ambient @s ~ ~ ~ 5 1\
"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Blind player for transition to bright model
$effect give $(active_player_uuid) minecraft:blindness 1 0 true

### TAG_SUMMIT_HARDCODED_ARENA_VOLUME (and +31 blocks in Z direction)
execute as @e[ \
x=-186, dx=61, y=10, dy=46, z=47, dz=91, \
type=minecraft:item_display, \
tag=aj.rig_root, \
tag=!aj.omegaflowey_arena_box.root, \
tag=omega-flowey-remastered \
] run function omegaflowey.entity:hostile/omega-flowey/animate/intro/brighten/as_root

$execute as $(arena_box_uuid) run function animated_java:omegaflowey_arena_box/variants/default/apply

summon minecraft:text_display -156.5 43.0625 76.0 { \
Tags: [ \
"omega-flowey-remastered", \
"directorial", \
"boss_fight.decorative", \
"demo-intro-title", \
], \
alignment: "center", \
background: 0, \
brightness: { block: 15, sky: 0 }, \
default_background: 0b, \
line_width: 200, \
see_through: 0b, \
shadow: 0b, \
text: '{ "text": "DEMO", "color": "yellow", "bold": true }', \
text_opacity: 255, \
transformation: { \
left_rotation: [0.0f, 0.92387956f, -0.38268352f, 0.0f], \
right_rotation: [0.0f, 0.0f, 0.0f, 1.0f], \
scale: [10.0f, 10.0f, 10.0f], \
translation: [0.0f, 0.0f, 0.0f] \
} \
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$execute as $(boss_fight_uuid) at @s run function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/terminate/as_bossfight with storage omegaflowey:bossfight
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# If cutscene doesn't have a specific terminate function, just proceed to attack phase

# Remove tags
tag @s remove boss_fight.phase.cutscene

# Kill DEMO title
kill @e[ \
x=-156.5, y=43.0625, z=76.0, distance=..0.01, \
type=minecraft:text_display, \
tag=demo-intro-title, \
limit=1 \
]

# Begin animating largesidevines/nose at full speed
$execute as $(large_side_vine_left_uuid) run function omegaflowey.entity:hostile/omega-flowey/animate/large_side_vine/resume_normal_from_slow/left
$execute as $(large_side_vine_right_uuid) run function omegaflowey.entity:hostile/omega-flowey/animate/large_side_vine/resume_normal_from_slow/right
$execute as $(model_nose_uuid) run function animated_java:omegaflowey_nose/animations/move/tween { duration: 1, to_frame: 1 }

# Re-animate main Omega Flowey models
scoreboard players set #omegaflowey.bossfight.skip_reanimate_largesidevine omegaflowey.global.flag 1
scoreboard players set #omegaflowey.bossfight.skip_reanimate_nose omegaflowey.global.flag 1
function omegaflowey.entity:hostile/omega-flowey/animate
scoreboard players set #omegaflowey.bossfight.skip_reanimate_nose omegaflowey.global.flag 0
scoreboard players set #omegaflowey.bossfight.skip_reanimate_largesidevine omegaflowey.global.flag 0

# Next phase
function omegaflowey.entity:directorial/boss_fight/summit/phase/attack/initialize
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
function omegaflowey.entity:directorial/boss_fight/summit/phase/cutscene/terminate with storage omegaflowey:bossfight
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ function omegaflowey.entity:directorial/boss_fight/shared/phase/soul/loop/next_e

# Split on phase score
execute if score @s omegaflowey.boss-fight.progress.phase.i matches 0 run function omegaflowey.entity:directorial/boss_fight/summit/phase/soul/loop/next_event/0
execute if score @s omegaflowey.boss-fight.progress.phase.i matches 1 run function omegaflowey.entity:directorial/boss_fight/summit/phase/soul/loop/next_event/1
execute if score @s omegaflowey.boss-fight.progress.phase.i matches 1 run \
function omegaflowey.entity:directorial/boss_fight/summit/phase/soul/loop/next_event/1 with storage omegaflowey:bossfight
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
say DONE
$execute at $(bossfight_tvscreen_uuid) run function omegaflowey.entity:shared/run_as_active_player_or_spectator { command: '\
playsound omega-flowey:cutscene.summit.victory ambient @s ~ ~ ~ 5 1\
'}

scoreboard players add @s omegaflowey.boss-fight.progress.phase.i 1

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ data modify storage omegaflowey:bossfight active_player_uuid set from storage gu
teleport @s ~ ~-4.0 ~-27.0 ~180.0 -40.0
spawnpoint @s -142 43 25 -45

execute at @s run playsound omega-flowey:cutscene.intro.battle_start_end ambient @s ~ ~ ~ 5

effect clear @s
effect give @s minecraft:blindness 5 0 true
effect give @s instant_health 1 4 true
function omegaflowey.main:summit/room/cave/active_player_display/update_value with storage omegaflowey:bossfight

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
scoreboard players set #omegaflowey.bossfight.has_player_been_prompted omegaflowey.global.flag 0
data remove storage omegaflowey:bossfight player_queue_timeout_uuid
schedule clear omegaflowey.entity:directorial/boss_fight/summit/player/queue/prompt_next_player/show_prompt/confirm/after_delay
schedule clear omegaflowey.entity:directorial/boss_fight/summit/player/queue/prompt_next_player/show_prompt/confirm/teleport_animation
schedule clear omegaflowey.entity:directorial/boss_fight/summit/player/queue/prompt_next_player/show_prompt/timeout
Loading

0 comments on commit d479643

Please sign in to comment.