Initial stage of Dawnbringer_Project

This commit is contained in:
2022-10-15 22:19:45 -03:00
commit d61095fee0
42 changed files with 1068 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
tool
extends Node
class_name character
onready var stats = $Stats
export var base_character : Resource
func _ready():
stats.initialize(base_character);
+17
View File
@@ -0,0 +1,17 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Assets/Actor/Character.gd" type="Script" id=1]
[ext_resource path="res://Assets/Actor/Stats.gd" type="Script" id=2]
[ext_resource path="res://Assets/Class/Mage.tres" type="Resource" id=3]
[node name="Character" type="Node"]
script = ExtResource( 1 )
base_character = ExtResource( 3 )
[node name="Stats" type="Node" parent="."]
script = ExtResource( 2 )
[node name="Regen" type="Timer" parent="."]
autostart = true
[connection signal="timeout" from="Regen" to="Stats" method="_on_Regen_timeout"]
+31
View File
@@ -0,0 +1,31 @@
extends KinematicBody2D
onready var weapon = $Weapon
onready var player_sprite = $PlayerSprite
onready var walk_direction = $WalkDirection
var velocity_multiplier := 1.0
func _ready():
GlobalSignals.connect("velocity_change", self, "get_velocity_multiplier")
func _physics_process(delta):
var movement_direction := Vector2(
Input.get_action_raw_strength("right") - Input.get_action_raw_strength("left"),
Input.get_action_raw_strength("down") - Input.get_action_raw_strength("up")).normalized()
if movement_direction.length() == 0:
player_sprite.play("iddle")
else:
player_sprite.play("run")
if movement_direction.x < 0:
player_sprite.flip_h = true
else:
player_sprite.flip_h = false
if Input.is_action_pressed("shoot"):
weapon.shoot()
move_and_slide(movement_direction * 32 * velocity_multiplier)
walk_direction.look_at(movement_direction + global_position)
func get_velocity_multiplier(multiplier:float):
velocity_multiplier = multiplier
print(multiplier)
+86
View File
@@ -0,0 +1,86 @@
[gd_scene load_steps=17 format=2]
[ext_resource path="res://Assets/Actor/Player.gd" type="Script" id=1]
[ext_resource path="res://Assets/Actor/Character.tscn" type="PackedScene" id=2]
[ext_resource path="res://Assets/Sprites/Mago2 andando.png" type="Texture" id=3]
[ext_resource path="res://Assets/Actor/Weapon.tscn" type="PackedScene" id=4]
[ext_resource path="res://icon.png" type="Texture" id=5]
[ext_resource path="res://Assets/Sprites/Mago2iddle.png" type="Texture" id=6]
[sub_resource type="AtlasTexture" id=2]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 0, 0, 320, 320 )
[sub_resource type="AtlasTexture" id=3]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 320, 0, 320, 320 )
[sub_resource type="AtlasTexture" id=4]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 640, 0, 320, 320 )
[sub_resource type="AtlasTexture" id=5]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 960, 0, 320, 320 )
[sub_resource type="AtlasTexture" id=6]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 1280, 0, 320, 320 )
[sub_resource type="AtlasTexture" id=7]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 1600, 0, 320, 320 )
[sub_resource type="AtlasTexture" id=8]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 1920, 0, 320, 320 )
[sub_resource type="AtlasTexture" id=9]
flags = 4
atlas = ExtResource( 3 )
region = Rect2( 2240, 0, 320, 320 )
[sub_resource type="SpriteFrames" id=10]
animations = [ {
"frames": [ ExtResource( 6 ) ],
"loop": true,
"name": "iddle",
"speed": 5.0
}, {
"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ) ],
"loop": true,
"name": "run",
"speed": 5.0
} ]
[sub_resource type="CapsuleShape2D" id=1]
[node name="Player" type="KinematicBody2D"]
position = Vector2( 362, 174 )
script = ExtResource( 1 )
[node name="PlayerSprite" type="AnimatedSprite" parent="."]
scale = Vector2( 0.4, 0.4 )
frames = SubResource( 10 )
animation = "iddle"
speed_scale = 2.0
playing = true
[node name="WalkDirection" type="Sprite" parent="."]
scale = Vector2( 0.5, 0.5 )
texture = ExtResource( 5 )
offset = Vector2( 90, 0 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
[node name="Character" parent="." instance=ExtResource( 2 )]
[node name="Weapon" parent="." instance=ExtResource( 4 )]
+177
View File
@@ -0,0 +1,177 @@
extends Node
class_name CharacterStats
var current_level:int
var current_health:float
var current_mana:float
var max_health:int setget set_max_health
var max_mana:int setget set_max_mana
var attack:int
var defense:int
var dexterity:int
var speed:int
var vitality:int
var wisdown:int
var health_min_scale:int
var mana_min_scale:int
var attack_min_scale:int
var defense_min_scale:int
var dexterity_min_scale:int
var speed_min_scale:int
var vitality_min_scale:int
var wisdown_min_scale:int
var health_max_scale:int
var mana_max_scale:int
var attack_max_scale:int
var defense_max_scale:int
var dexterity_max_scale:int
var speed_max_scale:int
var vitality_max_scale:int
var wisdown_max_scale:int
var health_bonus_scale:int
var mana_bonus_scale:int
var attack_bonus_scale:int
var defense_bonus_scale:int
var dexterity_bonus_scale:int
var speed_bonus_scale:int
var vitality_bonus_scale:int
var wisdown_bonus_scale:int
var current_xp:int
var next_level_xp:int
var xp_scale:int = 100
var regen_health:float
var regen_mana:float
var attack_multiplier:float
var attack_speed:float
var velocity:float
func initialize(stats: CharacterBaseStats):
max_health = stats.health
max_mana = stats.mana
attack = stats.attack
defense = stats.defense
dexterity = stats.dexterity
speed = stats.speed
vitality = stats.vitality
wisdown = stats.wisdown
health_min_scale = stats.health_min_scale
mana_min_scale = stats.mana_min_scale
attack_min_scale = stats.attack_min_scale
defense_min_scale = stats.defense_min_scale
dexterity_min_scale = stats.dexterity_min_scale
speed_min_scale = stats.speed_min_scale
vitality_min_scale = stats.vitality_min_scale
wisdown_min_scale = stats.wisdown_min_scale
health_max_scale = stats.health_max_scale
mana_max_scale = stats.mana_max_scale
attack_max_scale = stats.attack_max_scale
defense_max_scale = stats.defense_max_scale
dexterity_max_scale = stats.dexterity_max_scale
speed_max_scale = stats.speed_max_scale
vitality_max_scale = stats.vitality_max_scale
wisdown_max_scale = stats.wisdown_max_scale
health_bonus_scale = stats.health_bonus_scale
mana_bonus_scale = stats.mana_bonus_scale
attack_bonus_scale = stats.attack_bonus_scale
defense_bonus_scale = stats.defense_bonus_scale
dexterity_bonus_scale = stats.dexterity_bonus_scale
speed_bonus_scale = stats.speed_bonus_scale
vitality_bonus_scale = stats.vitality_bonus_scale
wisdown_bonus_scale = stats.wisdown_bonus_scale
yield(get_tree().create_timer(0.1), "timeout")
stats_change()
func gain_experience(amount: int):
current_xp = amount
while current_xp >= next_level_xp:
current_xp -= next_level_xp
level_up()
func level_up():
if (current_level % 5) == 0:
max_health += health_bonus_scale
max_mana += mana_bonus_scale
attack += attack_bonus_scale
defense += defense_bonus_scale
dexterity += dexterity_bonus_scale
speed += speed_bonus_scale
vitality += vitality_bonus_scale
wisdown += wisdown_bonus_scale
else:
max_health += int(rand_range(float(health_min_scale), float(health_max_scale)))
max_mana += int(rand_range(float(mana_min_scale), float(mana_max_scale)))
attack += int(rand_range(float(attack_min_scale), float(attack_max_scale)))
defense += int(rand_range(float(defense_min_scale), float(defense_max_scale)))
dexterity += int(rand_range(float(dexterity_min_scale), float(dexterity_max_scale)))
speed += int(rand_range(float(speed_min_scale), float(speed_max_scale)))
vitality += int(rand_range(float(vitality_min_scale), float(vitality_max_scale)))
wisdown += int(rand_range(float(wisdown_min_scale), float(wisdown_max_scale)))
stats_change()
func stats_change():
if current_level >= 20:
return
current_level += 1
next_level_xp += xp_scale
current_health = max_health
current_mana = max_mana
regen_health = 0.2 + 10 * (float(vitality) / 50)
regen_mana = 0.2 + 5 * (float(wisdown) / 50)
attack_multiplier = 0.75 + 1.5 *(float(attack) / 70)
attack_speed = 1/(1 + 5 * (float(dexterity) / 70))
velocity = 2 + 10 * (float(speed) / 50)
GlobalSignals.emit_signal("health_changed", current_health)
GlobalSignals.emit_signal("mana_changed", current_mana)
GlobalSignals.emit_signal("attack_change", attack_multiplier)
GlobalSignals.emit_signal("dexterity_change", attack_speed)
GlobalSignals.emit_signal("velocity_change", velocity)
func take_damage(amount: float):
var damage
var percent_damage := amount * 0.1
if (amount - defense) >= percent_damage:
damage = amount - defense
current_health -= damage
else:
damage = percent_damage
current_health -= damage
current_health = clamp(current_health, 0, max_health)
GlobalSignals.emit_signal("health_changed", current_health)
GlobalSignals.emit_signal("damage_receive", damage)
if current_health == 0:
GlobalSignals.emit_signal("on_death")
func heal(amount: float):
current_health += amount
current_health = clamp(current_health, 0, max_health)
GlobalSignals.emit_signal("health_changed", current_health)
GlobalSignals.emit_signal("health_recover", amount)
func mana_heal(amount: float):
current_mana += amount
current_mana = clamp(current_mana, 0, max_mana)
GlobalSignals.emit_signal("health_changed", current_mana)
GlobalSignals.emit_signal("mana_recover", amount)
func regen():
current_health += regen_health
current_mana += regen_mana
current_health = clamp(current_health, 0, max_health)
current_mana = clamp(current_mana, 0, max_mana)
GlobalSignals.emit_signal("health_changed", current_health)
GlobalSignals.emit_signal("mana_changed", current_mana)
func set_max_health(value: int):
max_health = max(0, value)
func set_max_mana(value: int):
max_mana = max(0, value)
func _on_Regen_timeout():
regen()
+27
View File
@@ -0,0 +1,27 @@
extends Node2D
class_name Weapon
export (PackedScene) var Bullet
onready var fire_point = $FirePoint
onready var fire_direction = $FireDirection
onready var attack_cooldown = $AttackCooldown
func _ready():
GlobalSignals.connect("dexterity_change", self, "get_attack_cooldown")
func _process(delta):
look_at(get_global_mouse_position())
func shoot():
if !attack_cooldown.is_stopped() or Bullet == null:
return
var bullet_instance = Bullet.instance()
var direction = (fire_direction.global_position - fire_point.global_position).normalized()
GlobalSignals.emit_signal("bullet_fired", bullet_instance, fire_point.global_position, direction)
attack_cooldown.start()
func get_attack_cooldown(time:float):
attack_cooldown.wait_time = time
print(time)
+22
View File
@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Assets/Sprites/Varinha Velha.png" type="Texture" id=1]
[ext_resource path="res://Assets/Actor/Weapon.gd" type="Script" id=2]
[node name="Weapon" type="Node2D"]
scale = Vector2( 0.4, 0.4 )
script = ExtResource( 2 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 135, 0 )
rotation = 0.785398
texture = ExtResource( 1 )
[node name="FirePoint" type="Position2D" parent="."]
position = Vector2( 240, -7.5 )
[node name="FireDirection" type="Position2D" parent="."]
position = Vector2( 250, -7.5 )
[node name="AttackCooldown" type="Timer" parent="."]
one_shot = true
+50
View File
@@ -0,0 +1,50 @@
extends Resource
class_name CharacterBaseStats
export var class_type := ""
export var health:int
export var mana:int
export var attack:int
export var defense:int
export var dexterity:int
export var speed:int
export var vitality:int
export var wisdown:int
export var max_health:int
export var max_mana:int
export var max_attack:int
export var max_defense:int
export var max_dexterity:int
export var max_speed:int
export var max_vitality:int
export var max_wisdown:int
export var health_min_scale:int
export var mana_min_scale:int
export var attack_min_scale:int
export var defense_min_scale:int
export var dexterity_min_scale:int
export var speed_min_scale:int
export var vitality_min_scale:int
export var wisdown_min_scale:int
export var health_max_scale:int
export var mana_max_scale:int
export var attack_max_scale:int
export var defense_max_scale:int
export var dexterity_max_scale:int
export var speed_max_scale:int
export var vitality_max_scale:int
export var wisdown_max_scale:int
export var health_bonus_scale:int
export var mana_bonus_scale:int
export var attack_bonus_scale:int
export var defense_bonus_scale:int
export var dexterity_bonus_scale:int
export var speed_bonus_scale:int
export var vitality_bonus_scale:int
export var wisdown_bonus_scale:int
+47
View File
@@ -0,0 +1,47 @@
[gd_resource type="Resource" load_steps=2 format=2]
[ext_resource path="res://Assets/Class/CharacteBaseStats.gd" type="Script" id=1]
[resource]
script = ExtResource( 1 )
class_type = "Mage"
health = 200
mana = 250
attack = 15
defense = 0
dexterity = 15
speed = 15
vitality = 5
wisdown = 20
max_health = 625
max_mana = 600
max_attack = 65
max_defense = 20
max_dexterity = 65
max_speed = 55
max_vitality = 40
max_wisdown = 75
health_min_scale = 14
mana_min_scale = 8
attack_min_scale = 1
defense_min_scale = 0
dexterity_min_scale = 1
speed_min_scale = 0
vitality_min_scale = 1
wisdown_min_scale = 1
health_max_scale = 16
mana_max_scale = 12
attack_max_scale = 2
defense_max_scale = 0
dexterity_max_scale = 2
speed_max_scale = 1
vitality_max_scale = 1
wisdown_max_scale = 2
health_bonus_scale = 18
mana_bonus_scale = 25
attack_bonus_scale = 3
defense_bonus_scale = 0
dexterity_bonus_scale = 3
speed_bonus_scale = 3
vitality_bonus_scale = 2
wisdown_bonus_scale = 3
+47
View File
@@ -0,0 +1,47 @@
[gd_resource type="Resource" load_steps=2 format=2]
[ext_resource path="res://Assets/Class/CharacteBaseStats.gd" type="Script" id=1]
[resource]
script = ExtResource( 1 )
class_type = ""
health = 0
mana = 0
attack = 0
defense = 0
dexterity = 0
speed = 0
vitality = 0
wisdown = 0
max_health = 0
max_mana = 0
max_attack = 0
max_defense = 0
max_dexterity = 0
max_speed = 0
max_vitality = 0
max_wisdown = 0
health_min_scale = 0
mana_min_scale = 0
attack_min_scale = 0
defense_min_scale = 0
dexterity_min_scale = 0
speed_min_scale = 0
vitality_min_scale = 0
wisdown_min_scale = 0
health_max_scale = 0
mana_max_scale = 0
attack_max_scale = 0
defense_max_scale = 0
dexterity_max_scale = 0
speed_max_scale = 0
vitality_max_scale = 0
wisdown_max_scale = 0
health_bonus_scale = 0
mana_bonus_scale = 0
attack_bonus_scale = 0
defense_bonus_scale = 0
dexterity_bonus_scale = 0
speed_bonus_scale = 0
vitality_bonus_scale = 0
wisdown_bonus_scale = 0
+12
View File
@@ -0,0 +1,12 @@
extends Node
signal bullet_fired()
signal health_changed(new_health)
signal mana_changed(new_mana)
signal damage_receive(new_damage)
signal health_recover(new_health_value)
signal mana_recover(new_mana_value)
signal attack_change(new_attack)
signal dexterity_change(new_dexterity)
signal velocity_change(new_velocity)
signal on_death()
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

+35
View File
@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Mago2 andando.png-e184d42bf0c229abc16ee645997b3b45.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Mago2 andando.png"
dest_files=[ "res://.import/Mago2 andando.png-e184d42bf0c229abc16ee645997b3b45.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

+35
View File
@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Mago2.png-580afc38ef48b4a8981d4ee9071b9422.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Mago2.png"
dest_files=[ "res://.import/Mago2.png-580afc38ef48b4a8981d4ee9071b9422.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

+35
View File
@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Mago2iddle.png-485e80cc6ca2d1075cb9bd7c63dccae5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Mago2iddle.png"
dest_files=[ "res://.import/Mago2iddle.png-485e80cc6ca2d1075cb9bd7c63dccae5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

+35
View File
@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Varinha Velha.png-65312544ce66a98e172c08699a5753cf.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Sprites/Varinha Velha.png"
dest_files=[ "res://.import/Varinha Velha.png-65312544ce66a98e172c08699a5753cf.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0