way too many changes to list, oops. big rewrite.
17
Weapons/Ascension/ascension.tscn
Normal file
@ -0,0 +1,17 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://df27vi4stdgjx"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_533eh"]
|
||||
[ext_resource type="Script" uid="uid://bg8jqsqf83tbf" path="res://Weapons/Ascension/ascension_weapon.gd" id="2_s1gtk"]
|
||||
[ext_resource type="Resource" uid="uid://do05i1xtdwfqk" path="res://Weapons/Ascension/weapon_stats.tres" id="3_s1gtk"]
|
||||
[ext_resource type="Texture2D" uid="uid://dc6g4iw3eje0e" path="res://Weapons/Ascension/ascension_export.png" id="4_evfnb"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4kfie"]
|
||||
atlas = ExtResource("4_evfnb")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[node name="Weapon" instance=ExtResource("1_533eh")]
|
||||
script = ExtResource("2_s1gtk")
|
||||
stats = ExtResource("3_s1gtk")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_4kfie")
|
BIN
Weapons/Ascension/ascension_export.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
35
Weapons/Ascension/ascension_export.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dc6g4iw3eje0e"
|
||||
path.s3tc="res://.godot/imported/ascension_export.png-f435b49fb5a6cc70d59171b329503da5.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Ascension/ascension_export.png"
|
||||
dest_files=["res://.godot/imported/ascension_export.png-f435b49fb5a6cc70d59171b329503da5.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
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=0
|
6
Weapons/Ascension/ascension_weapon.gd
Normal file
@ -0,0 +1,6 @@
|
||||
class_name AscensionWeapon extends Weapon
|
||||
|
||||
|
||||
func shoot() -> void:
|
||||
super.shoot()
|
||||
hero.movement.apply_ragdoll(-hero.camera.global_basis.z * 14.0)
|
1
Weapons/Ascension/ascension_weapon.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bg8jqsqf83tbf
|
30
Weapons/Ascension/weapon_stats.tres
Normal file
@ -0,0 +1,30 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://do05i1xtdwfqk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_c5ghd"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_hwijr"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_c5ghd"]
|
||||
script = ExtResource("1_c5ghd")
|
||||
key = "Fire Delay"
|
||||
value = 2.0
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_hwijr"]
|
||||
script = ExtResource("1_c5ghd")
|
||||
key = "Damage"
|
||||
value = 0.0
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_5pac0"]
|
||||
script = ExtResource("1_c5ghd")
|
||||
key = "Energy"
|
||||
value = 5.0
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_hwijr")
|
||||
target_type = 2
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_c5ghd")]([SubResource("Resource_c5ghd"), SubResource("Resource_hwijr"), SubResource("Resource_5pac0")])
|
||||
text = "Send yourself flying"
|
||||
metadata/_custom_type_script = "uid://dg7gxxqfqxcmc"
|
BIN
Weapons/Assault/g_assault.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
34
Weapons/Assault/g_assault.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://celay30i4soud"
|
||||
path="res://.godot/imported/g_assault.png-ac036fe68b061c3981bb7c49d4a5a4cc.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Assault/g_assault.png"
|
||||
dest_files=["res://.godot/imported/g_assault.png-ac036fe68b061c3981bb7c49d4a5a4cc.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=true
|
||||
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=0
|
1
Weapons/Assault/weapon_assault.gd
Normal file
@ -0,0 +1 @@
|
||||
class_name AssaultWeapon extends HitscanWeapon
|
1
Weapons/Assault/weapon_assault.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://yi5gkkyhkbgw
|
25
Weapons/Assault/weapon_assault.tscn
Normal file
@ -0,0 +1,25 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://2eehfcrsednw"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_wkxf7"]
|
||||
[ext_resource type="Resource" uid="uid://smctw4ogm4rx" path="res://Weapons/Assault/weapon_stats.tres" id="2_fnp5x"]
|
||||
[ext_resource type="Texture2D" uid="uid://celay30i4soud" path="res://Weapons/Assault/g_assault.png" id="3_kuj4t"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="4_gdaci"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_604rb"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("3_kuj4t")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_rhtcf"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("4_gdaci")
|
||||
|
||||
[node name="HitscanWeapon" instance=ExtResource("1_wkxf7")]
|
||||
stats = ExtResource("2_fnp5x")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_604rb")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="5"]
|
||||
stream = SubResource("AudioStreamRandomizer_rhtcf")
|
31
Weapons/Assault/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://smctw4ogm4rx"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_rbqj6"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_k26ta"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_bcrtt"]
|
||||
script = ExtResource("1_rbqj6")
|
||||
key = "Damage"
|
||||
value = 3.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_llper"]
|
||||
script = ExtResource("1_rbqj6")
|
||||
key = "Range"
|
||||
value = 15.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_7i2dt"]
|
||||
script = ExtResource("1_rbqj6")
|
||||
key = "Fire Delay"
|
||||
value = 0.2
|
||||
|
||||
[sub_resource type="Resource" id="Resource_8cirl"]
|
||||
script = ExtResource("1_rbqj6")
|
||||
key = "Energy"
|
||||
value = 100.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_k26ta")
|
||||
target_type = 0
|
||||
energy_type = 2
|
||||
attributes = Array[ExtResource("1_rbqj6")]([SubResource("Resource_bcrtt"), SubResource("Resource_llper"), SubResource("Resource_7i2dt"), SubResource("Resource_8cirl")])
|
||||
text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m"
|
BIN
Weapons/Blowdart/blowdart.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
34
Weapons/Blowdart/blowdart.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dnlplq8duves3"
|
||||
path="res://.godot/imported/blowdart.png-7b4816e5e13e5e0b6c722c97d0282c06.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Blowdart/blowdart.png"
|
||||
dest_files=["res://.godot/imported/blowdart.png-7b4816e5e13e5e0b6c722c97d0282c06.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=true
|
||||
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=0
|
7
Weapons/Blowdart/weapon_blowdart.gd
Normal file
@ -0,0 +1,7 @@
|
||||
class_name BlowdartWeapon extends StatusApplyingWeapon
|
||||
|
||||
|
||||
func build_status_object() -> StatusEffect:
|
||||
var status: StatusDoT = StatusDoT.new()
|
||||
status.stats = status_stats
|
||||
return status
|
1
Weapons/Blowdart/weapon_blowdart.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://b2jmy4bpt3n40
|
29
Weapons/Blowdart/weapon_blowdart.tscn
Normal file
@ -0,0 +1,29 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://cy05ssd52exf0"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://nrdexcyatika" path="res://Scenes/Weapons/status_applying_weapon.tscn" id="1_t3gfv"]
|
||||
[ext_resource type="Script" uid="uid://b2jmy4bpt3n40" path="res://Weapons/Blowdart/weapon_blowdart.gd" id="2_g1m1f"]
|
||||
[ext_resource type="Resource" uid="uid://cbskijhnnj3kw" path="res://Resources/StatusEffects/poisoned.tres" id="3_wculg"]
|
||||
[ext_resource type="Resource" uid="uid://c6e50linnk2i7" path="res://Weapons/Blowdart/weapon_stats.tres" id="4_dwqec"]
|
||||
[ext_resource type="Texture2D" uid="uid://dnlplq8duves3" path="res://Weapons/Blowdart/blowdart.png" id="5_rvf06"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_bfygd"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_85web"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("5_rvf06")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_5ni0y"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_bfygd")
|
||||
|
||||
[node name="BlowdartWeapon" instance=ExtResource("1_t3gfv")]
|
||||
script = ExtResource("2_g1m1f")
|
||||
status_stats = ExtResource("3_wculg")
|
||||
stats = ExtResource("4_dwqec")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_85web")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="5"]
|
||||
stream = SubResource("AudioStreamRandomizer_5ni0y")
|
31
Weapons/Blowdart/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://c6e50linnk2i7"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_3nyhi"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_lbj0i"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_1txa7"]
|
||||
script = ExtResource("1_3nyhi")
|
||||
key = "Damage"
|
||||
value = 0.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_46kv2"]
|
||||
script = ExtResource("1_3nyhi")
|
||||
key = "Range"
|
||||
value = 15.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gb76x"]
|
||||
script = ExtResource("1_3nyhi")
|
||||
key = "Fire Delay"
|
||||
value = 0.8
|
||||
|
||||
[sub_resource type="Resource" id="Resource_dtjel"]
|
||||
script = ExtResource("1_3nyhi")
|
||||
key = "Energy"
|
||||
value = 8.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_lbj0i")
|
||||
target_type = 0
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_3nyhi")]([SubResource("Resource_1txa7"), SubResource("Resource_46kv2"), SubResource("Resource_gb76x"), SubResource("Resource_dtjel")])
|
||||
text = "Fires every /Fire Delay\\s, applying one stack of Poison at a range of /Range\\m"
|
BIN
Weapons/BombLauncher/grenade_launcher.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
34
Weapons/BombLauncher/grenade_launcher.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://3qcdx7n440sc"
|
||||
path="res://.godot/imported/grenade_launcher.png-8845c18be7f0ebba3854285b6d021f1f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/BombLauncher/grenade_launcher.png"
|
||||
dest_files=["res://.godot/imported/grenade_launcher.png-8845c18be7f0ebba3854285b6d021f1f.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=true
|
||||
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=0
|
7
Weapons/BombLauncher/weapon_bomb_launcher.gd
Normal file
@ -0,0 +1,7 @@
|
||||
class_name BombLauncherWeapon extends ProjectileWeapon
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
var launch_range: float = stats.get_attribute("Range")
|
||||
force = sqrt((launch_range * ProjectSettings.get_setting("physics/3d/default_gravity")) / sin(2.0 * 45.0))
|
1
Weapons/BombLauncher/weapon_bomb_launcher.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://d2uo2cp7cdhdu
|
29
Weapons/BombLauncher/weapon_bomb_launcher.tscn
Normal file
@ -0,0 +1,29 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://c3fqlkytyc62u"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_gbycb"]
|
||||
[ext_resource type="Script" uid="uid://d2uo2cp7cdhdu" path="res://Weapons/BombLauncher/weapon_bomb_launcher.gd" id="2_g5ihb"]
|
||||
[ext_resource type="Resource" uid="uid://co6eorobj1xuu" path="res://Weapons/BombLauncher/weapon_stats.tres" id="3_73ol1"]
|
||||
[ext_resource type="PackedScene" uid="uid://c8oq5unisjqne" path="res://Projectiles/Bomb/bomb_projectile.tscn" id="3_jxt6m"]
|
||||
[ext_resource type="Texture2D" uid="uid://3qcdx7n440sc" path="res://Weapons/BombLauncher/grenade_launcher.png" id="5_iyrt8"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_rg62n"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4fobv"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("5_iyrt8")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_l37cm"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_rg62n")
|
||||
|
||||
[node name="BombLauncherWeapon" instance=ExtResource("1_gbycb")]
|
||||
script = ExtResource("2_g5ihb")
|
||||
projectile_scene = ExtResource("3_jxt6m")
|
||||
stats = ExtResource("3_73ol1")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_4fobv")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="3"]
|
||||
stream = SubResource("AudioStreamRandomizer_l37cm")
|
31
Weapons/BombLauncher/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://co6eorobj1xuu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_vg7y2"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_fe8lx"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_yb48y"]
|
||||
script = ExtResource("1_vg7y2")
|
||||
key = "Fire Delay"
|
||||
value = 2.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ewwvw"]
|
||||
script = ExtResource("1_vg7y2")
|
||||
key = "Damage"
|
||||
value = 10.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_qu5dv"]
|
||||
script = ExtResource("1_vg7y2")
|
||||
key = "Range"
|
||||
value = 10.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_67t30"]
|
||||
script = ExtResource("1_vg7y2")
|
||||
key = "Energy"
|
||||
value = 10.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_fe8lx")
|
||||
target_type = 0
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_vg7y2")]([SubResource("Resource_yb48y"), SubResource("Resource_ewwvw"), SubResource("Resource_qu5dv"), SubResource("Resource_67t30")])
|
||||
text = "Launch a bomb that deals /Damage\\ damage every /Fire Delay\\ seconds"
|
BIN
Weapons/Fireball/fireball.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
34
Weapons/Fireball/fireball.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://mwgpnnm3g3re"
|
||||
path="res://.godot/imported/fireball.png-ca2a9f79a1b748ed1d541f020b0c8375.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Fireball/fireball.png"
|
||||
dest_files=["res://.godot/imported/fireball.png-ca2a9f79a1b748ed1d541f020b0c8375.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=true
|
||||
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=0
|
1
Weapons/Fireball/weapon_fireball.gd
Normal file
@ -0,0 +1 @@
|
||||
class_name FireballWeapon extends ProjectileWeapon
|
1
Weapons/Fireball/weapon_fireball.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://b31wq61g2i5vt
|
29
Weapons/Fireball/weapon_fireball.tscn
Normal file
@ -0,0 +1,29 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://dnwjfb4fexr0o"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_7k6fb"]
|
||||
[ext_resource type="Script" uid="uid://b31wq61g2i5vt" path="res://Weapons/Fireball/weapon_fireball.gd" id="2_nprco"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddpixntjsbpqp" path="res://Projectiles/Fireball/fireball_projectile.tscn" id="3_2j1mm"]
|
||||
[ext_resource type="Resource" uid="uid://dhwhwicgpw7yh" path="res://Weapons/Fireball/weapon_stats.tres" id="4_rqdnu"]
|
||||
[ext_resource type="Texture2D" uid="uid://mwgpnnm3g3re" path="res://Weapons/Fireball/fireball.png" id="5_r42ic"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_o5rjg"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_hfmm6"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("5_r42ic")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_6xq8y"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_o5rjg")
|
||||
|
||||
[node name="FireballWeapon" instance=ExtResource("1_7k6fb")]
|
||||
script = ExtResource("2_nprco")
|
||||
projectile_scene = ExtResource("3_2j1mm")
|
||||
stats = ExtResource("4_rqdnu")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_hfmm6")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="3"]
|
||||
stream = SubResource("AudioStreamRandomizer_6xq8y")
|
31
Weapons/Fireball/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://dhwhwicgpw7yh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_kqy5w"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_yto3f"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_68ba3"]
|
||||
script = ExtResource("1_kqy5w")
|
||||
key = "Fire Delay"
|
||||
value = 2.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gogvm"]
|
||||
script = ExtResource("1_kqy5w")
|
||||
key = "Damage"
|
||||
value = 5.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_pswb4"]
|
||||
script = ExtResource("1_kqy5w")
|
||||
key = "Range"
|
||||
value = 15.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_y1gjj"]
|
||||
script = ExtResource("1_kqy5w")
|
||||
key = "Energy"
|
||||
value = 5.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_yto3f")
|
||||
target_type = 0
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_kqy5w")]([SubResource("Resource_68ba3"), SubResource("Resource_gogvm"), SubResource("Resource_pswb4"), SubResource("Resource_y1gjj")])
|
||||
text = "Conjure a fireball every /Fire Delay\\s that can be thrown to deal /Damage\\ and apply Burning to enemies caught in its blast"
|
19
Weapons/Flamethrower/flame_particles.tres
Normal file
@ -0,0 +1,19 @@
|
||||
[gd_resource type="ParticleProcessMaterial" load_steps=3 format=3 uid="uid://gyeamtekshor"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_eiw3y"]
|
||||
interpolation_color_space = 2
|
||||
offsets = PackedFloat32Array(0, 0.178862, 0.455285, 1)
|
||||
colors = PackedColorArray(0.94, 0.830333, 0, 1, 1, 0.222923, 0.00252032, 1, 0.517571, 0.0343237, 0.0001635, 1, 0.0352941, 0, 0, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_arw7j"]
|
||||
gradient = SubResource("Gradient_eiw3y")
|
||||
|
||||
[resource]
|
||||
direction = Vector3(0, 0, -1)
|
||||
spread = 15.0
|
||||
initial_velocity_min = 3.0
|
||||
initial_velocity_max = 3.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
scale_min = 0.3
|
||||
scale_max = 0.3
|
||||
color_ramp = SubResource("GradientTexture1D_arw7j")
|
7
Weapons/Flamethrower/weapon_flamethrower.gd
Normal file
@ -0,0 +1,7 @@
|
||||
class_name FlamethrowerWeapon extends ShapecastWeapon
|
||||
|
||||
|
||||
func build_status_object() -> StatusEffect:
|
||||
var status: StatusDoT = StatusDoT.new()
|
||||
status.stats = status_stats
|
||||
return status
|
1
Weapons/Flamethrower/weapon_flamethrower.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bf4aoeoumhnc6
|
24
Weapons/Flamethrower/weapon_flamethrower.tscn
Normal file
@ -0,0 +1,24 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dhv7m4lky7bd8"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dp4gfr5h0tbcd" path="res://Scenes/Weapons/shapecast_weapon.tscn" id="1_ovmdp"]
|
||||
[ext_resource type="Script" uid="uid://bf4aoeoumhnc6" path="res://Weapons/Flamethrower/weapon_flamethrower.gd" id="2_227rf"]
|
||||
[ext_resource type="Resource" uid="uid://dbanx8taicddm" path="res://Resources/StatusEffects/on_fire.tres" id="3_fqch8"]
|
||||
[ext_resource type="Resource" uid="uid://yjknwdimtm8g" path="res://Weapons/Flamethrower/weapon_stats.tres" id="4_oafdt"]
|
||||
[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="5_wdw3e"]
|
||||
[ext_resource type="Material" uid="uid://gyeamtekshor" path="res://Weapons/Flamethrower/flame_particles.tres" id="6_idhp2"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3hank"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("5_wdw3e")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[node name="FlamethrowerWeapon" instance=ExtResource("1_ovmdp")]
|
||||
script = ExtResource("2_227rf")
|
||||
status_stats = ExtResource("3_fqch8")
|
||||
stats = ExtResource("4_oafdt")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_3hank")
|
||||
|
||||
[node name="GPUParticles3D" parent="ShapeCast3D" index="0"]
|
||||
process_material = ExtResource("6_idhp2")
|
31
Weapons/Flamethrower/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://yjknwdimtm8g"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_xqcf3"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_drgp3"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_j28f4"]
|
||||
script = ExtResource("1_xqcf3")
|
||||
key = "Fire Delay"
|
||||
value = 0.4
|
||||
|
||||
[sub_resource type="Resource" id="Resource_likes"]
|
||||
script = ExtResource("1_xqcf3")
|
||||
key = "Damage"
|
||||
value = 1.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_b65mk"]
|
||||
script = ExtResource("1_xqcf3")
|
||||
key = "Range"
|
||||
value = 3.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_rjpjf"]
|
||||
script = ExtResource("1_xqcf3")
|
||||
key = "Energy"
|
||||
value = 15.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_drgp3")
|
||||
target_type = 0
|
||||
energy_type = 2
|
||||
attributes = Array[ExtResource("1_xqcf3")]([SubResource("Resource_j28f4"), SubResource("Resource_likes"), SubResource("Resource_b65mk"), SubResource("Resource_rjpjf")])
|
||||
text = "Hold to apply Burning to enemies in front of you"
|
BIN
Weapons/Gatling/accelerator.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
34
Weapons/Gatling/accelerator.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dkb8e0uu5vikw"
|
||||
path="res://.godot/imported/accelerator.png-4c158c4ff4c604bf3c46c9349d25da93.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Gatling/accelerator.png"
|
||||
dest_files=["res://.godot/imported/accelerator.png-4c158c4ff4c604bf3c46c9349d25da93.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=true
|
||||
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=0
|
43
Weapons/Gatling/weapon_gatling.gd
Normal file
@ -0,0 +1,43 @@
|
||||
class_name GatlingWeapon extends HitscanWeapon
|
||||
|
||||
var time_since_firing_started: float = 0.0
|
||||
var time_to_reach_max_speed: float = 0.0
|
||||
var max_speed_multiplier: float = 0.0
|
||||
var current_time_between_shots: float = 0.0
|
||||
var final_time_between_shots: float = 0.0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
time_to_reach_max_speed = stats.get_attribute("Speed Time")
|
||||
max_speed_multiplier = stats.get_attribute("Speed Multiplier")
|
||||
final_time_between_shots = time_between_shots / max_speed_multiplier
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
super._process(delta)
|
||||
if trigger_held:
|
||||
if stats.energy_type == Data.EnergyType.CONTINUOUS:
|
||||
current_energy -= delta
|
||||
energy_spent.emit(delta, stats.energy_type)
|
||||
time_since_firing_started += delta
|
||||
var progress: float = clamp(time_since_firing_started / time_to_reach_max_speed, 0.0, 1.0)
|
||||
current_time_between_shots = lerpf(time_between_shots, final_time_between_shots, progress)
|
||||
if current_energy < energy_cost:
|
||||
time_since_firing_started = 0.0
|
||||
current_time_between_shots = time_between_shots
|
||||
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if trigger_held and current_energy >= energy_cost and time_since_firing >= current_time_between_shots:
|
||||
time_since_firing -= current_time_between_shots
|
||||
#current_energy -= energy_cost
|
||||
#energy_spent.emit(current_energy)
|
||||
shoot()
|
||||
networked_shoot.rpc()
|
||||
|
||||
|
||||
func release_trigger() -> void:
|
||||
super.release_trigger()
|
||||
time_since_firing_started = 0.0
|
||||
current_time_between_shots = time_between_shots
|
1
Weapons/Gatling/weapon_gatling.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://iajcv516mpcg
|
27
Weapons/Gatling/weapon_gatling.tscn
Normal file
@ -0,0 +1,27 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dkxi1ssoa44jn"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_fwlu5"]
|
||||
[ext_resource type="Resource" uid="uid://cj2x1jvo8l4ot" path="res://Weapons/Gatling/weapon_stats.tres" id="2_fnyjd"]
|
||||
[ext_resource type="Script" uid="uid://iajcv516mpcg" path="res://Weapons/Gatling/weapon_gatling.gd" id="2_wm4al"]
|
||||
[ext_resource type="Texture2D" uid="uid://dkb8e0uu5vikw" path="res://Weapons/Gatling/accelerator.png" id="4_gi42y"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_gelfi"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0im1y"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("4_gi42y")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_778e1"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("5_gelfi")
|
||||
|
||||
[node name="WeaponGatling" instance=ExtResource("1_fwlu5")]
|
||||
script = ExtResource("2_wm4al")
|
||||
stats = ExtResource("2_fnyjd")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_0im1y")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="5"]
|
||||
stream = SubResource("AudioStreamRandomizer_778e1")
|
43
Weapons/Gatling/weapon_stats.tres
Normal file
@ -0,0 +1,43 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=9 format=3 uid="uid://cj2x1jvo8l4ot"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_7oh83"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_y36gr"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_fi7tc"]
|
||||
script = ExtResource("1_7oh83")
|
||||
key = "Fire Delay"
|
||||
value = 0.4
|
||||
|
||||
[sub_resource type="Resource" id="Resource_r6h5d"]
|
||||
script = ExtResource("1_7oh83")
|
||||
key = "Damage"
|
||||
value = 2.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gwg1i"]
|
||||
script = ExtResource("1_7oh83")
|
||||
key = "Range"
|
||||
value = 20.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ogk1x"]
|
||||
script = ExtResource("1_7oh83")
|
||||
key = "Speed Multiplier"
|
||||
value = 3.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_wdp3h"]
|
||||
script = ExtResource("1_7oh83")
|
||||
key = "Speed Time"
|
||||
value = 4.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_d1lvi"]
|
||||
script = ExtResource("1_7oh83")
|
||||
key = "Energy"
|
||||
value = 100.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_y36gr")
|
||||
target_type = 0
|
||||
energy_type = 2
|
||||
attributes = Array[ExtResource("1_7oh83")]([SubResource("Resource_fi7tc"), SubResource("Resource_r6h5d"), SubResource("Resource_gwg1i"), SubResource("Resource_ogk1x"), SubResource("Resource_wdp3h"), SubResource("Resource_d1lvi")])
|
||||
text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m
|
||||
|
||||
While held, gradually accelerates to /Speed Multiplier\\x the fire rate over /Speed Time\\s"
|
BIN
Weapons/GlueLauncher/glue_gun.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
34
Weapons/GlueLauncher/glue_gun.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://oblavj8vj30n"
|
||||
path="res://.godot/imported/glue_gun.png-3a7daf5c437b562a7991221d00f42c09.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/GlueLauncher/glue_gun.png"
|
||||
dest_files=["res://.godot/imported/glue_gun.png-3a7daf5c437b562a7991221d00f42c09.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=true
|
||||
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=0
|
7
Weapons/GlueLauncher/weapon_glue_launcher.gd
Normal file
@ -0,0 +1,7 @@
|
||||
class_name GlueLauncherWeapon extends StatusApplyingWeapon
|
||||
|
||||
|
||||
func build_status_object() -> StatusEffect:
|
||||
var status: StatusSlow = StatusSlow.new()
|
||||
status.stats = status_stats
|
||||
return status
|
1
Weapons/GlueLauncher/weapon_glue_launcher.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cen0646abxvb8
|
29
Weapons/GlueLauncher/weapon_glue_launcher.tscn
Normal file
@ -0,0 +1,29 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://takm6diuy71m"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://nrdexcyatika" path="res://Scenes/Weapons/status_applying_weapon.tscn" id="1_7v0k2"]
|
||||
[ext_resource type="Script" uid="uid://cen0646abxvb8" path="res://Weapons/GlueLauncher/weapon_glue_launcher.gd" id="2_12ex2"]
|
||||
[ext_resource type="Resource" uid="uid://d0643gfp52x3s" path="res://Resources/StatusEffects/sticky.tres" id="3_xtk6n"]
|
||||
[ext_resource type="Resource" uid="uid://boj1ho5x0sxtq" path="res://Weapons/GlueLauncher/weapon_stats.tres" id="4_c3ve8"]
|
||||
[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="5_obawu"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_6qk7c"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ehcsl"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("5_obawu")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cc15t"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_6qk7c")
|
||||
|
||||
[node name="GlueLauncherWeapon" instance=ExtResource("1_7v0k2")]
|
||||
script = ExtResource("2_12ex2")
|
||||
status_stats = ExtResource("3_xtk6n")
|
||||
stats = ExtResource("4_c3ve8")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_ehcsl")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="5"]
|
||||
stream = SubResource("AudioStreamRandomizer_cc15t")
|
31
Weapons/GlueLauncher/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://boj1ho5x0sxtq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_8ysxs"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_nlx26"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gbocu"]
|
||||
script = ExtResource("1_8ysxs")
|
||||
key = "Damage"
|
||||
value = 0.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_6a2im"]
|
||||
script = ExtResource("1_8ysxs")
|
||||
key = "Range"
|
||||
value = 13.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_7npe0"]
|
||||
script = ExtResource("1_8ysxs")
|
||||
key = "Fire Delay"
|
||||
value = 0.5
|
||||
|
||||
[sub_resource type="Resource" id="Resource_o1b5x"]
|
||||
script = ExtResource("1_8ysxs")
|
||||
key = "Energy"
|
||||
value = 12.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_nlx26")
|
||||
target_type = 0
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_8ysxs")]([SubResource("Resource_gbocu"), SubResource("Resource_6a2im"), SubResource("Resource_7npe0"), SubResource("Resource_o1b5x")])
|
||||
text = "Fires every /Fire Delay\\s, making the target Sticky at a range of /Range\\m"
|
BIN
Weapons/Icicle/icicle.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
34
Weapons/Icicle/icicle.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://mqo5qcghfit8"
|
||||
path="res://.godot/imported/icicle.png-c9b1486012d89be0210aa46f82236f7a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Icicle/icicle.png"
|
||||
dest_files=["res://.godot/imported/icicle.png-c9b1486012d89be0210aa46f82236f7a.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=true
|
||||
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=0
|
1
Weapons/Icicle/weapon_icicle.gd
Normal file
@ -0,0 +1 @@
|
||||
class_name IcicleWeapon extends ProjectileWeapon
|
1
Weapons/Icicle/weapon_icicle.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://b8kfsaxc738dr
|
29
Weapons/Icicle/weapon_icicle.tscn
Normal file
@ -0,0 +1,29 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://v3iuf4lt2iff"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_oi7x1"]
|
||||
[ext_resource type="Script" uid="uid://b8kfsaxc738dr" path="res://Weapons/Icicle/weapon_icicle.gd" id="2_6wbx0"]
|
||||
[ext_resource type="PackedScene" uid="uid://dyurjxotdkf1u" path="res://Projectiles/Icicle/icicle_projectile.tscn" id="3_cwl2u"]
|
||||
[ext_resource type="Resource" uid="uid://ckjmym1ofww4" path="res://Weapons/Icicle/weapon_stats.tres" id="4_r8ss5"]
|
||||
[ext_resource type="Texture2D" uid="uid://mqo5qcghfit8" path="res://Weapons/Icicle/icicle.png" id="5_iremk"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_ilpsp"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7uf3s"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("5_iremk")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_1vtjq"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_ilpsp")
|
||||
|
||||
[node name="IcicleWeapon" instance=ExtResource("1_oi7x1")]
|
||||
script = ExtResource("2_6wbx0")
|
||||
projectile_scene = ExtResource("3_cwl2u")
|
||||
stats = ExtResource("4_r8ss5")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_7uf3s")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="3"]
|
||||
stream = SubResource("AudioStreamRandomizer_1vtjq")
|
31
Weapons/Icicle/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://ckjmym1ofww4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_nkpmf"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_5m6w7"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_68ba3"]
|
||||
script = ExtResource("1_nkpmf")
|
||||
key = "Fire Delay"
|
||||
value = 2.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gogvm"]
|
||||
script = ExtResource("1_nkpmf")
|
||||
key = "Damage"
|
||||
value = 5.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_pswb4"]
|
||||
script = ExtResource("1_nkpmf")
|
||||
key = "Range"
|
||||
value = 15.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_cfu7u"]
|
||||
script = ExtResource("1_nkpmf")
|
||||
key = "Energy"
|
||||
value = 5.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_5m6w7")
|
||||
target_type = 0
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_nkpmf")]([SubResource("Resource_68ba3"), SubResource("Resource_gogvm"), SubResource("Resource_pswb4"), SubResource("Resource_cfu7u")])
|
||||
text = "Conjure an icicle every /Fire Delay\\s that can be thrown to deal /Damage\\ and apply Cold to enemies caught in its blast"
|
BIN
Weapons/Overclock/g_asssrault-export.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
35
Weapons/Overclock/g_asssrault-export.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cufk22apg8kqv"
|
||||
path.s3tc="res://.godot/imported/g_asssrault-export.png-58b6525a5c474bc76f125375a72b58c0.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Overclock/g_asssrault-export.png"
|
||||
dest_files=["res://.godot/imported/g_asssrault-export.png-58b6525a5c474bc76f125375a72b58c0.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
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=0
|
45
Weapons/Overclock/overclock_weapon.gd
Normal file
@ -0,0 +1,45 @@
|
||||
class_name OverclockWeapon extends Weapon
|
||||
|
||||
|
||||
@export var raycast: RayCast3D
|
||||
@export var range_debug_indicator: CSGSphere3D
|
||||
|
||||
var attack_range: float = 0.0
|
||||
var effect_duration: float = 0.0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
attack_range = stats.get_attribute("Range")
|
||||
effect_duration = stats.get_attribute("EffectDuration")
|
||||
raycast.target_position = Vector3(0, 0, -attack_range)
|
||||
range_debug_indicator.radius = attack_range
|
||||
raycast.global_position = hero.camera.global_position
|
||||
|
||||
|
||||
func shoot() -> void:
|
||||
super.shoot()
|
||||
if raycast.is_colliding():
|
||||
var target: CharacterBody3D = raycast.get_collider()
|
||||
if target != null:
|
||||
var target_hitbox: CollisionShape3D = target.shape_owner_get_owner(raycast.get_collider_shape())
|
||||
if target_hitbox.get_parent() is TowerBase:
|
||||
hit(target, target_hitbox.get_parent())
|
||||
#if Data.preferences.display_self_damage_indicators:
|
||||
#spawn_damage_indicator(raycast.get_collision_point())
|
||||
networked_hit.rpc(get_tree().root.get_path_to(target), get_tree().root.get_path_to(target_hitbox.get_parent()))
|
||||
|
||||
|
||||
func hit(_target: CharacterBody3D, target_hitbox: TowerBase) -> void:
|
||||
#target_hitbox.damage(damage)
|
||||
if target_hitbox.tower:
|
||||
target_hitbox.tower.big_speed_buff_timer += effect_duration
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_hit(target_path: String, target_hitbox_path: String) -> void:
|
||||
#var target: CharacterBody3D = get_tree().root.get_node(target_path)
|
||||
var target_hitbox: TowerBase = get_tree().root.get_node(target_hitbox_path) as TowerBase
|
||||
hit(null, target_hitbox)
|
||||
#if Data.preferences.display_party_damage_indicators:
|
||||
#spawn_damage_indicator(target.sprite.global_position)
|
1
Weapons/Overclock/overclock_weapon.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bxqellvwo4d7n
|
17
Weapons/Overclock/overclock_weapon.tscn
Normal file
@ -0,0 +1,17 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dmbd7ivisjm3w"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_y7piy"]
|
||||
[ext_resource type="Script" uid="uid://bxqellvwo4d7n" path="res://Weapons/Overclock/overclock_weapon.gd" id="2_5uumc"]
|
||||
[ext_resource type="Resource" uid="uid://d3qmy6puuh1gl" path="res://Weapons/Overclock/weapon_stats.tres" id="3_tptkd"]
|
||||
[ext_resource type="Texture2D" uid="uid://cufk22apg8kqv" path="res://Weapons/Overclock/g_asssrault-export.png" id="4_5uumc"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tptkd"]
|
||||
atlas = ExtResource("4_5uumc")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[node name="HitscanWeapon" instance=ExtResource("1_y7piy")]
|
||||
script = ExtResource("2_5uumc")
|
||||
stats = ExtResource("3_tptkd")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_tptkd")
|
42
Weapons/Overclock/weapon_stats.tres
Normal file
@ -0,0 +1,42 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=8 format=3 uid="uid://d3qmy6puuh1gl"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_m84e5"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_rl1ek"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_m84e5"]
|
||||
script = ExtResource("1_m84e5")
|
||||
key = "Fire Delay"
|
||||
value = 0.3
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_rl1ek"]
|
||||
script = ExtResource("1_m84e5")
|
||||
key = "Damage"
|
||||
value = 0.0
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gglou"]
|
||||
script = ExtResource("1_m84e5")
|
||||
key = "Energy"
|
||||
value = 20.0
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_0g051"]
|
||||
script = ExtResource("1_m84e5")
|
||||
key = "Range"
|
||||
value = 100.0
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_uq2yv"]
|
||||
script = ExtResource("1_m84e5")
|
||||
key = "EffectDuration"
|
||||
value = 1.0
|
||||
metadata/_custom_type_script = "uid://yjb0uv6og430"
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_rl1ek")
|
||||
target_type = 1
|
||||
energy_type = 2
|
||||
attributes = Array[ExtResource("1_m84e5")]([SubResource("Resource_m84e5"), SubResource("Resource_rl1ek"), SubResource("Resource_gglou"), SubResource("Resource_0g051"), SubResource("Resource_uq2yv")])
|
||||
text = "Fire a machine-energizing pellet every /Fire Delay\\ seconds that speeds up tower fire rate by 35% for /EffectDuration\\ seconds at a range of /Range\\m"
|
||||
metadata/_custom_type_script = "uid://dg7gxxqfqxcmc"
|
25
Weapons/Reactor/radiation_particles.tres
Normal file
@ -0,0 +1,25 @@
|
||||
[gd_resource type="ParticleProcessMaterial" load_steps=3 format=3 uid="uid://bjab6t4n0s5ac"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_eiw3y"]
|
||||
interpolation_color_space = 2
|
||||
offsets = PackedFloat32Array(0, 0.0894309, 1)
|
||||
colors = PackedColorArray(0, 0.831373, 0, 1, 4.21144e-08, 0.320987, -4.81308e-08, 0.721201, 0, 0.254902, 0, 0)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_arw7j"]
|
||||
gradient = SubResource("Gradient_eiw3y")
|
||||
|
||||
[resource]
|
||||
emission_shape = 6
|
||||
emission_ring_axis = Vector3(0, -1, 0)
|
||||
emission_ring_height = 1.0
|
||||
emission_ring_radius = 1.0
|
||||
emission_ring_inner_radius = 0.0
|
||||
emission_ring_cone_angle = 90.0
|
||||
direction = Vector3(0, 0, -1)
|
||||
spread = 15.0
|
||||
initial_velocity_min = 3.0
|
||||
initial_velocity_max = 3.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
scale_min = 0.3
|
||||
scale_max = 0.3
|
||||
color_ramp = SubResource("GradientTexture1D_arw7j")
|
7
Weapons/Reactor/weapon_reactor.gd
Normal file
@ -0,0 +1,7 @@
|
||||
class_name ReactorWeapon extends ShapecastWeapon
|
||||
|
||||
|
||||
func build_status_object() -> StatusEffect:
|
||||
var status: StatusDoT = StatusDoT.new()
|
||||
status.stats = status_stats
|
||||
return status
|
1
Weapons/Reactor/weapon_reactor.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://d1lqdrh65prrr
|
32
Weapons/Reactor/weapon_reactor.tscn
Normal file
@ -0,0 +1,32 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://yymj42pp6v1t"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dp4gfr5h0tbcd" path="res://Scenes/Weapons/shapecast_weapon.tscn" id="1_du35a"]
|
||||
[ext_resource type="Script" uid="uid://d1lqdrh65prrr" path="res://Weapons/Reactor/weapon_reactor.gd" id="2_oe7hd"]
|
||||
[ext_resource type="Resource" uid="uid://dxlisoas4xlmo" path="res://Resources/StatusEffects/radioactive.tres" id="3_hsfwd"]
|
||||
[ext_resource type="Resource" uid="uid://ipfr7emuarbj" path="res://Weapons/Reactor/weapon_stats.tres" id="4_83mkk"]
|
||||
[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="5_bawfy"]
|
||||
[ext_resource type="Material" uid="uid://bjab6t4n0s5ac" path="res://Weapons/Reactor/radiation_particles.tres" id="6_0sgt1"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0dpt5"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("5_bawfy")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_l4nsh"]
|
||||
transparency = 1
|
||||
vertex_color_use_as_albedo = true
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_5o1ws"]
|
||||
material = SubResource("StandardMaterial3D_l4nsh")
|
||||
|
||||
[node name="ReactorWeapon" instance=ExtResource("1_du35a")]
|
||||
script = ExtResource("2_oe7hd")
|
||||
status_stats = ExtResource("3_hsfwd")
|
||||
stats = ExtResource("4_83mkk")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_0dpt5")
|
||||
|
||||
[node name="GPUParticles3D" parent="ShapeCast3D" index="0"]
|
||||
process_material = ExtResource("6_0sgt1")
|
||||
draw_pass_1 = SubResource("BoxMesh_5o1ws")
|
31
Weapons/Reactor/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://ipfr7emuarbj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_b6ubt"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_ahbcx"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_j28f4"]
|
||||
script = ExtResource("1_b6ubt")
|
||||
key = "Fire Delay"
|
||||
value = 0.5
|
||||
|
||||
[sub_resource type="Resource" id="Resource_likes"]
|
||||
script = ExtResource("1_b6ubt")
|
||||
key = "Damage"
|
||||
value = 1.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_b65mk"]
|
||||
script = ExtResource("1_b6ubt")
|
||||
key = "Range"
|
||||
value = 3.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_b4805"]
|
||||
script = ExtResource("1_b6ubt")
|
||||
key = "Energy"
|
||||
value = 9.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_ahbcx")
|
||||
target_type = 0
|
||||
energy_type = 2
|
||||
attributes = Array[ExtResource("1_b6ubt")]([SubResource("Resource_j28f4"), SubResource("Resource_likes"), SubResource("Resource_b65mk"), SubResource("Resource_b4805")])
|
||||
text = "Hold to apply Radioactive to enemies in front of you"
|
19
Weapons/Refrigerator/cold_particles.tres
Normal file
@ -0,0 +1,19 @@
|
||||
[gd_resource type="ParticleProcessMaterial" load_steps=3 format=3 uid="uid://ckung57mij7ue"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_eiw3y"]
|
||||
interpolation_color_space = 2
|
||||
offsets = PackedFloat32Array(0, 0.325203, 1)
|
||||
colors = PackedColorArray(0.827004, 0.826193, 0.823983, 1, 0.338333, 0.810555, 0.85349, 1, 0.0352941, 0.803922, 0.858824, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_arw7j"]
|
||||
gradient = SubResource("Gradient_eiw3y")
|
||||
|
||||
[resource]
|
||||
direction = Vector3(0, 0, -1)
|
||||
spread = 15.0
|
||||
initial_velocity_min = 3.0
|
||||
initial_velocity_max = 3.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
scale_min = 0.3
|
||||
scale_max = 0.3
|
||||
color_ramp = SubResource("GradientTexture1D_arw7j")
|
22
Weapons/Refrigerator/weapon_refrigerator.tscn
Normal file
@ -0,0 +1,22 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://b0vi11kj3lxng"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dp4gfr5h0tbcd" path="res://Scenes/Weapons/shapecast_weapon.tscn" id="1_g3e4a"]
|
||||
[ext_resource type="Resource" uid="uid://fed6kimfbcwv" path="res://Resources/StatusEffects/cold.tres" id="2_pranv"]
|
||||
[ext_resource type="Resource" uid="uid://5l758yxfpi1e" path="res://Weapons/Refrigerator/weapon_stats.tres" id="3_ihljm"]
|
||||
[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="4_y5ps0"]
|
||||
[ext_resource type="Material" uid="uid://ckung57mij7ue" path="res://Weapons/Refrigerator/cold_particles.tres" id="5_8q1lc"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0yua2"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("4_y5ps0")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[node name="RefrigeratorWeapon" instance=ExtResource("1_g3e4a")]
|
||||
status_stats = ExtResource("2_pranv")
|
||||
stats = ExtResource("3_ihljm")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_0yua2")
|
||||
|
||||
[node name="GPUParticles3D" parent="ShapeCast3D" index="0"]
|
||||
process_material = ExtResource("5_8q1lc")
|
31
Weapons/Refrigerator/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://5l758yxfpi1e"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_dxffl"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_wny82"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_j28f4"]
|
||||
script = ExtResource("1_dxffl")
|
||||
key = "Fire Delay"
|
||||
value = 0.5
|
||||
|
||||
[sub_resource type="Resource" id="Resource_likes"]
|
||||
script = ExtResource("1_dxffl")
|
||||
key = "Damage"
|
||||
value = 1.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_b65mk"]
|
||||
script = ExtResource("1_dxffl")
|
||||
key = "Range"
|
||||
value = 3.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_voaa5"]
|
||||
script = ExtResource("1_dxffl")
|
||||
key = "Energy"
|
||||
value = 14.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_wny82")
|
||||
target_type = 0
|
||||
energy_type = 2
|
||||
attributes = Array[ExtResource("1_dxffl")]([SubResource("Resource_j28f4"), SubResource("Resource_likes"), SubResource("Resource_b65mk"), SubResource("Resource_voaa5")])
|
||||
text = "Hold to apply Cold to enemies in front of you"
|
BIN
Weapons/RocketLauncher/rocket_launcher.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
34
Weapons/RocketLauncher/rocket_launcher.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://by1y15lm0bppe"
|
||||
path="res://.godot/imported/rocket_launcher.png-46d46e1e1165d4d8f368275130d46ec7.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/RocketLauncher/rocket_launcher.png"
|
||||
dest_files=["res://.godot/imported/rocket_launcher.png-46d46e1e1165d4d8f368275130d46ec7.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=true
|
||||
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=0
|
BIN
Weapons/RocketLauncher/target_icon.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
34
Weapons/RocketLauncher/target_icon.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://hnfa76d6tdi"
|
||||
path="res://.godot/imported/target_icon.png-fdb073988a655736b50ac44c55c9a9e4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/RocketLauncher/target_icon.png"
|
||||
dest_files=["res://.godot/imported/target_icon.png-fdb073988a655736b50ac44c55c9a9e4.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=true
|
||||
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=0
|
12
Weapons/RocketLauncher/target_icon.tscn
Normal file
@ -0,0 +1,12 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://csufsbi64asau"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://hnfa76d6tdi" path="res://Weapons/RocketLauncher/target_icon.png" id="1_r4a3f"]
|
||||
|
||||
[node name="Node3D" type="Sprite3D"]
|
||||
sorting_offset = 20.0
|
||||
pixel_size = 0.002
|
||||
billboard = 1
|
||||
no_depth_test = true
|
||||
fixed_size = true
|
||||
texture_filter = 0
|
||||
texture = ExtResource("1_r4a3f")
|
BIN
Weapons/RocketLauncher/target_list.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
34
Weapons/RocketLauncher/target_list.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cc2umukpibmx1"
|
||||
path="res://.godot/imported/target_list.png-8dceb321dce44756cc7d567683ca010a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/RocketLauncher/target_list.png"
|
||||
dest_files=["res://.godot/imported/target_list.png-8dceb321dce44756cc7d567683ca010a.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
|
83
Weapons/RocketLauncher/weapon_rocket_launcher.gd
Normal file
@ -0,0 +1,83 @@
|
||||
class_name RocketLauncherWeapon extends ProjectileWeapon
|
||||
|
||||
@export var target_icon_scene: PackedScene
|
||||
@export var targeting_raycast: RayCast3D
|
||||
@export var targeting_ui_rect: TextureRect
|
||||
|
||||
var target_max: int = 3
|
||||
var targets: Array[EnemyController] = []
|
||||
var target_icons: Array[Sprite3D] = []
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
targeting_raycast.global_position = hero.camera.global_position
|
||||
target_max = floori(stats.get_attribute("Target Limit"))
|
||||
for x: int in target_max:
|
||||
var icon: Sprite3D = target_icon_scene.instantiate()
|
||||
add_child(icon)
|
||||
icon.set_visible(false)
|
||||
target_icons.append(icon)
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
super._process(delta)
|
||||
if !trigger_held or time_since_firing < time_between_shots or current_energy < energy_cost:
|
||||
return
|
||||
var target_list: Array[EnemyController] = []
|
||||
for target: EnemyController in targets:
|
||||
if is_instance_valid(target):
|
||||
target_list.append(target)
|
||||
targets = target_list
|
||||
for x: int in target_icons.size():
|
||||
if x < targets.size():
|
||||
target_icons[x].global_position = targets[x].sprite.global_position
|
||||
target_icons[x].set_visible(true)
|
||||
else:
|
||||
target_icons[x].set_visible(false)
|
||||
targeting_ui_rect.set_visible(true)
|
||||
targeting_ui_rect.texture.region = Rect2(128 * targets.size(), 0, 128, 128)
|
||||
if targets.size() < target_max and targeting_raycast.is_colliding() and !targets.has(targeting_raycast.get_collider()):
|
||||
targets.append(targeting_raycast.get_collider())
|
||||
|
||||
|
||||
func release_trigger() -> void:
|
||||
super.release_trigger()
|
||||
if targets.size() > 0 and current_energy >= energy_cost and time_since_firing >= time_between_shots:
|
||||
#TODO: make it "rockets fired" not "targets"
|
||||
current_energy -= targets.size()
|
||||
energy_spent.emit(targets.size(), stats.energy_type)
|
||||
time_since_firing -= time_between_shots
|
||||
shoot()
|
||||
|
||||
|
||||
func shoot() -> void:
|
||||
animator.play("shoot")
|
||||
recharging = false
|
||||
recharge_speed = 0.0
|
||||
for target: EnemyController in targets:
|
||||
networked_spawn_rocket.rpc(get_tree().root.get_path_to(target), multiplayer.get_unique_id())
|
||||
targets.clear()
|
||||
targeting_ui_rect.set_visible(false)
|
||||
for icon: Sprite3D in target_icons:
|
||||
icon.set_visible(false)
|
||||
|
||||
|
||||
@rpc("reliable", "call_local")
|
||||
func networked_spawn_rocket(target_node_path: String, peer_id: int) -> void:
|
||||
var target: EnemyController = get_tree().root.get_node(target_node_path)
|
||||
var projectile: RocketProjectile = projectile_scene.instantiate() as RocketProjectile
|
||||
projectile.position = global_position
|
||||
var effect: Effect = Effect.new()
|
||||
effect.damage = damage
|
||||
projectile.effect = effect
|
||||
projectile.target = target
|
||||
projectile.owner_id = peer_id
|
||||
projectile.name = str(peer_id) + str(projectile_id)
|
||||
get_tree().root.add_child(projectile)
|
||||
projectile.apply_central_impulse(Vector3.UP * 3.0)
|
||||
projectile_id += 1
|
||||
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
pass
|
1
Weapons/RocketLauncher/weapon_rocket_launcher.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cuxi02s34ohs
|
57
Weapons/RocketLauncher/weapon_rocket_launcher.tscn
Normal file
@ -0,0 +1,57 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://bdp7icdejayvr"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_gxaua"]
|
||||
[ext_resource type="Script" uid="uid://cuxi02s34ohs" path="res://Weapons/RocketLauncher/weapon_rocket_launcher.gd" id="2_8x1tf"]
|
||||
[ext_resource type="PackedScene" uid="uid://p2vwo8ivben6" path="res://Projectiles/Rocket/rocket_projectile.tscn" id="2_lfuvh"]
|
||||
[ext_resource type="PackedScene" uid="uid://csufsbi64asau" path="res://Weapons/RocketLauncher/target_icon.tscn" id="3_2x5va"]
|
||||
[ext_resource type="Resource" uid="uid://d2yo07m2mp2mp" path="res://Weapons/RocketLauncher/weapon_stats.tres" id="3_i1hxj"]
|
||||
[ext_resource type="Texture2D" uid="uid://by1y15lm0bppe" path="res://Weapons/RocketLauncher/rocket_launcher.png" id="4_iygkf"]
|
||||
[ext_resource type="Texture2D" uid="uid://cc2umukpibmx1" path="res://Weapons/RocketLauncher/target_list.png" id="6_jlv88"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="8_genbv"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_f4p4w"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("4_iygkf")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ewxon"]
|
||||
atlas = ExtResource("6_jlv88")
|
||||
region = Rect2(0, 0, 128, 128)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_5w2i3"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("8_genbv")
|
||||
|
||||
[node name="RocketLauncher" node_paths=PackedStringArray("targeting_raycast", "targeting_ui_rect") instance=ExtResource("1_gxaua")]
|
||||
script = ExtResource("2_8x1tf")
|
||||
target_icon_scene = ExtResource("3_2x5va")
|
||||
targeting_raycast = NodePath("RayCast3D")
|
||||
targeting_ui_rect = NodePath("TextureRect")
|
||||
projectile_scene = ExtResource("2_lfuvh")
|
||||
stats = ExtResource("3_i1hxj")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_f4p4w")
|
||||
|
||||
[node name="RayCast3D" type="RayCast3D" parent="." index="2"]
|
||||
target_position = Vector3(0, 0, -100)
|
||||
collision_mask = 4
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="." index="3"]
|
||||
visible = false
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = -20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = SubResource("AtlasTexture_ewxon")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="5"]
|
||||
stream = SubResource("AudioStreamRandomizer_5w2i3")
|
31
Weapons/RocketLauncher/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://d2yo07m2mp2mp"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_5gy7w"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_ow0r7"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_4fjm2"]
|
||||
script = ExtResource("1_5gy7w")
|
||||
key = "Fire Delay"
|
||||
value = 2.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_uwj4j"]
|
||||
script = ExtResource("1_5gy7w")
|
||||
key = "Target Limit"
|
||||
value = 3.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_6qv5v"]
|
||||
script = ExtResource("1_5gy7w")
|
||||
key = "Damage"
|
||||
value = 8.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ymyed"]
|
||||
script = ExtResource("1_5gy7w")
|
||||
key = "Energy"
|
||||
value = 12.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_ow0r7")
|
||||
target_type = 0
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_5gy7w")]([SubResource("Resource_4fjm2"), SubResource("Resource_uwj4j"), SubResource("Resource_6qv5v"), SubResource("Resource_ymyed")])
|
||||
text = "Every /Fire Delay\\s, hold to target up to /Target Limit\\ enemies and release to fire homing rockets that deal /Damage\\ damage"
|
BIN
Weapons/Sniper/g_sniper.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
34
Weapons/Sniper/g_sniper.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cv2eycs1j0ho7"
|
||||
path="res://.godot/imported/g_sniper.png-2b3a8ea861323cdaab1d9d72be3197bc.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Sniper/g_sniper.png"
|
||||
dest_files=["res://.godot/imported/g_sniper.png-2b3a8ea861323cdaab1d9d72be3197bc.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=true
|
||||
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=0
|
BIN
Weapons/Sniper/scopetest.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
34
Weapons/Sniper/scopetest.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bepgxu7wtcl1i"
|
||||
path="res://.godot/imported/scopetest.png-59758f0880f30a35ecf65fe229e87dae.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Weapons/Sniper/scopetest.png"
|
||||
dest_files=["res://.godot/imported/scopetest.png-59758f0880f30a35ecf65fe229e87dae.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
|
14
Weapons/Sniper/weapon_sniper.gd
Normal file
@ -0,0 +1,14 @@
|
||||
class_name SniperWeapon extends HitscanWeapon
|
||||
|
||||
@export var scope_mask: CanvasLayer
|
||||
|
||||
|
||||
func hold_second_trigger() -> void:
|
||||
super.hold_second_trigger()
|
||||
scope_mask.set_visible(true)
|
||||
hero.set_zoom_factor(3.0)
|
||||
|
||||
|
||||
func release_second_trigger() -> void:
|
||||
super.release_second_trigger()
|
||||
scope_mask.set_visible(false)
|
1
Weapons/Sniper/weapon_sniper.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://q3tg4ygw1ro7
|
40
Weapons/Sniper/weapon_sniper.tscn
Normal file
@ -0,0 +1,40 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bd65e03fscyxr"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_6ph0d"]
|
||||
[ext_resource type="Script" uid="uid://q3tg4ygw1ro7" path="res://Weapons/Sniper/weapon_sniper.gd" id="2_r0w4v"]
|
||||
[ext_resource type="Texture2D" uid="uid://bepgxu7wtcl1i" path="res://Weapons/Sniper/scopetest.png" id="3_fhx8q"]
|
||||
[ext_resource type="Resource" uid="uid://3y7n1vdvf822" path="res://Weapons/Sniper/weapon_stats.tres" id="3_mmfq3"]
|
||||
[ext_resource type="Texture2D" uid="uid://cv2eycs1j0ho7" path="res://Weapons/Sniper/g_sniper.png" id="4_ub37g"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_pd8iu"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_cussn"]
|
||||
resource_local_to_scene = true
|
||||
atlas = ExtResource("4_ub37g")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_x11yr"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("6_pd8iu")
|
||||
|
||||
[node name="HitscanWeapon" node_paths=PackedStringArray("scope_mask") instance=ExtResource("1_6ph0d")]
|
||||
script = ExtResource("2_r0w4v")
|
||||
scope_mask = NodePath("CanvasLayer")
|
||||
stats = ExtResource("3_mmfq3")
|
||||
|
||||
[node name="Sprite3D" parent="." index="0"]
|
||||
texture = SubResource("AtlasTexture_cussn")
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="." index="4"]
|
||||
visible = false
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="CanvasLayer" index="0"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("3_fhx8q")
|
||||
|
||||
[node name="AudioStreamPlayer3D" parent="." index="6"]
|
||||
stream = SubResource("AudioStreamRandomizer_x11yr")
|
31
Weapons/Sniper/weapon_stats.tres
Normal file
@ -0,0 +1,31 @@
|
||||
[gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://3y7n1vdvf822"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_aub52"]
|
||||
[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_qyvv8"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_58kde"]
|
||||
script = ExtResource("1_aub52")
|
||||
key = "Fire Delay"
|
||||
value = 0.9
|
||||
|
||||
[sub_resource type="Resource" id="Resource_jl4jv"]
|
||||
script = ExtResource("1_aub52")
|
||||
key = "Damage"
|
||||
value = 30.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_28kyj"]
|
||||
script = ExtResource("1_aub52")
|
||||
key = "Range"
|
||||
value = 100.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_7pvmq"]
|
||||
script = ExtResource("1_aub52")
|
||||
key = "Energy"
|
||||
value = 10.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_qyvv8")
|
||||
target_type = 0
|
||||
energy_type = 1
|
||||
attributes = Array[ExtResource("1_aub52")]([SubResource("Resource_58kde"), SubResource("Resource_jl4jv"), SubResource("Resource_28kyj"), SubResource("Resource_7pvmq")])
|
||||
text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m"
|