godot-shooter / commit
Increased all health values ten times (from 5/10 -> 50/100), and added an SMG/gattling gun as a possible weapon.
Bullet.gd | 3 ++- Enemy.gd | 2 +- Player.gd | 12 +++++++----- Weapon.gd | 2 ++ Weapons.gd | 25 +++++++++++++++++++++---- World.gd | 25 +++++++++++++------------ World.tscn | 1 - 7 files changed, 46 insertions(+), 24 deletions(-) diff --git a/Bullet.gd b/Bullet.gd index 4b70d42..2701673 100644 --- a/Bullet.gd +++ b/Bullet.gd @@ -5,6 +5,7 @@ const Utils = preload("res://Utils.gd") const SmallExplosion = preload("res://SmallExplosion.tscn") export var lifetime_seconds = 1.5 export var speed = 300 +export var damage_amount = 1 func _ready() -> void: $Timer.wait_time = lifetime_seconds @@ -21,7 +22,7 @@ func on_bullet_body_entered(body): var players = tree.get_nodes_in_group("player") var player = players[0] if body.has_method("hurt") && body != player: - body.hurt() + body.hurt(damage_amount) var se = SmallExplosion.instance() get_parent().add_child(se) se.transform = transform diff --git a/Enemy.gd b/Enemy.gd index 1333e94..709c14b 100644 --- a/Enemy.gd +++ b/Enemy.gd @@ -10,7 +10,7 @@ const Smoke = preload("res://Smoke.tscn") export var move_speed = 40 export var turn_rate = 0.01 export var health = -1 -export var max_health = 10 +export var max_health = 100 export var is_targeted = false export var is_invincible = false signal enemy_killed(position) diff --git a/Player.gd b/Player.gd index 1dc5b4e..65da854 100644 --- a/Player.gd +++ b/Player.gd @@ -4,8 +4,8 @@ class_name Player const Weapons = preload("res://Weapons.gd") export var move_speed = 100 -export var health = 10 -export var max_health = 10 +export var health = 50 +export var max_health = 100 export var is_invincible = false export var turn_rate = 0.03 export var shield_active = true @@ -28,6 +28,7 @@ var is_destination_set = false func _ready() -> void: velocity= Vector2.UP * move_speed weapon = Weapons.create_basic_gun() +# weapon = Weapons.create_gattling_gun() if shield_active: enable_shield() else: @@ -133,12 +134,13 @@ func shoot_at(pos: Vector2): return can_fire = false if weapon.ammo != INF: - weapon.ammo -= 1 - if weapon.ammo == 0: + if weapon.ammo <= 0: weapon = default_weapon - $ShotTimer.wait_time = weapon.particle_lifetime_secs + weapon.ammo -= 1 + $ShotTimer.wait_time = weapon.cooldown_seconds $ShotTimer.start() var particle = weapon.particle.instance() + particle.damage_amount = weapon.damage_amount owner.add_child(particle) particle.global_position = global_position particle.global_rotation = global_position.angle_to_point(pos) + PI / 2.0 diff --git a/Weapon.gd b/Weapon.gd index 78680a0..359b386 100644 --- a/Weapon.gd +++ b/Weapon.gd @@ -5,5 +5,7 @@ var shooting_range = 400 var particle: PackedScene var particle_speed = 100 var particle_lifetime_secs = 5 +var damage_amount = 1 var ammo = INF var name = "Laser" +var reload_size = 1 diff --git a/Weapons.gd b/Weapons.gd index f56be74..d7b4895 100644 --- a/Weapons.gd +++ b/Weapons.gd @@ -1,23 +1,40 @@ # Note: `tool` is optional but without it there are no error reporting in the editor tool -static func create_basic_gun(period_secs: float = 1) -> Weapon: +static func create_basic_gun() -> Weapon: var weapon = Weapon.new() weapon.particle = preload("res://Bullet.tscn") weapon.shooting_range = 500 - weapon.particle_lifetime_secs = period_secs + weapon.particle_lifetime_secs = 1 weapon.particle_speed = 300 weapon.cooldown_seconds = 1 + weapon.damage_amount = 10 weapon.ammo = INF + weapon.reload_size = 1 return weapon -static func create_rocket_gun(period_secs: float = 1) -> Weapon: +static func create_gattling_gun() -> Weapon: + var weapon = Weapon.new() + weapon.particle = preload("res://Bullet.tscn") + weapon.shooting_range = 500 + weapon.particle_lifetime_secs = 1 + weapon.particle_speed = 300 + weapon.cooldown_seconds = .1 + weapon.ammo = 50 + weapon.name = "SMG" + weapon.damage_amount = 1 + weapon.reload_size = 50 + return weapon + +static func create_rocket_gun() -> Weapon: var weapon = Weapon.new() weapon.particle = preload("res://Rocket.tscn") weapon.shooting_range = 300 - weapon.particle_lifetime_secs = period_secs + weapon.particle_lifetime_secs = 1 weapon.particle_speed = 100 weapon.cooldown_seconds = 1 weapon.ammo = 10 weapon.name = "Rocket" + weapon.damage_amount = 20 + weapon.reload_size = 10 return weapon diff --git a/World.gd b/World.gd index 96a0561..9febfbf 100644 --- a/World.gd +++ b/World.gd @@ -26,7 +26,7 @@ func enemy_killed(_position: Vector2): $UI/HUD.score += 1 $UI/HUD.show_message("Enemy killed!", 1) func health_consumed(): - $Player.heal() + $Player.heal(10) func shield_consumed(): Utils.log("consuming a shield and sending a message") $Player.enable_shield() @@ -36,9 +36,12 @@ func gold_consumed(): func weapon_consumed(): var is_current_weapon_base = $Player.weapon.ammo == INF if is_current_weapon_base: - $Player.weapon = Weapons.create_rocket_gun() + if randi() % 2 == 0: + $Player.weapon = Weapons.create_gattling_gun() + else: + $Player.weapon = Weapons.create_rocket_gun() else: - $Player.weapon.ammo += 10 + $Player.weapon.ammo += $Player.weapon.reload_size func create_enemy() -> Enemy: var enemy = Enemy.instance() @@ -52,15 +55,6 @@ func create_health() -> PowerUp: health.label = "+HP" health.color = Color.green return health - -func create_shield() -> PowerUp: - var shield = PowerUp.instance() - shield.position = get_new_item_pos(randf() + .5) - shield.connect("consumed", self, "shield_consumed") - shield.label = "Shield" - shield.color = Color.blue - return shield - func create_gold(pos: Vector2 = get_new_environment_position(1 + randf())) -> PowerUp: var gold = PowerUp.instance() gold.position = pos @@ -75,6 +69,13 @@ func create_weapon() -> PowerUp: weapon.label = "WPN" weapon.color = Color.red return weapon +func create_shield() -> PowerUp: + var shield = PowerUp.instance() + shield.position = get_new_item_pos(randf() + .5) + shield.connect("consumed", self, "shield_consumed") + shield.label = "Shield" + shield.color = Color.blue + return shield func _ready() -> void: $UI/HUD.show_message("Tap/drag to move") diff --git a/World.tscn b/World.tscn index c13ed80..aafb9df 100644 --- a/World.tscn +++ b/World.tscn @@ -55,7 +55,6 @@ __meta__ = { [node name="StarField2" parent="Background/ParallaxBackground/Background2" instance=ExtResource( 5 )] [node name="Player" parent="." instance=ExtResource( 2 )] -health = 5 [node name="Environment" type="Node2D" parent="."]