troublemakers

This commit is contained in:
Page Asgardius 2024-08-23 20:54:38 -07:00
parent f6b36c722c
commit 7b36f2d53b
18 changed files with 630 additions and 8 deletions

View file

@ -13,17 +13,17 @@ var playerx
var playery var playery
var ccutscene = null 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 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 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 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], [null], [null], ["res://sprites/common/natasha/facehud.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 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]] 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 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 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 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 = [] 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 cplace = [0,2,1]
var dplace = [null, null, null] 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"] 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 isboss
var party = [[0,0], [1,0], [9,0], [3,0]] var party = [[0,0], [1,0], [9,0], [3,0]]
const specialities = [2, 0, 3, 1, 5, 4] 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 level = [1,1,1,1,1,1,1,1,1,1]
var dlevel = [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 var cpchar = 0

View file

@ -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="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://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="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"] [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"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_dw13o"]
size = Vector2(224, 409) size = Vector2(224, 409)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6hhd2"]
size = Vector2(68, 152)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_hyd1a"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_hyd1a"]
size = Vector2(86, 256) size = Vector2(86, 256)
@ -217,6 +221,15 @@ texture = ExtResource("2_qaay0")
position = Vector2(1, -4.5) position = Vector2(1, -4.5)
shape = SubResource("RectangleShape2D_dw13o") 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="."] [node name="Railwaygirl" type="CharacterBody2D" parent="."]
position = Vector2(473, 133) position = Vector2(473, 133)

View file

@ -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]]

View file

@ -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)

View file

@ -62,3 +62,9 @@ func _on_dialogtest_pressed() -> void:
Global.dplace = [1, 8, 11] Global.dplace = [1, 8, 11]
Global.live = 1 Global.live = 1
get_tree().change_scene_to_file("res://levels/ui/gameplay.tscn") 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")

View file

@ -73,7 +73,7 @@ text = "Honker Railway"
layout_mode = 2 layout_mode = 2
theme_override_font_sizes/font_size = 32 theme_override_font_sizes/font_size = 32
theme_override_styles/focus = SubResource("StyleBoxFlat_6u0xs") theme_override_styles/focus = SubResource("StyleBoxFlat_6u0xs")
text = "BUTTON_PLACEHOLDER" text = "TWIN_TROUBLEMAKERS"
[node name="Credits" type="Button" parent="VBoxContainer"] [node name="Credits" type="Button" parent="VBoxContainer"]
layout_mode = 2 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/L20" to="." method="_on_l_20_pressed"]
[connection signal="pressed" from="VBoxContainer/Lilytest" to="." method="_on_lilytest_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/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"] [connection signal="pressed" from="VBoxContainer/Back" to="." method="_on_back_pressed"]

View file

@ -26,6 +26,7 @@ color = Color(0, 0, 0, 1)
[node name="Bottomhud" parent="CanvasLayer" instance=ExtResource("2_jnb0v")] [node name="Bottomhud" parent="CanvasLayer" instance=ExtResource("2_jnb0v")]
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer"] [node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer"]
layout_direction = 3
offset_right = 40.0 offset_right = 40.0
offset_bottom = 40.0 offset_bottom = 40.0

View file

@ -31,7 +31,7 @@ func _input(event):
if dindex < Global.cdialog.size(): if dindex < Global.cdialog.size():
if Global.cdialog[dindex][1]: if Global.cdialog[dindex][1]:
cname.set_text(Global.pcnames[Global.cdialog[dindex][2]]) 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: else:
cname.set_text(Global.npcnames[Global.cdialog[dindex][2]]) cname.set_text(Global.npcnames[Global.cdialog[dindex][2]])
pface.texture = load((Global.npcfaces[Global.cdialog[dindex][2]])) pface.texture = load((Global.npcfaces[Global.cdialog[dindex][2]]))

View file

@ -65,11 +65,13 @@ text = "100/100"
horizontal_alignment = 2 horizontal_alignment = 2
[node name="Topminibg" type="ColorRect" parent="CanvasLayer"] [node name="Topminibg" type="ColorRect" parent="CanvasLayer"]
layout_direction = 3
offset_right = 438.0 offset_right = 438.0
offset_bottom = 116.0 offset_bottom = 116.0
color = Color(0.254902, 0.254902, 0.254902, 1) color = Color(0.254902, 0.254902, 0.254902, 1)
[node name="Topmini" type="HBoxContainer" parent="CanvasLayer"] [node name="Topmini" type="HBoxContainer" parent="CanvasLayer"]
layout_direction = 3
offset_right = 377.0 offset_right = 377.0
offset_bottom = 116.0 offset_bottom = 116.0
@ -159,12 +161,14 @@ color = Color(0, 0, 1, 1)
[node name="Topleftbg" type="ColorRect" parent="CanvasLayer"] [node name="Topleftbg" type="ColorRect" parent="CanvasLayer"]
visible = false visible = false
layout_direction = 3
offset_right = 437.0 offset_right = 437.0
offset_bottom = 476.0 offset_bottom = 476.0
color = Color(0.254902, 0.254902, 0.254902, 1) color = Color(0.254902, 0.254902, 0.254902, 1)
[node name="Topleft" type="VBoxContainer" parent="CanvasLayer"] [node name="Topleft" type="VBoxContainer" parent="CanvasLayer"]
visible = false visible = false
layout_direction = 3
offset_right = 377.0 offset_right = 377.0
offset_bottom = 476.0 offset_bottom = 476.0

BIN
sprites/ceres/items/ltc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View file

@ -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

View file

@ -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)

View file

@ -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"]

View file

@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -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

View file

@ -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"]

View file

@ -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_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_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_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;Kimberlys Challenge;Reto de Kimberly;キンバリーの挑戦 CERES_L20_DESC;Kimberlys Challenge;Reto de Kimberly;キンバリーの挑戦
TWIN_TROUBLEMAKERS;Twin Troublemakers;Gemelas problématicas;双子のトラブルメーカー
MENU_CHARACTER;Character List;Lista de Personajes;キャラクター一覧 MENU_CHARACTER;Character List;Lista de Personajes;キャラクター一覧
MENU_TEAM;Team List;Lista de Equipos;チーム MENU_TEAM;Team List;Lista de Equipos;チーム
MENU_MAP;World Map;Mapa Mundial;世界地図 MENU_MAP;World Map;Mapa Mundial;世界地図

1 en es ja
110 DIALOG_CERES_L20_3 I'm tired Estoy cansada 私は疲れている
111 DIALOG_CERES_L20_4 You must study at Kaizo Magic School as you promised Debes estudiar en la escuela de Magia Kaizo como prometiste 約束通りカイゾー魔法学校で勉強しなくちゃ
112 DIALOG_CERES_L20_5 It seems I'm lucky Parece que tengo suerte 私は幸運のようです
113 DIALOG_TROUBLEMAKER_0 Hey, I just want to be your friend. Oye, solamente quiero ser tu amiga ねえ、私はただあなたと友達になりたいだけよ。
114 DIALOG_TROUBLEMAKER_1 I hate rubber terrorists like you Odio a las terroristas de hule como tu あなたのようなゴムテロリストは嫌いです
115 DIALOG_TROUBLEMAKER_2 I am not a terrorist No soy una terrorista 私はテロリストではない
116 CERES_L20_DESC Kimberly’s Challenge Reto de Kimberly キンバリーの挑戦
117 TWIN_TROUBLEMAKERS Twin Troublemakers Gemelas problématicas 双子のトラブルメーカー
118 MENU_CHARACTER Character List Lista de Personajes キャラクター一覧
119 MENU_TEAM Team List Lista de Equipos チーム
120 MENU_MAP World Map Mapa Mundial 世界地図