SUPER PLAYER!
This commit is contained in:
parent
fa94bf6601
commit
f1168c099a
13 changed files with 136 additions and 9 deletions
|
@ -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()
|
||||
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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=""
|
||||
|
||||
|
|
BIN
graphics/player/palettes/super_player.tex
Normal file
BIN
graphics/player/palettes/super_player.tex
Normal file
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -76,7 +76,6 @@ material = SubResource( 7 )
|
|||
position = Vector2( 0, -1 )
|
||||
frames = SubResource( 5 )
|
||||
animation = "key"
|
||||
frame = 5
|
||||
playing = true
|
||||
centered = false
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue