diff --git a/Hiro/hiro_animation.tres b/Hiro/hiro_animation.tres index 2d5cd88..51334b1 100644 --- a/Hiro/hiro_animation.tres +++ b/Hiro/hiro_animation.tres @@ -7,7 +7,8 @@ [ext_resource type="Texture2D" uid="uid://byc7mqu65fb4a" path="res://Hiro/Hiro Defeated Nude Sprites Line.png" id="5_0f03l"] [sub_resource type="Animation" id="Animation_04piu"] -length = 0.001 +length = 0.40001 +step = 0.5 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -105,6 +106,136 @@ tracks/7/keys = { "values": [Color(1, 0, 0, 0)] } +[sub_resource type="Animation" id="Animation_ry0wg"] +resource_name = "ai_defeated" +length = 1.00003 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("5_0f03l")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [5] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:vframes") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:frame") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [1, 2, 3, 4, 0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:material:shader_parameter/FlashColor") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_d06fy"] +resource_name = "ai_defeated_start" +length = 0.50005 +step = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("5_0f03l")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [5] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:vframes") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:frame") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:material:shader_parameter/FlashColor") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 0, 0, 0)] +} + [sub_resource type="Animation" id="Animation_kvnht"] resource_name = "hurt_east" length = 0.500013 @@ -929,6 +1060,59 @@ tracks/6/keys = { "values": [Vector2(0, -11), Vector2(-6, -11), Vector2(-6, -11), Vector2(-0.00060463, -11)] } +[sub_resource type="Animation" id="Animation_g1svr"] +resource_name = "player_defeated" +length = 0.83335 +step = 0.166667 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("4_fugxd")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [5] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:vframes") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:frame") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [1, 2, 3, 4] +} + [sub_resource type="Animation" id="Animation_o0diw"] resource_name = "punch_east_left" length = 0.266673 @@ -1857,189 +2041,6 @@ tracks/3/keys = { "values": [ExtResource("1_hc7kj")] } -[sub_resource type="Animation" id="Animation_g1svr"] -resource_name = "player_defeated" -length = 0.83335 -step = 0.166667 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [ExtResource("4_fugxd")] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [5] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Sprite2D:vframes") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [1] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Sprite2D:frame") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 1, -"values": [1, 2, 3, 4] -} - -[sub_resource type="Animation" id="Animation_ry0wg"] -resource_name = "ai_defeated" -length = 1.00003 -step = 0.25 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [ExtResource("5_0f03l")] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [5] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Sprite2D:vframes") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [1] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Sprite2D:frame") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 1, -"values": [1, 2, 3, 4, 0] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Sprite2D:material:shader_parameter/FlashColor") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 0, 0, 0)] -} - -[sub_resource type="Animation" id="Animation_d06fy"] -resource_name = "ai_defeated_start" -length = 0.571443 -step = 0.142857 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [ExtResource("5_0f03l")] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [5] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Sprite2D:vframes") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [1] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Sprite2D:frame") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [0] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Sprite2D:material:shader_parameter/FlashColor") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 0, 0, 0)] -} - [resource] _data = { "RESET": SubResource("Animation_04piu"), diff --git a/Hiro/hiro_player.tscn b/Hiro/hiro_player.tscn index a455de5..8ef68ee 100644 --- a/Hiro/hiro_player.tscn +++ b/Hiro/hiro_player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=49 format=3 uid="uid://di21xheryhp0k"] +[gd_scene load_steps=53 format=3 uid="uid://di21xheryhp0k"] [ext_resource type="Script" path="res://Scripts/hiro_player.gd" id="1_dtymi"] [ext_resource type="Texture2D" uid="uid://cm7tgomrcvq30" path="res://Hiro/Hiro Walk Sprite Cycle Line Up.png" id="1_ukwcc"] @@ -137,6 +137,12 @@ blend_point_2/node = SubResource("AnimationNodeBlendSpace2D_mr7t3") blend_point_2/pos = 1.0 blend_mode = 1 +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ulfn1"] +animation = &"ai_defeated" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_sudhw"] +animation = &"ai_defeated_start" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_17wsb"] animation = &"walking_north" @@ -187,21 +193,34 @@ advance_mode = 2 switch_mode = 2 advance_mode = 2 +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_aa2bq"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vxker"] +switch_mode = 2 +advance_mode = 2 + [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_b2867"] allow_transition_to_self = true +states/End/position = Vector2(928, 102) states/Start/position = Vector2(197, 108) states/defeated/node = SubResource("AnimationNodeAnimation_luptt") -states/defeated/position = Vector2(748, 100) +states/defeated/position = Vector2(691, 97) states/hurt/node = SubResource("AnimationNodeBlendSpace2D_h2vkc") states/hurt/position = Vector2(329, -13) states/idle/node = SubResource("AnimationNodeBlendSpace2D_bd8j1") states/idle/position = Vector2(329, 108) states/melee/node = SubResource("AnimationNodeBlendSpace1D_dc3kp") states/melee/position = Vector2(329, 224) +states/nsfw_defeated/node = SubResource("AnimationNodeAnimation_ulfn1") +states/nsfw_defeated/position = Vector2(823, 176.354) +states/nsfw_defeated_start/node = SubResource("AnimationNodeAnimation_sudhw") +states/nsfw_defeated_start/position = Vector2(646, 176.354) states/walk/node = SubResource("AnimationNodeBlendSpace2D_vunsg") states/walk/position = Vector2(520, 108) -transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_akmuq"), "idle", "walk", SubResource("AnimationNodeStateMachineTransition_sn1tm"), "walk", "idle", SubResource("AnimationNodeStateMachineTransition_5i3fu"), "idle", "melee", SubResource("AnimationNodeStateMachineTransition_y8p74"), "melee", "idle", SubResource("AnimationNodeStateMachineTransition_l17k0"), "hurt", "idle", SubResource("AnimationNodeStateMachineTransition_ln3pc"), "defeated", "End", SubResource("AnimationNodeStateMachineTransition_ouche")] -graph_offset = Vector2(-164, -94) +transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_akmuq"), "idle", "walk", SubResource("AnimationNodeStateMachineTransition_sn1tm"), "walk", "idle", SubResource("AnimationNodeStateMachineTransition_5i3fu"), "idle", "melee", SubResource("AnimationNodeStateMachineTransition_y8p74"), "melee", "idle", SubResource("AnimationNodeStateMachineTransition_l17k0"), "hurt", "idle", SubResource("AnimationNodeStateMachineTransition_ln3pc"), "defeated", "End", SubResource("AnimationNodeStateMachineTransition_ouche"), "nsfw_defeated_start", "nsfw_defeated", SubResource("AnimationNodeStateMachineTransition_aa2bq"), "nsfw_defeated", "End", SubResource("AnimationNodeStateMachineTransition_vxker")] +graph_offset = Vector2(12, 21.3541) [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_vm050"] radius = 8.0 diff --git a/Scripts/globals.gd b/Scripts/globals.gd new file mode 100644 index 0000000..78b45f7 --- /dev/null +++ b/Scripts/globals.gd @@ -0,0 +1,3 @@ +extends Node + +var nsfw = true diff --git a/Scripts/hiro_ai.gd b/Scripts/hiro_ai.gd index e024835..4727c88 100644 --- a/Scripts/hiro_ai.gd +++ b/Scripts/hiro_ai.gd @@ -4,7 +4,6 @@ extends CharacterBody2D @export var player_character: PlayableCharacter @export var health = 100 @export var attack_power = 30 -@export var nsfw = true @export var KNOCKBACK_POWER = 40 @export var KNOCKBACK_REPOSITION_POWER = 75 @export var KNOCKBACK_RANDOMNESS = 50 @@ -143,7 +142,7 @@ func _on_animation_tree_animation_finished(anim_name): state_machine.send_event("melee_complete") func _on_defeat_state_entered(): - if nsfw: + if Globals.nsfw: anim_playback.travel("naked_start") else: anim_playback.travel("defeated") diff --git a/Scripts/hiro_player.gd b/Scripts/hiro_player.gd index c7c2d41..1997451 100644 --- a/Scripts/hiro_player.gd +++ b/Scripts/hiro_player.gd @@ -84,7 +84,10 @@ func _on_enemy_attack_did_hit(other, power, attack_direction): health = health - power can_move = false if health <= 0: - animation_playback.travel("defeated") + if Globals.nsfw: + animation_playback.travel("nsfw_defeated_start") + else: + animation_playback.travel("defeated") defeated.emit() velocity = Vector2.ZERO else: diff --git a/Shaders/character.tres b/Shaders/character.tres index 1da1f94..b99894f 100644 --- a/Shaders/character.tres +++ b/Shaders/character.tres @@ -42,7 +42,6 @@ void fragment() { } " -graph_offset = Vector2(-122.937, -65.8182) mode = 1 flags/light_only = false nodes/fragment/0/position = Vector2(600, -60) diff --git a/project.godot b/project.godot index 4147851..82c64b4 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,10 @@ run/main_scene="res://world/world.tscn" config/features=PackedStringArray("4.2", "Mobile") config/icon="res://icon.svg" +[autoload] + +Globals="*res://Scripts/globals.gd" + [display] window/stretch/scale=2.5 @@ -95,6 +99,7 @@ melee={ 2d_physics/layer_2="Hitboxes" 2d_physics/layer_3="Triggers" 2d_physics/layer_4="Attacks" +2d_physics/layer_5="World Movement" [rendering]