Skip to content

Commit 71efb8d

Browse files
authored
Merge pull request #5 from Jeremi360/master
Combat system finished
2 parents 31f675f + 80c4755 commit 71efb8d

24 files changed

+356
-90
lines changed

rakugo-rpg/game/rakugo.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[application]
22

33
config/name="Rakugo RPG"
4-
run/main_scene="res://game/Start/Start.tscn"
4+
run/main_scene="res://game/rpg/Start/Start.tscn"
55
rakugo/version="0.1.0"
66
rakugo/game_credits="Jeremi {i}jebedaia360{/i} Biernacki"
77
rakugo/debug=false

rakugo-rpg/game/Characters/Enemy.tscn renamed to rakugo-rpg/game/rpg/Characters/Enemy.tscn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
[gd_scene load_steps=3 format=2]
22

3-
[ext_resource path="res://RPGCharacter.gd" type="Script" id=1]
3+
[ext_resource path="res://game/rpg/Characters/RPGCharacter.gd" type="Script" id=1]
44
[ext_resource path="res://game/assets/sprites/battlers/porcupine.png" type="Texture" id=2]
55

6+
67
[node name="Enemy" type="Node2D"]
78

89
[node name="RPGCharacter" type="Node" parent="."]

rakugo-rpg/game/Characters/Godette.tscn renamed to rakugo-rpg/game/rpg/Characters/Godette.tscn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[gd_scene load_steps=3 format=2]
22

33
[ext_resource path="res://game/assets/sprites/battlers/godette.png" type="Texture" id=1]
4-
[ext_resource path="res://RPGCharacter.gd" type="Script" id=2]
4+
[ext_resource path="res://game/rpg/Characters/RPGCharacter.gd" type="Script" id=2]
55

66
[node name="Godette" type="Node2D"]
77

rakugo-rpg/RPGCharacter.gd renamed to rakugo-rpg/game/rpg/Characters/RPGCharacter.gd

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,20 @@ export (String, FILE, "*.png") var icon_path := ""
77
export (String, "Hero", "Enemy", "NPC") var type := "Hero"
88

99
export var level := 1
10-
# RakugoRangedVar.value is always clamped bettween min and max
11-
var hp := RakugoRangedVar.new("hp", 100, 0, 100)
12-
var mana := RakugoRangedVar.new("mana", 100, 0, 100)
13-
var special := RakugoRangedVar.new("special", 100, 0, 100)
10+
11+
# in enemy case it is max random gold limit that you get when enemy is defeated
12+
export var gold := 100
13+
# in enemy case it is max random exp limit that you get when enemy is defeated
14+
export var max_exp := 100
15+
export var max_hp := 100
16+
export var max_mana := 100
17+
export var max_special := 100
18+
19+
# RakugoRangedVar.value is always clamped bettween min and max
20+
var exp_points := RakugoRangedVar.new("exp_points", 0, 0, max_exp) # "exp" is keyword in GDScript
21+
var hp := RakugoRangedVar.new("hp", 100, 0, max_hp)
22+
var mana := RakugoRangedVar.new("mana", 100, 0, max_mana)
23+
var special := RakugoRangedVar.new("special", 100, 0, max_special)
1424
var unlocked_skills := ["sword attack", "special attack", "healing spell"]
1525

1626
# this are just examples
@@ -24,6 +34,7 @@ var magic_skills := {
2434
var special_skills := {
2535
"special attack": {"cost": 20, "targets": "enemies"}
2636
}
37+
2738
var def := 0
2839

2940
var hp_bar: ProgressBar
@@ -34,13 +45,24 @@ var hit_anim : AnimationPlayer
3445

3546
func _ready():
3647
# this stuff will be saved when player save game
48+
stats["exp_points"] = exp_points
3749
stats["hp"] = hp
3850
stats["mana"] = mana
3951
stats["special"] = special
4052
stats["lvl"] = level
4153
stats["unlocked_skills"] = unlocked_skills
4254

4355

56+
func get_max_exp() -> float:
57+
exp_points.max_value = level * 100
58+
return exp_points.max_value
59+
60+
61+
func get_random_gold() -> int:
62+
randomize()
63+
return randi() % gold
64+
65+
4466
func use_skill(skill: String, target: RPGCharacter = self) -> void:
4567
# override this func in script extend form this one fit your heros and enemies
4668
randomize()
@@ -61,32 +83,33 @@ func use_skill(skill: String, target: RPGCharacter = self) -> void:
6183
if skill == "defense":
6284
self.recive_attack("def", 5 * s, "def")
6385

64-
if skill == "flee":
65-
# simple go back to prev dialog.
66-
Rakugo.hide("CombatArea")
67-
var prev = Rakugo.get_value("prev_dialog")
68-
Rakugo.jump(prev[0], prev[1], prev[2])
69-
7086

7187
func recive_attack(attack_type: String, value: int, anim:String):
7288
# minius will subtract from target hp/mana/def
7389
# plus will add to target hp/mana/def
7490

7591
hit_label.text = str(value)
7692

77-
if value >= 0:
93+
if value > 0:
7894
hit_label.text = "+" + str(value)
7995

80-
hit_anim.play(anim)
81-
96+
if value == 0:
97+
hit_label.text = ""
98+
99+
else:
100+
hit_anim.play(anim)
101+
102+
# normal attack
82103
if attack_type == "hp":
83104
hp.value += value - def
84105
hp_bar.value = hp.value
85-
106+
107+
# add/remove mana
86108
if attack_type == "mana":
87109
mana.value += value - def
88110
mana_bar.value = mana.value
89-
111+
112+
# defense
90113
def = 0
91114

92115
if attack_type == "def":

rakugo-rpg/game/CombatArea/AIManager.gd renamed to rakugo-rpg/game/rpg/CombatArea/AIManager.gd

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,32 @@ extends Node
44
export var combat_panel_path : NodePath
55
export var visual_feedback_path : NodePath
66
export var timer_path : NodePath
7+
export var end_combat_panel_path : NodePath
78

89
onready var combat_panel = get_node(combat_panel_path)
910
onready var visual_feedback : RakugoTextLabel = get_node(visual_feedback_path)
1011
onready var timer : Timer = get_node(timer_path)
12+
onready var end_combat_panel : Panel = get_node(end_combat_panel_path)
13+
1114
var enemy : RPGCharacter setget _set_enemy, _get_enemy
1215

16+
var _enemy : RPGCharacter
17+
1318
var party := []
1419
var enemies := []
1520
var skills := {}
16-
var _enemy : RPGCharacter
17-
var current_enemies_member := 0
21+
22+
var current_enemies_member := 0
23+
var active_party_size := 0 # number of alive party members
24+
var active_enemies_size := 0 # number of alive enemies
25+
26+
func set_party_n_enemies(party_arr:Array, enemies_arr:Array) -> void:
27+
party = party_arr
28+
active_party_size = party_arr.size()
29+
30+
enemies = enemies_arr
31+
active_enemies_size = enemies_arr.size()
32+
1833

1934
func _set_enemy(value:RPGCharacter) -> void:
2035
_enemy = value
@@ -65,14 +80,34 @@ func use_random_skill() -> void:
6580
_enemy.use_skill(skill, target)
6681
visual_feedback.set_visual_feedback(_enemy, skill, target)
6782

83+
if target in party:
84+
if target.hp.value == 0:
85+
active_party_size -= 1
86+
6887
timer.start()
6988
yield(timer, "timeout")
7089

7190
current_enemies_member += 1
72-
if enemies.size() > current_enemies_member:
91+
if active_enemies_size > current_enemies_member:
7392
_set_enemy(enemies[current_enemies_member])
7493

75-
else:
94+
elif active_party_size > 0:
7695
current_enemies_member = 0
7796
combat_panel._set_hero(party[0])
7897
combat_panel.show()
98+
99+
else: # players party lose
100+
player_lose()
101+
102+
103+
func player_lose() -> void:
104+
combat_panel.hide()
105+
var gold := []
106+
for p in party:
107+
gold.append(0)
108+
109+
var exp_points := []
110+
for p in party:
111+
exp_points.append(0)
112+
113+
end_combat_panel.set_result(false, party, gold, exp_points)

rakugo-rpg/game/CombatArea/CombatArea.gd renamed to rakugo-rpg/game/rpg/CombatArea/CombatArea.gd

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@ var temp_id := 0
99

1010
func start_combat(started_by:="party"):
1111
Rakugo.hide("InGameGUI")
12+
$EndCombatPanel.hide()
1213
var party := spawn_party(Rakugo.get_value("party"))
1314
var enemies := spawn_enemies(Rakugo.get_value("enemies"))
1415

15-
$CombatPanel.party = party
16-
$CombatPanel.enemies = enemies
17-
18-
$AIManager.party = party
19-
$AIManager.enemies = enemies
16+
$CombatPanel.set_party_n_enemies(party, enemies)
17+
$AIManager.set_party_n_enemies(party, enemies)
2018

2119
if started_by == "party":
2220
$CombatPanel.current_hero = party[0]

0 commit comments

Comments
 (0)