12 Commits
v1.0 ... master

Author SHA1 Message Date
13a789d0b3 Added installation guide 2020-04-21 11:15:18 +02:00
b7aebd563d Merge pull request #19 from creyD/dev
Bug-Fix on spawning and moving grass
2020-04-21 11:10:51 +02:00
8c9d67d9f8 Added distribution files to gitignore 2020-04-21 11:10:28 +02:00
c1c4ba4349 Removed build information 2020-04-21 11:08:40 +02:00
8bef06f316 Code Cleanup
- Removed most of the unused test sprites
- Moved the other pictures to their objects
- Removed sting, as it is marked as unused
- Removed console "Hey." output
2020-04-21 11:04:16 +02:00
DerAnonymos
74da9131dc Merge pull request #18 from creyD/dev
Bugfix Release
2020-04-21 03:34:33 +02:00
Jan Schuffenhauer
242c6d4b16 Bug-Fix on spowning and moving grass 2020-04-21 03:33:45 +02:00
b0331a38b4 Merge pull request #17 from creyD/master
Backmerge from master
2020-04-21 03:17:52 +02:00
65aaa54187 Fixed background animation 2020-04-21 03:17:27 +02:00
739c4a8a76 Merge pull request #16 from creyD/dev
Minor Cleanup
2020-04-21 03:14:38 +02:00
d12d69f083 Minor Cleanup
- Renamed SoundController
- Cleaned up spacings
- File endings
2020-04-21 03:14:00 +02:00
6c33a3a39c Added release version 2020-04-21 02:35:02 +02:00
100 changed files with 235 additions and 1029 deletions

5
.gitignore vendored
View File

@@ -19,3 +19,8 @@ data_*/
# PyCharm files
.idea/
# DISTRIBUTION FILES
dist/
*.exe
*.pck

View File

@@ -8,6 +8,10 @@ In this game you have cards to help the angry slime boss to survive. Each time a
Have fun playing ~
## Installation
If you want to play the latest version you can go to the [release tab](https://github.com/creyD/ludum_dare_46/releases) of this repository and download the latest .zip file which contains the .exe and .pck file. Alternatively you can go to the [itch.io](https://deranonymos.itch.io/bosskeeper) site of this project and download it from there.
## Context
This is a minigame developed by a team of 8 people for the Ludum Dare No. 46 in 04/2020 over the course of 3 days. The team members consisted of @panorb, @Sonaion, @Streamfire, @DerAnonymos, @Mienek, Leo (for all major assets), Markus (for sounds) and @creyD. It is written in the Godot framework and a playable version can be downloaded on the release page of this repo.

View File

@@ -4,10 +4,10 @@ const EFFECT_LAYERS:int = 20
var _effect: Array = []
var _music: AudioStreamPlayer
#Playback Options
# Playback Options
var _loop: bool = true
#Settings that should be put into an Options script
# Settings that should be put into an Options script
var _music_volume:int = -12
var _effects_volume:int = -12
@@ -18,7 +18,7 @@ func _ready() -> void:
_music.volume_db= _music_volume
_music.connect("finished",self,"sig_music_finished")
add_child(_music)
for i in range(0,EFFECT_LAYERS):
_effect.append(AudioStreamPlayer.new())
_effect[i].volume_db= _effects_volume
@@ -26,44 +26,50 @@ func _ready() -> void:
_effect[i].connect("finished", self, "sig_effect_finished")
add_child(_effect[i])
func pub_play_music(path:String,should_loop:bool=true)-> void:
var stream = load(path)
#AudioServer.set_bus_mute(1, true)
# AudioServer.set_bus_mute(1, true)
_music.stop()
_music.stream = stream
_music.play()
_loop=should_loop
func pub_play_effect(path:String,channel:int=0)-> void:
var stream = load(path)
#AudioServer.set_bus_mute(1, true)
# AudioServer.set_bus_mute(1, true)
_effect[channel].stop()
_effect[channel].stream = stream
_effect[channel].play()
func pub_stop_music()-> void:
_music.stop()
func pub_stop_effect(channel:int)-> void:
_effect[channel].stop()
func pub_stop_effects()-> void:
for i in range(0,EFFECT_LAYERS):
_effect[i].stop()
func pub_stop_all() -> void:
pub_stop_music()
pub_stop_effects()
func sig_music_finished() -> void:
#AudioServer.set_bus_mute(1, false)
# AudioServer.set_bus_mute(1, false)
if _loop :
_music.stop()
_music.play()
pass
func sig_effect_finished() -> void:
#AudioServer.set_bus_mute(1, false)
# AudioServer.set_bus_mute(1, false)
pass

View File

@@ -4,11 +4,11 @@ const DEFAULT_MASS = 2.0
const DEFAULT_SLOW_RADIUS = 200.0
const DEFAULT_MAX_SPEED = 300.0
func arrive_to(velocity,
position_current,
position_target,
mass=DEFAULT_MASS,
slow_radius=DEFAULT_SLOW_RADIUS,
func arrive_to(velocity,
position_current,
position_target,
mass=DEFAULT_MASS,
slow_radius=DEFAULT_SLOW_RADIUS,
max_speed=DEFAULT_MAX_SPEED):
"""
Calculates and returns a new velocity with the arrive steering behavior arrived based on

View File

@@ -27,9 +27,10 @@ var movementState = moveState.MOVE
var damage_per_second := 0.0
var totaldamage := 0.0
func _debug_update():
debug_label.text = str(player_stats.health) + "/" + str(player_stats.max_health) + " HP\n"
func _physics_process(delta):
totaldamage += damage_per_second * delta
@@ -47,13 +48,13 @@ func _physics_process(delta):
movement_move(delta)
moveState.HIT:
movement_hit()
move()
# IMPORTANT: If you are using move_and_slide don't multiply by delta
# Godots physics system does that internally
# In move_and_collide(...) you have to multiply by delta.
# In move_and_collide(...) you have to multiply by delta.
func move():
move_and_slide(velocity)
@@ -68,7 +69,7 @@ func movement_move(delta):
input_vector.x = Input.get_action_strength("right") - Input.get_action_strength("left")
input_vector.y = Input.get_action_strength("down") - Input.get_action_strength("up")
input_vector = input_vector.normalized()
if input_vector == Vector2.ZERO:
#animation_state.travel("idle")
velocity = Vector2.ZERO

View File

@@ -4,9 +4,10 @@
[ext_resource path="res://Overlap/HurtHit_Box/Hitbox.tscn" type="PackedScene" id=2]
[ext_resource path="res://Overlap/Stats/Stats.tscn" type="PackedScene" id=3]
[ext_resource path="res://Boss/Boss_template.gd" type="Script" id=4]
[ext_resource path="res://testSprites/white_boss_dog.png" type="Texture" id=5]
[ext_resource path="res://Boss/white_boss_dog.png" type="Texture" id=5]
[ext_resource path="res://Overlap/Kind.tscn" type="PackedScene" id=6]
[sub_resource type="CapsuleShape2D" id=1]
radius = 18.0
height = 18.0

View File

@@ -14,19 +14,23 @@ var totaldamage := 0.0
var rollvector = Vector2.ZERO
func _debug_update():
debug_label.text = str(player_stats.health) + "/" + str(player_stats.max_health) + " HP\n"
func _ready():
grid = get_tree().current_scene.get_node("Grid")
# IMPORTANT: If you are using move_and_slide don't multiply by delta
# Godots physics system does that internally
# In move_and_collide(...) you have to multiply by delta.
# In move_and_collide(...) you have to multiply by delta.
func move():
move_and_slide(velocity)
_animate(velocity)
func _physics_process(delta):
totaldamage += damage_per_second * delta
player_stats.speed += 10 * delta
@@ -37,7 +41,7 @@ func _physics_process(delta):
totaldamage += 1
player_stats.health += 1
_debug_update()
run(Vector2.ZERO, delta)
makeMove(delta)
move()
@@ -54,18 +58,20 @@ func _on_Hurtbox_area_entered(area):
func _on_Hurtbox_area_exited(area):
damage_per_second -= area.damage
# API Interface for ai_hero
func run(direction, delta):
direction = direction.normalized()
rollvector = direction
velocity = velocity.move_toward(player_stats.speed * rollvector, ACCELERATION * delta)
if direction == Vector2.ZERO:
pass
else:
pass
func _animate(vec):
match get_nearest_diretion(vec):
"up":
@@ -80,8 +86,6 @@ func _animate(vec):
"left":
$Sprite.flip_h=true
$Sprite.play("right")
func get_nearest_diretion(vec):

View File

@@ -18,7 +18,6 @@ export(PHASES) var _phase = PHASES.PHASE_ONE
export(String, FILE, "*.tscn,*.scn") var lose_screen = ""
func _ready():
print("Hey.")
_change_phase(_phase)
$AnimationPlayer.play("__INIT__")
@@ -86,7 +85,7 @@ func _change_phase(new_phase):
PHASES.PHASE_THREE:
$AnimationPlayer.playback_speed = 1.8
phase_name = "Three"
emit_signal("phase_changed", phase_name)
_phase = new_phase
@@ -105,7 +104,7 @@ func _decide_on_next_state():
queue_free()
get_tree().change_scene(lose_screen)
return $States/Dead
if _phase == PHASES.PHASE_ONE:
if angry_phases_done < 1:
set_invincible(true)
@@ -126,7 +125,7 @@ func _decide_on_next_state():
return $States/ChargeSequence
if state_active == $States/ChargeSequence:
return $States/Stomp
if _phase == PHASES.PHASE_TWO:
if angry_phases_done < 2:
set_invincible(true)
@@ -151,7 +150,7 @@ func _decide_on_next_state():
return $States/ChargeSequence
if state_active == $States/ChargeSequence:
return $States/Stomp
if _phase == PHASES.PHASE_THREE:
if angry_phases_done < 3:
set_invincible(true)
@@ -177,7 +176,7 @@ func _decide_on_next_state():
if state_active == $States/ChargeSequence:
return $States/Stomp
@@ -188,4 +187,3 @@ func set_invincible(value):
func _on_Hurtbox_area_entered(area):
$Stats.health -= area.damage

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -2,15 +2,15 @@
importer="texture"
type="StreamTexture"
path="res://.import/Herz.png-3bc4c258170ef18d93a634ef06d06196.stex"
path="res://.import/white_boss_dog.png-2051b871cadef126ef3ce9d25140cd41.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Herz.png"
dest_files=[ "res://.import/Herz.png-3bc4c258170ef18d93a634ef06d06196.stex" ]
source_file="res://Boss/white_boss_dog.png"
dest_files=[ "res://.import/white_boss_dog.png-2051b871cadef126ef3ce9d25140cd41.stex" ]
[params]

View File

@@ -1,5 +1,6 @@
extends Panel
func _on_SlimeBoss_state_changed(new_state_name):
$VBoxContainer/State.text = new_state_name

View File

@@ -16,14 +16,15 @@ var time_passed := 0.0
var offset
export(float, 0, 42.0) var refresh_rate = 0.4
func _point_coors(point : Vector2):
return 14*point.y+point.x
func _ready():
var walls = get_tree().current_scene.get_node("FloorTileMap")
offset = walls.global_position
for x in range(14):
object_grid.push_back([])
prio_grid.push_back([])
@@ -31,7 +32,6 @@ func _ready():
object_grid[x].push_back([Kind.FIELD])
prio_grid[x].push_back([Kind.TERMINAL_SYMBOL])
for tile in walls.get_used_cells():
if(is_in_coord(tile)):
object_grid[tile.x][tile.y][0] = Kind.WALL
@@ -44,62 +44,63 @@ func _ready():
walkableCells.push_back(Vector2(x,y))
var Index = _point_coors(Vector2(x,y))
aStar_node.add_point(Index, Vector3(x,y,0.0))
#add points straight
# add points straight
for point in walkableCells:
var point_index = _point_coors(point)
var points_relative_str = PoolVector2Array([
Vector2(point.x + 1, point.y),
Vector2(point.x - 1, point.y),
Vector2(point.x , point.y + 1),
Vector2(point.x + 1, point.y),
Vector2(point.x - 1, point.y),
Vector2(point.x , point.y + 1),
Vector2(point.x , point.y - 1)
])
for point_rel in points_relative_str:
var point_relative_index = _point_coors(point_rel)
if point_rel == point or not is_in_coord(point_rel):
continue
if not aStar_node.has_point(point_relative_index):
continue
aStar_node.connect_points(point_index, point_relative_index, true)
#diagonal
# diagonal
for point in walkableCells:
var point_index = _point_coors(point)
var points_relative_dia = PoolVector2Array([
Vector2(point.x + 1, point.y + 1), Vector2(point.x, point.y + 1), Vector2(point.x + 1, point.y),
Vector2(point.x - 1, point.y + 1), Vector2(point.x, point.y + 1), Vector2(point.x - 1, point.y),
Vector2(point.x + 1, point.y - 1), Vector2(point.x, point.y - 1), Vector2(point.x + 1, point.y),
Vector2(point.x - 1, point.y - 1), Vector2(point.x, point.y - 1), Vector2(point.x - 1, point.y)
])
for i in range(points_relative_dia.size()/3):
var p_targ = points_relative_dia[i*3]
var p_ch1 = points_relative_dia[i*3+1]
var p_ch2 = points_relative_dia[i*3+2]
var p_targ_c = _point_coors(p_targ)
var p_ch1_c = _point_coors(p_targ)
var p_ch2_c = _point_coors(p_targ)
if p_targ == point or not is_in_coord(p_targ) and not aStar_node.has_point(p_targ_c):
continue
if p_ch1 == point or not is_in_coord(p_ch1) and not aStar_node.has_point(p_ch1_c):
continue
if p_ch2 == point or not is_in_coord(p_ch2) and not aStar_node.has_point(p_ch2_c):
continue
aStar_node.connect_points(point_index, p_targ_c, true)
func recalculate_path():
_point_path = []
var start_index = _point_coors(path_start_position)
var end_index = _point_coors(path_end_position)
_point_path = aStar_node.get_point_path(start_index, end_index)
func _reset_grids():
for x in range(14):
for y in range(7):
@@ -112,7 +113,7 @@ func _reset_grids():
func countTargets(table):
for i in range(table.size()):
table[i]=0
for x in range(14):
for y in range(7):
for i in prio_grid[x][y]:
@@ -128,6 +129,7 @@ func _pixel_to_grid_coords(pixel : Vector2) -> Vector2:
new_coords.y = floor((pixel.y-offset.y) / 32.0)
return new_coords
func get_nearest(position, kind):
var list = []
for x in range(14):
@@ -147,23 +149,24 @@ func get_nearest(position, kind):
mini = i
return list[mini]
func get_fields_around(point):
var points_relative_str = PoolVector2Array([
Vector2(point.x + 1, point.y + 1),
Vector2(point.x - 1, point.y + 1),
Vector2(point.x - 1, point.y + 1),
Vector2(point.x + 1, point.y - 1),
Vector2(point.x - 1, point.y - 1)
])
var point_list = []
for point_rel in points_relative_str:
var point_relative_index = _point_coors(point_rel)
var point_relative_index = _point_coors(point_rel)
if point_rel == point or not is_in_coord(point_rel):
continue
if not aStar_node.has_point(point_relative_index):
continue
point_list.push_back(point_rel)
return point_list
func _update_grid():
_reset_grids()
@@ -175,7 +178,7 @@ func _update_grid():
if(node_kind.general != Kind.FIELD): #and node_kind.general != Kind.WALL):
object_grid[grid_corrds.x][grid_corrds.y].push_back(node_kind.general)
prio_grid[grid_corrds.x][grid_corrds.y].push_back(node_kind.kind)
for y in range(7):
for x in range(14):
var index = _point_coors(Vector2(x,y))
@@ -202,6 +205,7 @@ func _update_grid():
scale = 0
aStar_node.set_point_weight_scale(index, scale)
func _physics_process(delta):
if(time_passed > refresh_rate):
time_passed -= refresh_rate
@@ -221,9 +225,8 @@ func _set_path_start_position(value : Vector2):
return
if not is_in_coord(value):
return
path_start_position = value
path_start_position = value
func _set_path_end_position(value : Vector2):
@@ -231,5 +234,5 @@ func _set_path_end_position(value : Vector2):
return
if not is_in_coord(value):
return
path_end_position = value

View File

@@ -26,20 +26,22 @@ export(String, FILE, "*.tscn,*.scn") var scene_to_load = ""
func _ready():
next()
func _physics_process(delta):
if Input.is_action_just_pressed("dialogue_advance"):
next()
func next():
finished_indicator.modulate = Color(1, 1, 1, 0)
cur_line += 1
if cur_line >= text.size():
get_tree().change_scene(scene_to_load)
return
var line = text[cur_line]
label.text = line
$Tween.interpolate_property(label, "percent_visible",
0, 1, 0.05 * len(line))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Xbox 360 Controller Black Updated.png-0754ef5441fb7e2eb74845b4b0197cb7.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Menus/ControlIcons/Xbox 360 Controller Black Updated.png"
dest_files=[ "res://.import/Xbox 360 Controller Black Updated.png-0754ef5441fb7e2eb74845b4b0197cb7.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Xbox 360 Controller Updated.png-a803c74089c07cfc25b62a4b31dba239.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Menus/ControlIcons/Xbox 360 Controller Updated.png"
dest_files=[ "res://.import/Xbox 360 Controller Updated.png-a803c74089c07cfc25b62a4b31dba239.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -9,10 +9,11 @@ func _process(delta):
animation_player.playback_speed = 8.0
else:
animation_player.playback_speed = 1.0
func _ready():
SoundControler.pub_play_music("res://Menus/Credits/Chad_Crouch_-_Algorithms.ogg",false)
SoundControler.pub_play_music("res://Menus/Credits/Chad_Crouch_-_Algorithms.ogg", false)
func _on_AnimationPlayer_animation_finished(anim_name):
SoundControler.pub_stop_music()

View File

@@ -14,6 +14,7 @@ onready var animation_player = $AnimationPlayer
var first_action = true
func _physics_process(delta):
if Input.is_action_just_pressed("skip"):
if(first_action):
@@ -22,6 +23,7 @@ func _physics_process(delta):
first_action != first_action
next()
func set_dialogue_identifier(val):
dialogue_identifier = val
_dialogue = dialogues.get_dialogue(val)

View File

@@ -16,5 +16,6 @@ func _ready():
"Boss: We'll see about that!"
])
func get_dialogue(id):
return _dialogues[id]

View File

@@ -15,11 +15,13 @@ enum cards {
EMPTY
}
func _ready():
update_cards()
export var ObjectParent:NodePath
func update_cards():
var index = 0
while index < 5 and usedCards[index] != cards.EMPTY:
@@ -45,11 +47,10 @@ func update_cards():
newchild.append(load("res://Objects/Slime/SlimeCard.tscn").instance())
for i in range(index):
$CardsDisplay.add_child(newchild[i])
for i in range(index):
newchild[i].set_begin(cardPositions[i])
for i in range(index):
newchild[i].margin_bottom = newchild[i].margin_top+32
newchild[i].margin_right = newchild[i].margin_left+32

View File

@@ -4,8 +4,9 @@ const Grid = preload("res://Maps/Grid.gd")
onready var grid = get_tree().current_scene.get_node("Grid")
onready var ysort = get_tree().current_scene.get_node("YSort")
#DropZone
#stuff can be dropped here
# DropZone
# Stuff can be dropped here
func can_drop_data(_pos, data):
return typeof(data) == typeof(PackedScene)
@@ -14,7 +15,7 @@ func get_nearest_grid_pos(position, scale = 1):
return Vector2(round(position.x / 32.0) * scale, round(position.y / 32.0) * scale)
#what is to be done when data is dropped
# What is to be done when data is dropped
func drop_data(_pos, data:PackedScene):
var new_pos = get_nearest_grid_pos(_pos)
if grid.object_grid[new_pos.x - 1][new_pos.y - 1].back() == Grid.Kind.FIELD:

View File

@@ -2,12 +2,13 @@ extends TextureRect
# CardDeck
var canNotPlace = false
export var Item:PackedScene
export var PreviewIcon:Texture
export var PreviewIcon:Texture
export var DeleteOnGrab:bool = false
var card_level = 0
#if a drag is initiated here
# if a drag is initiated here
func get_drag_data(_pos):
if (canNotPlace):
return null
@@ -18,7 +19,7 @@ func get_drag_data(_pos):
TR.set_position(_pos * -1, false)
ctrl.add_child(TR)
set_drag_preview(ctrl)
if DeleteOnGrab:
self.queue_free()
return Item

View File

@@ -3,10 +3,12 @@ extends Node2D
export(String, FILE, "*.tscn,*.scn") var restart_scene = ""
export(String, FILE, "*.tscn,*.scn") var title_screen = ""
func _on_Restart_pressed():
get_tree().change_scene(restart_scene)
SoundControler.pub_stop_effects()
func _on_TitleScreen_pressed():
get_tree().change_scene(title_screen)
SoundControler.pub_stop_effects()

View File

@@ -1,17 +1,17 @@
extends Control
const DrNDrPre = preload("res://Menus/DragNDrop/DragNDropUI.gd")
var DrNDr
var DrNDr
var cardPositions = [Vector2(100,150),Vector2(200,150),Vector2(300,150)]
var randcards = [0,0,0]
var showCards = true
var shownCards = []
var allowChoosCards = false
func _ready():
DrNDr = get_tree().current_scene.get_node("CanvasLayer").get_node("DragNDropUI")
func starting():
shownCards = []
@@ -64,16 +64,17 @@ func starting():
shownCards[0].set_begin (cardPositions[0])
shownCards[1].set_begin (cardPositions[1])
shownCards[2].set_begin (cardPositions[2])
for i in range(3):
shownCards[i].canNotPlace = true
shownCards[i].canNotPlace = true
shownCards[i].margin_bottom = shownCards[i].margin_top+32
shownCards[i].margin_right = shownCards[i].margin_left+32
var i = 0
allowChoosCards = true
else:
pass
func _input(event):
if((event is InputEventMouseButton) && allowChoosCards):
for card in range(3):
@@ -98,5 +99,3 @@ func _input(event):
func _on_Button_pressed():
Engine.time_scale=1
self.hide()
pass # Replace with function body.

View File

@@ -2,15 +2,19 @@ extends AnimatedSprite
onready var timer = $Timer
func _ready():
timer.connect("timeout", self, "_timeout")
func start():
timer.set_wait_time(0.25)
timer.start()
func _timeout():
play("begin")
func _animation_finished():
play("loop")

View File

@@ -11,16 +11,18 @@ onready var startup= $Startup
var finished_once := false
func _ready():
startup.start()
animation_player.play("__INIT__")
SoundControler.pub_play_music("res://Menus/Sounds/menu_theme.ogg", false)
func _process(_delta):
if not finished_once and Input.is_action_just_pressed("skip"):
startup.animation = "loop"
startup.frame = 0
if startup.animation == "loop":
if not finished_once:
emit_signal("startup_finished")
@@ -29,5 +31,6 @@ func _process(_delta):
animation_player.play("show_buttons")
finished_once = true
func _exit_tree():
SoundControler.pub_stop_music()

View File

@@ -5,12 +5,13 @@ export(String, FILE, "*.tscn,*.scn") var scene_to_load = ""
export(bool) var quit = false
var ignore_once = false
func _pressed():
SoundControler.pub_play_effect("res://Menus/Sounds/menu_option_select.ogg",0)
if quit:
get_tree().quit()
return
get_tree().change_scene(scene_to_load)
@@ -18,7 +19,6 @@ func _on_TitleScreenButton_mouse_entered():
grab_focus()
func _on_TitleScreenButton_focus_entered():
if not ignore_once:
SoundControler.pub_play_effect("res://Menus/Sounds/menu_focus_change.ogg",0)

View File

@@ -8,6 +8,7 @@ func _on_Restart_pressed():
get_tree().change_scene(restart_scene)
SoundControler.pub_stop_effects()
func _on_TitleScreen_pressed():
get_tree().change_scene(title_screen)
SoundControler.pub_stop_effects()

View File

@@ -1,9 +1,10 @@
extends AnimatedSprite
func _ready():
play("place")
func _on_Hurtbox_area_entered(area):
SoundControler.pub_play_effect("res://Objects/Banana/Banane3.wav",3)
SoundControler.pub_play_effect("res://Objects/Banana/Banane3.wav", 3)
queue_free()

View File

@@ -1,15 +1,17 @@
extends StaticBody2D
export(int,1,10) var health = 1
export(int, 1, 10) var health = 1
var GreenDrop = 0.4
var BlueDrop = 0.5
var RedDrop = 0.8
var Heart = 0.2
func offset_vec():
var offset = 16
return Vector2((randf()-0.5)*offset, (randf()-0.5)*offset)
func _on_Hurtbox_area_entered(area):
health -= area.damage
if(health>0):
@@ -20,8 +22,8 @@ func _on_Hurtbox_area_entered(area):
var BlueRubies = load("res://Objects/Rubies/Blue.tscn")
var RedRubies = load("res://Objects/Rubies/Red.tscn")
var Hearts = load("res://Objects/Heart/Heart.tscn")
#index of ysort
# index of ysort
var world = get_tree().current_scene.get_node("YSort")
if(randf()<GreenDrop):
var green = GreenRubies.instance()
@@ -39,4 +41,3 @@ func _on_Hurtbox_area_entered(area):
var heart = Hearts.instance()
world.add_child(heart)
heart.global_position = global_position+offset_vec()

View File

@@ -1,10 +1,10 @@
extends StaticBody2D
# This is the decay script for the barrier
# TODO: please adjust it for actual gameplay
export (float, 0.5, 10.0) var decay_time = 1.5
func on_timer_timeout():
queue_free()

View File

@@ -1,12 +1,15 @@
extends StaticBody2D
func _sound_finished():
SoundControler.pub_play_effect("res://Objects/Bonfire/Bonfire.wav",3)
SoundControler.pub_play_effect("res://Objects/Bonfire/Bonfire.wav", 3)
func _ready():
SoundControler.pub_play_effect("res://Objects/Bonfire/Bonfire.wav",3)
SoundControler.pub_play_effect("res://Objects/Bonfire/Bonfire.wav", 3)
SoundControler._effect[3].volume_db = -20
SoundControler._effect[3].connect("finished",self,"_sound_finished")
SoundControler._effect[3].connect("finished", self, "_sound_finished")
func _on_Hurtbox_area_entered(area):
queue_free()

View File

@@ -1,11 +1,12 @@
extends Node2D
var CHANNEL = 2
#one sound will be chosen at random
export var SoundLibary :PoolStringArray=[]
# One walk sound will be chosen at random
func _on_Hurtbox_area_entered(area):
var sound = SoundLibary[rand_range(0,SoundLibary.size())]
SoundControler.pub_play_effect(sound,CHANNEL)
queue_free()

View File

@@ -1,9 +1,6 @@
extends Node2D
func _on_Hurtbox_area_entered(area):
SoundControler.pub_play_effect("res://Objects/Rubies/emerald3.wav",8)
queue_free()

View File

@@ -2,4 +2,4 @@ extends Node2D
func _on_Hurtbox_area_entered(area):
SoundControler.pub_play_effect("res://Objects/Slime/Schleim.wav",3)
SoundControler.pub_play_effect("res://Objects/Slime/Schleim.wav",3)

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://testSprites/slime.png" type="Texture" id=1]
[ext_resource path="res://Objects/Slime/slime.png" type="Texture" id=1]
[ext_resource path="res://Overlap/HurtHit_Box/Hurtbox.tscn" type="PackedScene" id=2]
[ext_resource path="res://Overlap/Kind.tscn" type="PackedScene" id=3]
[ext_resource path="res://Objects/Slime/Slime.gd" type="Script" id=4]

View File

@@ -6,14 +6,14 @@
[ext_resource path="res://Objects/Card/level0.png" type="Texture" id=4]
[ext_resource path="res://Objects/Card/card.png" type="Texture" id=5]
[ext_resource path="res://Objects/Slime/Slime.tscn" type="PackedScene" id=6]
[ext_resource path="res://testSprites/slime.png" type="Texture" id=7]
[ext_resource path="res://Objects/Slime/slime.png" type="Texture" id=7]
[ext_resource path="res://Objects/Slime/slime_icon.png" type="Texture" id=8]
[sub_resource type="SpriteFrames" id=1]
animations = [ {
"frames": [ ExtResource( 4 ) ],
"frames": [ ExtResource( 3 ) ],
"loop": false,
"name": "lvl0",
"name": "lvl1",
"speed": 60.0
}, {
"frames": [ ExtResource( 2 ) ],
@@ -21,9 +21,9 @@ animations = [ {
"name": "lvl2",
"speed": 60.0
}, {
"frames": [ ExtResource( 3 ) ],
"frames": [ ExtResource( 4 ) ],
"loop": false,
"name": "lvl1",
"name": "lvl0",
"speed": 60.0
} ]

View File

Before

Width:  |  Height:  |  Size: 870 B

After

Width:  |  Height:  |  Size: 870 B

View File

@@ -2,15 +2,15 @@
importer="texture"
type="StreamTexture"
path="res://.import/slime.png-a6522e01afef029b95bf429fc9a16878.stex"
path="res://.import/slime.png-4296fd3685c72f02a12d0a931a591428.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/slime.png"
dest_files=[ "res://.import/slime.png-a6522e01afef029b95bf429fc9a16878.stex" ]
source_file="res://Objects/Slime/slime.png"
dest_files=[ "res://.import/slime.png-4296fd3685c72f02a12d0a931a591428.stex" ]
[params]

View File

@@ -6,10 +6,12 @@ var Minion = load("res://Boss/Minion.tscn")
var elapsedTime = 0.0
func offset_vec():
var offset = 16
return Vector2((randf()-0.5)*offset, (randf()-0.5)*offset)
func _physics_process(delta):
elapsedTime += delta
if(elapsedTime>=spawnRate):
@@ -30,6 +32,7 @@ func _on_Hurtbox_area_entered(area):
func _sound_finished():
SoundControler.pub_play_effect("res://Objects/Torch/Torch.wav",4)
func _ready():
SoundControler.pub_play_effect("res://Objects/Torch/Torch.wav",4)
SoundControler._effect[4].volume_db = -20

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://testSprites/fackel.png" type="Texture" id=1]
[ext_resource path="res://Objects/Torch/fakel/fakel_000.png" type="Texture" id=1]
[ext_resource path="res://Objects/Card/card.png" type="Texture" id=2]
[ext_resource path="res://Menus/DragNDrop/DragSource.gd" type="Script" id=3]
[ext_resource path="res://Objects/Card/level0.png" type="Texture" id=4]

View File

@@ -1,5 +1,6 @@
extends Node2D
func _on_Hurtbox_area_entered(area):
$AnimatedSprite.play("clap")
SoundControler.pub_play_effect("res://Objects/Traps/Bear/Barenfalle.wav",3)

View File

@@ -9,6 +9,7 @@ func on_timer_timeout():
SoundControler.pub_stop_effect(4)
queue_free()
func _ready():
$Sprite.play("burn")
add_child(timer)
@@ -18,16 +19,12 @@ func _ready():
SoundControler.pub_play_effect("res://Objects/Traps/Flame/Fire.wav",5)
SoundControler._effect[5].volume_db = -20
SoundControler._effect[5].connect("finished",self,"_sound_finished")
func _on_Hitbox_body_entered(body):
if(body.get_name() == "Player"):
body.velocity*=-3
func _sound_finished():
SoundControler.pub_play_effect("res://Objects/Traps/Flame/Fire.wav",5)

View File

@@ -4,20 +4,23 @@ export(float, 0.1, 3.0) var time_to_recharge = 3.0
var time = Timer.new()
func _ready():
add_child(time)
$Sprite.play("out")
SoundControler.pub_play_effect("res://Objects/Traps/Spike/Spike6.wav",9)
$"Hitbox/CollisionShape2D".disabled = true
func on_timer_timeout():
$Sprite.play("out")
SoundControler.pub_play_effect("res://Objects/Traps/Spike/Spike6.wav",9)
time.stop()
func _on_Sprite_animation_finished():
if $Sprite.get_animation() == "default":
$"Hitbox/CollisionShape2D".disabled = false
$"Hitbox/CollisionShape2D".disabled = false
if $Sprite.get_animation() == "out":
$Sprite.play("default")
elif $Sprite.get_animation() == "in":
@@ -33,5 +36,3 @@ func _on_Hitbox_area_entered(area):
if($Sprite.get_animation()=="default"):
SoundControler.pub_play_effect("res://Objects/Traps/Spike/Spike6.wav",9)
$Sprite.play("in")

View File

@@ -1,30 +0,0 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://Overlap/HurtHit_Box/Hitbox.tscn" type="PackedScene" id=1]
[ext_resource path="res://Objects/Banana/Banana.gd" type="Script" id=2]
[ext_resource path="res://testSprites/Sting.png" type="Texture" id=3]
[ext_resource path="res://Overlap/Kind.tscn" type="PackedScene" id=4]
[sub_resource type="CapsuleShape2D" id=1]
radius = 6.77597
height = 6.36237
[node name="Sting" type="Node2D"]
script = ExtResource( 2 )
[node name="Kind" parent="." instance=ExtResource( 4 )]
kind = 10
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 0.44072, -9.03499 )
texture = ExtResource( 3 )
[node name="Hitbox" parent="." instance=ExtResource( 1 )]
collision_layer = 16
[node name="CollisionShape2D" parent="Hitbox" index="0"]
position = Vector2( -0.771278, -0.110184 )
rotation = 1.5708
shape = SubResource( 1 )
[editable path="Hitbox"]

View File

@@ -1,52 +0,0 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://testSprites/Sting.png" type="Texture" id=1]
[ext_resource path="res://Objects/Card/card.png" type="Texture" id=2]
[ext_resource path="res://Menus/DragNDrop/DragSource.gd" type="Script" id=3]
[ext_resource path="res://Objects/Card/level0.png" type="Texture" id=4]
[ext_resource path="res://Objects/Card/level2.png" type="Texture" id=5]
[ext_resource path="res://Objects/Card/level1.png" type="Texture" id=6]
[ext_resource path="res://Objects/Traps/Sting (UNUSED)/Sting.tscn" type="PackedScene" id=7]
[sub_resource type="SpriteFrames" id=1]
animations = [ {
"frames": [ ExtResource( 4 ) ],
"loop": false,
"name": "lvl0",
"speed": 60.0
}, {
"frames": [ ExtResource( 6 ) ],
"loop": false,
"name": "lvl1",
"speed": 60.0
}, {
"frames": [ ExtResource( 5 ) ],
"loop": false,
"name": "lvl2",
"speed": 60.0
} ]
[node name="StingCard" type="TextureRect"]
margin_left = 10.7364
margin_top = 227.792
margin_right = 42.7364
margin_bottom = 259.792
texture = ExtResource( 1 )
expand = true
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
}
Item = ExtResource( 7 )
PreviewIcon = ExtResource( 1 )
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 15.729, 15.7929 )
z_index = -1
texture = ExtResource( 2 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
position = Vector2( 33.1035, 40.3068 )
frames = SubResource( 1 )
animation = "lvl0"

View File

@@ -51,34 +51,34 @@ func calcTotalPrio():
sum += prios[i]
i += 1
return sum
#calculates the relative porio
func calcRelPrio(index, sum) -> float:
if(sum==0):
return 0.0
return float(prios[index])/float(sum)
#calucaltes the prio table of all enemies[0,1)
func calcPrioTable():
var table = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
numbers = grid.countTargets(numbers)
var lower = 0.0
var sum = calcTotalPrio()
var i = 0;
while i != Grid.Kind.TERMINAL_SYMBOL:
if(numbers[i]!=0):
lower += calcRelPrio(i, sum)
table[i] = lower
i += 1
return table
#updates heart and bonfire prio
func adjustPrio(currentHealth, maxHealth):
var prioVal = 20.0 - (float(currentHealth)/float(maxHealth))*20.0
var bonfire = prioVal + 1
var hearts = prioVal
var hearts = prioVal
if(hearts < 0):
hearts = 0
prios[Grid.Kind.BONFIRE]=bonfire
@@ -104,7 +104,7 @@ func getMoveDescription(myPosition : Vector2, targetPositions : Vector2):
var from = grid._point_path[0]
var p1 = pow(to[0]-from[0],2)
var p2 = pow(to[1]-from[1],2)
var norm = sqrt(p1+p2)
var move = STEP
if(norm > 1.0 && p1 != p2):
@@ -116,7 +116,7 @@ func getMoveDescription(myPosition : Vector2, targetPositions : Vector2):
func movement_calulcaotr():
var currentPosition = grid._pixel_to_grid_coords(global_position)
var enemyKind
numbers = grid.countTargets(numbers)
if(actionKind == grid.Kind.TERMINAL_SYMBOL || numbers[actionKind]==0 || actionFieldUsed==false):
enemyKind = calcEnemyKind()
@@ -126,13 +126,13 @@ func movement_calulcaotr():
return
else:
enemyKind = actionKind
var targetField = grid.get_nearest(currentPosition, enemyKind)
if(targetField==[-1,-1]):
return
return
return getMoveDescription(currentPosition, Vector2(targetField[0], targetField[1]))
func is_hittable():
var length = areaRefList.size()
@@ -145,11 +145,11 @@ func hit_or_miss(target, current, delta):
func movement_decider_ai(target, kindOfStep, delta):
var currentPosition = grid._pixel_to_grid_coords(global_position)
hitDelta -= hitTreshhold
var currentPixel = global_position
var hitPixelTarget = is_hittable()
if hitPixelTarget!=null && randf()<1:
hit_or_miss(hitPixelTarget, currentPixel, delta*4)
else:
@@ -159,15 +159,15 @@ func movement_decider_ai(target, kindOfStep, delta):
ai_movement_state = STEP
elif(kindOfStep==ROLL):
roll(Vector2(target[0]-currentPosition[0], target[1]-currentPosition[1]), delta*4)
targetFieldCur = target
targetFieldCur = target
targetFieldUsed = true
ExecutionState = EXECUTING
func movement_execution(delta):
func movement_execution(delta):
if(targetFieldUsed):
var cur = grid._pixel_to_grid_coords(global_position)
var distance = sqrt(pow(cur[0]-targetFieldCur[0],2)+ pow(cur[1]-targetFieldCur[1],2))
@@ -184,16 +184,16 @@ func movement_execution(delta):
elif(ai_movement_state==ROLL):
run(Vector2(targetFieldCur[0]-currentPosition[0], targetFieldCur[1]-currentPosition[1]), delta*4)
else:
ExecutionState = AI_MOVE
func reset_exeution_state(delta):
ExecutionState = AI_MOVE
func reset_exeution_state(delta):
threadDelta = threadDelta + delta
if(threadDelta>threadTime):
ExecutionState = AI_MOVE
actionFieldUsed = false
actionFieldUsed = false
func makeMove(delta):
lock.lock()
if ExecutionState == AI_MOVE:
@@ -202,8 +202,8 @@ func makeMove(delta):
if(MoveAdvice==null):
return
var target = MoveAdvice[1]
movement_decider_ai(target, MoveAdvice[0], delta)
movement_decider_ai(target, MoveAdvice[0], delta)
if ExecutionState == EXECUTING:
movement_execution(delta)
reset_exeution_state(delta)
@@ -221,4 +221,4 @@ func roll(direction, delta):
func run(direction, delta):
pass
#todo
#todo

View File

@@ -49,27 +49,27 @@ func calcTotalPrio():
sum += prios[i]
i += 1
return sum
#calculates the relative porio
func calcRelPrio(index, sum) -> float:
if(sum==0):
return 0.0
return float(prios[index])/float(sum)
#calucaltes the prio table of all enemies[0,1)
func calcPrioTable():
var table = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
numbers = grid.countTargets(numbers)
var lower = 0.0
var sum = calcTotalPrio()
var i = 0;
while i != Grid.Kind.TERMINAL_SYMBOL:
if(numbers[i]!=0):
lower += calcRelPrio(i, sum)
table[i] = lower
i += 1
return table
#return the enemie which will be attacked
@@ -88,7 +88,7 @@ func getMoveDescription(myPosition : Vector2, targetPositions : Vector2):
grid.recalculate_path()
if(grid._point_path.size()<=1):
return [NOTHING, [0,0]]
var move = STEP
return [move, grid._point_path[1]]
@@ -97,7 +97,7 @@ func getMoveDescription(myPosition : Vector2, targetPositions : Vector2):
func movement_calulcaotr():
var currentPosition = grid._pixel_to_grid_coords(global_position)
var enemyKind
numbers = grid.countTargets(numbers)
if(actionKind == grid.Kind.TERMINAL_SYMBOL || numbers[actionKind]==0 || actionFieldUsed==false):
enemyKind = calcEnemyKind()
@@ -107,28 +107,28 @@ func movement_calulcaotr():
return
else:
enemyKind = actionKind
var targetField = grid.get_nearest(currentPosition, enemyKind)
if(targetField==[-1,-1]):
return
return
return getMoveDescription(currentPosition, Vector2(targetField[0], targetField[1]))
func movement_decider_ai(target, kindOfStep, delta):
var currentPosition = grid._pixel_to_grid_coords(global_position)
run(Vector2(target[0]-currentPosition[0], target[1]-currentPosition[1]), delta*4)
targetFieldCur = target
ai_movement_state = STEP
targetFieldCur = target
targetFieldCur = target
targetFieldUsed = true
ExecutionState = EXECUTING
func movement_execution(delta):
func movement_execution(delta):
if(targetFieldUsed):
var cur = grid._pixel_to_grid_coords(global_position)
var distance = sqrt(pow(cur[0]-targetFieldCur[0],2)+ pow(cur[1]-targetFieldCur[1],2))
@@ -142,16 +142,16 @@ func movement_execution(delta):
var currentPosition = grid._pixel_to_grid_coords(global_position)
if(ai_movement_state==STEP):
run(Vector2(targetFieldCur[0]-currentPosition[0], targetFieldCur[1]-currentPosition[1]), delta*4)
func reset_exeution_state(delta):
func reset_exeution_state(delta):
threadDelta = threadDelta + delta
if(threadDelta>threadTime):
ExecutionState = AI_MOVE
actionFieldUsed = false
actionFieldUsed = false
func makeMove(delta):
lock.lock()
if ExecutionState == AI_MOVE:
@@ -160,8 +160,8 @@ func makeMove(delta):
if(MoveAdvice==null):
return
var target = MoveAdvice[1]
movement_decider_ai(target, MoveAdvice[0], delta)
movement_decider_ai(target, MoveAdvice[0], delta)
if ExecutionState == EXECUTING:
movement_execution(delta)
reset_exeution_state(delta)
@@ -172,4 +172,4 @@ func makeMove(delta):
func run(direction, delta):
pass
#todo
#todo

View File

@@ -2,4 +2,4 @@ extends Area2D
export(int, 0, 20) var currency_value:=0
export(int, 0, 2) var health_value:=0
export(int, 0, 300) var slowdown_value:=0
export(int, 0, 300) var slowdown_value:=0

View File

@@ -1 +0,0 @@
extends Node

View File

@@ -1,6 +0,0 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://Overlap/Mechanics/Mechanics.gd" type="Script" id=1]
[node name="Core" type="Node"]
script = ExtResource( 1 )

View File

@@ -37,8 +37,5 @@ func go_to_next_state_in_sequence():
emit_signal('finished')
return
state_active = get_child(new_state_index)
state_active.enter()

View File

@@ -45,14 +45,14 @@ func change_state(state_name):
if not _active:
return
current_state.exit()
if state_name == "previous":
states_stack.pop_front()
else:
states_stack[0] = states_map[state_name]
current_state = states_stack[0]
emit_signal("state_changed", current_state)
if state_name != "previous":
current_state.enter()

View File

@@ -16,9 +16,9 @@ func set_health(value):
health = value
if health < 1:
emit_signal("no_health")
emit_signal("health_changed", health)
func set_speed(value):
if value > max_speed:
speed = max_speed
@@ -26,5 +26,3 @@ func set_speed(value):
speed = 0.0
else:
speed = value

View File

@@ -89,7 +89,7 @@ func _physics_process(delta):
# IMPORTANT: If you are using move_and_slide don't multiply by delta
# Godots physics system does that internally
# In move_and_collide(...) you have to multiply by delta.
# In move_and_collide(...) you have to multiply by delta.
func move():
move_and_slide(velocity)
@@ -114,7 +114,7 @@ func run(direction, delta):
rollvector = direction
movementState = moveState.MOVE
velocity = velocity.move_toward(player_stats.speed * rollvector, ACCELERATION * delta)
if direction == Vector2.ZERO:
animation_state.change_state("idle")
else:
@@ -122,7 +122,7 @@ func run(direction, delta):
func movement_move(delta):
var input_vector = Vector2.ZERO
# This is a clever way to handle directional input
# Input.get_action_strength(...) returns a value between 0 and 1 depending
@@ -132,13 +132,13 @@ func movement_move(delta):
input_vector.x = Input.get_action_strength("right") - Input.get_action_strength("left")
input_vector.y = Input.get_action_strength("down") - Input.get_action_strength("up")
input_vector = input_vector.normalized()
if input_vector == Vector2.ZERO:
animation_state.change_state("idle")
velocity = Vector2.ZERO
else:
rollvector = input_vector
animation_state.change_state("run")
animation_state.change_state("run")
velocity = velocity.move_toward(player_stats.speed * input_vector, ACCELERATION * delta)
if Input.is_action_just_pressed("roll"):
movementState = moveState.ROLL
@@ -172,7 +172,7 @@ func roll_finished():
func _on_Hurtbox_area_entered(area):
if("damage" in area):
player_stats.health -= area.damage
if area.damage > 0:
damage_per_second += area.damage
SoundControler.pub_play_effect("res://Player/Sounds/Hurt.wav",1)
@@ -197,7 +197,7 @@ func _on_Stats_no_health():
queue_free()
get_tree().get_root().get_node("World").hero_has_died()
#get_tree().change_scene("res://Menus/TitleScreen/TitleScreen.tscn")
func _on_Hitbox_area_entered(area):
currency += area.currency_value

View File

@@ -30,7 +30,7 @@ func _play_random_sound():
if delay_passed and is_playing_sound==false:
var sound = SoundLibary[rand_range(0,SoundLibary.size())]
SoundControler.pub_play_effect(sound,CHANNEL)
is_playing_sound = true
delay_passed=false
#timer.start(Delay)

View File

@@ -30,7 +30,7 @@ func _play_random_sound():
if delay_passed and is_playing_sound==false:
var sound = SoundLibary[rand_range(0,SoundLibary.size())]
SoundControler.pub_play_effect(sound,CHANNEL)
is_playing_sound = true
delay_passed=false
#timer.start(Delay)

View File

@@ -22,14 +22,14 @@ func determine_spawnpoint():
while(point.distance_to($YSort/SlimeBoss.position) < MinDistanceToBoss):
point = Vector2(rand_range(SpawnBoxRange.position.x,SpawnBoxRange.position.x+SpawnBoxRange.size.x),rand_range(SpawnBoxRange.position.y,SpawnBoxRange.position.y+SpawnBoxRange.size.y))
return point
func hero_has_died():
round_counter += 1
if (round_counter >= WinRounds and not passed_final_Round):
passed_final_Round = true
$CanvasLayer/Win.show()
Engine.time_scale = 0
var point = determine_spawnpoint()
spawn_new_hero(point.x, point.y)

View File

@@ -241,10 +241,12 @@ __meta__ = {
}
WinRounds = 5
HeroTemplate = ExtResource( 1 )
SpawnBoxRange = Rect2( 32, 32, 448, 160 )
[node name="Background" parent="." instance=ExtResource( 7 )]
pause_mode = 1
frame = 20
frame = 46
playing = true
[node name="FloorTileMap" type="TileMap" parent="."]
pause_mode = 1

View File

@@ -62,7 +62,7 @@ config/icon="res://icon.png"
[autoload]
SoundControler="*res://Autoloads/SoundControler.gd"
SoundControler="*res://Autoloads/SoundController.gd"
Steering="*res://Autoloads/Steering.gd"
Globals="*res://Autoloads/Globals.gd"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Bonfire.png-0056030a521835d2d33fb9bceb6d8997.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Bonfire.png"
dest_files=[ "res://.import/Bonfire.png-0056030a521835d2d33fb9bceb6d8997.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 767 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Fass.png-8b7a9a62cc4ca5f013bfec2b63e29313.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Fass.png"
dest_files=[ "res://.import/Fass.png-8b7a9a62cc4ca5f013bfec2b63e29313.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 526 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Feld.png-c21f03c272e80c9c8e7a3328218f65d8.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Feld.png"
dest_files=[ "res://.import/Feld.png-c21f03c272e80c9c8e7a3328218f65d8.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 740 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spike.png-17aaa39383a87ae5308a6f2b8336cac9.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Spike.png"
dest_files=[ "res://.import/Spike.png-17aaa39383a87ae5308a6f2b8336cac9.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spikes.png-258fd7509c119e5f872643f64387e2ab.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Spikes.png"
dest_files=[ "res://.import/Spikes.png-258fd7509c119e5f872643f64387e2ab.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Stacheln.png-a262c39a5c0980bd148668a8b3427fa1.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Stacheln.png"
dest_files=[ "res://.import/Stacheln.png-a262c39a5c0980bd148668a8b3427fa1.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 737 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Sting.png-e22bdef704d05705a069385cfac8dcfc.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Sting.png"
dest_files=[ "res://.import/Sting.png-e22bdef704d05705a069385cfac8dcfc.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Trapdoor.png-c2738d9eef9c8010fb0124dcf9d0d7a2.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/Trapdoor.png"
dest_files=[ "res://.import/Trapdoor.png-c2738d9eef9c8010fb0124dcf9d0d7a2.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 668 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/bannane.png-52f1a956970a05bcc1055ac2236d86a9.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/bannane.png"
dest_files=[ "res://.import/bannane.png-52f1a956970a05bcc1055ac2236d86a9.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/blue_Rubi.png-9625c4b3c5ecaa7b4fc37f51c35c8e47.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/blue_Rubi.png"
dest_files=[ "res://.import/blue_Rubi.png-9625c4b3c5ecaa7b4fc37f51c35c8e47.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/boss.png-6d73e25c3fd73041fcd6730f17d14bfc.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/boss.png"
dest_files=[ "res://.import/boss.png-6d73e25c3fd73041fcd6730f17d14bfc.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 522 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/dark.png-244965b9aa8a3636dc037fc3a79d9bb8.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/dark.png"
dest_files=[ "res://.import/dark.png-244965b9aa8a3636dc037fc3a79d9bb8.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=1
flags/filter=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/fackel.png-e9ccd3bef19ad0bbdb9bca3cb024b922.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/fackel.png"
dest_files=[ "res://.import/fackel.png-e9ccd3bef19ad0bbdb9bca3cb024b922.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 588 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/falle.png-858aa2a4f958f955dd4c5ee449d71762.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/falle.png"
dest_files=[ "res://.import/falle.png-858aa2a4f958f955dd4c5ee449d71762.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/flame.png-b8cd34852af979f045ce8148b44529fa.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/flame.png"
dest_files=[ "res://.import/flame.png-b8cd34852af979f045ce8148b44529fa.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/green_Rubi.png-659679d4a707d42e77f5dee224448c84.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/green_Rubi.png"
dest_files=[ "res://.import/green_Rubi.png-659679d4a707d42e77f5dee224448c84.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/red_Rubi.png-6854b9aa4bb192eb8324d652ac8da698.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/red_Rubi.png"
dest_files=[ "res://.import/red_Rubi.png-6854b9aa4bb192eb8324d652ac8da698.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/wand.png-c2fe8db0134f32b9bf06b1df0358a83c.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/wand.png"
dest_files=[ "res://.import/wand.png-c2fe8db0134f32b9bf06b1df0358a83c.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/white_boss_dog.png-71758567a6659e328126f0647eb38c8d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/white_boss_dog.png"
dest_files=[ "res://.import/white_boss_dog.png-71758567a6659e328126f0647eb38c8d.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/white_minion_dog.png-4b59df758535e1f8bd50b861a164b220.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://testSprites/white_minion_dog.png"
dest_files=[ "res://.import/white_minion_dog.png-4b59df758535e1f8bd50b861a164b220.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=false
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
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0