SUPER PLAYER!

This commit is contained in:
Haze Weathers 2024-07-14 01:46:14 -04:00
parent fa94bf6601
commit f1168c099a
13 changed files with 136 additions and 9 deletions

View file

@ -189,6 +189,9 @@ func clear_collectibles() -> void:
func save():
if marathon_mode:
return
var new_super := Save.current_file.is_super_player()
# get level's save data object
var save_id = LevelData.levels[current_level].save_id
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
@ -215,6 +218,9 @@ func save():
# add to playtime
Save.current_file.play_time += time
if new_super and Save.current_file.is_super_player():
Save.current_file.palette = "super_player"
# save the file
Save.current_file.save_to_file()
@ -223,6 +229,9 @@ func save():
func save_boss() -> void:
if marathon_mode:
return
var new_super := not Save.current_file.is_super_player()
var save_id = LevelData.levels[current_level].save_id
var save_data: Save.LevelSaveData = Save.current_file.levels[save_id]
@ -230,6 +239,10 @@ func save_boss() -> void:
save_data.completed = true
Save.current_file.play_time += time
if new_super and Save.current_file.is_super_player():
Save.current_file.palette = "super_player"
Save.current_file.save_to_file()

View file

@ -118,6 +118,9 @@ class SaveFile:
total += level.deaths
return total
func is_super_player() -> bool:
return get_total_shards() >= 72 and levels["boss3"].completed
# loads data from the file at `path`
func load_from_file() -> void:
var file = ConfigFile.new()

View file

@ -50,7 +50,7 @@ custom_features=""
export_filter="all_resources"
include_filter="ngio.ini"
exclude_filter=""
export_path="build/linux/Hero Mark 2.x86_64"
export_path="build/linux/Revolution 2083.x86_64"
script_export_mode=1
script_encryption_key=""

Binary file not shown.

View file

@ -62,6 +62,10 @@ func refresh():
$"%Difficulty".text = Game.DIFFICULTY_NAMES[file.difficulty]
var palette = load("res://graphics/player/palettes/%s.tex" % file.palette)
$"%Palette".material.set_shader_param("palette", palette)
if file.palette == "super_player":
$"%Sparkles".visible = true
else:
$"%Sparkles".visible = false
else:
file = null
$FileExists.visible = false

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=15 format=2]
[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1]
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2]
@ -10,6 +10,8 @@
[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=8]
[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=9]
[ext_resource path="res://objects/enemy/death_particles.tscn" type="PackedScene" id=10]
[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=11]
[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=12]
[sub_resource type="ShaderMaterial" id=1]
resource_local_to_scene = true
@ -18,6 +20,9 @@ shader_param/border_color = Color( 0, 0, 0, 1 )
shader_param/border_corners = true
shader_param/palette = ExtResource( 9 )
[sub_resource type="Curve" id=2]
_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ]
[node name="Panel" type="Panel"]
margin_right = 72.0
margin_bottom = 88.0
@ -72,6 +77,25 @@ margin_bottom = 48.0
texture = ExtResource( 8 )
stretch_mode = 4
[node name="Sparkles" type="CPUParticles2D" parent="FileExists/Palette"]
unique_name_in_owner = true
visible = false
light_mask = 0
position = Vector2( 10, 16 )
amount = 2
lifetime = 2.0
texture = ExtResource( 12 )
emission_shape = 2
emission_rect_extents = Vector2( 4, 10 )
gravity = Vector2( 0, 0 )
angular_velocity = 720.0
angular_velocity_random = 1.0
angle = 720.0
angle_random = 1.0
scale_amount_curve = SubResource( 2 )
color = Color( 1, 0.972549, 0.52549, 1 )
script = ExtResource( 11 )
[node name="ShardCounter" type="Label" parent="FileExists"]
unique_name_in_owner = true
margin_left = 43.0

View file

@ -41,6 +41,8 @@ func _ready() -> void:
Audio.play_music(music)
var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette)
player_sprite.material.set_shader_param("palette", palette)
if Game.current_palette == "super_player":
$"%Sparkles".visible = true
$ShardCount.text = "%02d" % Save.current_file.get_total_shards()
Fade.fade_in(Options.transition_speed_secs)
# set initial offset

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=45 format=2]
[gd_scene load_steps=48 format=2]
[ext_resource path="res://menus/level_select_scholar.gd" type="Script" id=1]
[ext_resource path="res://graphics/level_select/world_map.png" type="Texture" id=2]
@ -19,6 +19,8 @@
[ext_resource path="res://shaders/recolor.tres" type="Shader" id=17]
[ext_resource path="res://objects/hud/options_screen_scholar.tscn" type="PackedScene" id=18]
[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=19]
[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=20]
[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=21]
[sub_resource type="CanvasItemMaterial" id=9]
particles_animation = true
@ -35,6 +37,9 @@ _data = {
shader = ExtResource( 17 )
shader_param/palette = ExtResource( 16 )
[sub_resource type="Curve" id=27]
_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ]
[sub_resource type="ShaderMaterial" id=2]
shader = ExtResource( 7 )
shader_param/speed = Vector2( 4, 0 )
@ -964,6 +969,24 @@ material = SubResource( 15 )
position = Vector2( 0, -2 )
texture = ExtResource( 3 )
[node name="Sparkles" type="CPUParticles2D" parent="LevelPath/PlayerPosition/PlayerSprite"]
unique_name_in_owner = true
visible = false
light_mask = 0
amount = 1
lifetime = 2.0
texture = ExtResource( 21 )
emission_shape = 2
emission_rect_extents = Vector2( 4, 4 )
gravity = Vector2( 0, 0 )
angular_velocity = 720.0
angular_velocity_random = 1.0
angle = 720.0
angle_random = 1.0
scale_amount_curve = SubResource( 27 )
color = Color( 0.996078, 1, 0.760784, 1 )
script = ExtResource( 20 )
[node name="hills" type="PathFollow2D" parent="LevelPath"]
position = Vector2( 61, 140 )
rotation = 1.04814

View file

@ -15,6 +15,10 @@ onready var sg: AnimatedSprite = $SG
func _ready() -> void:
assert(titles.size() == palettes.size(), "titles and palettes arrays are not same size")
if Save.current_file.is_super_player():
palettes.append(preload("res://graphics/player/palettes/super_player.tex"))
titles.append("Super Player")
for i in palettes.size():
var id = palettes[i].resource_path.get_file().get_basename()
if id == Save.current_file.palette:
@ -41,5 +45,9 @@ func _input(event: InputEvent) -> void:
sg.material.set_shader_param("palette", palettes[current_palette])
$"%PaletteTitle".text = titles[current_palette]
Game.current_palette = palettes[current_palette].resource_path.get_file().get_basename()
if Game.current_palette == "super_player":
$"%Sparkles".visible = true
else:
$"%Sparkles".visible = false
Save.current_file.palette = Game.current_palette
Save.current_file.save_to_file()

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=47 format=2]
[gd_scene load_steps=51 format=2]
[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1]
[ext_resource path="res://ui/theme.tres" type="Theme" id=2]
@ -37,6 +37,9 @@
[ext_resource path="res://graphics/player/palettes/nightrunner.tex" type="Texture" id=35]
[ext_resource path="res://graphics/player/palettes/typhoon.tex" type="Texture" id=36]
[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=37]
[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=38]
[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=39]
[ext_resource path="res://graphics/player/palettes/super_player.tex" type="Texture" id=40]
[sub_resource type="ShaderMaterial" id=1]
shader = ExtResource( 1 )
@ -52,7 +55,7 @@ shader_param/uv_transform = Transform2D( 0.5, -0.5, 0.5, 1, 0, 0 )
shader = ExtResource( 4 )
shader_param/border_color = Color( 0, 0, 0, 1 )
shader_param/border_corners = true
shader_param/palette = ExtResource( 18 )
shader_param/palette = ExtResource( 40 )
[sub_resource type="AtlasTexture" id=5]
atlas = ExtResource( 10 )
@ -78,6 +81,9 @@ animations = [ {
"speed": 10.0
} ]
[sub_resource type="Curve" id=10]
_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ]
[sub_resource type="ShaderMaterial" id=3]
shader = ExtResource( 8 )
shader_param/speed = Vector2( 4, 0 )
@ -156,8 +162,27 @@ material = SubResource( 2 )
position = Vector2( 128, 128 )
scale = Vector2( 3, 3 )
frames = SubResource( 9 )
frame = 2
playing = true
[node name="Sparkles" type="CPUParticles2D" parent="SG"]
unique_name_in_owner = true
light_mask = 0
position = Vector2( 0, 6.33333 )
amount = 2
lifetime = 2.0
texture = ExtResource( 39 )
emission_shape = 2
emission_rect_extents = Vector2( 4, 10 )
gravity = Vector2( 0, 0 )
angular_velocity = 720.0
angular_velocity_random = 1.0
angle = 720.0
angle_random = 1.0
scale_amount_curve = SubResource( 10 )
color = Color( 1, 0.972549, 0.52549, 1 )
script = ExtResource( 38 )
[node name="CenterContainer" type="CenterContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0

View file

@ -76,7 +76,6 @@ material = SubResource( 7 )
position = Vector2( 0, -1 )
frames = SubResource( 5 )
animation = "key"
frame = 5
playing = true
centered = false

View file

@ -75,6 +75,8 @@ func _ready() -> void:
sprite.material.set_shader_param("palette", palette)
$"%CFox".material.set_shader_param("palette", palette)
$"%DissolveParticles".material.set_shader_param("palette", palette)
if Game.current_palette == "super_player":
$"%Sparkles".visible = true
# death handling
Game.respawn_point = global_position

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=49 format=2]
[gd_scene load_steps=52 format=2]
[ext_resource path="res://objects/player/player.gd" type="Script" id=1]
[ext_resource path="res://graphics/player/sg_zap.png" type="Texture" id=2]
@ -14,6 +14,8 @@
[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=12]
[ext_resource path="res://shaders/electricity.gdshader" type="Shader" id=13]
[ext_resource path="res://graphics/player/sg.png" type="Texture" id=14]
[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=15]
[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=16]
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=18]
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=25]
@ -23,6 +25,9 @@ shader_param/border_color = Color( 0, 0, 0, 1 )
shader_param/border_corners = true
shader_param/palette = ExtResource( 12 )
[sub_resource type="Curve" id=34]
_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ]
[sub_resource type="ShaderMaterial" id=32]
shader = ExtResource( 13 )
shader_param/arc_speed = 4.0
@ -890,6 +895,24 @@ offset = Vector2( 0, -6 )
hframes = 8
vframes = 20
[node name="Sparkles" type="CPUParticles2D" parent="Graphics/Sprite"]
unique_name_in_owner = true
visible = false
light_mask = 0
amount = 2
lifetime = 2.0
texture = ExtResource( 16 )
emission_shape = 2
emission_rect_extents = Vector2( 4, 10 )
gravity = Vector2( 0, 0 )
angular_velocity = 720.0
angular_velocity_random = 1.0
angle = 720.0
angle_random = 1.0
scale_amount_curve = SubResource( 34 )
color = Color( 1, 0.972549, 0.52549, 1 )
script = ExtResource( 15 )
[node name="ZapSprite" type="AnimatedSprite" parent="Graphics"]
visible = false
material = SubResource( 32 )
@ -982,6 +1005,7 @@ shape = SubResource( 2 )
[node name="Hitbox" type="Area2D" parent="." groups=["player_hitbox"]]
unique_name_in_owner = true
visible = false
collision_layer = 11
collision_mask = 32
@ -1508,8 +1532,8 @@ align = 1
[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Shooting" to="." method="_on_Shooting_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_on_Pushing_state_entered"]
[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_process_pushing"]
[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="reset_fall_speed"]
[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="_on_Airborne_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="reset_fall_speed"]
[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne" to="." method="_process_gravity"]
[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_horizontal_movement"]
[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_jump"]
@ -1534,8 +1558,8 @@ align = 1
[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Teleporting_state_entered"]
[connection signal="state_exited" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_exited"]
[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Appearing_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Appearing_state_entered"]
[connection signal="state_exited" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_exited"]
[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"]