diff --git a/scripts/perk_effects.gd b/scripts/perk_effects.gd index 7dcc530..15bbf1f 100644 --- a/scripts/perk_effects.gd +++ b/scripts/perk_effects.gd @@ -20,11 +20,12 @@ const SPELLBOOK_RADIUS: float = 60.0 var _spellbook_angle: float = 0.0 var _spellbooks: Array = [] -var _icon_knife = preload("res://assets/weapons/knvie.png") -var _icon_book = preload("res://assets/books_set_2/books_pentagram.png") -var _icon_brew = preload("res://assets/books_set_2/books_health_potion.png") +var _icon_knife = preload("res://assets/weapons/knvie.png") +var _icon_book = preload("res://assets/books_set_2/books_pentagram.png") +var _icon_brew = preload("res://assets/books_set_2/books_health_potion.png") var _icon_shuriken: AtlasTexture var _icon_fireball: AtlasTexture +var _icon_player: AtlasTexture func _stat(label: String, from: String, to: String) -> String: return "[color=#aaaaaa]" + label + "[/color]\n[color=#888888]" + from + "[/color] → [color=#77dd77]" + to + "[/color]" @@ -46,6 +47,10 @@ func _ready() -> void: _icon_fireball.atlas = preload("res://assets/Fire Pixel Bullet 16x16/All_Fire_Bullet_Pixel_16x16_00.png") _icon_fireball.region = Rect2(576, 1, 16, 16) + _icon_player = AtlasTexture.new() + _icon_player.atlas = preload("res://assets/Swordsman_lvl1/Without_shadow/Swordsman_lvl1_Idle_without_shadow.png") + _icon_player.region = Rect2(0, 0, 64, 64) + var dsh = Perk.new() dsh.name = "Double Shuriken" dsh.description = "Fire two shurikens at once" @@ -91,6 +96,33 @@ func _ready() -> void: sb.effect = unlock_spellbook available_perks.append(sb) + var sf = Perk.new() + sf.name = "Swift Feet" + sf.description = "Move faster" + sf.stats = _stat("Speed", str(player.speed), str(player.speed + 10)) + sf.spell = SpellLibrary.NONE + sf.icon = _icon_player + sf.effect = swift_feet + available_perks.append(sf) + + var bh = Perk.new() + bh.name = "Battle Hardened" + bh.description = "Hit harder" + bh.stats = _stat("Strength", str(player.strength), str(player.strength + 2)) + bh.spell = SpellLibrary.NONE + bh.icon = _icon_player + bh.effect = battle_hardened + available_perks.append(bh) + + var ss = Perk.new() + ss.name = "Swift Strike" + ss.description = "Attack more often" + ss.stats = _stat("Attack CD", "%.2fs" % player.get_node("AttackSpeed").wait_time, "%.2fs" % maxf(0.2, player.get_node("AttackSpeed").wait_time - 0.1)) + ss.spell = SpellLibrary.NONE + ss.icon = _icon_player + ss.effect = swift_strike + available_perks.append(ss) + func _process(delta: float) -> void: if throwing_knife_enabled: _knife_timer += delta @@ -225,3 +257,38 @@ func _rebuild_spellbooks() -> void: book.damage = spellbook_damage witch.get_parent().add_child(book) _spellbooks.append(book) + +func swift_feet() -> void: + player.speed += 10 + var sf = Perk.new() + sf.name = "Swift Feet" + sf.description = "Move faster" + sf.stats = _stat("Speed", str(player.speed), str(player.speed + 10)) + sf.spell = SpellLibrary.NONE + sf.icon = _icon_player + sf.effect = swift_feet + available_perks.append(sf) + +func battle_hardened() -> void: + player.strength += 2 + var bh = Perk.new() + bh.name = "Battle Hardened" + bh.description = "Hit harder" + bh.stats = _stat("Strength", str(player.strength), str(player.strength + 2)) + bh.spell = SpellLibrary.NONE + bh.icon = _icon_player + bh.effect = battle_hardened + available_perks.append(bh) + +func swift_strike() -> void: + var timer = player.get_node("AttackSpeed") + timer.wait_time = maxf(0.2, timer.wait_time - 0.1) + if timer.wait_time > 0.2: + var ss = Perk.new() + ss.name = "Swift Strike" + ss.description = "Attack more often" + ss.stats = _stat("Attack CD", "%.2fs" % timer.wait_time, "%.2fs" % maxf(0.2, timer.wait_time - 0.1)) + ss.spell = SpellLibrary.NONE + ss.icon = _icon_player + ss.effect = swift_strike + available_perks.append(ss) diff --git a/scripts/player.gd b/scripts/player.gd index a7747b6..cbff84f 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -3,7 +3,7 @@ extends CharacterBody2D var current_xp = 0 var max_xp = 5 var level = 1 -var speed = 200 +var speed = 60 var damage: int = 10 var strength = 3 var attacks = false @@ -15,13 +15,16 @@ func _physics_process(delta): if attacks == true: return if direction == Vector2.ZERO: + animated_sprite_2d.speed_scale = 1.0 animated_sprite_2d.play("idle") elif abs(direction.x) >= abs(direction.y): + animated_sprite_2d.speed_scale = speed / 60.0 if direction.x < 0: animated_sprite_2d.play("walk_left") else: animated_sprite_2d.play("walk_right") else: + animated_sprite_2d.speed_scale = speed / 60.0 if direction.y < 0: animated_sprite_2d.play("walk_up") else: