exp
This commit is contained in:
+14
-12
@@ -16,7 +16,8 @@ static var first_iron_spawned: bool = false
|
||||
static var first_essence_spawned: bool = false
|
||||
|
||||
var kickable_type: String = ""
|
||||
var tier: int = 1
|
||||
var kick_tier: int = 1
|
||||
var toughness_tier: int = 1
|
||||
var move_speed: float = 3.0
|
||||
var health: int = 30
|
||||
var damage_to_player: int = 8
|
||||
@@ -90,7 +91,8 @@ func setup(type: String, wave: int) -> void:
|
||||
COLOR_CHASE = Color(0.3, 0.7, 0.3)
|
||||
mat.albedo_color = COLOR_CHASE
|
||||
enemy_level = 3
|
||||
tier = enemy_level
|
||||
kick_tier = enemy_level
|
||||
toughness_tier = enemy_level
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
match state:
|
||||
@@ -144,19 +146,19 @@ func _try_enemy_kick() -> void:
|
||||
nearest_dist = d.length()
|
||||
nearest_kickable = k
|
||||
if nearest_kickable != null:
|
||||
nearest_kickable.call("receive_kick", kick_dir, 35.0 + tier * 8.0)
|
||||
nearest_kickable.call("receive_kick", kick_dir, 35.0 + kick_tier * 8.0)
|
||||
kickable_kick_timer = KICKABLE_KICK_COOLDOWN
|
||||
return
|
||||
|
||||
# 2. Kick lower-tier enemy nearest to player direction
|
||||
if tier > 0:
|
||||
# 2. Kick lower-toughness enemy nearest to player direction
|
||||
if kick_tier > 0:
|
||||
var nearest_enemy: Node3D = null
|
||||
var nearest_enemy_dist := ENEMY_KICK_RANGE
|
||||
for node in get_tree().get_nodes_in_group("enemies"):
|
||||
var en := node as Node3D
|
||||
if en == null or en == self or not is_instance_valid(en):
|
||||
continue
|
||||
if (en.get("tier") if en.get("tier") != null else 0) >= tier:
|
||||
if (en.get("toughness_tier") if en.get("toughness_tier") != null else 0) >= kick_tier:
|
||||
continue
|
||||
var d := (en.global_position - global_position)
|
||||
d.y = 0.0
|
||||
@@ -164,15 +166,15 @@ func _try_enemy_kick() -> void:
|
||||
nearest_enemy_dist = d.length()
|
||||
nearest_enemy = en
|
||||
if nearest_enemy != null:
|
||||
nearest_enemy.call("receive_kick", kick_dir, 40.0 + tier * 10.0)
|
||||
nearest_enemy.call("receive_kick", kick_dir, 40.0 + kick_tier * 10.0)
|
||||
enemy_kick_timer = ENEMY_KICK_COOLDOWN
|
||||
return
|
||||
|
||||
# 3. Kick player directly if lower tier and in range
|
||||
if tier > 0 and to_player.length() < ENEMY_KICK_RANGE:
|
||||
var player_tier: int = target.get("tier") if target.get("tier") != null else 0
|
||||
if player_tier < tier:
|
||||
target.call("receive_kick", kick_dir, 35.0 + tier * 8.0)
|
||||
# 3. Kick player directly if lower toughness and in range
|
||||
if kick_tier > 0 and to_player.length() < ENEMY_KICK_RANGE:
|
||||
var player_toughness: int = target.get("toughness_tier") if target.get("toughness_tier") != null else 0
|
||||
if player_toughness < kick_tier:
|
||||
target.call("receive_kick", kick_dir, 35.0 + kick_tier * 8.0)
|
||||
enemy_kick_timer = ENEMY_KICK_COOLDOWN
|
||||
|
||||
func _fly(delta: float) -> void:
|
||||
|
||||
Reference in New Issue
Block a user