randomgeon/player/player.tscn
Dan Baker 19cc8cb573 Implements modifier and stats system
Adds a modifier and stats system to manage combat-related attributes.

Introduces StatsComponent for storing entity statistics and ModifierManager for applying dynamic modifiers. Recalculates stats based on modifier type and priority.

Updates projectile and weapon components to utilize the new stats system.
2025-05-07 11:52:30 +01:00

574 lines
16 KiB
Text

[gd_scene load_steps=86 format=3 uid="uid://bo5aw2cad3akl"]
[ext_resource type="Script" uid="uid://bq038uo4cm6nv" path="res://player/scripts/player.gd" id="1_oul6g"]
[ext_resource type="Texture2D" uid="uid://dqgq2c1h6yk3k" path="res://assets/sprites/characters/pink/Pink_Monster_Attack1_4.png" id="2_yllr7"]
[ext_resource type="Texture2D" uid="uid://dinwwco5v2km5" path="res://assets/sprites/characters/pink/Pink_Monster_Attack2_6.png" id="3_kb6p2"]
[ext_resource type="Texture2D" uid="uid://bx6nst3hqsww0" path="res://assets/sprites/characters/pink/Pink_Monster_Climb_4.png" id="4_wodsf"]
[ext_resource type="Texture2D" uid="uid://0muqa26ngic7" path="res://assets/sprites/characters/pink/Pink_Monster_Death_8.png" id="5_32hag"]
[ext_resource type="Texture2D" uid="uid://nyfqe1b4k8sx" path="res://assets/sprites/characters/pink/Pink_Monster_Hurt_4.png" id="6_tqiix"]
[ext_resource type="Texture2D" uid="uid://b6ihjsu8qhm2x" path="res://assets/sprites/characters/pink/Pink_Monster_Idle_4.png" id="7_e7oew"]
[ext_resource type="Texture2D" uid="uid://hnw46ye6vusn" path="res://assets/sprites/characters/pink/Pink_Monster_Jump_8.png" id="8_c35mf"]
[ext_resource type="Texture2D" uid="uid://dun0f0rkhaew5" path="res://assets/sprites/characters/pink/Pink_Monster_Push_6.png" id="9_65viv"]
[ext_resource type="Texture2D" uid="uid://cx2x6p0dnnm6y" path="res://assets/sprites/characters/pink/Pink_Monster_Run_6.png" id="10_x7c3f"]
[ext_resource type="Texture2D" uid="uid://538sc3bsdell" path="res://assets/sprites/characters/pink/Pink_Monster_Throw_4.png" id="11_bjvpn"]
[ext_resource type="Texture2D" uid="uid://efnfh4mf0ia2" path="res://assets/sprites/characters/pink/Pink_Monster_Walk_6.png" id="12_s7qer"]
[ext_resource type="Texture2D" uid="uid://cyfq0x0h2qeof" path="res://assets/sprites/characters/pink/Pink_Monster_Walk+Attack_6.png" id="13_g4c7l"]
[ext_resource type="PackedScene" uid="uid://cgxn1f4p4vik6" path="res://assets/weapons/ranged_weapon.tscn" id="14_kb6p2"]
[ext_resource type="PackedScene" uid="uid://dud7c465danl4" path="res://combat/weapons/RangedWeaponComponent.tscn" id="15_wodsf"]
[ext_resource type="PackedScene" uid="uid://dqful6et42ok8" path="res://combat/weapons/MeleeWeaponComponent.tscn" id="16_32hag"]
[ext_resource type="PackedScene" uid="uid://bjybfg0xrowb5" path="res://entities/StatsComponent.tscn" id="17_tqiix"]
[sub_resource type="CircleShape2D" id="CircleShape2D_rkbax"]
[sub_resource type="AtlasTexture" id="AtlasTexture_knn7v"]
atlas = ExtResource("2_yllr7")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7pqkx"]
atlas = ExtResource("2_yllr7")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_uw77l"]
atlas = ExtResource("2_yllr7")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_rptt4"]
atlas = ExtResource("2_yllr7")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_r7pn3"]
atlas = ExtResource("3_kb6p2")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_b8hi5"]
atlas = ExtResource("3_kb6p2")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2uvqg"]
atlas = ExtResource("3_kb6p2")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1s1yo"]
atlas = ExtResource("3_kb6p2")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_5ejfk"]
atlas = ExtResource("3_kb6p2")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jd2rm"]
atlas = ExtResource("3_kb6p2")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_q28gw"]
atlas = ExtResource("4_wodsf")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ge24q"]
atlas = ExtResource("4_wodsf")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_pnw6m"]
atlas = ExtResource("4_wodsf")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1so5t"]
atlas = ExtResource("4_wodsf")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_55jnj"]
atlas = ExtResource("5_32hag")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_dx5ib"]
atlas = ExtResource("5_32hag")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_a2xo5"]
atlas = ExtResource("5_32hag")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_art4l"]
atlas = ExtResource("5_32hag")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_fjxoa"]
atlas = ExtResource("5_32hag")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_gswnw"]
atlas = ExtResource("5_32hag")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xcnuv"]
atlas = ExtResource("5_32hag")
region = Rect2(192, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_j55il"]
atlas = ExtResource("5_32hag")
region = Rect2(224, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_hjies"]
atlas = ExtResource("6_tqiix")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_mmwog"]
atlas = ExtResource("6_tqiix")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8pxes"]
atlas = ExtResource("6_tqiix")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_fmu53"]
atlas = ExtResource("6_tqiix")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_w7j2h"]
atlas = ExtResource("7_e7oew")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0b8q"]
atlas = ExtResource("7_e7oew")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jfgyi"]
atlas = ExtResource("7_e7oew")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_237xx"]
atlas = ExtResource("7_e7oew")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_wpyo2"]
atlas = ExtResource("8_c35mf")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7crtr"]
atlas = ExtResource("8_c35mf")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vgvch"]
atlas = ExtResource("8_c35mf")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1u5o"]
atlas = ExtResource("8_c35mf")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_3dxkp"]
atlas = ExtResource("8_c35mf")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_6wior"]
atlas = ExtResource("8_c35mf")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_p5tca"]
atlas = ExtResource("8_c35mf")
region = Rect2(192, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jbx34"]
atlas = ExtResource("8_c35mf")
region = Rect2(224, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_s3g0c"]
atlas = ExtResource("9_65viv")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_35wys"]
atlas = ExtResource("9_65viv")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_pjwc4"]
atlas = ExtResource("9_65viv")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_or4qq"]
atlas = ExtResource("9_65viv")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_hggc2"]
atlas = ExtResource("9_65viv")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_b2j0d"]
atlas = ExtResource("9_65viv")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7l6ig"]
atlas = ExtResource("10_x7c3f")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_j3r50"]
atlas = ExtResource("10_x7c3f")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_utr5e"]
atlas = ExtResource("10_x7c3f")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_kewli"]
atlas = ExtResource("10_x7c3f")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_do7qw"]
atlas = ExtResource("10_x7c3f")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2h6tc"]
atlas = ExtResource("10_x7c3f")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8rogd"]
atlas = ExtResource("11_bjvpn")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_48p26"]
atlas = ExtResource("11_bjvpn")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_anp34"]
atlas = ExtResource("11_bjvpn")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jdjat"]
atlas = ExtResource("11_bjvpn")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_j420s"]
atlas = ExtResource("12_s7qer")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_kcq4v"]
atlas = ExtResource("12_s7qer")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_qavcc"]
atlas = ExtResource("12_s7qer")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_bd26m"]
atlas = ExtResource("12_s7qer")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_lufic"]
atlas = ExtResource("12_s7qer")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_nxclr"]
atlas = ExtResource("12_s7qer")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_onxu2"]
atlas = ExtResource("13_g4c7l")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_gci7n"]
atlas = ExtResource("13_g4c7l")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_tcwf7"]
atlas = ExtResource("13_g4c7l")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_20bc7"]
atlas = ExtResource("13_g4c7l")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jfgxe"]
atlas = ExtResource("13_g4c7l")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_yg0n1"]
atlas = ExtResource("13_g4c7l")
region = Rect2(160, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_qjt2w"]
animations = [{
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_knn7v")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_7pqkx")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_uw77l")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_rptt4")
}],
"loop": true,
"name": &"attack_1",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_r7pn3")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_b8hi5")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_2uvqg")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_1s1yo")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_5ejfk")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_jd2rm")
}],
"loop": true,
"name": &"attack_2",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_q28gw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ge24q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pnw6m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1so5t")
}],
"loop": true,
"name": &"climb",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_55jnj")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_dx5ib")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_a2xo5")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_art4l")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_fjxoa")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_gswnw")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_xcnuv")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_j55il")
}],
"loop": true,
"name": &"death",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_hjies")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_mmwog")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_8pxes")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_fmu53")
}],
"loop": true,
"name": &"hurt",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_w7j2h")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_n0b8q")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_jfgyi")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_237xx")
}],
"loop": true,
"name": &"idle",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_wpyo2")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_7crtr")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_vgvch")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_a1u5o")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_3dxkp")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_6wior")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_p5tca")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_jbx34")
}],
"loop": true,
"name": &"jump",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_s3g0c")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_35wys")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_pjwc4")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_or4qq")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_hggc2")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_b2j0d")
}],
"loop": true,
"name": &"push",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_7l6ig")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_j3r50")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_utr5e")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_kewli")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_do7qw")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_2h6tc")
}],
"loop": true,
"name": &"run",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_8rogd")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_48p26")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_anp34")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_jdjat")
}],
"loop": true,
"name": &"throw",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_j420s")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_kcq4v")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_qavcc")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_bd26m")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_lufic")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_nxclr")
}],
"loop": true,
"name": &"walk",
"speed": 5.0
}, {
"frames": [{
"duration": 0.5,
"texture": SubResource("AtlasTexture_onxu2")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_gci7n")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_tcwf7")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_20bc7")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_jfgxe")
}, {
"duration": 0.5,
"texture": SubResource("AtlasTexture_yg0n1")
}],
"loop": true,
"name": &"walk_attack",
"speed": 5.0
}]
[node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("ranged", "melee") groups=["friendly"]]
collision_mask = 14
script = ExtResource("1_oul6g")
ranged = NodePath("RangedWeaponComponent")
melee = NodePath("MeleeWeaponComponent")
[node name="PlayerCollision" type="CollisionShape2D" parent="."]
position = Vector2(0, 7)
shape = SubResource("CircleShape2D_rkbax")
[node name="PlayerSprite" type="AnimatedSprite2D" parent="."]
sprite_frames = SubResource("SpriteFrames_qjt2w")
animation = &"idle"
autoplay = "idle"
frame_progress = 0.749332
[node name="Camera2D" type="Camera2D" parent="."]
zoom = Vector2(2, 2)
[node name="RangedWeapon" parent="." instance=ExtResource("14_kb6p2")]
[node name="RangedWeaponComponent" parent="." node_paths=PackedStringArray("stats") instance=ExtResource("15_wodsf")]
stats = NodePath("../StatsComponent")
[node name="MeleeWeaponComponent" parent="." instance=ExtResource("16_32hag")]
[node name="StatsComponent" parent="." instance=ExtResource("17_tqiix")]