From 634489613458c983fb992461f10d25685c932cfb Mon Sep 17 00:00:00 2001 From: pennyrigate Date: Mon, 24 Mar 2025 23:49:56 -0400 Subject: [PATCH 1/4] i hate revolution 2083 --- cutscenes/fami_cutscene.gd | 1 + cutscenes/fami_cutscene.tscn | 264 +++++++++++++++++++++++++++++++---- menus/credits.tscn | 59 ++++---- 3 files changed, 261 insertions(+), 63 deletions(-) diff --git a/cutscenes/fami_cutscene.gd b/cutscenes/fami_cutscene.gd index 4f2edb1..fb18afb 100644 --- a/cutscenes/fami_cutscene.gd +++ b/cutscenes/fami_cutscene.gd @@ -29,6 +29,7 @@ func skip_cutscene() -> void: Fade.fade_out(Options.transition_speed_secs) yield(Fade, "fade_finished") animation_player.seek(cutscene_skip) + $Label.rect_position.y = -99999 # stupid 1.1 stuff Fade.fade_in(Options.transition_speed_secs) func kill_cop() -> void: diff --git a/cutscenes/fami_cutscene.tscn b/cutscenes/fami_cutscene.tscn index f4130d9..14034bf 100644 --- a/cutscenes/fami_cutscene.tscn +++ b/cutscenes/fami_cutscene.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=46 format=2] +[gd_scene load_steps=47 format=2] [ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=2] @@ -10,7 +10,6 @@ [ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=8] [ext_resource path="res://graphics/npc/fami_human.png" type="Texture" id=9] [ext_resource path="res://cutscenes/fami_cutscene.gd" type="Script" id=10] -[ext_resource path="res://audio/sounds/fami_voice.ogg" type="AudioStream" id=11] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=12] [ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=13] [ext_resource path="res://graphics/enemy/cop/scope_walk.png" type="Texture" id=14] @@ -235,19 +234,20 @@ tracks/10/keys = { [sub_resource type="Animation" id=2] resource_name = "cutscene" -length = 93.0 +length = 100.0 +step = 0.05 tracks/0/type = "value" tracks/0/path = NodePath("Label:text") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false -tracks/0/enabled = true +tracks/0/enabled = false tracks/0/keys = { -"times": PoolRealArray( 0.25, 5.3, 13.2, 19.25, 28.75, 37.3, 46.8, 51.8, 58.3, 59.25, 78.75 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"times": PoolRealArray( 0, 4.5, 9.5, 13.5, 18.5, 22.5, 26.5, 30.5, 34.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 2, -"values": [ "Aha! so you've made it this far, however your efforts are all in vain.", "You see, SG, -I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "I've heard you want to start a revolution. Well, I'll have you know I kicked off my own revolution in 2068, and to be honest I don't quite see why you want my revolution to end.", "You know what they say, the freer the market, the freer the people, ever since then I've never felt so free! I think your revolution is a foolish pipe dream! ", "Adam Smith once said \"Nobody but a beggar chooses to depend chiefly upon the benevolence of his fellow citizens\", your commie society would never work!", "Oh? How will i reconstruct the Zircon Ultima? You're just the perfect tool for that. ", "While you've been on your gay little adventure collecting shards I've been waiting for this very moment to take them all from you!", "Have at you!", "", "" ] +"values": [ "So you've made it this far... too bad your efforts are all in vain.", "You see, SG, +I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "You plan to hijack my wonderful future, eh? Whaddya kids call it? A revolution?", "Ha! I already started my own revolution in 2068.", "You know what they say, the freer the market, the freer the people! Ever since then, I never felt so free!", "You're such a fool. The perfect tool for the reconstruction of the Zircon Ultima.", "While you've been on your gay little adventure collecting shards I've been waiting for this very moment to take them all from you!", "Have at you!!!" ] } tracks/1/type = "value" tracks/1/path = NodePath("FamiVoice:playing") @@ -256,7 +256,7 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0.25, 78.75 ), +"times": PoolRealArray( 0.25, 96 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] @@ -268,7 +268,7 @@ tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0.25, 59.25, 60.75 ), +"times": PoolRealArray( 0.25, 76.5, 78 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, "values": [ Vector2( -8, 169 ), Vector2( -8, 169 ), Vector2( 72, 169 ) ] @@ -280,7 +280,7 @@ tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { -"times": PoolRealArray( 0, 59.25, 60.75 ), +"times": PoolRealArray( 0, 76.5, 78 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ "gun", "walk", "gun" ] @@ -292,7 +292,7 @@ tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { -"times": PoolRealArray( 0.25, 61.75, 63.75, 64.25, 69.75, 71.75, 75.75, 76.25 ), +"times": PoolRealArray( 0.25, 79, 81, 81.5, 87, 89, 93, 93.5 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, "values": [ "idle", "walk", "idle", "punch", "walk", "idle", "shrink", "orb" ] @@ -304,7 +304,7 @@ tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { -"times": PoolRealArray( 0.25, 61.75, 63.75, 69.75, 71.75, 75.75, 77.75, 78.75 ), +"times": PoolRealArray( 0.25, 79, 81, 87, 89, 93, 95, 96 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 0, "values": [ Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 105, 167 ), Vector2( 105, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 83 ) ] @@ -316,7 +316,7 @@ tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { -"times": PoolRealArray( 0.5, 65.5, 70.75 ), +"times": PoolRealArray( 0.5, 82.8, 88 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ false, true, false ] @@ -328,7 +328,7 @@ tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { -"times": PoolRealArray( 0.25, 72.75, 75.75 ), +"times": PoolRealArray( 0.25, 90, 93 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ false, true, false ] @@ -340,7 +340,7 @@ tracks/8/loop_wrap = true tracks/8/imported = false tracks/8/enabled = true tracks/8/keys = { -"times": PoolRealArray( 0.25, 74.75, 75.75 ), +"times": PoolRealArray( 0.25, 92, 93 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, "values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ) ] @@ -352,7 +352,7 @@ tracks/9/loop_wrap = true tracks/9/imported = false tracks/9/enabled = true tracks/9/keys = { -"times": PoolRealArray( 0.25, 74.75, 75.75 ), +"times": PoolRealArray( 0.25, 92, 93 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, "values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] @@ -364,7 +364,7 @@ tracks/10/loop_wrap = true tracks/10/imported = false tracks/10/enabled = true tracks/10/keys = { -"times": PoolRealArray( 78.75 ), +"times": PoolRealArray( 96 ), "transitions": PoolRealArray( 1 ), "values": [ { "args": [ "cutscene_finished" ], @@ -378,7 +378,7 @@ tracks/11/loop_wrap = true tracks/11/imported = false tracks/11/enabled = true tracks/11/keys = { -"times": PoolRealArray( 0, 72.75 ), +"times": PoolRealArray( 0, 90 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] @@ -390,7 +390,7 @@ tracks/12/loop_wrap = true tracks/12/imported = false tracks/12/enabled = true tracks/12/keys = { -"times": PoolRealArray( 0, 65.5 ), +"times": PoolRealArray( 0, 82.8 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] @@ -402,7 +402,7 @@ tracks/13/loop_wrap = true tracks/13/imported = false tracks/13/enabled = true tracks/13/keys = { -"times": PoolRealArray( 0, 76.5 ), +"times": PoolRealArray( 0, 93.8 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] @@ -414,10 +414,10 @@ tracks/14/loop_wrap = true tracks/14/imported = false tracks/14/enabled = true tracks/14/keys = { -"times": PoolRealArray( 0, 2.6, 2.7, 2.8, 8, 8.1, 8.2, 12.4, 12.5, 13, 17.1092, 17.2092, 18.3092, 25.8, 25.9, 27.9, 36.6, 36.7, 38.7, 41.4, 41.8, 42.2, 42.6, 44.3, 45, 45.5, 46, 46.5, 47.2, 47.7, 48.2, 48.8, 49.5, 50, 50.5, 51, 51.7, 52.2, 52.7, 53.3, 54, 54.5, 55, 55.5, 56.2, 56.7, 57.2, 57.8, 58.5, 59, 59.5, 60.2, 60.8, 61, 61.5, 61.6, 64.25, 71.75, 71.85, 71.975, 72.125, 73, 73.1 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03526, 1, 1, 1.03526, 1, 1.03526, 1, 1.03526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"times": PoolRealArray( 0, 2.6, 2.7, 2.8, 8, 8.1, 8.2, 12.4, 12.5, 13, 17.1092, 17.2092, 18.3092, 22.25, 24.25, 30.25, 30.5, 32.5, 40.25, 40.75, 41.25, 41.5, 48, 48.75, 49.25, 49.75, 50.25, 51, 51.5, 52, 52.5, 53.25, 53.75, 54.25, 54.75, 55.5, 56, 56.5, 57, 57.75, 58.25, 58.75, 60.75, 61.5, 62, 62.5, 63, 63.75, 64.25, 64.75, 65.25, 66, 66.5, 67, 67.5, 68.25, 68.75, 69.25, 69.75, 70.5, 71, 71.5, 72.25, 73, 73.5, 74, 74.5, 78, 78.15, 78.3, 78.45, 89.8, 90, 90.2, 90.3, 90.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03526, 1, 1, 1.03526, 1, 1.03526, 1, 1.03526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, -"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 0, 17 ), Vector2( 0, 0 ), Vector2( 0, 16 ), Vector2( 0, 0 ), Vector2( 0, 17 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 16 ), Vector2( 0, 0 ) ] +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 0, 19 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 0, 17 ), Vector2( 0, 0 ), Vector2( 0, 16 ), Vector2( 0, 17 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 12 ), Vector2( 0, 16 ), Vector2( 0, 0 ) ] } tracks/15/type = "value" tracks/15/path = NodePath("SgIdle:flip_h") @@ -426,7 +426,7 @@ tracks/15/loop_wrap = true tracks/15/imported = false tracks/15/enabled = true tracks/15/keys = { -"times": PoolRealArray( 0, 61.5, 61.6, 73 ), +"times": PoolRealArray( 0, 50.75, 78.45, 90.4 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, "values": [ false, false, true, false ] @@ -438,7 +438,7 @@ tracks/16/loop_wrap = true tracks/16/imported = false tracks/16/enabled = true tracks/16/keys = { -"times": PoolRealArray( 64.25, 65.5 ), +"times": PoolRealArray( 81.5, 82.8 ), "transitions": PoolRealArray( 1, 1 ), "values": [ { "args": [ ], @@ -455,11 +455,212 @@ tracks/17/loop_wrap = true tracks/17/imported = false tracks/17/enabled = true tracks/17/keys = { -"times": PoolRealArray( -0.1, 60.5 ), +"times": PoolRealArray( -0.1, 78 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ false, true ] } +tracks/18/type = "value" +tracks/18/path = NodePath("Label:percent_visible") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = false +tracks/18/keys = { +"times": PoolRealArray( 0, 3, 4, 4.5, 8, 9, 9.5, 12, 13, 13.5, 17, 18, 18.5, 21, 22, 22.5, 25, 26, 26.5, 29, 30, 30.5, 33, 34, 34.5, 37 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Label:visible") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = false +tracks/19/keys = { +"times": PoolRealArray( 0, 4, 4.5, 9, 9.5, 13, 13.5, 18, 18.5, 22, 22.5, 26, 26.5, 30, 30.5, 34, 34.5, 39 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false ] +} + +[sub_resource type="Animation" id=27] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardRain:emitting") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("FamiVoice:playing") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("FamiHuman:material:shader_param/background_color") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiHuman:material:shader_param/arc_color") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Label:text") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "" ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("FamiHuman:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 160, 167 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("SgIdle:frame_coords") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("SgIdle:flip_h") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("FamiHuman:animation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "idle" ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Cop:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -8, 169 ) ] +} + +[sub_resource type="Animation" id=28] +resource_name = "cutscene" +length = 93.0 +step = 0.25 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:text") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 4.5, 9.5, 13.5, 18.5, 22.5, 26.5, 30.5, 34.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 2, +"values": [ "So you've made it this far... too bad your efforts are all in vain.", "You see, SG, +I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "You plan to hijack my wonderful future, eh? Whaddya kids call it? A revolution?", "Ha! I already started my own revolution in 2068.", "You know what they say, the freer the market, the freer the people! Ever since then, I never felt so free!", "You're such a fool. The perfect tool for the reconstruction of the Zircon Ultima.", "While you've been on your gay little adventure collecting shards, I've been waiting for this very moment to take them all from you!", "Have at you!!!" ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Label:percent_visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 3, 4, 4.5, 8, 9, 9.5, 12, 13, 13.5, 17, 18, 18.5, 21, 22, 22.5, 25, 26, 26.5, 29, 30, 30.5, 33, 34, 34.5, 35.25 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Label:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 4, 4.5, 9, 9.5, 13, 13.5, 18, 18.5, 22, 22.5, 26, 26.5, 30, 30.5, 34, 34.5, 37 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false ] +} [sub_resource type="ShaderMaterial" id=8] shader = ExtResource( 12 ) @@ -529,6 +730,7 @@ theme = ExtResource( 3 ) align = 1 valign = 1 autowrap = true +percent_visible = 0.0 [node name="FamiHuman" type="AnimatedSprite" parent="."] material = ExtResource( 19 ) @@ -548,7 +750,6 @@ vframes = 20 script = ExtResource( 5 ) [node name="FamiVoice" type="AudioStreamPlayer" parent="."] -stream = ExtResource( 11 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "cutscene" @@ -556,6 +757,13 @@ playback_process_mode = 0 anims/RESET = SubResource( 16 ) anims/cutscene = SubResource( 2 ) +[node name="labelanim" type="AnimationPlayer" parent="."] +autoplay = "cutscene" +playback_process_mode = 0 +playback_speed = 0.5 +anims/RESET = SubResource( 27 ) +anims/cutscene = SubResource( 28 ) + [node name="Cop" type="AnimatedSprite" parent="."] material = SubResource( 8 ) position = Vector2( -8, 169 ) diff --git a/menus/credits.tscn b/menus/credits.tscn index a3f4484..19d725c 100644 --- a/menus/credits.tscn +++ b/menus/credits.tscn @@ -627,10 +627,10 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 2, 3, 5, 6, 10, 11, 15, 16, 20, 21, 25, 26, 30, 31, 35, 36, 40, 41, 45, 46, 50, 51, 55, 56, 60, 61, 65, 66, 70, 71, 75, 76, 80, 81, 85, 86, 90, 91, 95 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"times": PoolRealArray( 0, 2, 3, 5, 6, 10, 11, 15, 16, 20, 21, 25, 26, 30, 31, 35, 36, 40, 41, 45, 46, 50, 51, 55, 56, 60, 61, 65, 66, 70, 71, 75, 76, 80, 81, 85, 86, 90 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 0, -"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( -256, 0 ), Vector2( -256, 0 ), Vector2( -512, 0 ), Vector2( -512, 0 ), Vector2( -768, 0 ), Vector2( -768, 0 ), Vector2( -1024, 0 ), Vector2( -1024, 0 ), Vector2( -1280, 0 ), Vector2( -1280, 0 ), Vector2( -1536, 0 ), Vector2( -1536, 0 ), Vector2( -1792, 0 ), Vector2( -1792, 0 ), Vector2( -2048, 0 ), Vector2( -2048, 0 ), Vector2( -2304, 0 ), Vector2( -2304, 0 ), Vector2( -2560, 0 ), Vector2( -2560, 0 ), Vector2( -2816, 0 ), Vector2( -2816, 0 ), Vector2( -3072, 0 ), Vector2( -3072, 0 ), Vector2( -3328, 0 ), Vector2( -3328, 0 ), Vector2( -3584, 0 ), Vector2( -3584, 0 ), Vector2( -3840, 0 ), Vector2( -3840, 0 ), Vector2( -4096, 0 ), Vector2( -4096, 0 ), Vector2( -4352, 0 ), Vector2( -4352, 0 ), Vector2( -4608, 0 ), Vector2( -4608, 0 ), Vector2( -4864, 0 ), Vector2( -4864, 0 ) ] +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( -256, 0 ), Vector2( -256, 0 ), Vector2( -512, 0 ), Vector2( -512, 0 ), Vector2( -768, 0 ), Vector2( -768, 0 ), Vector2( -1024, 0 ), Vector2( -1024, 0 ), Vector2( -1280, 0 ), Vector2( -1280, 0 ), Vector2( -1536, 0 ), Vector2( -1536, 0 ), Vector2( -1792, 0 ), Vector2( -1792, 0 ), Vector2( -2048, 0 ), Vector2( -2048, 0 ), Vector2( -2304, 0 ), Vector2( -2304, 0 ), Vector2( -2560, 0 ), Vector2( -2560, 0 ), Vector2( -2816, 0 ), Vector2( -2816, 0 ), Vector2( -3072, 0 ), Vector2( -3072, 0 ), Vector2( -3328, 0 ), Vector2( -3328, 0 ), Vector2( -3584, 0 ), Vector2( -3584, 0 ), Vector2( -3840, 0 ), Vector2( -3840, 0 ), Vector2( -4096, 0 ), Vector2( -4096, 0 ), Vector2( -4352, 0 ), Vector2( -4352, 0 ), Vector2( -4608, 0 ), Vector2( -4608, 0 ) ] } [node name="Credits" type="Node" groups=["map"]] @@ -685,17 +685,17 @@ text = "Game Staff" [node name="RollCall" type="Label" parent="Control/TeamSG"] modulate = Color( 0.426872, 0.218491, 0.433594, 1 ) -margin_left = 2735.0 +margin_left = 2479.0 margin_top = -15.0 -margin_right = 2927.0 +margin_right = 2671.0 margin_bottom = 1.0 theme = SubResource( 93 ) text = "Roll Call!!!" [node name="RollCall2" type="Label" parent="Control/TeamSG"] -margin_left = 2735.0 +margin_left = 2479.0 margin_top = -17.0 -margin_right = 2927.0 +margin_right = 2671.0 margin_bottom = -1.0 theme = SubResource( 93 ) text = "Roll Call!!!" @@ -804,23 +804,12 @@ Character design help" align = 1 valign = 1 -[node name="GasStationCoffee" type="Label" parent="Control"] +[node name="Wolfboy" type="Label" parent="Control"] material = ExtResource( 4 ) margin_left = 1792.0 margin_right = 2048.0 margin_bottom = 192.0 theme = ExtResource( 6 ) -text = "-Amber \"fami\" coffee- -voice of \"fami\"" -align = 1 -valign = 1 - -[node name="Wolfboy" type="Label" parent="Control"] -material = ExtResource( 4 ) -margin_left = 2048.0 -margin_right = 2304.0 -margin_bottom = 192.0 -theme = ExtResource( 6 ) text = "-WolfBoy \"SG-2083\"- \"infiltration\" border" align = 1 @@ -828,8 +817,8 @@ valign = 1 [node name="Bodhi" type="Label" parent="Control"] material = ExtResource( 4 ) -margin_left = 2304.0 -margin_right = 2560.0 +margin_left = 2048.0 +margin_right = 2304.0 margin_bottom = 192.0 theme = ExtResource( 6 ) text = "-Bodhi \"eviscerator\" darner- @@ -839,8 +828,8 @@ valign = 1 [node name="Playtesters" type="Label" parent="Control"] material = ExtResource( 4 ) -margin_left = 2560.0 -margin_right = 2816.0 +margin_left = 2304.0 +margin_right = 2560.0 margin_bottom = 192.0 theme = ExtResource( 6 ) text = "-Our playtesters- @@ -857,8 +846,8 @@ valign = 1 [node name="WonderingNow" type="Label" parent="Control"] material = ExtResource( 4 ) -margin_left = 2816.0 -margin_right = 3072.0 +margin_left = 2560.0 +margin_right = 2816.0 margin_bottom = 192.0 theme = ExtResource( 6 ) text = "-You're wondering now- @@ -875,8 +864,8 @@ valign = 1 [node name="SpecialThanks" type="Label" parent="Control"] material = ExtResource( 4 ) -margin_left = 3072.0 -margin_right = 3328.0 +margin_left = 2816.0 +margin_right = 3072.0 margin_bottom = 192.0 theme = ExtResource( 6 ) text = "-Special thanks- @@ -890,9 +879,9 @@ valign = 1 [node name="Playername" type="Label" parent="Control"] material = ExtResource( 4 ) -margin_left = 3072.0 +margin_left = 2816.0 margin_top = 123.0 -margin_right = 3328.0 +margin_right = 3072.0 margin_bottom = 133.0 theme = ExtResource( 6 ) text = "Ty Tiramisu" @@ -900,7 +889,7 @@ align = 1 autowrap = true [node name="RollCall1" type="Node2D" parent="Control"] -position = Vector2( 3584, 0 ) +position = Vector2( 3328, 0 ) [node name="SG" type="AnimatedSprite" parent="Control/RollCall1"] material = SubResource( 7 ) @@ -1001,7 +990,7 @@ text = "Vile Villians" align = 1 [node name="RollCall2" type="Node2D" parent="Control"] -position = Vector2( 1024, 0 ) +position = Vector2( 768, 0 ) [node name="Eviscerator" type="AnimatedSprite" parent="Control/RollCall2"] material = SubResource( 13 ) @@ -1141,7 +1130,7 @@ Poachers" align = 1 [node name="RollCall3" type="Node2D" parent="Control"] -position = Vector2( 4096, 0 ) +position = Vector2( 3840, 0 ) [node name="Shedge" type="AnimatedSprite" parent="Control/RollCall3"] position = Vector2( 60, 25 ) @@ -1350,10 +1339,11 @@ experiments" align = 1 [node name="RollCall4" type="Node2D" parent="Control"] -position = Vector2( 1024, 0 ) +position = Vector2( 768, 0 ) [node name="2600" parent="Control/RollCall4" instance=ExtResource( 37 )] position = Vector2( 3464, -8 ) +make_explosions = true [node name="ShootTimer" parent="Control/RollCall4/2600" index="2"] autostart = false @@ -1449,7 +1439,6 @@ text = "Tin" align = 1 [node name="RollCall6" type="Node2D" parent="Control"] -position = Vector2( 256, 0 ) [node name="Famira" parent="Control/RollCall6" instance=ExtResource( 47 )] position = Vector2( 4502, 184 ) @@ -1478,7 +1467,7 @@ text = "Super Famira" align = 1 [node name="RollCall5" type="Node2D" parent="Control"] -position = Vector2( 4864, 0 ) +position = Vector2( 4608, 0 ) [node name="Haze" type="Sprite" parent="Control/RollCall5"] position = Vector2( 80, 136 ) From da17fbc52e1f61607ebbf41a30828bca4aec1137 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Tue, 25 Mar 2025 01:50:08 -0400 Subject: [PATCH 2/4] this dragged out too long.. --- graphics/hud/title_credits.png | Bin 3170 -> 5178 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/hud/title_credits.png b/graphics/hud/title_credits.png index 5066a5972b3aad32288cf22bca197879c5b79cdf..6ebb035f67daf22765554997c21fe31e33a18860 100644 GIT binary patch literal 5178 zcmeHLX;c$g7EV}1)@Bs7-D7ZrV~nAzwIvWst19>r;#*X&jv=5su7!~5ATkXnZQTwAep zV@1-+Qz1m*%|TA#4d~_bYc@3;aM>N<0H<@t!(1dRe_)N5toFJ*HT7i1vq|md6fd0Cg)?PXKk6D8Z6UablfnyoLBMoZ25zd{FoV;b5eF<(+6|tF13mqB2IYmo-<`Bt&ifWo7-y=sU_>xAU9rg#TD;_jLJ; zAG7V>7*_2Rm6bL51&?0omay$O+rwj3DVI99^h8C);j$GMj=bq$A9gWSLf z`5R0WN5~WMU?{*!C!$7#FkO_=Yr9#eS{FQ19B(0I!L|lNQlo&-IR7??&5EpA9oDg7;gd#~qAVD#W zNZkucsW)2)JxMW80Gvky9Em_oXf#40B!W>bBotF3NR0|%h)|0#6hYKDPQbk&=9*}b zl|)=`uNWu|fD+)C2oaE4h!hLNkWeGSA)Ew~S`7>km=M9#S{oE|4$^5VrJRfMI>Bu- zsyM=;HJEgA?i^a5VEv#PPV1;J3&D_vNQ5YcArcHn1+WMaeo&fEnam*J7))DSJsR%&|y8Fo0Ns$y0!An+LH-{Y?~MF_^*)hB!I5r|R}B2Z8IP zAuNP~uu#BSPaO{LuEP*4l)^ovNrMa;TATdew3*Apk#!zokAM_{Q4lfp9}<|L`a1nThA4ty z0fdUWa{})hqKwa!#qL9u@&E1EI~97>Q9w=S9H`Hr-1B?teHUj;W&MP&u5|l^769~T zBOk@@XSzPq^-&Cbl=A27`b^hHG4N5!pR?=#MwiQnCq_yS{?SVU&x4VpihRMdq?>9^ zcmU`z@wDdVW*{U+Jc$4u+Y%Za#+rKXhL#zqXU|ly(j7+zf`PL!aDf>-pq^qH8*>aB z3nrZ`%Af$JpX`S^B1k{&%sJpkkgH0?wD85ZpX612(+qpA+k57fyVs_Ct@&JwT|JCn zU-j}zWC^+HLP%vw-8=6gb^RW$+qdt?Uz|$0c+T19??ZWJ>}|*IRLMt={-Zt7CMw5#iPf3eE?V0|Mxu*Eyf>X-Jy@i&?EbrFhab$O9b z){9p!9Of)@=R6gyIoK~_VC|*{Tk)w5=W8P0yj2d${GuvlbYsi35U+s$_|87%k2(1~ zaJ@Y{o;vW@KBoM{t{-n6cz7tQjvxQ%%yaEy0Y7%@f?31y5FHYk^D=$%&GKi5a=y$R z1QqZ5dP*>7+%_NVcuMdX{^dhg7Yrca38rdU$*t`8g;)F?o*&x(wo4jCU_1!BAu6z|zm6vDCcpMcqZ`1Oq zZJto->y~S|e|1u&J}SF5_e>@-$Tesa&XLOaXM zdqd8JbX?UR<9OI_-JW&kw!_hq1k?Dl*|WCzm9M_R9WQyVf~)E~4tg60|8Q!W*1K+G zAymy-U48Gnlg_PNeC5M)Y>hZRgSC9RM+#4!*5Z6jH~*I%6ZO?DPNi!LjIW~DFY;v` znws{>E#Jo_7Q8%FvQt-fc-M?S=PD$p9ZEe%UXO1KT)M0sxzx6BJF$6TVqI>79AD=w zyRh0d^vMplH*MvkVRo=1KI~2YN!e`{XJ!Hk_mO_82z5V%)V*&e(I9dy%eN8OBoQXD4rgj_D`-!EP((3 delta 2332 zcmcIleKgeR9-lGey+muITG#BaMPBC3(2U6#!yvUZdCj0qW@s>G;^&?F^Rl9Z^sCLb zTSz6cUh-DrvMStaDKe&zksLw|TM8w2-1gklx#ym{f9-S5^E~JK`Fy|M&-Z+v=R8mI z_UHO1^&vGB0)ZGNyLllH$P9s_Biq%{5zCGeg$N?}2*mc@GX*xgP)z;Iwr`JbwADZz z&yFbZ;lyKq*rKeX>u^Hmed88sUw33jWZ= z&%knvPn0k?r%D~^7XR>pO~RP+*r$PH_xU{Woq#^Lqpah6UI2UXz)R<}gSurYS``nn z;p`2XF5fqR>RXK>@HRh)i^TqY*Nqs|K-s0|)^~kE?tZ*kmdO3>BHg+i{1JD;vJ(xF ztk(JLH+H;$_Y>|5cz)dwH!ga&LOQbfIj2*%OU=&$9L-{qJ1-~d4(8C%kiu#oAtMzV3iNRITwO&B-doRH^AYdzi$)-{+SVqLs_gkK0-?-; z3zYUE*TXU;7HYi)7B)gTpcOk7K8!Mib5MA=6~#D(Hipg67BB~G4j)6C!VTzMrBD(~8Wb#ZlL)0k{mI$((> z0&uai9`G6S5(xR8AXg}+10)KWNG1|3sU)%$nPO!Hz|WL7>0x=nG-pwikPFfQfsh-@ zCx|0M0a!-`1DmRR4PoPjVwxKtQ>lT)d=3Fx*dj8O&~1ci)^-pHHj}3YzhCX zn$LbLespk@K)fdS?;M{|50V3<2eJG}MHx{5!)~$R<_*PV zfOK40Ot1I@uRPTwx4Ev{^ZTlc=-8!-$95_(GD3e(pI~38!R*_?d>bHDs%O+b=vh2& zdf~BIlIeh%p{CkgU@_*O7c=m)RaN2M3w;4zg45cjzSoj1u=Z(97jN#DUE!=l7EW93 zUi9yq9S&X9v`-Wy6?{sXLptom@WJD#p zaLM3Ns_1=7Qpg3n>V@}*kz%XCxEFF^*y8Mp+g8gd?w6M*i-u!l~@@^=E7jl8kwzdE*nfvI#QI z@avWpyBB%4azq|>8qoVB#Pv=Y

yXuHxS^pDC;s5TA1m#?8eUm{m($(5+*5KyqrJJ} ztiH|b_lKsaAE7aJylM*Toh);1zxkmoe7XmQG}^lVD;*0HV%wX!xtiV3i)(Ys9}Y5* z5vEBOXKE!kwSRLDNaTSAmC451<^NF21H2{VOPr8L=OEMN!iG)NwL;Yti?`ksV55mn z*wNVcdFreRUr65ZeMPjsLGyR~DC+Hp~}?dM7><;}kzB!qv&0Rpk(r{x4Kg&4K^` From 9748c64035cb4caa5d72b05fbb3ccaf41d8b45ea Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Tue, 25 Mar 2025 13:33:43 -0400 Subject: [PATCH 3/4] Set up exports --- export_presets.cfg | 280 +++++++++++++-------------------------------- 1 file changed, 80 insertions(+), 200 deletions(-) diff --git a/export_presets.cfg b/export_presets.cfg index 75f22d9..168510f 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -7,7 +7,7 @@ custom_features="" export_filter="all_resources" include_filter="scoreboard_host.txt" exclude_filter="" -export_path="build/Revolution 2083.exe" +export_path="build/windows/Revolution 2083.exe" script_export_mode=1 script_encryption_key="" @@ -33,13 +33,13 @@ codesign/description="" codesign/custom_options=PoolStringArray( ) application/modify_resources=true application/icon="res://icon.ico" -application/icon_interpolation=4 -application/file_version="" -application/product_version="" +application/icon_interpolation=0 +application/file_version="1.1.0.0" +application/product_version="1.1.0.0" application/company_name="Team SG" application/product_name="Revolution 2083" -application/file_description="" -application/copyright="" +application/file_description="Change the future!" +application/copyright="Team SG" application/trademarks="" [preset.1] @@ -60,7 +60,7 @@ script_encryption_key="" custom_template/debug="" custom_template/release="" binary_format/architecture="x86_64" -binary_format/embed_pck=true +binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true texture_format/etc=false @@ -104,207 +104,87 @@ progressive_web_app/background_color=Color( 0, 0, 0, 1 ) [preset.3] -name="android" -platform="Android" +name="Mac OSX" +platform="Mac OSX" runnable=true custom_features="" export_filter="all_resources" -include_filter="scoreboard_host.txt" +include_filter="" exclude_filter="" -export_path="build/android/hero-mark-2.apk" +export_path="build/macos/Revolution 2083.zip" script_export_mode=1 script_encryption_key="" [preset.3.options] +export/distribution_type=1 custom_template/debug="" custom_template/release="" -custom_build/use_custom_build=false -custom_build/export_format=0 -custom_build/min_sdk="" -custom_build/target_sdk="" -architectures/armeabi-v7a=true -architectures/arm64-v8a=true -architectures/x86=false -architectures/x86_64=false -keystore/debug="" -keystore/debug_user="" -keystore/debug_password="" -keystore/release="" -keystore/release_user="" -keystore/release_password="" -one_click_deploy/clear_previous_install=true -version/code=1 -version/name="1.0" -package/unique_name="org.godotengine.$genname" -package/name="" -package/signed=true -package/classify_as_game=true -package/retain_data_on_uninstall=false -package/exclude_from_recents=false -launcher_icons/main_192x192="" -launcher_icons/adaptive_foreground_432x432="" -launcher_icons/adaptive_background_432x432="" -graphics/opengl_debug=false -xr_features/xr_mode=0 -xr_features/hand_tracking=0 -xr_features/hand_tracking_frequency=0 -xr_features/passthrough=0 -screen/immersive_mode=true -screen/support_small=true -screen/support_normal=true -screen/support_large=true -screen/support_xlarge=true -user_data_backup/allow=false -command_line/extra_args="" -apk_expansion/enable=false -apk_expansion/SALT="" -apk_expansion/public_key="" -permissions/custom_permissions=PoolStringArray( ) -permissions/access_checkin_properties=false -permissions/access_coarse_location=false -permissions/access_fine_location=false -permissions/access_location_extra_commands=false -permissions/access_mock_location=false -permissions/access_network_state=false -permissions/access_surface_flinger=false -permissions/access_wifi_state=false -permissions/account_manager=false -permissions/add_voicemail=false -permissions/authenticate_accounts=false -permissions/battery_stats=false -permissions/bind_accessibility_service=false -permissions/bind_appwidget=false -permissions/bind_device_admin=false -permissions/bind_input_method=false -permissions/bind_nfc_service=false -permissions/bind_notification_listener_service=false -permissions/bind_print_service=false -permissions/bind_remoteviews=false -permissions/bind_text_service=false -permissions/bind_vpn_service=false -permissions/bind_wallpaper=false -permissions/bluetooth=false -permissions/bluetooth_admin=false -permissions/bluetooth_privileged=false -permissions/brick=false -permissions/broadcast_package_removed=false -permissions/broadcast_sms=false -permissions/broadcast_sticky=false -permissions/broadcast_wap_push=false -permissions/call_phone=false -permissions/call_privileged=false -permissions/camera=false -permissions/capture_audio_output=false -permissions/capture_secure_video_output=false -permissions/capture_video_output=false -permissions/change_component_enabled_state=false -permissions/change_configuration=false -permissions/change_network_state=false -permissions/change_wifi_multicast_state=false -permissions/change_wifi_state=false -permissions/clear_app_cache=false -permissions/clear_app_user_data=false -permissions/control_location_updates=false -permissions/delete_cache_files=false -permissions/delete_packages=false -permissions/device_power=false -permissions/diagnostic=false -permissions/disable_keyguard=false -permissions/dump=false -permissions/expand_status_bar=false -permissions/factory_test=false -permissions/flashlight=false -permissions/force_back=false -permissions/get_accounts=false -permissions/get_package_size=false -permissions/get_tasks=false -permissions/get_top_activity_info=false -permissions/global_search=false -permissions/hardware_test=false -permissions/inject_events=false -permissions/install_location_provider=false -permissions/install_packages=false -permissions/install_shortcut=false -permissions/internal_system_window=false -permissions/internet=false -permissions/kill_background_processes=false -permissions/location_hardware=false -permissions/manage_accounts=false -permissions/manage_app_tokens=false -permissions/manage_documents=false -permissions/manage_external_storage=false -permissions/master_clear=false -permissions/media_content_control=false -permissions/modify_audio_settings=false -permissions/modify_phone_state=false -permissions/mount_format_filesystems=false -permissions/mount_unmount_filesystems=false -permissions/nfc=false -permissions/persistent_activity=false -permissions/post_notifications=false -permissions/process_outgoing_calls=false -permissions/read_calendar=false -permissions/read_call_log=false -permissions/read_contacts=false -permissions/read_external_storage=false -permissions/read_frame_buffer=false -permissions/read_history_bookmarks=false -permissions/read_input_state=false -permissions/read_logs=false -permissions/read_phone_state=false -permissions/read_profile=false -permissions/read_sms=false -permissions/read_social_stream=false -permissions/read_sync_settings=false -permissions/read_sync_stats=false -permissions/read_user_dictionary=false -permissions/reboot=false -permissions/receive_boot_completed=false -permissions/receive_mms=false -permissions/receive_sms=false -permissions/receive_wap_push=false -permissions/record_audio=false -permissions/reorder_tasks=false -permissions/restart_packages=false -permissions/send_respond_via_message=false -permissions/send_sms=false -permissions/set_activity_watcher=false -permissions/set_alarm=false -permissions/set_always_finish=false -permissions/set_animation_scale=false -permissions/set_debug_app=false -permissions/set_orientation=false -permissions/set_pointer_speed=false -permissions/set_preferred_applications=false -permissions/set_process_limit=false -permissions/set_time=false -permissions/set_time_zone=false -permissions/set_wallpaper=false -permissions/set_wallpaper_hints=false -permissions/signal_persistent_processes=false -permissions/status_bar=false -permissions/subscribed_feeds_read=false -permissions/subscribed_feeds_write=false -permissions/system_alert_window=false -permissions/transmit_ir=false -permissions/uninstall_shortcut=false -permissions/update_device_stats=false -permissions/use_credentials=false -permissions/use_sip=false -permissions/vibrate=false -permissions/wake_lock=false -permissions/write_apn_settings=false -permissions/write_calendar=false -permissions/write_call_log=false -permissions/write_contacts=false -permissions/write_external_storage=false -permissions/write_gservices=false -permissions/write_history_bookmarks=false -permissions/write_profile=false -permissions/write_secure_settings=false -permissions/write_settings=false -permissions/write_sms=false -permissions/write_social_stream=false -permissions/write_sync_settings=false -permissions/write_user_dictionary=false +application/name="Revolution 2083" +application/icon="res://icon.png" +application/icon_interpolation=4 +application/identifier="club.teamsg.hero-mark-2" +application/signature="" +application/app_category="Arcade-games" +application/short_version="1.0" +application/version="1.0" +application/copyright="" +application/min_macos_version="10.12" +display/high_res=false +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=1 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/certificate_file="" +codesign/certificate_password="" +codesign/provisioning_profile="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/custom_options=PoolStringArray( ) +notarization/notarization=0 +notarization/apple_id_name="" +notarization/apple_id_password="" +notarization/api_uuid="" +notarization/api_key="" +notarization/api_key_id="" +privacy/microphone_usage_description="" +privacy/camera_usage_description="" +privacy/location_usage_description="" +privacy/address_book_usage_description="" +privacy/calendar_usage_description="" +privacy/photos_library_usage_description="" +privacy/desktop_folder_usage_description="" +privacy/documents_folder_usage_description="" +privacy/downloads_folder_usage_description="" +privacy/network_volumes_usage_description="" +privacy/removable_volumes_usage_description="" +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false From c5851bd2885343f440c2e3be1d4d56f24a1ceea5 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Thu, 17 Jul 2025 10:12:06 -0600 Subject: [PATCH 4/4] Mrs. Sex takeover --- graphics/player/palettes/default.tex | Bin 624 -> 608 bytes graphics/player/sg.png | Bin 6241 -> 11162 bytes objects/player/player.gd | 31 +++++++++++++++ objects/player/player.tscn | 55 +++++++++++++++++++-------- 4 files changed, 70 insertions(+), 16 deletions(-) diff --git a/graphics/player/palettes/default.tex b/graphics/player/palettes/default.tex index b5838076d40a9b994f679aa813ab96f70e376074..92edf239b6ad4bc113e9b3663b408fc5c796820a 100644 GIT binary patch literal 608 zcmV-m0-ya-Q$s@n000005C8xT1ONa?0ssIgwJ-f(4FmNN0LEHlMF6ojYb-H&cm%h! z9H0hms8f)(9rgf~LTyOh0mMle$<>NhD!FTSuWggNa>_LT)2WA^`U6#!W24MXIJP~! z((UImodQMxOaM&)9LjQ?G>yPewSL_u>1PdGH`$FW$kD9+1(sH7|A40_OADT*nN{qw zSSPcu!)8WJU!C*^`4c>;$)0A2xk=CDS3uwo@B!Q;2_RXGBk>MQP(Do?Vmp%@P0gxw zqGShJHRDL2q#Ni*F$K#K`4Rj8*0vCfO>1W-L91Gph=h~>*!$=RvvjJIzO2%(`?6Vr zs{yL`@{;0j@H6-!{0BfrR{l#;f#4BVwAw*IlveKj9$da}jL?@#Eqow6U{BRRqCLSKwwW^7!luMkM zd2xMIE20P*HKKL{N35xd5m{JF#0f22Xh@}8K!h`{Q%{eZn=sng$haQJu(&MHz_?Oy zZ0zjph&nntVopwuYvm&hjEWc&6HutJ9YGG!ghL8jE(U;tA~j_m5@5wKhB5(7FcT=T zZ~YEy0KBy&*5bz!dyDP+CAFi*zR25ybL~8*y%FW89W}U}^q=qjuo$QAfo*R+BKsx! z9X9bE97D}GlF3H5i<#!4J8N3*5fo&}2YIEjAxT0-1*ft>$uLA>>2wS8Q?KceQbD1z u(#kRT!NsZ}-K2Mkm(kuy|C>WN#1J&CvJ#kQ%L|$09F7p-t|h@qcYr}mF}&yleXfI-%e7|e*wp!XSe%*z$KR4{3OZ1 zCuwe1t5~CQt5lnt4eOou|H%IWpEkrXGsEoU*YZCkz<-ZFwu%8b-T9Gy3GnwBjU*lMZ>sw`se2rXO7^%$p4c61V&V5{*Q-bmI$xRVzIJ?5GqeN zfk{9i%peZ3Y*R92F!YjFBxLz!C+E~E=S(L5SNXr-7nC39ec1}j1rU~B6+kYa{~Ucf zd1wqOR>bgiBSu!MYidBWN|h52phWb`3mDDCkkPGHiWD526AjX+(LFsgQW%sl(IO#G zk;Ep|K0Y?0hw0>U@w7^n(>gk3Y+(z-7?6Sy z8#50QAa*ean!qkCEUjn#Gs=Q^RQ}Xl<7p^(*s1;@jeXwF@jlUFuoojvWbqc~hL96{ z@P%Pqitz(--#8+E;pJv*f*y>ab0jaR(D|E80Ev*#(Oguj_5ckvh{dj#dvuYKbO~&7op1|rv@X$qGj{5T*!fNB@-)rk KXs82HQ$s`33M_;G diff --git a/graphics/player/sg.png b/graphics/player/sg.png index 88aaab2c0f3b0e76600d18c87b11ee779f66a1c6..03cd2dc03c5c81cf5a684db906ce2f9bb46f5227 100644 GIT binary patch literal 11162 zcmeHtc{r5o|Nk?Dl4zqs#vwT>X2v!%!svs9L@3HK#u!o<+hi0ob53PR(jtm#oJ!g( z<;cFAgB(#)DLZ4Q24k$lY`D1?QuIqPwuIu~x?>w$&p8L7)_q^`+`+dLf_i~R! zrvo-?WR+zB09a$Y&&nA9AYfC1wo)2=MC`b)2|nHs+-?1BZFc}G!55GcvSOJ?`~msW zrb&Qbf=B|AAVnN_uLs*=An~mXky?IU0NW~G+Nogs$1gPE?;s!&z#8y*6TJ1o_D1me z2)qO1KhISKw#C=VBgb5r0 z&JW4@iz6}8-LC#tkiRp5mX=PomX_*H;Y9zyAOZl8Z^m9W+gEF$T95U}wmxb-u0C+- z7n2TaYt<8q=be6dFPm#}-E&FGLHWwYO*X$3_4PIQe)z5ah?|Vtp0#`+Y}3t+Uia!m zTIZAyYN`u^J(UeTyK9(F^goQ-0+0N++;DaNW7zFn-_D;mTVXU-+BUx*wL+|6a7YSJ zEPKGTiPufnyt8q?G5j; zlkj_gaF3$Wz^}*eUH{_^pua^9|MZJT7V*_YZe>b~jJmy7Hj#G5(x<|zgQdonCoRmgZ=9rJ3^?J*g-0Ik z0|0rCKv(xjcZdBZcw(>~&X4Fz&?5(jiq{J;#gIdB_!ERkbzee2V2GIpyS!RMJ7Zdc^Pm7y^w(!{GWbeSKY!LN_8hBoar~4T;bcLwv@tB1GWB14APNi6QD@ zOq?%~6ltcR0gkKx$zO1&gTq(&kccl@0QCVQ<3eEwJvb~l820TqA|kC%f*@ZQ`rB_r zxJHK(V9taHA}JhCus%r$iPZcSLcD>#B8Wu_2n-Hg77A3}ca!M0pzT-_ivMkQGjDXX9#s7}_PuZ7=K`I9a6DuN~B%ajP%1lGd zuZbTKALwVY+%!h}`WhIZeRWYt6hYU}z@MOtL+Imm{n37Cf<6*uh=Ak1fwB#Wh{T29 z31TP^TrUvBA>h$Q{swToE((q}1R)T3uYi10IlqYV(o-#|Eq2ZC0K3;LET zF_a$&W$24D&_}}2x(2>RI9)@3Bc!e`0i~~NgdiXgIFtb#P4Hia60d{F9w%Ef4ShZM zUp-DixJZ9uc(9qq{=g6t`L6-jz+i$)Bu=a}1ky+!X>6=-j6fKojM2!yhz=9NBS3=_ zV=jBhz{5|7jA3<|16gn&VlF`=pX(6qZV%-byJWY zT=IQ^5#apM%Uz#$lnWv3^V{dwpupv=q^`caDNJzq&mu(NP7?f<`2?{(58;pDLIMb& z_xNJ2fA$CdjVU1D1_TsRAE9e#jDYJJ8WHq$QTj$GT|YkqV}Bgp7;Q+<{~kSp=pPw{ z3n%Oe0QCs!3N+8<0Hyxp@(SvFPaSoPAYLB0zM(GMKo@~<)kl~Z8JHNLbm4|#g~9&! zA|mzC{zw7}rwd1*QM!hPNE~SBNPk^l6vEIS=V$C|0RO)c(MT8ELkQ%*+r$?UO<`iU z_~)XU!v15~KNEc8M?uwm?gRZZ=tHSOQD&V26r!X;G6K&s4%u4maV2+7^z?^y znY6&)WNXKoUOf=Hv$15oXV%XGT$T3XIlKqFjP`X_`))7olM%gj`uR+Gx_m^(AE26%dXj%Te1n5Gdo z39w0Jn5|U#_PtV5Ld(fo&2nj?h_TONfNy+i!*V~^-OC)feIH_;05x4z^rcopR8eI7 zI2ti&6pdjm;#Y+ZO{{KwcE5~M9%A>z%W8Zn_IWJX+n&W@#4P~#RYbvInj?3ujzlPh zY!I{EwpjR9%fia)z*C~^B?bS+j}3k&@@hTmMeSP_gD+noy=1qx(UTQ`h@>fwFlpnu zQs2`B&pBP%K3@PcVMvp)R*q(wUQRzYR#~lfMhC*$Mm;Hd=L;l+eQFfICFhzRK1hq> zq!$vQ$z__wRl=YW3HQ{Dz!=wDK)Hdw9zK`E6})&&&zYKdC*m~luFGI@jy#xLDkSi` zqr5KGjyx#3S}->kFeq6wJwkkVlAmfHEn@n@xoF+hot|>nFv0VH@{+*3xr&J`55Y=~ zE>&}<1w}01(iv~gW^a*Pis3c2MwoDlt*58rV!rFA_!SRa;?(M1lkAzP_UJ7UCilCu zHe%&XJHUg&Z!emZ;A8*6O3(D!rIuPvmY$=qnsS1;AHw)z$ype)pj6>(0mqDnQ~!e= zW8|@;rce(e|ItxFrAIOW)kF7|0#w>p{}Jde8m;fGd4p;hR{%}?QcJ^q^}wYJwYjMZ zdm3SSbTHqRLhhCIVXi~IGN4w&q_$y9W2Hh(TXNpe)r^Z|)*_LO_ZPAA2cP7FF9E>5q_b=-({I@afT=CSy%Oo<(%9)DyS--s{^QAMKUP`o zJrDDI&h{Uu_GF@~#7;Q?dn?dGK|&gE$E^y*CLU5!@R@`7+$Njzu8@YE` zVcqyP%=>Q1%>e@mrRctr`PVzOykBNlh=|;U z1v>uDLW6DoY&?}Saan$T&e4iVO&f0^{wVSIFcA0zm|t}N#f2_t)hVCt>W#<;;ui&!-IMuf9`7@bE?T1)-Jpq{AGrf~;~FNjq0KFQy#n!WR6VIT=c$>e4l z|0=XgGR8rn14*JM9Axzh?n^1}!i^iS{4@@|sW=H6x8d%-QVM=g3 zuBYNa5>sC|FHI}ucRE04_!{Hk$pRTpJyDUVR`Xj@=%-Vo=TBI0>hq!0meW8EOxSgY z|A}fn>(#SKq&JY0Afn_}0wh7#ivW&B>J=9qoomi7rv}rnynwz=t#|m|dDusbzLam}C>?j{uDFaV;L*G)#9G%{oKmD(p2_meO?K&?esc2B7{5w?D z(R)r>bgkZR)&ktz0Q9x> zvEw|%gwR>1d+5goV<$l(Y+_(gecK}L9K@$|3$pp8hriR2_;TtMw2X7utwjxtaXjf!g~!X|0J`Pk-qL;EWorktpUX z8^(zzi(Pf`uQHf{#mia7%+$q-rcqXIy+=d*D>mqquVWUEdsn&=w?d7}SDSfY&w9)zg8}!c5!`HIcaEwpWjdkDG%W;EuFC_=N5Fx`k-sm*5lWYB>dtM zip5KtUtlWy0w!g%*?x@*qfYuKBYH#)vRiureJyOnR=oM-DW<#$02GGpPT8;H|9hu^$a7K*lJSo6{d28>J>?hf0KwmBm*uXgw=;5Ew^6#drq5R&Jri5;v{wm<>t(pI(tjH$PEa^# zXQhL_=6omB)ExGKqNXb*OiBtke={!g36#EYEpvIoOfLylJ6=ldnj1UQ=>x^d4176x zLjf_SZ@_X;HVeaz65JT|9#DW5M+t+-3VjPar*Mi0-SZQPSaX=;qBks{&dkK}U$$k5 zGbVdl+B{NpqRm=))9-6K&r+!qWoPOhljT4i+H?{n+81+tr7kHUc~u)<&H4Aoj(bM8 z=%$D3k3{Y-{cV4RD*2h+Hwp!tG^vS){RhpCoeu3&QY$b+y(y5m)LzgJ@yP@1R8Kze zGMBmi`pwVBk6RuBqn<+U!!*W(R87kyL{4&#aOiP|GvqdDRp{8nYI~_ZbFUt?m`$B7 zwIgZ3x^?LKDxI2&ZDVEqENKY&9i$I``qRdBM^5h`3(aUci!+>2JU5ZnBey_{r%Z9;ZH7>R@8yoy`GOQ&C(BP zG;uqc6Xq1XUX!>;`@Xndz3~UP`bTrUrxCdArQ#4W^X$fE42d>E1JKOL;K9 za9XFDxk)ADVd}m)<35ndfUvhOj=YR`Hdo5><(N({WrpPr{+sG*QNrE)PHH+#Y|zir zSs`T+&=Wng1I3Aq!ZE$-Md4EJ<4EcC)hA<&y&=C=J*|uCdMDOjmRNs#w}Qn_YX!JJ z7;z4-_Sowjw6o0~^0YHQRn>dcmH(X6F{@Vd{?yKf(KQw`pRzx_N!!n#;l#%eOCYfl zRzrp&-o)zcPmi3txVa3`M9ZF)At+#ItSt8TWN6f&19u)b|F~dv6)J5z$Ad1q!L0>? z=SN@I(@G`WyUz+Z7g|WQ4rSr1DsC?FmN*O7obJwGHeqrSx>W%8Fu+}2Lg1^P*P+2j zQLyD^i@s~ecQ#-yR_=;>rq}oc%rkn(i-j+J2(g2t5Ye^Zglku+(ZW);Nuy&C#HWnI zBk0f0ILaP&_!;pco|`NEQ^sfyNtT{V<54Zw>=g~A*MfzI;4z#LL;0bC-{O<^VUF5a7 zycW>%Qdq-f_fCAESCL}K@;$@ipx~8la6rH<_$Zr2^0f^*h5~+_bfmU#)`STw`757X ziP7b?KVl*Jgeq!-!nhO{XkHC3k?{uV4kLi%!{B<$PRD zVgighGPF{Mx$D#qDrcXARtL&;<#UyYYmv0r<=f;BTzc89MT5voGJ;x_$cI_wc}Fks@tqrzyF6BTB1T~ z4wnC5!{SbrfTs^)Bh-q0%$-sNvvhVov&;jz=usc<;0EMwu=lmB1uLAN?3-Vqr{B&f zpAZ^zaD{d^)U@mx1I+V^mBg{HS_ZytAiyB_Z$hDFd6rQ-&UZq|w&bxPuQ*vD4X}*r z-N-`@Gm@suTh%XNQUxyE&T|H5TuGO*XrrnK!xxfT^k<6K*bYQih z{m$+W_I$~Y1&Cw4Zqm{c?j&FgAM&cl#tIufKaql&_eu}u@2Qma$ynUv0r{XS^Me6~ zpP59J;|lR)tGh#DM$G`#^nu)c6mUU-6xM)I#LJnuE{f9Yxz@hFQ4$4O)yZzsuHxzr z7N3t+fwkS50&@qw60iVB5SgB_DDF+nn;TJGPT<{A1`)kCM}7v+E)sie_|M4W#KgO! z0~kC%WdUcKQckP(0j}Fr4NEaTc+++#(v?yW!s*4s1MF#4YI<>~(8lKKBw=ky(5mTh zhiM0-#l@$4MhD^^T;}TzI-U%iv@fxr!w$7_m`iA(2XkaQ!{JKsv4hnrjOaGHkl5Oz zf+~hA&0XJwlo5>I8U0{S;?!3&xI~>hEH(i)#D1Dj@t7)BN#B;DgsEft@bj7iu80Q1 z`<4c|0&hFJTFsP{z^qI)t>hG{D%m@)vOw%<%`a4u_ExoWEcwaxP!pHY*)R!{O4X7{ zR2q>=CCe3W0m@H!pS|h(c706r@7Yhhe(tg6Uu8LQ=xE_HT|qd|dCM$~b~E?{~iKaRocsIR#$I>JGlx&@uLyjl|1M7xU= ztEaVuxRDdV#!OO&S4(F-HiqQLR-~LfTE`enx?IO}<+owhF{!un_Q^j^QE^jmN{dR` z(7RO^()%uaLukDj&6F}jL5$xw*Kp(OR;J237O+{uxGZj05&(&|LCh&RTJ+#QTq6+@-S@Wo#J+`T=C-rrkst?8d<*L9I z?UdTMqqd{q)q?Ef2?ilf^oXWnpvv+-CDdrRB=INbJ zlt-zbCQ8y6bTji0>pz)$zhPV{A8`;B+f1}&*FWtxrYx8?PPe&CbgEeS#dmyE6)zVa;=|XP7D4R8$o&c~Qgmu-$pXm}ZA2 zE>3CeFt69EO;=3@dtlv(ThuMp)Vl6f0gI)lY%!5TucAZV9efw+vbRh$$Il=S&$X6R2U z_fD~(wPrVYW?LI#b}fXOg^=WW@LGd!cxE}Jn){iK+A;anz}tZmbMMEj)1y6IbHrHF zi1+~=Zhv#RKfkN~Fr@pDpJROPJLhJvAgGb|L`3)mi0GvNxX84huH+oAs6mgsnmFxP zlhM$*wDju*YE%0T8tmdTf$!E%lU3}wl2-HQr_t=zhOj2CG_A<{Uf8YHoWS5y<(Y%r z(>7N3C}W-71Kr0Ph_R}97}2cn@M`Kh|0OE5I{k{X&SgE3_X#>S8DA04;siBJO=-TU zIyB4RY^XdqmDV=2E{`|?4xI>pj2|<;CZ}MI>OP_W9F-Sf_b8mzlj`H8_4**H3r?YRL z3h<%I%cTqrXAC)Fl{eC~^$jI#c_9`#YBicAW5K^Q-5^<&QoJDDJYa3Z9F;m-+I#LC zc-(}#-p{jk^GQ@-m;y1LO!kX$MiNyrrT^#QCDWBRUoP}VP*hhsdO>zw6$QrtnGb+6 zy*sHlM+j7=qk(9a)YrI!R$9UM_+ZvC9xHP@97q6d{0xz~*hAWJC1Oy3xyT1eQxvOaLat0kn8^Kpt%x*Jmpk%Xu(K3!3>9sm@9;#(w-<`OV=MHS3HpOF{vk+&HT(ugv zkOHH&TVOerq6L64Yv_fxhPmq&acQ?pt;L}vrt0M4PD&EDT@ux@oj(;pYOMjoVT!Cz z*i2<|ib)+&1*&L~s^1LH9x_~z8si0y+^DMZU!TC#GiMBRog3VXELuqqsoJ^(iu z6q^^p@qf!+z-?U;j2cRQ=pnCPCa5{Q{Hw&ij`Xb3-d*Af^LrzCA6idOxqaN}BjaHI zd*on? zh5gQ_%fvfYSYBkEUw%-wX?x6H=8Mj%B&DsswD|U7+d}W<%iA@Nq*>eHpZ<`DH^c(#oN~ z%1-T?`PIt`b=c#~coVeFcX-o>+jUNLQ#QNn4Y##yl05>^6$kxue`}knF9L&8H`TW6 z9bMNOwY2}pJNHFfD%Ya?J-Ytzsuy7JY9~vjr^Dlv%uKIMXuW;s$o9UmVBq$x(w(gM z_K_Z!w|XyXxWPwjr5li-n0c<U;IkioDFCd0eD!lD> z20rUNaZYS514l9@858iUqnJBQ4G<6<&X!9Lvhi|W^9clbvNH(b@i;anCXtbm#*t>m zY;Ld#(c0SDgkWl7YKliR@Zr%c9yJQj3OD=+@(IS75l-VWIXottg_FZl1KANgI|Iaz zj}C@$)~)-3&IK^j!#J}R2*Y2r zc+8;x<>ue~k&n!}|9Nu6>!)P~NcG3hq5w-(lc zfo5jbfp{xRD+Zoq7R10)iKaAskTu`*%c`J_0x&Bw8INNLci zJgPI5$3URA&nbhkR^5M%9%Wj?5nY zMf|BeHZXR4CHf=`W#VQt-G)m0xP)-(P6plJlaLldWd$>kR)A#TM>XcRB26%3SXr79 z@gxf(0f{uj6p6IC6`oEvvk0QnEUZZk)6e$d>>yqwmCJApMp#40L6UBk9Nf~`Xe|4z z7a78kQ;pDrCz#>CL66B-Yq2$vm;2Z2vo-k^6(9A!Y7?^CnZt z?F&2SY1|@2hp0TaJ^dpJS7wAJ^W3%J-V_4x3{M5l`&I$Y#mZ3n4@G>T%PUfRbU2Ke z|2pywOaRUff>hxfu3LQl2bk0m!|YRksUKwlcMD>rjYSo=bqO}f!xBBhVc9B6(0&-m z1e3a(BE}YksV81ftHNB0dg1?DC&pC4h-66-c9PE(*8%gifRFb>6}92l4vtde`iQ*;v=B%NJ~p7uwJo zmD0q}eW3QWI$0a2Pa(I3)-RqLk_r>ZdFuHQaM4|x8RabSH@;A{%{0G6vL_hoZMY%^ zQ&^aK+ZpA%==uQ&&Hvr;O(V8O=WL^rk3@IRfol#F{`Gzc-DYuFD1n|WxMojo9t2a6 z`KEsRG@n|wg9fT_(C_h_Kg#|UKv@_M1Qz|N0Osu3yB=zdmLU4Ig;elFpcWSOKc7 zgfvhShTn?UCuSUv3yahzLJp7ZJe*&dl2%c7_+!w>*;tJMrMnVvS-GG0`=3{EQEU6c zE}=Xx^p)k7URPhSFG+0iXYu1l0l|B9$gd;I1>{!^ViSDyDLs~Ok3hku@H9>^^ysmu zr~4jYR}p}1g-?h~e&J{6vEZY!Jk1?y-}S1^0PT8(8gOR#S??yrSG@e(3 z=EpDD;*0G}xJ?ssJWwyp1=hMZ$$^)N+a-apH|}4wb|3Bfalezz(K^vi>QCLqMviqE&@)9dcOuR#Cb1C~8ciHn)F|4xtHj z4rg}1{6#EmlJT0mufK4lXNpH7YiZBG*Aw`}gAo_NnbHR3nMx&vhCH5<@j!fT+u+Ff zZW|*kyKh?U(2%7M2`J-EPufn*IXycvCljR2NDHo9YS1i@jv~gLD0)pr z>KrqipUk624Q=Li{MgAs88+&x4rwZOT5)~tAP9dkFY!9hz^8+gng6+y5 zd-i|V(3h>IrzR&J+x|zn7>pG|l#J`|Wu;<64TNYT&w@S|4HWK3*2{fG7b`;CxdSf4 zp@3g{(M5g#`MI7fsfJI$ef{N=vQ~+v?Kq=f#GP>{7AR+%#123o`dx66WA9}xr;Uo` znV_B89IzOtx_(#H(>&&^ zf1Q^tfb}@;VzBttZm@9l@+dQ$+v3A=HU(-I)SS!Oe9~_I0<%UXO8DNQ@+IX#kQX1Y z2);fxIueMWc?L)kHm|B*&J%Rp1NaA0$ERifCE)W>S;!Mg-;xBqm;A8Hyy^P|2xH>Yg@fywIn|yptYuqZjKwh{rPFI|B0dX7v!4VxH99 z9e+ogyxG-UmKe~P@)mLWU3ZH8Z7nO>UjlMT;K}{|eE>Zla z_7pqE-2od%@}6mL@KDx!qBA-bD{oOop4%;iOF0wZpl&isds0d)_RRrFredi=)^oJm zq+gsT6o|sbCl%dos7pKz4!ob5IE!lW`BMxQP79**>O=>%AE!&;^9@tCI#Fwf7LaKu zcZWp{@J1|rADtptRRX?NL!D4Ho)zA?bq&=kQPFhR-6R2!Mua3Jr|JjU`UG(1d&OVB zINxrcJU7!Xt0zie`Ic1;AHal|guU99f~gmqy|HfvLczNJ!#4$nRT^m}!+v|?mZb`?W7GgLe_x(ID08kNOH6LI}e zoSudleD_cOxFCDNaKT`Xy46+@uu|t~#RTT!fQlD$3CUZyGvn#{v-n+Q*?L3jH90@N zD1Ek=6o$N`DgDB~H>KDxl0I{dIbXzLXE=!S&zX3lqaF^pL5IZ9FKvPfVV<`RuCKZ9 zzQfD8zS!8y+R0fzq~9Gqv)E@q$)`*z*tPwYF@}&8*p zy#e*PeX8|>iLU*3^hDP(ZExF3*V+$RXT-qhxnUVg~6w`1j)ByYf?8eZ-k zLFqJ)%Ssi8_mgmbln6dtE{3*m$g26#F)4s_ri1Nn224nv^pq%w?TkbQ`rX(td>X zep7xoCk#6f<&=3;d?yZ_^Bl-9i1 z;h~|&Yo0%uuaos+&`9d|$GHQB_w~cMbD-W8UPp9u6i>L9^K9)!+wKr-(cGd|)i(n!>IVR2LWphK$!tO3}>DFo<%P2B$h@yWdP(3_# z3xASlLSmQuk=wT0Y8A<7wUdqfCqF(JJo_PBZ!4zqe2|v@bmqECvd)NoH&NMx?F!z1 z%TywoGZax~?=J-bTdoCvaA_L6S@;LP@aBU>EQqOeB@Yd0cBtFt!nh3 zp9Y(N?Uo%sy-xDQ34YKN(TBwNHLkvhP5WL$q=?rbsx(-#Pn|gQSh&h7aj8X9su5 zPuBst%lH9nRhkzh7n7NNQ*RS>$QL|5{YG$IK#rcAYUMzIQrO1<*QA~(hE&}HdVWTe if4DAy&GeIG;2$$Z_m*Ht&*VQ1yRBaDoV$v$`+oowOq>h= diff --git a/objects/player/player.gd b/objects/player/player.gd index 22b8818..9a5c1d9 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -35,6 +35,10 @@ export var double_jump_force: float = 122.0 export var underwater = false ## old player controls export var beta_gameplay = false +## upward effect of air dash +export var dash_ascension: float = 50.0 +## side momentum of dash +export var dash_speed: float = 80.0 # velocity var velocity: Vector2 = Vector2.ZERO @@ -70,6 +74,7 @@ onready var edge_detector = $Graphics/EdgeDetector onready var body_shape: CollisionShape2D = $"%BodyShape" onready var cfox: Sprite = $"%CFox" onready var hitbox: Area2D = $"%Hitbox" +onready var shoot_hitbox: Area2D = $"%ShootHitbox" # OVERRIDES # func _ready() -> void: @@ -602,3 +607,29 @@ func _on_ShieldCooldown_timeout(): func _on_BetaFalling_state_entered() -> void: velocity.x = 0.0 + + +func _on_ShootHitbox_area_entered(area: Area2D) -> void: + if area.is_in_group("enemy_hitbox"): + area.get_parent().die() + state_chart.send_event("bounce") + + +func _on_AfterDashFall_state_entered() -> void: + animation_player.play("double_jump") + + +func _on_AirDash_state_entered() -> void: + velocity.x = dash_speed * sign(graphics.scale.x) + velocity.y = -dash_ascension + shoot_hitbox.monitoring = true + animation_player.play("shoot_airborne") + + +func _on_AirDash_state_exited() -> void: + shoot_hitbox.monitoring = false + + +func _process_airdash(delta) -> void: + if abs(velocity.x) < 4.0: + state_chart.send_event("grounded") diff --git a/objects/player/player.tscn b/objects/player/player.tscn index a05b632..a143bfd 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=52 format=2] +[gd_scene load_steps=53 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] @@ -81,6 +81,9 @@ shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true shader_param/palette = ExtResource( 12 ) +[sub_resource type="RectangleShape2D" id=35] +extents = Vector2( 8.5, 6.5 ) + [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 2.5, 5 ) @@ -649,7 +652,7 @@ tracks/5/keys = { [sub_resource type="Animation" id=11] resource_name = "shoot_airborne" -length = 0.001 +length = 0.2 tracks/0/type = "value" tracks/0/path = NodePath("Graphics/Sprite:frame") tracks/0/interp = 1 @@ -657,10 +660,10 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), "update": 1, -"values": [ 48 ] +"values": [ 48, 49 ] } tracks/1/type = "value" tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") @@ -882,6 +885,8 @@ walk_acceleration_frames = 4.0 gravity = 700.0 jump_force = 140.0 double_jump_force = 124.0 +dash_ascension = 124.0 +dash_speed = 124.0 [node name="Graphics" type="Node2D" parent="."] @@ -998,6 +1003,15 @@ material = SubResource( 24 ) position = Vector2( 0, -10 ) texture = ExtResource( 4 ) +[node name="ShootHitbox" type="Area2D" parent="Graphics" groups=["arrow"]] +unique_name_in_owner = true +position = Vector2( 9, -6 ) +collision_mask = 5 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Graphics/ShootHitbox"] +position = Vector2( -8.5, 0.5 ) +shape = SubResource( 35 ) + [node name="BodyShape" type="CollisionShape2D" parent="."] unique_name_in_owner = true position = Vector2( 0.5, -5 ) @@ -1132,9 +1146,8 @@ initial_state = NodePath("Still") [node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] script = ExtResource( 10 ) -to = NodePath("../../Shooting") +to = NodePath("../../../Airborne/AirDash") event = "shoot" -guard_expression = "can_shoot" [node name="On PushStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] script = ExtResource( 10 ) @@ -1212,9 +1225,8 @@ event = "duck_released" [node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] script = ExtResource( 10 ) -to = NodePath("../../Shooting") +to = NodePath("../../../Airborne/AirDash") event = "shoot" -guard_expression = "can_shoot" [node name="On Jump" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] script = ExtResource( 10 ) @@ -1265,9 +1277,8 @@ event = "grounded" [node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource( 10 ) -to = NodePath("../AirShooting") +to = NodePath("../AirDash") event = "shoot" -guard_expression = "can_shoot" [node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource( 10 ) @@ -1345,9 +1356,17 @@ script = ExtResource( 11 ) [node name="DoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource( 11 ) -[node name="AirShooting" type="Node" parent="StateChart/Root/Movement/Airborne"] +[node name="AfterDashFall" type="Node" parent="StateChart/Root/Movement/Airborne"] script = ExtResource( 11 ) +[node name="AirDash" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 11 ) + +[node name="On Bounce" type="Node" parent="StateChart/Root/Movement/Airborne/AirDash"] +script = ExtResource( 10 ) +to = NodePath("../../Jump/NormalJump") +event = "bounce" + [node name="Climbing" type="Node" parent="StateChart/Root/Movement"] script = ExtResource( 11 ) __meta__ = { @@ -1539,6 +1558,7 @@ wait_time = 2.0 one_shot = true [connection signal="tree_exited" from="." to="." method="_on_Player_tree_exited"] +[connection signal="area_entered" from="Graphics/ShootHitbox" to="." method="_on_ShootHitbox_area_entered"] [connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] [connection signal="state_physics_processing" from="StateChart/Root/Movement" to="." method="_process_movement"] [connection signal="state_entered" from="StateChart/Root/Movement/Grounded" to="." method="_on_Grounded_state_entered"] @@ -1555,8 +1575,8 @@ one_shot = true [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"] @@ -1570,11 +1590,14 @@ one_shot = true [connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/BetaFalling" to="." method="_on_NormalFalling_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/BetaFalling" to="." method="_on_BetaFalling_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/ScaredFalling" to="." method="_on_ScaredFalling_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_on_DoubleJump_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="reset_fall_speed"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_on_DoubleJump_state_entered"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_process_horizontal_movement"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_on_AirShooting_state_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/AfterDashFall" to="." method="_on_AfterDashFall_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/AfterDashFall" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/AirDash" to="." method="_on_AirDash_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Airborne/AirDash" to="." method="_on_AirDash_state_exited"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/AirDash" to="." method="_process_airdash"] [connection signal="state_entered" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_entered"] [connection signal="state_exited" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_exited"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"]