Reworked weapons and projectiles
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
@abstract
|
||||
class_name AbstractDamage
|
||||
extends Resource
|
||||
|
||||
|
||||
@export_range(1, 250) var value: int = 1
|
||||
|
||||
|
||||
@abstract
|
||||
func shield_damage_multiplier() -> float
|
||||
|
||||
|
||||
@abstract
|
||||
func armor_damage_multiplier() -> float
|
||||
|
||||
|
||||
@abstract
|
||||
func hull_damage_multiplier() -> float
|
||||
@@ -0,0 +1 @@
|
||||
uid://bjurq6dl6trdh
|
||||
@@ -0,0 +1,14 @@
|
||||
class_name EnergyDamage
|
||||
extends AbstractDamage
|
||||
|
||||
|
||||
func shield_damage_multiplier() -> float:
|
||||
return 1.5
|
||||
|
||||
|
||||
func armor_damage_multiplier() -> float:
|
||||
return 0.5
|
||||
|
||||
|
||||
func hull_damage_multiplier() -> float:
|
||||
return 1.0
|
||||
@@ -0,0 +1 @@
|
||||
uid://c27v705giygv4
|
||||
@@ -0,0 +1,14 @@
|
||||
class_name ExplosionDamage
|
||||
extends AbstractDamage
|
||||
|
||||
|
||||
func shield_damage_multiplier() -> float:
|
||||
return 0.75
|
||||
|
||||
|
||||
func armor_damage_multiplier() -> float:
|
||||
return 0.75
|
||||
|
||||
|
||||
func hull_damage_multiplier() -> float:
|
||||
return 1.25
|
||||
@@ -0,0 +1 @@
|
||||
uid://dftb7hg5f06b5
|
||||
@@ -0,0 +1,14 @@
|
||||
class_name KineticDamage
|
||||
extends AbstractDamage
|
||||
|
||||
|
||||
func shield_damage_multiplier() -> float:
|
||||
return 0.5
|
||||
|
||||
|
||||
func armor_damage_multiplier() -> float:
|
||||
return 1.5
|
||||
|
||||
|
||||
func hull_damage_multiplier() -> float:
|
||||
return 1.0
|
||||
@@ -0,0 +1 @@
|
||||
uid://bhqvk5cnjg5mv
|
||||
@@ -0,0 +1,17 @@
|
||||
class_name GameData
|
||||
extends Resource
|
||||
|
||||
|
||||
|
||||
|
||||
@export var game_seed: String
|
||||
@export var current_area_index: int
|
||||
@export var current_stage_index: int
|
||||
@export var current_sector_index: int
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
game_seed = ""
|
||||
current_area_index = 0
|
||||
current_stage_index = 0
|
||||
current_sector_index = 0
|
||||
@@ -0,0 +1 @@
|
||||
uid://cmqv00wdh1jk5
|
||||
@@ -0,0 +1,14 @@
|
||||
class_name EnemyData
|
||||
extends Resource
|
||||
|
||||
|
||||
@export var seed_value : int = 0
|
||||
|
||||
@export var spawn_point : Vector2
|
||||
@export var spawn_time : float
|
||||
|
||||
@export var enemy_scene: String
|
||||
|
||||
@export var weapon: WeaponData
|
||||
|
||||
@export var weapon_count: int
|
||||
@@ -0,0 +1 @@
|
||||
uid://dsg7ml2ebhs3w
|
||||
@@ -0,0 +1,16 @@
|
||||
class_name PlayerData
|
||||
extends Resource
|
||||
|
||||
|
||||
@export var weapons: Array[WeaponData]
|
||||
|
||||
@export var hull: int
|
||||
|
||||
|
||||
var is_new_game: bool = false
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
weapons.clear()
|
||||
hull = 0
|
||||
is_new_game = true
|
||||
@@ -0,0 +1 @@
|
||||
uid://bc5bi1nr7845m
|
||||
@@ -0,0 +1,18 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://dxap3sahurth4"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://d3co2xx0th1d0" path="res://game/entities/weapons/cannon/enemy_cannon_weapon.tscn" id="1_2gkq7"]
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_c34y3"]
|
||||
[ext_resource type="PackedScene" uid="uid://mpr5kl87nx3f" path="res://game/entities/weapons/cannon/player_cannon_weapon.tscn" id="2_qvf4o"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_c34y3")
|
||||
id = "cannon"
|
||||
name = "Cannon"
|
||||
group = "explosion"
|
||||
description = "High damage (explosion)
|
||||
Low firerate
|
||||
Moderate velocity
|
||||
High explosion radius"
|
||||
enemy_scene = ExtResource("1_2gkq7")
|
||||
player_scene = ExtResource("2_qvf4o")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,17 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://djelo5gu3ybuf"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_bt4k8"]
|
||||
[ext_resource type="PackedScene" uid="uid://b0ajhllwm5qux" path="res://game/entities/weapons/gatling/enemy_gatling_weapon.tscn" id="1_punrp"]
|
||||
[ext_resource type="PackedScene" uid="uid://ca2cjffcrfxkq" path="res://game/entities/weapons/gatling/player_gatling_weapon.tscn" id="2_84glq"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_bt4k8")
|
||||
id = "gatling"
|
||||
name = "Gatling"
|
||||
group = "kinetic"
|
||||
description = "Low damage (kinetic)
|
||||
High firerate
|
||||
Moderate velocity"
|
||||
enemy_scene = ExtResource("1_punrp")
|
||||
player_scene = ExtResource("2_84glq")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,17 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://y7ccba1uqf2d"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_ipxhy"]
|
||||
[ext_resource type="PackedScene" uid="uid://mjt8xj8k28vi" path="res://game/entities/weapons/laser/enemy_laser_weapon.tscn" id="1_mdqmb"]
|
||||
[ext_resource type="PackedScene" uid="uid://cargptjtnale2" path="res://game/entities/weapons/laser/player_laser_weapon.tscn" id="2_bmgx0"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_ipxhy")
|
||||
id = "laser"
|
||||
name = "Laser"
|
||||
group = "energy"
|
||||
description = "Low damage (energetic)
|
||||
High firerate
|
||||
Low velocity"
|
||||
enemy_scene = ExtResource("1_mdqmb")
|
||||
player_scene = ExtResource("2_bmgx0")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,19 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://ddgggndifycge"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_tcis2"]
|
||||
[ext_resource type="PackedScene" uid="uid://b757rcwc231o2" path="res://game/entities/weapons/launcher/enemy_launcher_weapon.tscn" id="1_vypk3"]
|
||||
[ext_resource type="PackedScene" uid="uid://bmn3cxk1ajydl" path="res://game/entities/weapons/launcher/player_launcher_weapon.tscn" id="2_sdkfu"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_tcis2")
|
||||
id = "launcher"
|
||||
name = "Launcher"
|
||||
group = "explosion"
|
||||
description = "Moderate damage (explosion)
|
||||
Moderate firerate
|
||||
Low velocity
|
||||
Small explosion radius
|
||||
Homing"
|
||||
enemy_scene = ExtResource("1_vypk3")
|
||||
player_scene = ExtResource("2_sdkfu")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,19 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://40sshnf6g80k"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_152qt"]
|
||||
[ext_resource type="PackedScene" uid="uid://bjbfi6vvikk15" path="res://game/entities/weapons/minelayer/enemy_minelayer_weapon.tscn" id="1_bpafq"]
|
||||
[ext_resource type="PackedScene" uid="uid://dxh4m1upio4fx" path="res://game/entities/weapons/minelayer/player_minelayer_weapon.tscn" id="2_77jvm"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_152qt")
|
||||
id = "minelayer"
|
||||
name = "Minelayer"
|
||||
group = "explosion"
|
||||
description = "High damage (explosion)
|
||||
Low firerate
|
||||
Low velocity
|
||||
Medium explosion radius
|
||||
Short range"
|
||||
enemy_scene = ExtResource("1_bpafq")
|
||||
player_scene = ExtResource("2_77jvm")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,17 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://dq0pjpg3slr8s"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_3fasx"]
|
||||
[ext_resource type="PackedScene" uid="uid://dtl3d7soletdn" path="res://game/entities/weapons/plasma/enemy_plasma_weapon.tscn" id="1_h185p"]
|
||||
[ext_resource type="PackedScene" uid="uid://dd8juohu1x2xo" path="res://game/entities/weapons/plasma/player_plasma_weapon.tscn" id="2_6cfmm"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_3fasx")
|
||||
id = "plasma"
|
||||
name = "Plasma"
|
||||
group = "energy"
|
||||
description = "Moderate damage (energetic)
|
||||
Moderate firerate
|
||||
Moderate velocity"
|
||||
enemy_scene = ExtResource("1_h185p")
|
||||
player_scene = ExtResource("2_6cfmm")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,18 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://dtpk5apjti4vh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_6lcn5"]
|
||||
[ext_resource type="PackedScene" uid="uid://chgf0tdlikwlb" path="res://game/entities/weapons/railgun/enemy_railgun_weapon.tscn" id="1_srmn2"]
|
||||
[ext_resource type="PackedScene" uid="uid://b745401et1bom" path="res://game/entities/weapons/railgun/player_railgun_weapon.tscn" id="2_hqpda"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_6lcn5")
|
||||
id = "railgun"
|
||||
name = "Railgun"
|
||||
group = "kinetic"
|
||||
description = "High damage (kinetic)
|
||||
Low firerate
|
||||
High velocity
|
||||
Can pierce enemies"
|
||||
enemy_scene = ExtResource("1_srmn2")
|
||||
player_scene = ExtResource("2_hqpda")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,19 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://d1kc2gvye2f28"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://df816hasxkglk" path="res://game/entities/weapons/shrapnel/enemy_shrapnel_weapon.tscn" id="1_260ps"]
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_xds2o"]
|
||||
[ext_resource type="PackedScene" uid="uid://cvtwks2ooetxp" path="res://game/entities/weapons/shrapnel/player_shrapnel_weapon.tscn" id="2_nj3we"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_xds2o")
|
||||
id = "shrapnel"
|
||||
name = "Shrapnel"
|
||||
group = "kinetic"
|
||||
description = "High damage (kinetic)
|
||||
Moderate firerate
|
||||
Moderate velocity
|
||||
Short range
|
||||
Multiple projectiles"
|
||||
enemy_scene = ExtResource("1_260ps")
|
||||
player_scene = ExtResource("2_nj3we")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,19 @@
|
||||
[gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://c7tim0uie3m35"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://870r1efinhqd" path="res://game/data/weapons/weapon_data.gd" id="1_a16gw"]
|
||||
[ext_resource type="PackedScene" uid="uid://dqgybquvuw0v6" path="res://game/entities/weapons/tesla/enemy_tesla_weapon.tscn" id="1_iwabo"]
|
||||
[ext_resource type="PackedScene" uid="uid://u6hpohk5i3eu" path="res://game/entities/weapons/tesla/player_tesla_weapon.tscn" id="2_kqe35"]
|
||||
|
||||
[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"
|
||||
enemy_scene = ExtResource("1_iwabo")
|
||||
player_scene = ExtResource("2_kqe35")
|
||||
metadata/_custom_type_script = "uid://870r1efinhqd"
|
||||
@@ -0,0 +1,12 @@
|
||||
class_name WeaponData
|
||||
extends Resource
|
||||
|
||||
|
||||
@export var id: String
|
||||
@export var name: String
|
||||
@export var group: String
|
||||
|
||||
@export_multiline var description: String
|
||||
|
||||
@export var enemy_scene: PackedScene
|
||||
@export var player_scene: PackedScene
|
||||
@@ -0,0 +1 @@
|
||||
uid://870r1efinhqd
|
||||
@@ -0,0 +1,8 @@
|
||||
class_name AreaData
|
||||
extends Resource
|
||||
|
||||
|
||||
@export var stages : Array[StageData] = []
|
||||
@export var passages : Array[PassageData] = []
|
||||
|
||||
@export var seed_value : int = 0
|
||||
@@ -0,0 +1 @@
|
||||
uid://chsdac455jkm4
|
||||
@@ -0,0 +1,33 @@
|
||||
class_name PassageData
|
||||
extends Resource
|
||||
|
||||
|
||||
signal activity_changed(is_active: bool)
|
||||
|
||||
|
||||
enum PassageType {
|
||||
Minus45Grad,
|
||||
Minus26Grad,
|
||||
ZeroGrad,
|
||||
Plus26Grad,
|
||||
Plus45Grad,
|
||||
}
|
||||
|
||||
|
||||
@export var previous_sector : SectorData
|
||||
@export var next_sector : SectorData
|
||||
|
||||
@export var enemies : Array[EnemyData] = []
|
||||
|
||||
@export var seed_value : int = 0
|
||||
|
||||
@export var length : float = 0
|
||||
|
||||
@export var type : PassageType = PassageType.ZeroGrad
|
||||
|
||||
|
||||
var is_active: bool = true:
|
||||
set(value):
|
||||
if is_active == value: return
|
||||
is_active = value
|
||||
activity_changed.emit(is_active)
|
||||
@@ -0,0 +1 @@
|
||||
uid://bvqvn7slf5f82
|
||||
@@ -0,0 +1,34 @@
|
||||
class_name SectorData
|
||||
extends Resource
|
||||
|
||||
|
||||
signal activity_changed(is_active: bool)
|
||||
|
||||
|
||||
enum SectorType {
|
||||
ShopSector,
|
||||
RepairSector,
|
||||
DebrisSector,
|
||||
StartSector,
|
||||
BossSector,
|
||||
}
|
||||
|
||||
|
||||
@export var previous_passages : Array[PassageData] = []
|
||||
@export var next_passages : Array[PassageData] = []
|
||||
|
||||
@export var seed_value : int = 0
|
||||
|
||||
@export var type : SectorType = SectorType.DebrisSector
|
||||
|
||||
@export var sector_to_left: SectorData = null
|
||||
@export var sector_to_right: SectorData = null
|
||||
@export var sector_above: SectorData = null
|
||||
@export var sector_below: SectorData = null
|
||||
|
||||
|
||||
var is_active: bool = true:
|
||||
set(value):
|
||||
if is_active == value: return
|
||||
is_active = value
|
||||
activity_changed.emit(is_active)
|
||||
@@ -0,0 +1 @@
|
||||
uid://ru80bu5nt6rs
|
||||
@@ -0,0 +1,7 @@
|
||||
class_name StageData
|
||||
extends Resource
|
||||
|
||||
|
||||
@export var sectors : Array[SectorData] = []
|
||||
|
||||
@export var seed_value : int = 0
|
||||
@@ -0,0 +1 @@
|
||||
uid://donl4fqb825et
|
||||
@@ -0,0 +1,9 @@
|
||||
class_name WorldData
|
||||
extends Resource
|
||||
|
||||
|
||||
@export var areas : Array[AreaData] = []
|
||||
|
||||
@export var seed_value : int = 0
|
||||
|
||||
@export var player_start_weapons: Array[WeaponData]
|
||||
@@ -0,0 +1 @@
|
||||
uid://1hanx5eudexx
|
||||
Reference in New Issue
Block a user