Added per enemy taunts and other tweaks

This commit is contained in:
derek
2024-11-07 15:03:19 -06:00
parent ef1ab5dccb
commit af72a0678a
13 changed files with 66 additions and 57 deletions

View File

@@ -8,7 +8,7 @@ font = ExtResource("1_7a4sr")
font_size = 500 font_size = 500
outline_color = Color(1, 1, 1, 0.498039) outline_color = Color(1, 1, 1, 0.498039)
[node name="PickupAnnounce" type="Label"] [node name="DeadAnnounce" type="Label"]
visible = false visible = false
offset_right = 3440.0 offset_right = 3440.0
offset_bottom = 1440.0 offset_bottom = 1440.0

View File

@@ -1072,6 +1072,7 @@ fire_mode = 1
recoil_amount = Vector3(0.25, 0.1, 0.1) recoil_amount = Vector3(0.25, 0.1, 0.1)
max_ammo = 6 max_ammo = 6
bullet_damage = 5 bullet_damage = 5
kick_amount = 2
bullet_force_mod = 10 bullet_force_mod = 10
bullet_speed = 1500 bullet_speed = 1500
bullet_drop = 0.0 bullet_drop = 0.0

View File

@@ -744,6 +744,7 @@ money = ExtResource("6_ihv2y")
health_pickup = ExtResource("7_i7u4i") health_pickup = ExtResource("7_i7u4i")
die_particles = ExtResource("7_w22oa") die_particles = ExtResource("7_w22oa")
damage_number = ExtResource("9_rmegy") damage_number = ExtResource("9_rmegy")
taunts = Array[String](["did i do that?", "you've been on my shitlist", "you like that?? you want more??", "you should try dodging", "schwing!", "hows your gut now you big cup of dumdum juice?!"])
[node name="TurretLook" type="RayCast3D" parent="."] [node name="TurretLook" type="RayCast3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00161432, 1.62046, 0.00134204) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00161432, 1.62046, 0.00134204)

View File

@@ -67,6 +67,7 @@ script = ExtResource("1_fcu8x")
enemy_type = 1 enemy_type = 1
damage = 3.0 damage = 3.0
pushback = 15.0 pushback = 15.0
taunts = ["anybody got a toothpick?", "now that's what i call stake night", "now i gotta clean all this off"]
[node name="Spikes1" type="MeshInstance3D" parent="."] [node name="Spikes1" type="MeshInstance3D" parent="."]
mesh = SubResource("ArrayMesh_atemo") mesh = SubResource("ArrayMesh_atemo")

View File

@@ -34,37 +34,39 @@ func _physics_process(delta):
if distance_from_player.length() > 1.5: if distance_from_player.length() > 1.5:
visible = true visible = true
if ray.is_colliding() and !ray.get_collider().is_in_group("player"): if ray.is_colliding():
var body = ray.get_collider()
if !body.is_in_group("player"):
mesh.visible = false mesh.visible = false
ray.enabled = false ray.enabled = false
if ray.get_collider().is_in_group("enemy_target"): if body.is_in_group("enemy_target"):
hit_indicator.play() hit_indicator.play()
enemy_particles.emitting = true enemy_particles.emitting = true
SignalBus.emit_signal("enemy_hit") SignalBus.emit_signal("enemy_hit")
ray.get_collider().hit(bullet_damage) ray.get_collider().hit(bullet_damage)
#bullethole effect #bullethole effect
ray.get_collider().add_child(instance_bullethole) body.add_child(instance_bullethole)
instance_bullethole.global_transform.origin = ray.get_collision_point() instance_bullethole.global_transform.origin = ray.get_collision_point()
if (abs(ray.get_collision_normal().y) > 0.99): if (abs(ray.get_collision_normal().y) > 0.99):
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3(0,0,1)) instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal(), Vector3(0,0,1))
else: else:
instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal()) instance_bullethole.look_at(ray.get_collision_point() + ray.get_collision_normal())
if ray.get_collider().is_in_group("switch"): if body.is_in_group("switch"):
ray.get_collider().hit() body.hit()
#move rigidbodies #move rigidbodies
if ray.get_collider().is_in_group("scene_rigidbody"): if body.is_in_group("scene_rigidbody"):
ray.get_collider().linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod) body.linear_velocity += transform.basis * Vector3(0,0,-1 * bullet_force_mod)
if ray.get_collider().is_in_group("breakable"): if body.is_in_group("breakable"):
var current_velocity = transform.basis * Vector3(0,0,-1 * bullet_force_mod) var current_velocity = transform.basis * Vector3(0,0,-1 * bullet_force_mod)
ray.get_collider().breaking(current_velocity) ray.get_collider().breaking(current_velocity)
queue_free() queue_free()
func _on_body_entered(body: Node) -> void: func _on_body_entered(body: Node) -> void:

View File

@@ -47,7 +47,7 @@ func _ready():
#highlight target #highlight target
if target != null: if target != null:
var taunt_spawn = ENEMY_TAUNT.instantiate() var taunt_spawn = ENEMY_TAUNT.instantiate()
taunt_spawn.text = taunt_spawn.taunts.pick_random() taunt_spawn.text = target.taunts.pick_random()
target.add_child(taunt_spawn) target.add_child(taunt_spawn)
taunt_spawn.global_transform.origin = target.global_position + Vector3(0,2,0) taunt_spawn.global_transform.origin = target.global_position + Vector3(0,2,0)
taunt_node = taunt_spawn taunt_node = taunt_spawn

View File

@@ -5,15 +5,6 @@ var start_position
const SPEED = 3 const SPEED = 3
const SCALE_SPEED = 80 const SCALE_SPEED = 80
var taunts = ["hows your gut now you big cup of dumdum juice?",
"did i do that?",
"schwing!",
"hee hee",
"stop trying",
"you're on my shitlist",
"you like that?? you want more???",
"try dodging it next time",
"yowza!"]
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():

View File

@@ -7,6 +7,7 @@ extends Node3D
@export var hitscan_enabled : bool = false @export var hitscan_enabled : bool = false
@export var fov_zoom_amt = .98 @export var fov_zoom_amt = .98
@export var recoil_amount : Vector3 = Vector3(.2,.05,.05) @export var recoil_amount : Vector3 = Vector3(.2,.05,.05)
@export var kick_amount : float = .1
@export var max_ammo = 15 @export var max_ammo = 15
@export var start_mags = 3 @export var start_mags = 3
@export var bullet_damage = 1 @export var bullet_damage = 1
@@ -91,13 +92,12 @@ func shoot(delta):
audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt) audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt)
audio_fire.play() audio_fire.play()
anim_player.play("shoot") anim_player.play("shoot")
bullet_fire() bullet_fire()
hitscan_fire() hitscan_fire()
spawn_casing() spawn_casing()
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10) player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
player.recoil.add_gun_recoil(recoil_amount.x) player.recoil.add_gun_recoil(recoil_amount.x)
#player.velocity += player.bullet_ray.global_basis * Vector3(0,0, kick_amount)
if fire_mode != 0: if fire_mode != 0:
cycle_count -= 1 cycle_count -= 1

View File

@@ -369,6 +369,10 @@ func _physics_process(delta):
interact_ray.get_collider().linear_velocity += interact_ray.global_transform.basis * Vector3(0,0, -KICK_AMOUNT) interact_ray.get_collider().linear_velocity += interact_ray.global_transform.basis * Vector3(0,0, -KICK_AMOUNT)
if held_item != null: if held_item != null:
release_moveable() release_moveable()
elif held_item != null:
kick_audio.play()
held_item.linear_velocity += interact_ray.global_transform.basis * Vector3(0,0, -KICK_AMOUNT)
release_moveable()
if level_control.health <= 0: if level_control.health <= 0:
level_control.die() level_control.die()

View File

@@ -134,7 +134,7 @@ func shoot(delta):
audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt) audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt)
audio_fire.play() audio_fire.play()
anim_player.play("shoot") #actual bullet spawn triggered by animation anim_player.play("shoot") #actual bullet spawn triggered by animation
player.velocity += player.bullet_ray.global_basis * Vector3(0,0, kick_amount)
if fire_mode != 0: if fire_mode != 0:
cycle_count -= 1 cycle_count -= 1

View File

@@ -1,6 +1,16 @@
extends Node extends Node
@export_group("Main")
@export var room_lockdown : bool = false @export var room_lockdown : bool = false
@export_group("Key")
@export var key_drop : bool = false
@export_enum("Silver", "Gold", "Special") var key_type: int
@export var special_key_name : String
@export_group("Item Drops")
@export var ammo_drop_enabled = true
@export var stamina_drop_enabled = true
@export var health_drop_enabled = true
@export var money_drop_enabled = true
var enemies = [] var enemies = []
var doors = [] var doors = []
@@ -21,7 +31,6 @@ func _ready():
i.room_entered.connect(room_entered) i.room_entered.connect(room_entered)
i.room_exited.connect(room_exited) i.room_exited.connect(room_exited)
print("Doors: " + str(doors))
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta): func _process(delta):
@@ -54,7 +63,7 @@ func _process(delta):
# loot on last enemy # loot on last enemy
if enemies.size() == 1: if enemies.size() == 1:
for i in enemies: for i in enemies:
i.loot_amount = 30 #later get this number from level manager i.loot_amount = 20 #assign loot to the last enemy drop from this section
i.last_enemy = true i.last_enemy = true
func last_enemy_dead(): func last_enemy_dead():

View File

@@ -26,6 +26,8 @@ const MAX_AV = 10
@export var health_pickup : Resource @export var health_pickup : Resource
@export var die_particles : Resource @export var die_particles : Resource
@export var damage_number : Resource @export var damage_number : Resource
@export_group("Taunts")
@export var taunts : Array[String] = []
@onready var level_control = get_tree().current_scene @onready var level_control = get_tree().current_scene
@onready var nav_agent = $NavigationAgent3D @onready var nav_agent = $NavigationAgent3D
@@ -108,7 +110,7 @@ func _process(delta):
move_and_slide() move_and_slide()
if dying: if dying:
turret.global_rotation.y += 100 * delta turret.global_rotation.y += 200 * delta
#fire(barrel_1) #fire(barrel_1)
#fire(barrel_2) #fire(barrel_2)
@@ -117,20 +119,16 @@ func _process(delta):
func _on_area_3d_body_part_hit(dam,bullet_damage): func _on_area_3d_body_part_hit(dam,bullet_damage):
health -= dam * bullet_damage if !dying:
print("health: " + str(health)) health -= dam * bullet_damage
if health <= 0: if health <= 0:
dying_throws() dying_throws()
func _on_prefire_timer_timeout(): func _on_prefire_timer_timeout():
#barrel 1 fire
fire(barrel_1) fire(barrel_1)
#barrel 2 fire
fire(barrel_2) fire(barrel_2)
turret_material.emission_enabled = false turret_material.emission_enabled = false
prefire_timer.stop() prefire_timer.stop()
postfire_timer.start() postfire_timer.start()
@@ -205,7 +203,7 @@ func drop_loot(number_of_drops):
var av_z = randf_range(-MAX_AV,MAX_AV) var av_z = randf_range(-MAX_AV,MAX_AV)
# Random Item Drop # Random Item Drop
rand_item.position = self.global_position rand_item.position = self.global_position + Vector3(0,2,0) #added height to spawn location since origin is on the ground
rand_item.transform.basis = self.global_transform.basis rand_item.transform.basis = self.global_transform.basis
rand_item.linear_velocity += self.global_transform.basis * Vector3(lv_x,lv_y,lv_z) rand_item.linear_velocity += self.global_transform.basis * Vector3(lv_x,lv_y,lv_z)
rand_item.angular_velocity += self.global_transform.basis * Vector3(av_x,av_y,av_z) rand_item.angular_velocity += self.global_transform.basis * Vector3(av_x,av_y,av_z)

View File

@@ -3,10 +3,12 @@ extends Node3D
@export_enum("Enemy", "Trap") var enemy_type: int @export_enum("Enemy", "Trap") var enemy_type: int
@export var damage : float = 1 @export var damage : float = 1
@export var pushback : float = 5 @export var pushback : float = 5
@onready var outline_meshes = [$Spikes1/MeshInstance3D] @export var taunts : Array[String] = []
@onready var outline_meshes = [$Spikes1/MeshInstance3D]
@onready var ray_cast: RayCast3D = $RayCast3D @onready var ray_cast: RayCast3D = $RayCast3D
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
pass # Replace with function body. pass # Replace with function body.