Reworked weapons and projectiles

This commit is contained in:
2025-12-20 18:35:27 +03:00
parent 2ecc53416a
commit 8227e8bcf3
312 changed files with 2466 additions and 1376 deletions
@@ -1,5 +1,5 @@
class_name TeslaProjectile
extends DirectHitProjectile
class_name AbstractTeslaProjectile
extends AbstractDirectHitProjectile
@export_range(0.01, 0.5) var jink_min_delay: float = 0.01
@@ -1,8 +1,8 @@
[gd_scene load_steps=11 format=3 uid="uid://bi64687wtxi4d"]
[ext_resource type="PackedScene" uid="uid://cdv5n4t47hr8i" path="res://game/entities/weapons/direct_hit__projectile.tscn" id="1_1oexk"]
[ext_resource type="Script" uid="uid://bxcoa2eps0tt1" path="res://game/entities/weapons/tesla/tesla_projectile.gd" id="2_q73is"]
[ext_resource type="Script" uid="uid://c27v705giygv4" path="res://game/health_system/damage/energy_damage.gd" id="3_l65ib"]
[ext_resource type="PackedScene" uid="uid://cdv5n4t47hr8i" path="res://game/entities/weapons/abstract_direct_hit_projectile.tscn" id="1_1oexk"]
[ext_resource type="Script" uid="uid://bxcoa2eps0tt1" path="res://game/entities/weapons/tesla/abstract_tesla_projectile.gd" id="2_q73is"]
[ext_resource type="Script" uid="uid://c27v705giygv4" path="res://game/data/damage/energy_damage.gd" id="3_l65ib"]
[ext_resource type="Texture2D" uid="uid://cqdctagygc0c0" path="res://particle_textures/energy_large.tres" id="4_1121u"]
[ext_resource type="Texture2D" uid="uid://d2k7bcwqr5v2q" path="res://particle_textures/energy_huge.tres" id="4_wtuxv"]
[ext_resource type="Texture2D" uid="uid://dk3t14mrgjmma" path="res://particle_textures/energy_medium.tres" id="5_wtuxv"]
@@ -30,7 +30,7 @@ initial_velocity_max = 1.0
gravity = Vector3(0, 0, 0)
turbulence_enabled = true
[node name="TeslaProjectile" instance=ExtResource("1_1oexk")]
[node name="AbstractTeslaProjectile" instance=ExtResource("1_1oexk")]
collision_layer = 0
collision_mask = 0
script = ExtResource("2_q73is")
@@ -1,14 +1,12 @@
class_name AbstractTeslaWeapon
extends AbstractWeapon
@onready var sprite : AnimatedSprite2D = $AnimatedSprite2D
@onready var cooldown_timer : Timer = $CooldownTimer
func set_belonging(belonging: Belonging) -> void:
super.set_belonging(belonging)
sprite.play(PREFIXES[_belonging] + IDLE_POSTFIX)
func _ready() -> void:
sprite.play(IDLE_ANIMATION)
func shoot(ship_velocity: Vector2) -> bool:
@@ -1,8 +1,7 @@
[gd_scene load_steps=24 format=3 uid="uid://dyebeblayioji"]
[gd_scene load_steps=23 format=3 uid="uid://dyebeblayioji"]
[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_rpud7"]
[ext_resource type="PackedScene" uid="uid://bi64687wtxi4d" path="res://game/entities/weapons/tesla/tesla_projectile.tscn" id="2_1rrdy"]
[ext_resource type="Script" uid="uid://ctv408wdwvttc" path="res://game/entities/weapons/tesla/tesla_weapon.gd" id="2_08si3"]
[ext_resource type="Script" uid="uid://ctv408wdwvttc" path="res://game/entities/weapons/tesla/abstract_tesla_weapon.gd" id="2_08si3"]
[ext_resource type="Texture2D" uid="uid://c6aixtu6lbfud" path="res://particle_textures/energy_small.tres" id="5_dhfvk"]
[ext_resource type="Texture2D" uid="uid://6hh66k8s4a1e" path="res://images/weapons.png" id="7_ub67s"]
@@ -142,10 +141,9 @@ initial_velocity_min = 15.0
initial_velocity_max = 25.0
gravity = Vector3(0, 0, 0)
[node name="TeslaWeapon" instance=ExtResource("1_rpud7")]
[node name="AbstractTeslaWeapon" instance=ExtResource("1_rpud7")]
script = ExtResource("2_08si3")
sector_angle = 10
Projectile = ExtResource("2_1rrdy")
type = 4
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="0"]
@@ -0,0 +1,2 @@
class_name EnemyTeslaProjectile
extends AbstractTeslaProjectile
@@ -0,0 +1 @@
uid://c23oegr5fvmwl
@@ -0,0 +1,18 @@
[gd_scene load_steps=5 format=3 uid="uid://cpqpc1h3egvid"]
[ext_resource type="PackedScene" uid="uid://bi64687wtxi4d" path="res://game/entities/weapons/tesla/abstract_tesla_projectile.tscn" id="1_om3b2"]
[ext_resource type="Script" uid="uid://c27v705giygv4" path="res://game/data/damage/energy_damage.gd" id="2_d0a42"]
[ext_resource type="Script" uid="uid://c23oegr5fvmwl" path="res://game/entities/weapons/tesla/enemy_tesla_projectile.gd" id="2_fxxjv"]
[sub_resource type="Resource" id="Resource_fxxjv"]
resource_local_to_scene = true
script = ExtResource("2_d0a42")
value = 30
metadata/_custom_type_script = "uid://c27v705giygv4"
[node name="EnemyTeslaProjectile" instance=ExtResource("1_om3b2")]
collision_layer = 16
collision_mask = 2
script = ExtResource("2_fxxjv")
damage = SubResource("Resource_fxxjv")
direction = Vector2(-1, 0)
@@ -0,0 +1,2 @@
class_name EnemyTeslaWeapon
extends AbstractTeslaWeapon
@@ -0,0 +1 @@
uid://ermhuy56qrok
@@ -0,0 +1,78 @@
[gd_scene load_steps=14 format=3 uid="uid://dqgybquvuw0v6"]
[ext_resource type="PackedScene" uid="uid://dyebeblayioji" path="res://game/entities/weapons/tesla/abstract_tesla_weapon.tscn" id="1_k6lmk"]
[ext_resource type="Script" uid="uid://ermhuy56qrok" path="res://game/entities/weapons/tesla/enemy_tesla_weapon.gd" id="2_cxr41"]
[ext_resource type="PackedScene" uid="uid://cpqpc1h3egvid" path="res://game/entities/weapons/tesla/enemy_tesla_projectile.tscn" id="3_i0gkc"]
[ext_resource type="Texture2D" uid="uid://6hh66k8s4a1e" path="res://images/weapons.png" id="4_b2pb7"]
[sub_resource type="AtlasTexture" id="AtlasTexture_ucdpq"]
atlas = ExtResource("4_b2pb7")
region = Rect2(0, 16, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_ifsj2"]
atlas = ExtResource("4_b2pb7")
region = Rect2(32, 16, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_x1fov"]
atlas = ExtResource("4_b2pb7")
region = Rect2(64, 16, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_u727i"]
atlas = ExtResource("4_b2pb7")
region = Rect2(96, 16, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_l8rch"]
atlas = ExtResource("4_b2pb7")
region = Rect2(128, 16, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_w3n8b"]
atlas = ExtResource("4_b2pb7")
region = Rect2(160, 16, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_4xemq"]
atlas = ExtResource("4_b2pb7")
region = Rect2(192, 16, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_ekb5u"]
atlas = ExtResource("4_b2pb7")
region = Rect2(224, 16, 32, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_sv7dk"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ucdpq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ifsj2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_x1fov")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_u727i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l8rch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w3n8b")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4xemq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ekb5u")
}],
"loop": true,
"name": &"idle",
"speed": 10.0
}]
[node name="EnemyTeslaWeapon" instance=ExtResource("1_k6lmk")]
script = ExtResource("2_cxr41")
projectile_scene = ExtResource("3_i0gkc")
[node name="AnimatedSprite2D" parent="." index="0"]
sprite_frames = SubResource("SpriteFrames_sv7dk")
animation = &"idle"
@@ -0,0 +1,2 @@
class_name PlayerTeslaProjectile
extends AbstractTeslaProjectile
@@ -0,0 +1 @@
uid://d2afef30y5oa7
@@ -0,0 +1,18 @@
[gd_scene load_steps=5 format=3 uid="uid://bvrsk14t6m061"]
[ext_resource type="PackedScene" uid="uid://bi64687wtxi4d" path="res://game/entities/weapons/tesla/abstract_tesla_projectile.tscn" id="1_t7qf7"]
[ext_resource type="Script" uid="uid://c27v705giygv4" path="res://game/data/damage/energy_damage.gd" id="2_mk8o6"]
[ext_resource type="Script" uid="uid://d2afef30y5oa7" path="res://game/entities/weapons/tesla/player_tesla_projectile.gd" id="2_yocnc"]
[sub_resource type="Resource" id="Resource_yocnc"]
resource_local_to_scene = true
script = ExtResource("2_mk8o6")
value = 30
metadata/_custom_type_script = "uid://c27v705giygv4"
[node name="PlayerTeslaProjectile" instance=ExtResource("1_t7qf7")]
collision_layer = 8
collision_mask = 4
script = ExtResource("2_yocnc")
damage = SubResource("Resource_yocnc")
direction = Vector2(1, 0)
@@ -0,0 +1,2 @@
class_name PlayerTeslaWeapon
extends AbstractTeslaWeapon
@@ -0,0 +1 @@
uid://d2qtsjtu56c21
@@ -0,0 +1,78 @@
[gd_scene load_steps=14 format=3 uid="uid://u6hpohk5i3eu"]
[ext_resource type="PackedScene" uid="uid://dyebeblayioji" path="res://game/entities/weapons/tesla/abstract_tesla_weapon.tscn" id="1_0i0tl"]
[ext_resource type="Script" uid="uid://d2qtsjtu56c21" path="res://game/entities/weapons/tesla/player_tesla_weapon.gd" id="2_ve1yj"]
[ext_resource type="PackedScene" uid="uid://bvrsk14t6m061" path="res://game/entities/weapons/tesla/player_tesla_projectile.tscn" id="3_io2od"]
[ext_resource type="Texture2D" uid="uid://6hh66k8s4a1e" path="res://images/weapons.png" id="4_mjxwr"]
[sub_resource type="AtlasTexture" id="AtlasTexture_7ksu7"]
atlas = ExtResource("4_mjxwr")
region = Rect2(0, 0, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_14sqy"]
atlas = ExtResource("4_mjxwr")
region = Rect2(32, 0, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_57vww"]
atlas = ExtResource("4_mjxwr")
region = Rect2(64, 0, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_ook02"]
atlas = ExtResource("4_mjxwr")
region = Rect2(96, 0, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_w4veo"]
atlas = ExtResource("4_mjxwr")
region = Rect2(128, 0, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_xa0we"]
atlas = ExtResource("4_mjxwr")
region = Rect2(160, 0, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_50pvw"]
atlas = ExtResource("4_mjxwr")
region = Rect2(192, 0, 32, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_vagjq"]
atlas = ExtResource("4_mjxwr")
region = Rect2(224, 0, 32, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_sjgub"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_7ksu7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_14sqy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_57vww")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ook02")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w4veo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xa0we")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_50pvw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vagjq")
}],
"loop": true,
"name": &"idle",
"speed": 10.0
}]
[node name="PlayerTeslaWeapon" instance=ExtResource("1_0i0tl")]
script = ExtResource("2_ve1yj")
projectile_scene = ExtResource("3_io2od")
[node name="AnimatedSprite2D" parent="." index="0"]
sprite_frames = SubResource("SpriteFrames_sjgub")
animation = &"idle"
@@ -1,17 +0,0 @@
[gd_resource type="Resource" script_class="WeaponData" load_steps=3 format=3 uid="uid://c7tim0uie3m35"]
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/world/data/weapon_data.gd" id="1_a16gw"]
[ext_resource type="PackedScene" uid="uid://dyebeblayioji" path="res://game/entities/weapons/tesla/tesla_weapon.tscn" id="1_uxb6m"]
[resource]
script = ExtResource("1_a16gw")
id = "tesla"
name = "Tesla"
group = "energy"
description = "Moderate damage (energetic)
Low firerate
High velocity
Hits nearest target
Can pierce enemies"
scene = ExtResource("1_uxb6m")
metadata/_custom_type_script = "uid://870r1efinhqd"