diff --git a/global.gd b/global.gd index a6db12b..7c6d9e3 100644 --- a/global.gd +++ b/global.gd @@ -13,17 +13,17 @@ var playerx var playery var ccutscene = null const cutscenes = [["res://levels/Cutscenes/opening/aboutkaizo.tscn", "res://levels/Cutscenes/opening/midorihello.tscn", 18, false], ["res://levels/Cutscenes/opening/midorihello.tscn", "res://levels/Cutscenes/opening/fearlessmidori.tscn", 18, false], ["res://levels/Cutscenes/opening/fearlessmidori.tscn", "res://levels/Cutscenes/opening/midoriwaterfall.tscn", 0, false], ["res://levels/Cutscenes/opening/midoriwaterfall.tscn", "res://levels/Cutscenes/opening/midorireading.tscn", 0, false], ["res://levels/Cutscenes/opening/midorireading.tscn", "res://levels/Cutscenes/opening/boomboomtorofi.tscn", 0, false], ["res://levels/Cutscenes/opening/boomboomtorofi.tscn", "res://levels/ui/gameplay.tscn", 0, true], ["res://levels/Cutscenes/unfunaversary/punishment.tscn", "res://levels/Cutscenes/unfunaversary/sadness.tscn", 1, false], ["res://levels/Cutscenes/unfunaversary/sadness.tscn", "res://levels/Cutscenes/unfunaversary/r3.tscn", 1, false], ["res://levels/Cutscenes/unfunaversary/r3.tscn", "res://levels/Cutscenes/unfunaversary/firstclass.tscn", 1, false], ["res://levels/Cutscenes/unfunaversary/firstclass.tscn", "res://backgounds/result.tscn", 5, true]] -const pcnames = ["Midori Asgardius", "Diana Asgardius", null, "Kimberly Arch", null, null, null, null, null, "Natasha Dostoyevsky"] +const pcnames = ["Midori Asgardius", "Diana Asgardius", null, "Kimberly Arch", null, null, null, "Pamela Hashimoto", "Lety Hashimoto", "Natasha Dostoyevsky"] const npcnames = ["Lily", null, null, "Kimberly Arch", null, null, null, null, null, "Natasha Dostoyevsky"] -const pcfaces = [["res://sprites/common/midori/face.png"], ["res://sprites/common/tuna/face.png"], [null], ["res://sprites/common/kimberly/face.png"], [null], [null], [null], [null], [null], ["res://sprites/common/natasha/face.png"]] -const hudfaces = [["res://sprites/common/midori/facehud.png"], ["res://sprites/common/tuna/facehud.png"], [null], ["res://sprites/common/kimberly/facehud.png"], [null], [null], [null], [null], [null], ["res://sprites/common/natasha/facehud.png"]] +const pcfaces = [["res://sprites/common/midori/face.png"], ["res://sprites/common/tuna/face.png"], [null], ["res://sprites/common/kimberly/face.png"], [null], [null], [null], ["res://sprites/ceres/pamela/face.png"], ["res://sprites/ceres/lety/face.png"], ["res://sprites/common/natasha/face.png"]] +const hudfaces = [["res://sprites/common/midori/facehud.png"], ["res://sprites/common/tuna/facehud.png"], [null], ["res://sprites/common/kimberly/facehud.png"], [null], [null], [null], ["res://sprites/ceres/pamela/facehud.png"], ["res://sprites/ceres/lety/facehud.png"], ["res://sprites/common/natasha/facehud.png"]] const npcfaces = ["res://sprites/common/midori/face.png",null, null, "res://sprites/common/kimberly/face.png", null, null, null, null, null, "res://sprites/common/natasha/face.png"] const basestats = [[800, 200, 52, 12, 136, 25, 800], [1094, 200, 54, 7, 106, 48, 600], [null], [1143, 200, 59, 5, 117, 18, 650], [null], [null], [null], [null], [null], [1026, 200, 87, 7, 105, 49, 115]] var cstats = [[800, 200, 52, 12, 136, 25, 800], [1094, 200, 54, 7, 106, 48, 600], [null], [1143, 200, 59, 5, 117, 18, 650], [null], [null], [null], [null], [null], [1026, 200, 87, 7, 105, 49, 115]] var dstats = [[800, 200, 52, 12, 136, 25, 800], [1094, 200, 54, 7, 106, 48, 600], [null], [1143, 200, 59, 5, 117, 18, 650], [null], [null], [null], [null], [null], [1026, 200, 87, 7, 105, 49, 115]] var mstats = [[null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null], [null, null, null, null, null, null, null]] var cdialog = [] -const places = [[[["res://levels/Ceres/map.tscn", 5, false], [null, null, false]], [["res://levels/Testrooms/bullethell.tscn", 11, true], ["res://levels/Testrooms/lilytest.tscn", 6, false]], [["res://levels/Testrooms/dialogtest.tscn", 19, false], ["res://levels/Testrooms/testspawn.tscn", 2 ,false]]], [null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, null, null, ["res://levels/Ceres/honkerrailway.tscn", 19, false]], null, null, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, ["res://levels/Ceres/L20.tscn", 3, true]]]] +const places = [[[["res://levels/Ceres/map.tscn", 5, false], [null, null, false]], [["res://levels/Testrooms/bullethell.tscn", 11, true], ["res://levels/Testrooms/lilytest.tscn", 6, false]], [["res://levels/Testrooms/dialogtest.tscn", 19, false], ["res://levels/Testrooms/testspawn.tscn", 2 ,false]]], [null, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, ["res://levels/Ceres/troublemakers.tscn", 6, true]], null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, null, null, ["res://levels/Ceres/honkerrailway.tscn", 19, false]], null, null, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, ["res://levels/Ceres/L20.tscn", 3, true]]]] var cplace = [0,2,1] var dplace = [null, null, null] const pbbullets = ["res://sprites/common/bullet/fireball.tscn", "res://sprites/common/bullet/sword.tscn", null, "res://sprites/common/bullet/arrow.tscn", null, null, null, null, null, "res://sprites/common/bullet/snowflake.tscn"] @@ -34,7 +34,7 @@ var cboss = [null, null, null] var isboss var party = [[0,0], [1,0], [9,0], [3,0]] const specialities = [2, 0, 3, 1, 5, 4] -var dparty = [[0,0], [1,0], [9,0], [3,0]] +var dparty = [[0,0], [1,0], [3,0], [9,0]] var level = [1,1,1,1,1,1,1,1,1,1] var dlevel = [1,1,1,1,1,1,1,1,1,1] var cpchar = 0 diff --git a/levels/Ceres/honkerrailway.tscn b/levels/Ceres/honkerrailway.tscn index a13df55..1d161ba 100644 --- a/levels/Ceres/honkerrailway.tscn +++ b/levels/Ceres/honkerrailway.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=19 format=3 uid="uid://c4ldh7ydn78bh"] +[gd_scene load_steps=21 format=3 uid="uid://c4ldh7ydn78bh"] [ext_resource type="Script" path="res://levels/Ceres/honkerrailway.gd" id="1_75qhf"] [ext_resource type="Texture2D" uid="uid://l26qimo56l1w" path="res://sprites/ceres/items/hkr.png" id="2_qaay0"] +[ext_resource type="Texture2D" uid="uid://dhrj7a0xr4bh1" path="res://sprites/ceres/items/ltc.png" id="3_4ekhw"] [ext_resource type="Texture2D" uid="uid://c1jjhut8fuf1w" path="res://sprites/ceres/railway/sprite.png" id="3_4r2wm"] [ext_resource type="PackedScene" uid="uid://cehe6sm8ly06u" path="res://sprites/common/player/player.tscn" id="3_uvwc3"] @@ -14,6 +15,9 @@ size = Vector2(1283, 20) [sub_resource type="RectangleShape2D" id="RectangleShape2D_dw13o"] size = Vector2(224, 409) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_6hhd2"] +size = Vector2(68, 152) + [sub_resource type="RectangleShape2D" id="RectangleShape2D_hyd1a"] size = Vector2(86, 256) @@ -217,6 +221,15 @@ texture = ExtResource("2_qaay0") position = Vector2(1, -4.5) shape = SubResource("RectangleShape2D_dw13o") +[node name="StaticBody2D6" type="StaticBody2D" parent="."] +position = Vector2(384, 186) + +[node name="Sprite2D" type="Sprite2D" parent="StaticBody2D6"] +texture = ExtResource("3_4ekhw") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D6"] +shape = SubResource("RectangleShape2D_6hhd2") + [node name="Railwaygirl" type="CharacterBody2D" parent="."] position = Vector2(473, 133) diff --git a/levels/Ceres/troublemakers.gd b/levels/Ceres/troublemakers.gd new file mode 100644 index 0000000..6870c8b --- /dev/null +++ b/levels/Ceres/troublemakers.gd @@ -0,0 +1,50 @@ +extends Node2D +var talk = load("res://levels/ui/talk.tscn").instantiate() +var boss +var player +# Called when the node enters the scene tree for the first time. +func _ready(): + boss = $Pamela + player = $Player + boss.add_to_group("boss") + Global.cdialog = [[tr("DIALOG_TROUBLEMAKER_0"), true, 0, 0], [tr("DIALOG_TROUBLEMAKER_1"), true, 7, 0], [tr("DIALOG_TROUBLEMAKER_2"), true, 0, 0]] + Global.live = 0 + get_tree().root.add_child.call(talk) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass + +func _physics_process(delta): + if Global.debug: + if Global.dstats[Global.dparty[0][0]][0] <= 0 && Global.live == 1: + _winner() + else: + if Global.cstats[Global.party[0][0]][0] <= 0 && Global.live == 1: + _winner() + +func _input(event): + if Global.cdialog.size() != 0 && Global.live == 1: + get_tree().root.remove_child(talk) + Global.cdialog = [] + +func _winner(): + Global.cdialog = [[tr("DIALOG_CERES_L20_3"), true, 0, 0], [tr("DIALOG_CERES_L20_4"), false, 3], [tr("DIALOG_CERES_L20_5"), true, 0, 0]] + Global.live = 3 + Global.ccutscene = 6 + #talk.queue_free() + talk = load("res://levels/ui/talk.tscn").instantiate() + get_tree().root.add_child.call(talk) + +func _statrebase(): + if Global.debug: + for i in 4: + if Global.dparty[i][0] != null: + for j in 7: + Global.mstats[Global.dparty[i][0]][j] = Global.basestats[Global.dparty[i][0]][j] * Global.dlevel[Global.dparty[i][0]] + else: + for i in 4: + if Global.party[i][0] != null: + for j in 7: + Global.mstats[Global.party[i][0]][j] = Global.basestats[Global.party[i][0]][j] * Global.level[Global.dparty[i][0]] diff --git a/levels/Ceres/troublemakers.tscn b/levels/Ceres/troublemakers.tscn new file mode 100644 index 0000000..0650250 --- /dev/null +++ b/levels/Ceres/troublemakers.tscn @@ -0,0 +1,66 @@ +[gd_scene load_steps=7 format=3 uid="uid://b06kxtu82485n"] + +[ext_resource type="Script" path="res://levels/Ceres/troublemakers.gd" id="1_8o6q0"] +[ext_resource type="Texture2D" uid="uid://dursxelwwxe8u" path="res://sprites/common/placeholder/player.png" id="2_sgxbf"] +[ext_resource type="PackedScene" uid="uid://dya2jipk8eq2s" path="res://sprites/ceres/pamela/pamela.tscn" id="3_8xsbu"] +[ext_resource type="PackedScene" uid="uid://cehe6sm8ly06u" path="res://sprites/common/player/player.tscn" id="4_nfhf4"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_1jr1w"] +size = Vector2(20, 761) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_iptg6"] +size = Vector2(1283, 20) + +[node name="Troublemakers" type="Node2D"] +script = ExtResource("1_8o6q0") + +[node name="ColorRect" type="ColorRect" parent="."] +custom_minimum_size = Vector2(1280, 720) +offset_right = 40.0 +offset_bottom = 40.0 +color = Color(0, 0.619608, 0.270588, 1) + +[node name="TextureRect" type="TextureRect" parent="."] +offset_left = 583.0 +offset_top = 4.0 +offset_right = 711.0 +offset_bottom = 260.0 +texture = ExtResource("2_sgxbf") + +[node name="Label" type="Label" parent="."] +offset_left = 327.0 +offset_top = 354.0 +offset_right = 957.0 +offset_bottom = 409.0 +theme_override_font_sizes/font_size = 40 +text = "Boss spawns at EBU pattern area" + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2(-11, 361.5) +shape = SubResource("RectangleShape2D_1jr1w") + +[node name="StaticBody2D2" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2"] +position = Vector2(1293, 358) +shape = SubResource("RectangleShape2D_1jr1w") + +[node name="StaticBody2D3" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D3"] +position = Vector2(641.5, -9) +shape = SubResource("RectangleShape2D_iptg6") + +[node name="StaticBody2D4" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D4"] +position = Vector2(644, 731) +shape = SubResource("RectangleShape2D_iptg6") + +[node name="Pamela" parent="." instance=ExtResource("3_8xsbu")] +position = Vector2(643, 129) + +[node name="Player" parent="." instance=ExtResource("4_nfhf4")] +position = Vector2(652, 590) diff --git a/levels/ui/ceres.gd b/levels/ui/ceres.gd index 2655126..bd1e895 100644 --- a/levels/ui/ceres.gd +++ b/levels/ui/ceres.gd @@ -62,3 +62,9 @@ func _on_dialogtest_pressed() -> void: Global.dplace = [1, 8, 11] Global.live = 1 get_tree().change_scene_to_file("res://levels/ui/gameplay.tscn") + + +func _on_bullethell_pressed() -> void: + Global.dplace = [1, 1, 17] + Global.live = 1 + get_tree().change_scene_to_file("res://levels/ui/gameplay.tscn") diff --git a/levels/ui/ceres.tscn b/levels/ui/ceres.tscn index 300b2ac..0c877e6 100644 --- a/levels/ui/ceres.tscn +++ b/levels/ui/ceres.tscn @@ -73,7 +73,7 @@ text = "Honker Railway" layout_mode = 2 theme_override_font_sizes/font_size = 32 theme_override_styles/focus = SubResource("StyleBoxFlat_6u0xs") -text = "BUTTON_PLACEHOLDER" +text = "TWIN_TROUBLEMAKERS" [node name="Credits" type="Button" parent="VBoxContainer"] layout_mode = 2 @@ -96,4 +96,5 @@ text = "BUTTON_RETURN" [connection signal="pressed" from="VBoxContainer/L20" to="." method="_on_l_20_pressed"] [connection signal="pressed" from="VBoxContainer/Lilytest" to="." method="_on_lilytest_pressed"] [connection signal="pressed" from="VBoxContainer/Dialogtest" to="." method="_on_dialogtest_pressed"] +[connection signal="pressed" from="VBoxContainer/Bullethell" to="." method="_on_bullethell_pressed"] [connection signal="pressed" from="VBoxContainer/Back" to="." method="_on_back_pressed"] diff --git a/levels/ui/pause.tscn b/levels/ui/pause.tscn index c3bdd7f..a9b4011 100644 --- a/levels/ui/pause.tscn +++ b/levels/ui/pause.tscn @@ -26,6 +26,7 @@ color = Color(0, 0, 0, 1) [node name="Bottomhud" parent="CanvasLayer" instance=ExtResource("2_jnb0v")] [node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer"] +layout_direction = 3 offset_right = 40.0 offset_bottom = 40.0 diff --git a/levels/ui/talk.gd b/levels/ui/talk.gd index 0449277..7f15000 100644 --- a/levels/ui/talk.gd +++ b/levels/ui/talk.gd @@ -31,7 +31,7 @@ func _input(event): if dindex < Global.cdialog.size(): if Global.cdialog[dindex][1]: cname.set_text(Global.pcnames[Global.cdialog[dindex][2]]) - pface.texture = load((Global.pcfaces[Global.cdialog[dindex][2]][Global.cdialog[dindex][2]])) + pface.texture = load((Global.pcfaces[Global.cdialog[dindex][2]][Global.cdialog[dindex][3]])) else: cname.set_text(Global.npcnames[Global.cdialog[dindex][2]]) pface.texture = load((Global.npcfaces[Global.cdialog[dindex][2]])) diff --git a/levels/ui/tophud.tscn b/levels/ui/tophud.tscn index 3d6fa3c..0f6b43e 100644 --- a/levels/ui/tophud.tscn +++ b/levels/ui/tophud.tscn @@ -65,11 +65,13 @@ text = "100/100" horizontal_alignment = 2 [node name="Topminibg" type="ColorRect" parent="CanvasLayer"] +layout_direction = 3 offset_right = 438.0 offset_bottom = 116.0 color = Color(0.254902, 0.254902, 0.254902, 1) [node name="Topmini" type="HBoxContainer" parent="CanvasLayer"] +layout_direction = 3 offset_right = 377.0 offset_bottom = 116.0 @@ -159,12 +161,14 @@ color = Color(0, 0, 1, 1) [node name="Topleftbg" type="ColorRect" parent="CanvasLayer"] visible = false +layout_direction = 3 offset_right = 437.0 offset_bottom = 476.0 color = Color(0.254902, 0.254902, 0.254902, 1) [node name="Topleft" type="VBoxContainer" parent="CanvasLayer"] visible = false +layout_direction = 3 offset_right = 377.0 offset_bottom = 476.0 diff --git a/sprites/ceres/items/ltc.png b/sprites/ceres/items/ltc.png new file mode 100644 index 0000000..bef57eb Binary files /dev/null and b/sprites/ceres/items/ltc.png differ diff --git a/sprites/ceres/items/ltc.png.import b/sprites/ceres/items/ltc.png.import new file mode 100644 index 0000000..f85e24b --- /dev/null +++ b/sprites/ceres/items/ltc.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhrj7a0xr4bh1" +path="res://.godot/imported/ltc.png-5590e18256969f120615104700fbbd3c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/ceres/items/ltc.png" +dest_files=["res://.godot/imported/ltc.png-5590e18256969f120615104700fbbd3c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/ceres/pamela/pamela.gd b/sprites/ceres/pamela/pamela.gd new file mode 100644 index 0000000..3ac9680 --- /dev/null +++ b/sprites/ceres/pamela/pamela.gd @@ -0,0 +1,116 @@ +extends CharacterBody2D + +var theta: float = 0.0 +@export_range(0,2*PI) var alpha: float = 1.5 +var bullet = load("res://sprites/common/bullet/tnt.tscn") + + + +const SPEED = 300.0 +const fspeed = 100.0 + +const JUMP_VELOCITY = -400.0 +var vangle = 2 +var weakness = 1 + + + + + + + + + + + +var movex = 0 +var movey = 0 +var attack = 59 +var crit = 5 + + + +func _ready(): + if Global.isboss: + Global.cboss = ["Pamela Hashimoto",800,800] + var stimer = $Speed + stimer.start(0.05) + +func get_vector(angle): + theta = angle + alpha + return Vector2(cos(theta),sin(theta)) + +# Get the gravity from the project settings to be synced with RigidBody nodes. +var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") + +@onready var anim := $AnimationPlayer + +func _physics_process(delta): + if Global.live == 1: + if Global.playerx < position.x && (position.x - Global.playerx) > 200: + movex = -1 + elif Global.playerx > position.x && (Global.playerx - position.x) > 200: + movex = 1 + else: + movex = 0 + if Global.playery < position.y && (position.y - Global.playery) > 200: + movey = -1 + elif Global.playery > position.y && (Global.playery - position.y) > 200: + movey = 1 + else: + movey = 0 + else: + movex = 0 + movey = 0 + velocity.x = movex * fspeed * delta + velocity.y = movey * fspeed * delta + # Add the gravity. + #var velocity = Vector2.ZERO + #if Global.live == 1: + #velocity = (Vector2.RIGHT.rotated(rotation) * 500 * Global.xm * delta)-Vector2.UP.rotated(rotation) * 500 * Global.ym * delta + #origmpos = get_viewport().get_mouse_position() + #if Input.get_joy_axis(0,JOY_AXIS_LEFT_Y) != 0: + # velocity = Vector2.UP.rotated(rotation) * -400 * Input.get_joy_axis(0,JOY_AXIS_LEFT_Y) + #position += velocity + position += velocity + if velocity.y > 0.3: + vangle = 2 + elif velocity.y < -0.3: + vangle = 0 + elif velocity.x > 0.3: + vangle = 1 + elif velocity.x < -0.3: + vangle = 3 + if velocity.y != 0 || velocity.x != 0: + if vangle == 0: + anim.play("nwalk") + elif vangle == 1: + anim.play("ewalk") + elif vangle == 3: + anim.play("wwalk") + else: + anim.play("swalk") + else: + if vangle == 0: + anim.play("nidle") + elif vangle == 1: + anim.play("eidle") + elif vangle == 3: + anim.play("widle") + else: + anim.play("sidle") + #move_and_slide() +func shoot(angle): + var new_bullet = bullet.instantiate() + new_bullet.position = Vector2(position.x, position.y) + new_bullet.direction = get_vector(angle) + new_bullet.btype = "boss" + new_bullet.attack = attack + new_bullet.crit = crit + new_bullet.speciality = 3 + get_parent().call_deferred("add_child",new_bullet) + + +func _on_speed_timeout(): + if Global.live == 1: + shoot(theta) diff --git a/sprites/ceres/pamela/pamela.tscn b/sprites/ceres/pamela/pamela.tscn new file mode 100644 index 0000000..fe058b1 --- /dev/null +++ b/sprites/ceres/pamela/pamela.tscn @@ -0,0 +1,184 @@ +[gd_scene load_steps=14 format=3 uid="uid://dya2jipk8eq2s"] + +[ext_resource type="Script" path="res://sprites/ceres/pamela/pamela.gd" id="1_6fvfy"] +[ext_resource type="Texture2D" uid="uid://dt8ufdvgghipy" path="res://sprites/ceres/pamela/sprite.png" id="2_v1g13"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_mcaff"] +size = Vector2(86, 256) + +[sub_resource type="Animation" id="Animation_i5rhc"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_8my4d"] +resource_name = "eidle" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [6] +} + +[sub_resource type="Animation" id="Animation_op07l"] +resource_name = "ewalk" +length = 0.3 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [7, 6, 8] +} + +[sub_resource type="Animation" id="Animation_cajcr"] +resource_name = "nidle" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [3] +} + +[sub_resource type="Animation" id="Animation_7lhgw"] +resource_name = "nwalk" +length = 0.3 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [4, 3, 5] +} + +[sub_resource type="Animation" id="Animation_w3ius"] +resource_name = "sidle" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_u56r5"] +resource_name = "swalk" +length = 0.3 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [1, 0, 2] +} + +[sub_resource type="Animation" id="Animation_isodq"] +resource_name = "widle" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [9] +} + +[sub_resource type="Animation" id="Animation_letwb"] +resource_name = "wwalk" +length = 0.3 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [10, 9, 11] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mh65y"] +_data = { +"RESET": SubResource("Animation_i5rhc"), +"eidle": SubResource("Animation_8my4d"), +"ewalk": SubResource("Animation_op07l"), +"nidle": SubResource("Animation_cajcr"), +"nwalk": SubResource("Animation_7lhgw"), +"sidle": SubResource("Animation_w3ius"), +"swalk": SubResource("Animation_u56r5"), +"widle": SubResource("Animation_isodq"), +"wwalk": SubResource("Animation_letwb") +} + +[node name="Pamela" type="CharacterBody2D"] +script = ExtResource("1_6fvfy") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_v1g13") +hframes = 3 +vframes = 4 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_mcaff") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_mh65y") +} + +[node name="Speed" type="Timer" parent="."] +wait_time = 0.1 + +[connection signal="timeout" from="Speed" to="." method="_on_speed_timeout"] diff --git a/sprites/common/bullet/tnt.gd b/sprites/common/bullet/tnt.gd new file mode 100644 index 0000000..de21122 --- /dev/null +++ b/sprites/common/bullet/tnt.gd @@ -0,0 +1,84 @@ +extends Area2D +var velocity: Vector2 = Vector2() +var direction +var speed = 100 +var btype +var isvisible +var speciality +var attack +var crit +# Called when the node enters the scene tree for the first time. +func _ready(): + isvisible = $VisibleOnScreenNotifier2D + add_to_group(btype) + #pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass + +func _physics_process(delta): + if isvisible.is_on_screen() && Global.live != 4: + if direction == null: + position += velocity * delta + else: + position += speed * delta * direction + + +func _on_body_entered(body): + if !body.is_in_group(btype) && Global.live == 1: + if body.is_in_group("players") && Global.dificulty != 1: + if body.weakness == 1: + print("weakness") + #Input.start_joy_vibration(0,0,1,3) + if Global.debug: + if Global.dstats[Global.dparty[Global.dcpchar][0]][0] > (attack * crit): + Global.dstats[Global.dparty[Global.dcpchar][0]][0] -= attack * crit + else: + Global.dstats[Global.dparty[Global.dcpchar][0]][0] = 0 + else: + if Global.cstats[Global.party[Global.cpchar][0]][0] > (attack * crit): + Global.cstats[Global.party[Global.cpchar][0]][0] -= attack * crit + else: + Global.cstats[Global.party[Global.cpchar][0]][0] = 0 + else: + #Input.start_joy_vibration(0,1,0,2) + if Global.debug: + if Global.dstats[Global.dparty[Global.dcpchar][0]][0] > attack: + Global.dstats[Global.dparty[Global.dcpchar][0]][0] -= attack + else: + Global.dstats[Global.dparty[Global.dcpchar][0]][0] = 0 + else: + if Global.cstats[Global.party[Global.cpchar][0]][0] > attack: + Global.cstats[Global.party[Global.cpchar][0]][0] -= attack + else: + Global.cstats[Global.party[Global.cpchar][0]][0] = 0 + elif body.is_in_group("boss") && Global.dificulty != 1: + if body.weakness == 1: + print("weakness") + if Global.cboss[1] >= (attack * crit): + Global.cboss[1] -= attack * crit + else: + Global.cboss[1] = 0 + else: + if Global.cboss[1] >= (attack): + Global.cboss[1] -= attack + else: + Global.cboss[1] = 0 + elif body.is_in_group("enemies") && Global.dificulty != 1: + if body.weakness == 1: + print("weakness") + #if body.is_in_group("players"): + # Global.live = 2 + #elif body.is_in_group("enemies"): + # Global.live = 3 + #elif body.is_in_group("boss"): + # Global.live = 3 + queue_free() + + +func _on_area_entered(area): + if !area.is_in_group(btype): + queue_free() + #pass # Replace with function body. diff --git a/sprites/common/bullet/tnt.png b/sprites/common/bullet/tnt.png new file mode 100644 index 0000000..96e943a Binary files /dev/null and b/sprites/common/bullet/tnt.png differ diff --git a/sprites/common/bullet/tnt.png.import b/sprites/common/bullet/tnt.png.import new file mode 100644 index 0000000..acd379f --- /dev/null +++ b/sprites/common/bullet/tnt.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjbt01ulncdgj" +path="res://.godot/imported/tnt.png-6541ca3ae0c96323a95e42f780200f46.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/common/bullet/tnt.png" +dest_files=["res://.godot/imported/tnt.png-6541ca3ae0c96323a95e42f780200f46.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/common/bullet/tnt.tscn b/sprites/common/bullet/tnt.tscn new file mode 100644 index 0000000..01ef729 --- /dev/null +++ b/sprites/common/bullet/tnt.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3 uid="uid://bii2vgqrqw754"] + +[ext_resource type="Script" path="res://sprites/common/bullet/tnt.gd" id="1_eqk30"] +[ext_resource type="Texture2D" uid="uid://cjbt01ulncdgj" path="res://sprites/common/bullet/tnt.png" id="2_ha8c6"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_g125y"] +size = Vector2(18, 65) + +[node name="Tnt" type="Area2D"] +script = ExtResource("1_eqk30") + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(-9, 0) +texture = ExtResource("2_ha8c6") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(1, 0.5) +shape = SubResource("RectangleShape2D_g125y") + +[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] +position = Vector2(0.999999, -1.78814e-07) +scale = Vector2(0.9, 3.2) + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/text.csv b/text.csv index 7db1401..c84e774 100644 --- a/text.csv +++ b/text.csv @@ -110,7 +110,11 @@ DIALOG_CERES_L20_2;My magic wand VS your bow;Mi vara mágica contra tu arco;私 DIALOG_CERES_L20_3;I'm tired;Estoy cansada;私は疲れている DIALOG_CERES_L20_4;You must study at Kaizo Magic School as you promised;Debes estudiar en la escuela de Magia Kaizo como prometiste;約束通りカイゾー魔法学校で勉強しなくちゃ DIALOG_CERES_L20_5;It seems I'm lucky;Parece que tengo suerte;私は幸運のようです +DIALOG_TROUBLEMAKER_0;Hey, I just want to be your friend.;Oye, solamente quiero ser tu amiga;ねえ、私はただあなたと友達になりたいだけよ。 +DIALOG_TROUBLEMAKER_1;I hate rubber terrorists like you;Odio a las terroristas de hule como tu;あなたのようなゴムテロリストは嫌いです +DIALOG_TROUBLEMAKER_2;I am not a terrorist;No soy una terrorista;私はテロリストではない CERES_L20_DESC;Kimberly’s Challenge;Reto de Kimberly;キンバリーの挑戦 +TWIN_TROUBLEMAKERS;Twin Troublemakers;Gemelas problématicas;双子のトラブルメーカー MENU_CHARACTER;Character List;Lista de Personajes;キャラクター一覧 MENU_TEAM;Team List;Lista de Equipos;チーム MENU_MAP;World Map;Mapa Mundial;世界地図