added an assassinate target modifier
This commit is contained in:
59
scripts/assassinate_vip.gd
Normal file
59
scripts/assassinate_vip.gd
Normal file
@@ -0,0 +1,59 @@
|
||||
extends Node
|
||||
class_name Modifier
|
||||
|
||||
@export var time_to_kill : float = 30.0
|
||||
|
||||
@onready var level: Node3D = $"../../Level"
|
||||
@onready var marker = preload("res://enemyTargetMarker.tscn")
|
||||
@onready var level_control = get_tree().current_scene
|
||||
|
||||
var target_enemy
|
||||
var timer
|
||||
|
||||
func _ready() -> void:
|
||||
await get_tree().create_timer(5).timeout
|
||||
select_random_enemy()
|
||||
SignalBus.connect("enemy_killed",check_killed_target)
|
||||
timer = time_to_kill
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if target_enemy != null:
|
||||
if timer > 0:
|
||||
timer -= delta
|
||||
update_timer("kill target")
|
||||
else:
|
||||
level_control.die()
|
||||
|
||||
|
||||
func update_timer(label):
|
||||
var rounded_timer = round(timer)
|
||||
SignalBus.emit_signal("ui_timer_update",label,timer)
|
||||
|
||||
func check_killed_target(enemy):
|
||||
print("ENEMY KILLED : ",enemy)
|
||||
print("TARGET ENEMY : ",target_enemy)
|
||||
if enemy == target_enemy:
|
||||
timer = time_to_kill
|
||||
target_enemy = null
|
||||
select_random_enemy()
|
||||
|
||||
func add_marker_to_enemy():
|
||||
if target_enemy != null:
|
||||
var instance_marker = marker.instantiate()
|
||||
target_enemy.add_child(instance_marker)
|
||||
instance_marker.global_position = target_enemy.global_position
|
||||
|
||||
func select_random_enemy():
|
||||
var level_stuff = level.get_children()
|
||||
var enemies = []
|
||||
for node in level_stuff:
|
||||
print(node)
|
||||
if node is Enemy:
|
||||
enemies.append(node)
|
||||
|
||||
if enemies.size() > 0:
|
||||
target_enemy = enemies.pick_random()
|
||||
add_marker_to_enemy()
|
||||
print("TARGET ENEMY : ",target_enemy.name)
|
||||
else:
|
||||
print("KILLED EM ALL")
|
||||
1
scripts/assassinate_vip.gd.uid
Normal file
1
scripts/assassinate_vip.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dhmpfl0bks8sf
|
||||
@@ -5,7 +5,7 @@
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hthjk"]
|
||||
transparency = 1
|
||||
shading_mode = 0
|
||||
albedo_color = Color(1, 1, 1, 0)
|
||||
albedo_color = Color(0, 0.498039, 0, 0.568627)
|
||||
|
||||
[node name="ChestSpawner" type="CSGBox3D" groups=["chest_spawner"]]
|
||||
material = SubResource("StandardMaterial3D_hthjk")
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
extends CSGBox3D
|
||||
class_name CSGSpawner
|
||||
|
||||
func _ready() -> void:
|
||||
visible = false
|
||||
|
||||
func random_box_pos():
|
||||
var x : float = randf_range(size.x / 2, -size.x /2)
|
||||
var y : float = randf_range(size.y/ 2, -size.y /2)
|
||||
|
||||
@@ -22,7 +22,7 @@ func die():
|
||||
if GameGlobals.last_hit_path == str(get_path()):
|
||||
GameGlobals.last_hit_path = null
|
||||
|
||||
SignalBus.emit_signal("enemy_killed")
|
||||
SignalBus.emit_signal("enemy_killed",enemy)
|
||||
|
||||
func drop_loot():
|
||||
var number_of_drops = enemy.loot_amount
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
extends CSGSpawner
|
||||
class_name EnemySpawner
|
||||
|
||||
func _ready() -> void:
|
||||
visible = false
|
||||
|
||||
@@ -26,6 +26,7 @@ var crosshair_target
|
||||
@onready var crosshair_center: TextureRect = $StaticItems/CrosshairCenter
|
||||
@onready var pickup_item_indicator = preload("res://assets/pickup_item_indicator.tscn")
|
||||
@onready var wobble_items: Control = $WobbleItems
|
||||
@onready var timer_counter: Label = $WobbleItems/Timer_counter
|
||||
|
||||
|
||||
const STAM_BAR_MAX_OPACITY = 1.0
|
||||
@@ -45,6 +46,7 @@ func _ready() -> void:
|
||||
viewportCenter = Vector2(viewportWidth/2,viewportHeight/2)
|
||||
|
||||
SignalBus.player_hit.connect(player_hit)
|
||||
SignalBus.ui_timer_update.connect(update_timer)
|
||||
|
||||
money_count = GameGlobals.money
|
||||
|
||||
@@ -53,7 +55,7 @@ func _ready() -> void:
|
||||
health_bar_start_pos = health_bar.position
|
||||
|
||||
crosshair_target = CROSSHAIR_SIZE
|
||||
|
||||
timer_counter.visible = false
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
@@ -123,6 +125,11 @@ func _process(delta: float) -> void:
|
||||
|
||||
wobble_items.position = hud_wobble(delta/Engine.time_scale)
|
||||
|
||||
func update_timer(label,timer):
|
||||
if timer_counter.visible == false:
|
||||
timer_counter.visible = true
|
||||
|
||||
timer_counter.text = str(label,"\n", timer)
|
||||
|
||||
func shake_element(amount):
|
||||
var rand_x = randf_range(-amount,amount)
|
||||
|
||||
@@ -19,8 +19,14 @@ func _on_body_entered(body: Node3D) -> void:
|
||||
timer.start(1)
|
||||
var scene = load(level_info["level_path"]).instantiate()
|
||||
scene_holder.add_child(scene)
|
||||
scene.global_position = global_position + SCENE_SPAWN_OFFSET
|
||||
var spawn_tube_offset_pos = Vector3.ZERO
|
||||
|
||||
if scene.tube_top != null:
|
||||
spawn_tube_offset_pos = scene.tube_top.position
|
||||
|
||||
scene.global_position = global_position + SCENE_SPAWN_OFFSET + spawn_tube_offset_pos
|
||||
|
||||
|
||||
var level_control = get_tree().current_scene
|
||||
level_control.spawn_crown()
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ signal player_hit()
|
||||
signal shot_fired(crosshair_jump_amount)
|
||||
signal player_reloading()
|
||||
signal enemy_hit()
|
||||
signal enemy_killed()
|
||||
signal enemy_killed(enemy)
|
||||
signal king_killed()
|
||||
signal weapon_list_changed()
|
||||
|
||||
@@ -22,3 +22,6 @@ signal weapon_list_changed()
|
||||
##ENEMY
|
||||
signal suspicious_sound(position,loudness,max_distance)
|
||||
signal engaging_target(enemy,target_position)
|
||||
|
||||
##UI
|
||||
signal ui_timer_update(label,timer)
|
||||
|
||||
@@ -101,9 +101,6 @@ func _ready():
|
||||
func _process(delta):
|
||||
line_of_sight.global_position = global_position
|
||||
move_and_slide()
|
||||
|
||||
if !is_on_floor():
|
||||
velocity -= Vector3(0,9.8,0) * delta
|
||||
|
||||
look_at_player()
|
||||
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
extends Node3D
|
||||
|
||||
@export var tube_top : SpawnTube
|
||||
|
||||
var offset_pos
|
||||
|
||||
const CHEST_1 = preload("res://chest1.tscn")
|
||||
|
||||
func _ready() -> void:
|
||||
if tube_top != null:
|
||||
position = -tube_top.position
|
||||
|
||||
|
||||
spawn_chests()
|
||||
|
||||
func spawn_chests():
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
extends Node3D
|
||||
class_name SpawnTube
|
||||
|
||||
@export var level_bounds : LevelBounds
|
||||
|
||||
|
||||
Reference in New Issue
Block a user