ammo consistent between states, enemy will reload automatically if low but not depleted

This commit is contained in:
derek
2025-04-25 14:25:16 -05:00
parent 56ecad377e
commit f0ec7bc953
5 changed files with 38 additions and 11 deletions

View File

@@ -7,17 +7,16 @@ var heartbeat : float = 3.0
@export var between_shot_time : Vector2 = Vector2(.5,2.0)
@export var reload_time : float = 7.0
@export var alarm_sound : AudioStreamPlayer3D
@export var time_before_losing_visual : float = 2.0
@export var time_before_losing_visual : float = 1.0
var ammo
var initial_timer
var shot_timer = 0.0
var visibility_timer
func Enter():
super()
visibility_timer = time_before_losing_visual
update_waypoint()
ammo = enemy.max_ammo
enemy.turret_material.emission_enabled = true
initial_timer = initial_wait_time
alarm_sound.play()
@@ -25,12 +24,21 @@ func Enter():
func update_waypoint():
enemy.nav_agent.set_target_position(enemy.character_follow.global_position)
func current_target():
if enemy.is_player_visible():
return enemy.character_follow.global_position
else:
return enemy.point_of_interest
func Update(delta):
if !enemy.is_player_visible():
if visibility_timer > 0:
visibility_timer -= delta
else:
Transitioned.emit(self,"search")
if enemy.ammo <= 4:
Transitioned.emit(self,"reload")
else:
Transitioned.emit(self,"search")
else:
visibility_timer = time_before_losing_visual
@@ -43,7 +51,7 @@ func Update(delta):
initial_timer -= delta
else:
#fire if player in view
if ammo > 0:
if enemy.ammo > 0:
if shot_timer > 0:
shot_timer -= delta
else:
@@ -78,7 +86,7 @@ func attack():
enemy.turret_material.emission_enabled = false
func fire(barrel):
ammo -= 1
enemy.ammo -= 1
var instance_bullet = enemy.bullet.instantiate()
instance_bullet.position = barrel.global_position
instance_bullet.transform.basis = barrel.global_transform.basis