pickups distributed through level manager. need to fix drop amount

This commit is contained in:
derek
2024-08-05 16:50:09 -05:00
parent 3335ad0804
commit 7c5e850077
27 changed files with 151 additions and 146 deletions

View File

@@ -9,7 +9,7 @@ margin = 0.001
height = 0.248374
radius = 0.062995
[node name="enemycasing" type="RigidBody3D"]
[node name="enemycasing" type="RigidBody3D" groups=["spawned"]]
collision_layer = 2
collision_mask = 7
mass = 0.1

View File

@@ -61,7 +61,6 @@ script = ExtResource("1_sni3c")
collision_shape = NodePath("CollisionShape3D2")
despawning = true
despawn_time_s = 20
pickupType = "ammo"
[node name="Area3D" type="Area3D" parent="."]

View File

@@ -555,7 +555,7 @@ shadow_mesh = SubResource("ArrayMesh_5m3do")
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_hp35l"]
points = PackedVector3Array(0.0232605, 0.0442351, -0.010081, 0.011892, 0.0439651, -0.00243215, 0.0114977, 0.0270315, 0.0347546, 0.24038, -0.00987622, -0.0269458, 0.0505976, 0.0390113, -0.0156751, -0.0846419, 0.0442351, -0.010081, -0.0838205, 0.0439651, -0.00243215, 0.0227348, 0.0214347, 0.0399813, -0.0818819, 0.0270315, 0.0347546, 0.240018, -0.0268257, 0.0102334, -0.0763619, -0.0197363, -0.0314377, 0.230194, -0.00453337, -0.032285, 0.205485, 0.00250841, -0.0322925, 0.0500061, 0.0137895, 0.0397113, 0.20496, -0.0227292, 0.0230864, -0.0763619, -0.00627198, -0.0362969, -0.0859233, 0.0390113, -0.0156751, -0.0941047, -0.00627198, -0.0362969, -0.0951561, -0.0140759, -0.0366268, -0.0820462, 0.0214347, 0.0399813, 0.229701, -0.0273417, 0.0177622, -0.0763619, -0.0368683, 0.0134279, -0.0763619, -0.0366699, 0.00574908, -0.0763619, -0.0140759, -0.0366268, -0.0952876, -0.0197363, -0.0314377, -0.0830647, 0.0137895, 0.0397113, -0.0763619, -0.0314937, 0.019097, -0.0933819, -0.0366699, 0.00574908, -0.0925276, -0.0368683, 0.0134279, -0.0912133, -0.0314937, 0.019097)
[node name="Boombox_broken" type="Node3D" groups=["scene_rigidbody"]]
[node name="Boombox_broken" type="Node3D" groups=["scene_rigidbody", "spawned"]]
[node name="part1" type="RigidBody3D" parent="."]
collision_layer = 2

View File

@@ -194,7 +194,7 @@ shadow_mesh = SubResource("ArrayMesh_i03s3")
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_611bg"]
points = PackedVector3Array(0.0944869, -0.228895, -0.107533, -0.056244, 0.175358, -0.0321848, 0.156169, -0.153471, 0.00204893, -0.0767958, 0.0657196, 0.104823, 0.0259363, 0.175358, -0.018472, 0.0739083, -0.146688, -0.128102, -0.0988416, 0.172671, 0.0541892, -0.0151405, -0.0780892, -0.107533, 0.121907, -0.153471, -0.107533, 0.108197, -0.249458, -0.0801314, -0.0219821, 0.0657196, 0.118535, -0.117926, -0.0507011, 0.00204893, 0.046488, 0.182226, 0.0363068, 0.0259363, 0.175358, 0.0979662, -0.0836643, 0.182226, -0.018472, -0.0467355, 0.173692, 0.107146, 0.128722, -0.0849576, 0.0363068, 0.156169, -0.153471, -0.0253284, -0.0151405, 0.182226, -0.0321848, 0.115012, -0.256326, -0.100676, -0.104216, 0.0109006, 0.056876, 0.142459, -0.153471, 0.00204893, -0.0151405, -0.0986517, -0.100676, -0.0853973, 0.172008, 0.0866411, -0.0915414, -0.0431356, -0.0293689, 0.128722, -0.249458, -0.0801314, 0.00543814, -0.0918261, -0.114389, -0.111058, -0.0507011, 0.00890533, 0.0396464, 0.182226, 0.0157617, -0.0905059, 0.0314631, 0.0774211, 0.115012, -0.235721, -0.0664185, 0.046488, 0.182226, 0.0431632)
[node name="Bottle1Pieces" type="Node3D" node_paths=PackedStringArray("timer", "sound") groups=["scene_rigidbody"]]
[node name="Bottle1Pieces" type="Node3D" node_paths=PackedStringArray("timer", "sound") groups=["scene_rigidbody", "spawned"]]
script = ExtResource("1_3nyc3")
timer = NodePath("Timer")
sound = NodePath("Piece 1/BrokenSound")

View File

@@ -13,7 +13,7 @@ alpha_antialiasing_mode = 0
blend_mode = 3
albedo_texture = ExtResource("1_a6hxe")
[node name="BulletHole" type="Node3D"]
[node name="BulletHole" type="Node3D" groups=["spawned"]]
script = ExtResource("1_r63bq")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]

View File

@@ -9,7 +9,7 @@ margin = 0.001
height = 0.07
radius = 0.025
[node name="casing_2" type="RigidBody3D"]
[node name="casing_2" type="RigidBody3D" groups=["spawned"]]
collision_layer = 2
collision_mask = 7
mass = 0.1

View File

@@ -253,7 +253,7 @@ shadow_mesh = SubResource("ArrayMesh_lj803")
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_6s52t"]
points = PackedVector3Array(0.0373867, 0.506736, 0.264769, -0.356717, -0.359168, -0.355095, -0.0320077, -0.359938, -0.355895, -0.354628, -0.356682, 0.361267, 0.420766, -0.216171, 0.424228, 0.423749, 0.219941, -0.416246, -0.365389, 0.352423, -0.345166, -0.416466, 0.218879, 0.424331, 0.360266, -0.357965, -0.353736, 0.102349, 0.335027, 0.589588, 0.402901, 0.268555, 0.389875, 0.195153, 0.506736, -0.190996, -0.422081, -0.220248, -0.419715, -0.260721, 0.506736, 0.0369412, 0.358523, -0.35589, 0.360761, -0.0313043, 0.303622, 0.62754, -0.421842, 0.220812, -0.419429, 0.424319, -0.218587, -0.41693, -0.417407, -0.21707, 0.425083, -0.0479629, 0.437309, 0.542168, 0.265281, 0.506736, 0.0369412, 0.0869742, 0.203613, -0.452175, -0.0502516, 0.506736, -0.26119, -0.365015, 0.352134, 0.35648, 0.102079, 0.434188, 0.505107, 0.0358136, 0.235707, 0.625416, 0.355023, 0.353852, -0.363978, 0.419586, 0.218443, 0.423284, 0.358118, 0.356357, 0.360453, -0.350469, 0.353856, -0.36409, -0.208103, 0.506736, 0.176999, -0.208103, 0.506736, -0.17353)
[node name="dieParticles" type="Node3D" node_paths=PackedStringArray("audio_explode")]
[node name="dieParticles" type="Node3D" node_paths=PackedStringArray("audio_explode") groups=["spawned"]]
script = ExtResource("1_frf2k")
audio_explode = NodePath("Audio/Die")

View File

@@ -51,7 +51,7 @@ script = ExtResource("1_bncdc")
collision_shape = NodePath("CollisionShape3D2")
despawning = true
despawn_time_s = 20
pickupType = "health"
pickupType = 2
[node name="HealthPickup" type="MeshInstance3D" parent="."]
transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 0, 0, 0)

View File

@@ -217,7 +217,6 @@ collision_layer = 4
collision_mask = 6
script = ExtResource("1_46utd")
gun_resource = ExtResource("2_kkmr5")
pickupType = "weapon"
collision_shape = NodePath("CollisionShape3D")
[node name="mac10" type="MeshInstance3D" parent="."]

File diff suppressed because one or more lines are too long

View File

@@ -101,7 +101,7 @@ collision_mask = 6
script = ExtResource("2_itgxg")
collision_shape = NodePath("CollisionShape3D")
despawning = true
pickupType = "money"
pickupType = 3
[node name="Plane" type="MeshInstance3D" parent="."]
transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, -0.000681758, -0.0236325, -0.000314474)

View File

@@ -337,7 +337,7 @@ _data = {
"run": SubResource("Animation_rf35q")
}
[node name="rat" type="CharacterBody3D" groups=["breakable", "npc", "rat"]]
[node name="rat" type="CharacterBody3D" groups=["breakable", "npc", "rat", "spawned"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.117073, 0)
collision_layer = 2
collision_mask = 7

View File

@@ -352,7 +352,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 0.01, 0.1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0.242, 0.5), Vector3(0, 0.242, 0.6), Vector3(0, 0.242, 0.5)]
"values": [Vector3(0, 0.242, 0.5), Vector3(0, 0.242, 1), Vector3(0, 0.242, 0.5)]
}
tracks/1/type = "value"
tracks/1/imported = false
@@ -462,7 +462,7 @@ audio_empty = NodePath("Audio/Empty")
audio_reload = NodePath("Audio/Reload")
[node name="rocketlauncher1" type="MeshInstance3D" parent="."]
transform = Transform3D(-2.87865e-09, 0.0658559, -0.997829, -1, -4.37114e-08, -3.10862e-15, -4.36165e-08, 0.997829, 0.0658559, 0, 0.242, 0.5)
transform = Transform3D(1.41767e-10, -3.62203e-06, -1, -0.999434, -0.0336273, 1.21657e-07, -0.0336273, 0.999434, -3.61999e-06, 0, 0.242, 0.703125)
mesh = SubResource("ArrayMesh_qiiww")
skeleton = NodePath("")

View File

@@ -226,7 +226,6 @@ collision_layer = 4
collision_mask = 6
script = ExtResource("1_mytm1")
gun_resource = ExtResource("2_5t04l")
pickupType = "weapon"
collision_shape = NodePath("CollisionShape3D2")
[node name="rocketlauncher1" type="MeshInstance3D" parent="."]

View File

@@ -718,6 +718,10 @@ autostart = true
wait_time = 0.5
one_shot = true
[node name="stunned_timer" type="Timer" parent="Timers"]
wait_time = 8.0
one_shot = true
[node name="AUIDO" type="Node" parent="."]
[node name="Fire" type="AudioStreamPlayer3D" parent="AUIDO"]
@@ -728,3 +732,4 @@ volume_db = 10.0
[connection signal="timeout" from="Timers/prefire_timer" to="." method="_on_prefire_timer_timeout"]
[connection signal="timeout" from="Timers/postfire_timer" to="." method="_on_postfire_timer_timeout"]
[connection signal="timeout" from="Timers/knocked_timer" to="." method="_on_knocked_timer_timeout"]
[connection signal="timeout" from="Timers/stunned_timer" to="." method="_on_stunned_timer_timeout"]

View File

@@ -57,7 +57,7 @@ script = ExtResource("1_1udac")
collision_shape = NodePath("CollisionShape3D2")
despawning = true
despawn_time_s = 20
pickupType = "stamina"
pickupType = 1
[node name="Area3D" type="Area3D" parent="."]

View File

@@ -32,9 +32,8 @@ polygons = [PackedInt32Array(3, 2, 0), PackedInt32Array(0, 2, 1), PackedInt32Arr
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6yrih"]
albedo_color = Color(0.300579, 0.462784, 0.249767, 1)
[node name="EnemyWork" type="Node3D" node_paths=PackedStringArray("player")]
[node name="EnemyWork" type="Node3D"]
script = ExtResource("1_laua1")
player = NodePath("Player")
MAX_PARTICLES = 75
gun_1 = ExtResource("2_poauc")
gun_2 = ExtResource("3_xdb5c")
@@ -125,9 +124,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.5914, -0.170555, -14.246)
[node name="pistol1_pickup" parent="." instance=ExtResource("8_qwtxj")]
transform = Transform3D(0.649528, -0.760338, 0, 0.760338, 0.649528, 0, 0, 0, 1, -24.7534, 1.09587, 5.88603)
pickupType = 0
[node name="rocketlauncher1_pickup" parent="." instance=ExtResource("9_r8miu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 1, 8)
pickupType = 0
[node name="mac10_pickup" parent="." instance=ExtResource("10_pos4p")]
transform = Transform3D(0.866025, -0.5, 0, 0.5, 0.866025, 0, 0, 0, 1, -28, 1, 10)
pickupType = 0

View File

@@ -1157,9 +1157,8 @@ _data = {
"trainmove": SubResource("Animation_6nfej")
}
[node name="Test Level 2" type="Node3D" node_paths=PackedStringArray("player")]
[node name="Test Level 2" type="Node3D"]
script = ExtResource("1_tqbvs")
player = NodePath("Player")
money = 10
health = 10
gun_1 = ExtResource("2_fu1eu")

View File

@@ -1560,7 +1560,7 @@ transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -52.72
[node name="Building1" parent="." instance=ExtResource("38_jjm5k")]
transform = Transform3D(1.4, 0, 0, 0, 1.4, 0, 0, 0, 1.4, 30.5112, 0.0535234, 5.34559)
[node name="EnemyHivemind" type="Node3D" parent="." groups=["enemy_hivemind"]]
[node name="EnemyHivemind" type="Node3D" parent="."]
script = ExtResource("39_g18ck")
[node name="spider" parent="EnemyHivemind" instance=ExtResource("40_a0e3y")]

View File

@@ -8,6 +8,7 @@ var rot_amount : float
# Called when the node enters the scene tree for the first time.
func _ready():
minions = self.get_children()
add_to_group("enemy_hivemind")
# Called every frame. 'delta' is the elapsed time since the previous frame.

View File

@@ -13,10 +13,10 @@ extends Node3D
@export var health_drop_enabled = true
@export var money_drop_enabled = true
var ammo_drop = load("res://assets/ammo_pickup.tscn")
var stamina_drop = load("res://assets/stamina_pickup.tscn")
var health_drop = load("res://assets/health_pickup.tscn")
var money_drop = load("res://assets/money_pickup.tscn")
var ammo_drop = [[load("res://assets/ammo_pickup.tscn")],["ammo"]]
var stamina_drop = [[load("res://assets/stamina_pickup.tscn")],["stamina"]]
var health_drop = [[load("res://assets/health_pickup.tscn")],["health"]]
var money_drop = [[load("res://assets/money_pickup.tscn")],["money"]]
const CLEARED_ANNOUNCE = preload("res://assets/cleared_announce.tscn")
const DEAD_ANNOUNCE = preload("res://assets/dead_announce.tscn")
@@ -35,6 +35,10 @@ func _ready():
#global randomize function
randomize()
#clear spawned in objects
for node in get_tree().get_nodes_in_group("spawned"):
node.queue_free()
#assign pickups to array
if ammo_drop_enabled == true:
pickups.append(ammo_drop)
@@ -42,8 +46,8 @@ func _ready():
pickups.append(stamina_drop)
if health_drop_enabled == true:
pickups.append(health_drop)
if ammo_drop_enabled == true:
pickups.append(ammo_drop)
if money_drop_enabled == true:
pickups.append(money_drop)
#Set up starting guns and ammo
held_guns = [gun_1]
@@ -100,11 +104,10 @@ func enemy_count():
cleared()
func cleared():
Engine.time_scale = .05
var clearedmsg = CLEARED_ANNOUNCE.instantiate()
get_parent().add_child(clearedmsg)
await get_tree().create_timer(.3).timeout
get_tree().reload_current_scene()
await get_tree().create_timer(1).timeout
clearedmsg.queue_free()
func die():
Engine.time_scale = .05
@@ -118,5 +121,11 @@ func die():
#get_tree().get_root().add_child(instance_dead)
func pickup_spawn():
pickups.pick_random()
print(pickups.pick_random())
var item_type = pickups.pick_random()
var item_spawn = item_type[0][0].instantiate()
var item_name = item_type[1][0]
print(item_name)
item_spawn.rand_amt = randi_range(25,100)
return item_spawn

View File

@@ -10,6 +10,7 @@ var changed_size
# Called when the node enters the scene tree for the first time.
func _ready():
add_to_group("spawned")
viewportWidth = get_viewport().size.x
viewportHeight = get_viewport().size.y
start_size = Vector2(size.x, size.y)

View File

@@ -3,15 +3,23 @@ extends RigidBody3D
@export var collision_shape = Node
@export var despawning = false
@export var despawn_time_s = 10
@export var pickupType: String
@export_enum("Ammo", "Stamina", "Health", "Money","Weapon") var pickupType: int
@onready var level_control = get_tree().current_scene
var rng = RandomNumberGenerator.new()
var rand_amt
var player_follow
var player
# Called when the node enters the scene tree for the first time.
func _ready():
rand_amt = rng.randf_range(10.0,100.0)
add_to_group("pickup")
#find player
player = level_control.player
rand_amt = rng.randi_range(25,100)
if despawning == true:
await get_tree().create_timer(despawn_time_s).timeout
collision_shape.disabled = true
@@ -19,6 +27,25 @@ func _ready():
self.queue_free()
func _physics_process(delta):
if player != null:
var float_direction = player.global_position - self.position
if player_follow != null:
var float_direction = (player.global_position - self.position)
self.set_linear_velocity(float_direction * 10)
func picked_up():
player.pickup_sound.pitch_scale = 1 + rng.randf_range(-.3,.3)
player.pickup_sound.play()
match pickupType:
# Ammo
0:
level_control.ammo_reserve[level_control.current_gun_index] += clamp((rand_amt/100) * player.gun.max_ammo, 1, player.gun.max_ammo)
# Stamina
1:
player.remaining_stamina += (rand_amt/100) * player.MAX_STAMINA
# Health
2:
level_control.health += 1
# Money
3:
level_control.money += int(rand_amt)
queue_free()

View File

@@ -239,63 +239,9 @@ func _headbob(time) -> Vector3:
func _on_pick_up_detection_body_entered(body):
if body.is_in_group("pickup"):
if body.pickupType == "stamina":
pickupmsg = pickup_announce.instantiate()
pickupmsg.pickuptext = "stamina"
get_parent().add_child(pickupmsg)
remaining_stamina += (body.rand_amt/100) * MAX_STAMINA
pickup_sound.pitch_scale = 1 + rng.randf_range(-.3,.3)
pickup_sound.play()
body.queue_free()
elif body.pickupType == "ammo":
pickupmsg = pickup_announce.instantiate()
pickupmsg.pickuptext = "ammo"
get_parent().add_child(pickupmsg)
level_control.ammo_reserve[level_control.current_gun_index] += clamp(int((body.rand_amt/100) * gun.max_ammo), 1, gun.max_ammo)
picked_up = true
picked_up_text = "ammo"
pickup_sound.pitch_scale = 1 + rng.randf_range(-.3,.3)
pickup_sound.play()
body.queue_free()
elif body.pickupType == "money":
pickupmsg = pickup_announce.instantiate()
pickupmsg.pickuptext = "$" + str(int(body.rand_amt))
get_parent().add_child(pickupmsg)
level_control.money += int(body.rand_amt)
picked_up = true
picked_up_text = "ammo"
pickup_sound.pitch_scale = 1 + rng.randf_range(-.3,.3)
pickup_sound.play()
body.queue_free()
elif body.pickupType == "health":
level_control.health += 1
picked_up = true
pickup_sound.pitch_scale = 1 + rng.randf_range(-.3,.3)
pickup_sound.play()
body.queue_free()
elif body.pickupType == "jump":
pickupmsg = pickup_announce.instantiate()
pickupmsg.pickuptext = "jump"
get_parent().add_child(pickupmsg)
double_jump = true
picked_up = true
picked_up_text = "double jump"
pickup_sound.pitch_scale = 1 + rng.randf_range(-.3,.3)
pickup_sound.play()
body.queue_free()
elif body.pickupType == "weapon":
pickup_sound.pitch_scale = 1 + rng.randf_range(-.3,.3)
pickup_sound.play()
level_control.held_guns.append(body.gun_resource)
var instance_gun = body.gun_resource.instantiate()
level_control.ammo_current.append(instance_gun.max_ammo)
level_control.ammo_reserve.append(instance_gun.max_ammo * instance_gun.start_mags)
body.queue_free()
var weapon_id = level_control.held_guns.size() - 1
gun.anim_player.play("swap_out")
level_control.gun_spawn(weapon_id)
body.picked_up()
func ladder_collide(is_climbing):
if is_climbing == true:
@@ -305,7 +251,7 @@ func ladder_collide(is_climbing):
func _on_pick_up_magnet_body_entered(body):
if body.is_in_group("pickup") and body.is_in_group("magnet"):
body.player = self
body.player_follow = self
func weapon_tilt(input_x, delta):
if weapon_holder:

View File

@@ -57,6 +57,8 @@ func explode():
body.velocity += clamp(blast_velocity,Vector3(-7,-7,-7),Vector3(7,7,7))
if body.is_in_group("enemy"):
body.knocked = true
body.stunned = true
print("knocked")
body.knocked_timer.start()
body.stunned_timer.start()
body.velocity += blast_velocity

View File

@@ -27,6 +27,7 @@ const MAX_AV = 10
@onready var prefire_timer = $Timers/prefire_timer
@onready var postfire_timer = $Timers/postfire_timer
@onready var knocked_timer = $Timers/knocked_timer
@onready var stunned_timer = $Timers/stunned_timer
@onready var turret_look_next = $TurretLookNext
@onready var spider_look_next = $SpiderLookNext
@onready var body = $body
@@ -52,7 +53,8 @@ var body_look_to
var distance_to_player
var hive_velocity
var hive_nav_point
var knocked
var knocked = false
var stunned = false
func _ready():
player = get_node(player_path)
@@ -69,20 +71,19 @@ func _process(delta):
if !knocked:
velocity = hive_velocity
#FIX BODY ROTATION
spider_look_next.look_at(Vector3(player.global_position.x, 0, player.global_position.z), Vector3.UP)
body.rotation.y = lerp(body.rotation.y, spider_look_next.rotation.y, delta * 1)
turret_look_next.look_at(player.global_position,Vector3.UP)
turret_look.rotation = lerp(turret_look.rotation,turret_look_next.rotation,delta * turret_look_speed)
#distance_to_player = abs(self.global_position - player.global_position)
if !stunned:
spider_look_next.look_at(Vector3(player.global_position.x, 0, player.global_position.z), Vector3.UP)
body.rotation.y = lerp(body.rotation.y, spider_look_next.rotation.y, delta * 1)
turret_look_next.look_at(player.global_position,Vector3.UP)
turret_look.rotation = lerp(turret_look.rotation,turret_look_next.rotation,delta * turret_look_speed)
else:
body.rotation.y = lerp(body.rotation.y, body.rotation.y + 10, delta * .5)
turret_look.rotation.y = lerp(turret_look.rotation.y,turret_look.rotation.y - 5,delta * 1)
#apply gravity
if !is_on_floor():
velocity.y -= gravity * delta
#if distance_to_player.x > 4 or distance_to_player.z > 4:
move_and_slide()
@@ -100,8 +101,7 @@ func _on_area_3d_body_part_hit(dam,bullet_damage):
#pickup drop
while number_of_drops > 0:
level_control.pickup_spawn()
var rand_selector = rng.randi_range(1,4)
var rand_item = level_control.pickup_spawn()
var lv_x = rng.randf_range(-MAX_LV,MAX_LV)
var lv_y = rng.randf_range(0,MAX_LV)
var lv_z = rng.randf_range(-MAX_LV,MAX_LV)
@@ -109,17 +109,8 @@ func _on_area_3d_body_part_hit(dam,bullet_damage):
var av_y = rng.randf_range(-MAX_AV,MAX_AV)
var av_z = rng.randf_range(-MAX_AV,MAX_AV)
match rand_selector:
1:
rand_select = stamina
2:
rand_select = ammo
3:
rand_select = money
4:
rand_select = health_pickup
# Random Item Drop
rand_item = rand_select.instantiate()
#rand_item = rand_select.instantiate()
rand_item.position = self.global_position
rand_item.transform.basis = self.global_transform.basis
rand_item.linear_velocity += self.global_transform.basis * Vector3(lv_x,lv_y,lv_z)
@@ -168,7 +159,7 @@ func _on_prefire_timer_timeout():
func _on_postfire_timer_timeout():
if turret_look_next.is_colliding() and turret_look_next.get_collider().is_in_group("player"):
if turret_look_next.is_colliding() and turret_look_next.get_collider().is_in_group("player") and !stunned:
prefire_timer.start()
turret_material.emission_enabled = true
else:
@@ -179,3 +170,8 @@ func _on_knocked_timer_timeout():
print("KNOCK TIMEOUT")
velocity = Vector3(0,0,0)
knocked = false
func _on_stunned_timer_timeout():
print("STUN TIMEOUT")
stunned = false

View File

@@ -1,9 +1,11 @@
extends RigidBody3D
@export var gun_resource : Resource
@export var pickupType: String
@export_enum("Ammo", "Stamina", "Health", "Money","Weapon") var pickupType: int
@export var collision_shape : Node
@onready var level_control = get_tree().current_scene
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
@@ -12,3 +14,13 @@ func _ready():
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func picked_up():
level_control.held_guns.append(gun_resource)
var instance_gun = gun_resource.instantiate()
level_control.ammo_current.append(instance_gun.max_ammo)
level_control.ammo_reserve.append(instance_gun.max_ammo * instance_gun.start_mags)
var weapon_id = level_control.held_guns.size() - 1
level_control.player.gun.anim_player.play("swap_out")
level_control.gun_spawn(weapon_id)
queue_free()