Add Slow Effect Ability to Railgun V3
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Moe Poi ~ 2023-10-21 01:52:37 +07:00
parent 223441e957
commit c0b012ae84
15 changed files with 125 additions and 36 deletions

View file

@ -169,3 +169,8 @@ offset_right = 86.8186
offset_bottom = 1.10553
scale = Vector2(0.3, 0.3)
show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]

View file

@ -170,3 +170,8 @@ offset_right = 86.8186
offset_bottom = 1.10553
scale = Vector2(0.3, 0.3)
show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]

View file

@ -169,3 +169,8 @@ offset_right = 86.8186
offset_bottom = 1.10553
scale = Vector2(0.3, 0.3)
show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]

View file

@ -171,3 +171,8 @@ offset_right = 86.8186
offset_bottom = 1.10553
scale = Vector2(0.3, 0.3)
show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]

View file

@ -170,3 +170,8 @@ offset_right = 86.8186
offset_bottom = 1.10553
scale = Vector2(0.3, 0.3)
show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]

View file

@ -169,3 +169,8 @@ offset_right = 86.8186
offset_bottom = 1.10553
scale = Vector2(0.3, 0.3)
show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]

View file

@ -7,6 +7,7 @@ var damage: int = 0
var dir = 0
var area_damage: bool = false
var area_damage_target = []
var slow_effect: bool = false
func _physics_process(_delta):
var move_dir = Vector2(1,0).rotated(dir)
@ -20,6 +21,9 @@ func _on_Bullet_body_entered(body):
if area_damage:
for enemy in area_damage_target:
enemy.hit(damage)
elif slow_effect:
body.get_parent().hit(damage)
body.get_parent().slow()
else:
body.get_parent().hit(damage)
queue_free()

View file

@ -11,6 +11,7 @@ var direction = []
var enemy_vol = Vector2(1,1)
var old_enemy_pos
var is_slow: bool = false
func set_config(config_path):
config = load(config_path).new()
@ -59,5 +60,20 @@ func update_healthbar():
func hit(value : int):
health = health - value
func slow():
var slowTimer = $EnemyBody/SlowTimer
if is_slow:
slowTimer.stop()
slowTimer.start()
else:
speed = speed - (0.3 * speed)
is_slow = true
slowTimer.wait_time = 6.0
slowTimer.start()
func _on_slow_timer_timeout():
speed = config.enemy[enemy_id]['speed']
is_slow = false
func destroy():
queue_free()

View file

@ -77,7 +77,8 @@ var tower = [
"damage": 30,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun",
@ -88,7 +89,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V2)",
@ -99,7 +101,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun (V2)",
@ -110,7 +113,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V3)",
@ -121,7 +125,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": true
"area_damage": true,
"slow_effect": false
},
{
"name": "Railgun (V3)",
@ -132,7 +137,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": true
}
]

View file

@ -107,7 +107,8 @@ var tower = [
"damage": 30,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun",
@ -118,7 +119,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V2)",
@ -129,7 +131,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun (V2)",
@ -140,7 +143,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V3)",
@ -151,7 +155,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": true
"area_damage": true,
"slow_effect": false
},
{
"name": "Railgun (V3)",
@ -162,7 +167,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": true
}
]

View file

@ -89,7 +89,8 @@ var tower = [
"damage": 30,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun",
@ -100,7 +101,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V2)",
@ -111,7 +113,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun (V2)",
@ -122,7 +125,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V3)",
@ -133,7 +137,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": true
"area_damage": true,
"slow_effect": false
},
{
"name": "Railgun (V3)",
@ -144,7 +149,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": true
}
]

View file

@ -95,7 +95,8 @@ var tower = [
"damage": 30,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun",
@ -106,7 +107,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V2)",
@ -117,7 +119,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun (V2)",
@ -128,7 +131,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V3)",
@ -139,7 +143,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": true
"area_damage": true,
"slow_effect": false
},
{
"name": "Railgun (V3)",
@ -150,7 +155,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": true
}
]

View file

@ -95,7 +95,8 @@ var tower = [
"damage": 30,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun",
@ -106,7 +107,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V2)",
@ -117,7 +119,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun (V2)",
@ -128,7 +131,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V3)",
@ -139,7 +143,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": true
"area_damage": true,
"slow_effect": false
},
{
"name": "Railgun (V3)",
@ -150,7 +155,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": true
}
]

View file

@ -137,7 +137,8 @@ var tower = [
"damage": 30,
"health": 100,
"durability_reduction": 10,
"area_damage": true
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun",
@ -148,7 +149,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V2)",
@ -159,7 +161,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Railgun (V2)",
@ -170,7 +173,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": false
},
{
"name": "Cannon (V3)",
@ -181,7 +185,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": true
"area_damage": true,
"slow_effect": false
},
{
"name": "Railgun (V3)",
@ -192,7 +197,8 @@ var tower = [
"damage": 40,
"health": 100,
"durability_reduction": 10,
"area_damage": false
"area_damage": false,
"slow_effect": true
}
]

View file

@ -16,6 +16,7 @@ var speed: int = 0
var shoot_timer: float = 0
var durability_reduction: int = 0
var area_damage: bool = false
var slow_effect: bool = false
var enemies = []
@ -32,6 +33,7 @@ func set_tower(id: int, placement_id):
shoot_timer = config.tower[tower_id]['timer']
durability_reduction = config.tower[tower_id]['durability_reduction']
area_damage = config.tower[tower_id]['area_damage']
slow_effect = config.tower[tower_id]['slow_effect']
func set_timer():
timer.wait_time = shoot_timer
@ -64,6 +66,7 @@ func _shoot():
bullet_instance.damage = damage
bullet_instance.area_damage = area_damage
bullet_instance.area_damage_target = enemies
bullet_instance.slow_effect = slow_effect
get_tree().current_scene.add_child(bullet_instance)
health -= durability_reduction
timer.start()