added player perks

main
Artur 2026-05-20 20:57:21 +02:00
parent 320949fcb3
commit c0c7f43613
2 changed files with 74 additions and 4 deletions

View File

@ -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)

View File

@ -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: