diff --git a/buildings/airport.xscn b/buildings/airport.xscn index 1708e3e2..ef96b481 100644 --- a/buildings/airport.xscn +++ b/buildings/airport.xscn @@ -1,7 +1,7 @@ - + @@ -42,7 +42,7 @@ 4 True 0, 128, 64, 64 - + "__editor_plugin_screen__" "2D" diff --git a/buildings/barrack.xscn b/buildings/barrack.xscn index 0e22d544..33726785 100644 --- a/buildings/barrack.xscn +++ b/buildings/barrack.xscn @@ -1,7 +1,7 @@ - + @@ -39,7 +39,7 @@ True 0, 0, 64, 64 - + "__editor_plugin_screen__" "2D" diff --git a/buildings/bunker_blue.xscn b/buildings/bunker_blue.xscn index c5601168..48d0e76e 100644 --- a/buildings/bunker_blue.xscn +++ b/buildings/bunker_blue.xscn @@ -2,7 +2,7 @@ - + "conn_count" diff --git a/buildings/bunker_red.xscn b/buildings/bunker_red.xscn index 67d483b7..06ddad4f 100644 --- a/buildings/bunker_red.xscn +++ b/buildings/bunker_red.xscn @@ -2,7 +2,7 @@ - + "conn_count" diff --git a/buildings/factory.xscn b/buildings/factory.xscn index 97482d6f..6f77eebf 100644 --- a/buildings/factory.xscn +++ b/buildings/factory.xscn @@ -1,7 +1,7 @@ - + @@ -38,7 +38,7 @@ True 0, 64, 64, 64 - + "__editor_plugin_screen__" "2D" diff --git a/buildings/tower.xscn b/buildings/tower.xscn index 7c9e4606..55f46de2 100644 --- a/buildings/tower.xscn +++ b/buildings/tower.xscn @@ -1,7 +1,7 @@ - + @@ -38,7 +38,7 @@ True 0, 256, 64, 64 - + "__editor_plugin_screen__" "2D" diff --git a/particle/smoke.xscn b/particle/smoke.xscn index 1a01e312..94477e1f 100644 --- a/particle/smoke.xscn +++ b/particle/smoke.xscn @@ -119,7 +119,7 @@ 0 "sources" - "res://scripts/building.gd" + "res://scripts/objects/building.gd" "res://scripts/terrain.gd" diff --git a/scripts/ai/actions/estimators/unit/estimator.gd b/scripts/ai/actions/estimators/unit/estimator.gd index 956fe00b..ccd4eb01 100644 --- a/scripts/ai/actions/estimators/unit/estimator.gd +++ b/scripts/ai/actions/estimators/unit/estimator.gd @@ -39,10 +39,14 @@ func can_move(action): func get_waypoint_value(action): var object = self.bag.abstract_map.get_field(action.point_of_interest.position_on_map).object + var value = 0 if object == null: return 0 + value = self.waypoint_value[object.type] #TODO - stub for waypoint handling - return self.waypoint_value[object.type] + if action.destination.group == 'waypoint' and action.destination.subtype == action.destination.TYPE_SPAWN_POINT: + value = value + 1 + return value func enemies_in_sight(action): var nearby_tiles = self.bag.positions.get_nearby_tiles(action.path[0], 4) diff --git a/scripts/ai/actions_handler.gd b/scripts/ai/actions_handler.gd index b539d8a3..09f87f1e 100644 --- a/scripts/ai/actions_handler.gd +++ b/scripts/ai/actions_handler.gd @@ -2,7 +2,7 @@ extends "res://scripts/bag_aware.gd" var actions = [] var action = preload('actions/action.gd') -var waypoint = preload('../waypoint.gd') +var waypoint = preload('../objects/waypoint.gd') const ACTION_OLD_THRESHOLD = 100 const ACTION_UNUSED_OLD_THRESHOLD = 15 @@ -14,18 +14,33 @@ func add_waypoint_action(unit, destination, ttl = self.action.DEFAULT_TTL): var waypoint_obj = null var destination_field var nearby_tiles = self.bag.positions.get_nearby_tiles(destination.position_on_map, 1) + var subtype = null + var spawn_point = null + if destination.group == 'building': + spawn_point = destination.spawn_point + for move_destination in nearby_tiles: if unit.position_on_map == move_destination: self.actions.append(self.create_action(unit, destination, destination, ttl)) return - - for move_destination in nearby_tiles: - destination_field = self.bag.abstract_map.get_field(move_destination) - if destination_field.is_passable(): - waypoint_obj = self.waypoint.new(move_destination) - if not self.get_action(unit, waypoint_obj): - self.actions.append(self.create_action(unit, waypoint_obj, destination, ttl)) + if unit.type == 0: + for move_destination in nearby_tiles: + destination_field = self.bag.abstract_map.get_field(move_destination) + if destination_field.is_passable(): + waypoint_obj = self.waypoint.new(move_destination) + if move_destination == spawn_point: + subtype = waypoint.TYPE_SPAWN_POINT + else: + subtype = waypoint.TYPE_BULDING_AREA + + waypoint_obj = self.waypoint.new(move_destination, subtype) + if not self.get_action(unit, waypoint_obj): + self.actions.append(self.create_action(unit, waypoint_obj, destination, ttl)) + else: + waypoint_obj = self.waypoint.new(destination.spawn_point, waypoint.TYPE_SPAWN_POINT) + if not self.get_action(unit, waypoint_obj): + self.actions.append(self.create_action(unit, waypoint_obj, destination, ttl)) func add_action(unit, destination, ttl = self.action.DEFAULT_TTL): if self.get_action(unit, destination): diff --git a/scripts/ai/ai.gd b/scripts/ai/ai.gd index b2c68ad5..806ba2e5 100644 --- a/scripts/ai/ai.gd +++ b/scripts/ai/ai.gd @@ -95,9 +95,9 @@ func __gather_destinations(unit): destinations = destinations + self.bag.positions.get_nearby_enemy_buildings(nearby_tiles, self.player) destinations = destinations + self.bag.positions.get_nearby_empty_buldings(nearby_tiles) else: - for building in self.bag.positions.get_nearby_enemy_buildings(nearby_tiles, self.player): - #destinations.append(building.get_spawn_point_pos()) # TODO - create dummy obj for spawn - pass + for building in self.bag.positions.get_nearby_enemy_buildings(nearby_tiles, self.player): + destinations = destinations + self.bag.positions.get_nearby_enemy_buildings(nearby_tiles, self.player) + pass if destinations.size() > self.MIN_DESTINATION_PER_UNIT: return destinations diff --git a/scripts/ai/perform.gd b/scripts/ai/perform.gd index 4871f86f..b007b2c5 100644 --- a/scripts/ai/perform.gd +++ b/scripts/ai/perform.gd @@ -1,7 +1,7 @@ extends "res://scripts/bag_aware.gd" -const INTERVAL = 0.15 -const SKIP_INTERVAL = 1 +const INTERVAL = 0.015 +const SKIP_INTERVAL = 0.1 var running = false func do_ai_stuff(): @@ -20,7 +20,6 @@ func do_ai_stuff(): self.bag.controllers.action_controller.end_turn() return - self.__execute_with_interval(self.INTERVAL) func start_ai_timer(): diff --git a/scripts/objects/building.gd b/scripts/objects/building.gd new file mode 100644 index 00000000..e5a6fd41 --- /dev/null +++ b/scripts/objects/building.gd @@ -0,0 +1,132 @@ +extends Sprite + +export var position_on_map = Vector2(0,0) +export var type = 0 +export var player = -1 +export var bonus_ap = 1 +export var can_spawn = true + +var current_map +var group = 'building' +var spawn_point = Vector2(0, 0) +var spawn_field = null +export var spawn_point_position = Vector2(0, 1) +var flag +var turn_claimed = -1 + +var object_factory = preload('../object_factory.gd').new() + +var floating_ap_template = preload('res://particle/hit_points.xscn') +var floating_ap + +var TYPE_BUNKER = 0 +var TYPE_BARRACKS = 1 +var TYPE_FACTORY = 2 +var TYPE_AIRPORT = 3 +var TYPE_TOWER = 4 + +const HAS_SAME_TYPE_OF_UNIT_MODIFIER = 3 + +func get_pos_map(): + return position_on_map + +func get_spawn_point_pos(): + return spawn_point + +func get_initial_pos(): + position_on_map = current_map.world_to_map(self.get_pos()) + spawn_point = Vector2(position_on_map) + spawn_point_position + return position_on_map + +func set_pos_map(new_position): + self.set_pos(current_map.map_to_world(new_position)) + position_on_map = new_position + spawn_point = Vector2(position_on_map) + spawn_point_position + +func claim(new_player, turn): + if new_player == -1: + self.set_frame(0) + if new_player == 0: + self.set_frame(1) + if new_player == 1: + self.set_frame(2) + + player = new_player + self.turn_claimed = turn + flag.change_flag(new_player) + +func get_player(): + return player + +func set_frame(number): + var current_frame = get_region_rect() + var new_frame = Rect2(number * 64, current_frame.pos.y, 64, 64) + set_region_rect(new_frame) + +func get_spawn_type(): + if type == TYPE_BUNKER || type == TYPE_BARRACKS: + return 0 + if type == TYPE_FACTORY: + return 1 + if type == TYPE_AIRPORT: + return 2 + +func spawn_unit(player): + var unit_type = self.get_spawn_type() + if unit_type != null: + return object_factory.build_unit(unit_type, player) + + return null + +func get_required_ap(): + if type == TYPE_BARRACKS: + return 25 + if type == TYPE_FACTORY: + return 50 + if type == TYPE_AIRPORT: + return 70 + if type == TYPE_BUNKER: + return 40 + + return 0 + +func get_building_name(): + if type == TYPE_BUNKER: + return "HQ" + if type == TYPE_BARRACKS: + return "BARRACKS" + if type == TYPE_FACTORY: + return "FACTORY" + if type == TYPE_AIRPORT: + return "AIRPORT" + if type == TYPE_TOWER: + return "GSM TOWER" + +func get_cost(): + return get_required_ap() + +func show_floating_ap(): + floating_ap = floating_ap_template.instance() + floating_ap.set_text(str(bonus_ap)) + floating_ap.unit = self + floating_ap.show_ap_icon() + self.add_child(floating_ap) + +func clear_floating_damage(): + self.remove_child(floating_ap) + floating_ap.queue_free() + +func can_spawn_units(): + if self.type == 4: + return false + + return true + +func _ready(): + add_to_group("buildings") + if get_node("/root/game"): + current_map = get_node("/root/game").current_map_terrain + flag = get_node('flag') + pass + + diff --git a/scripts/objects/units/helicopter.gd b/scripts/objects/units/helicopter.gd new file mode 100644 index 00000000..fa3b5a90 --- /dev/null +++ b/scripts/objects/units/helicopter.gd @@ -0,0 +1,21 @@ +extends "unit.gd" + +func _init(): + type = 2 + type_name = 'heli' + type_name_label = 'LABEL_WORKSHOP_HELI' + + life = 10 + max_life = 10 + attack = 8 + max_ap = 8 + limited_ap = 6 + attack_ap = 1 + max_attacks_number = 1 + ap = 8 + attacks_number = 1 + visibility = 4 + +func can_capture_building(building): + return false + diff --git a/scripts/objects/units/randomizing_animation_for_civilians.gd b/scripts/objects/units/randomizing_animation_for_civilians.gd new file mode 100644 index 00000000..115ae91d --- /dev/null +++ b/scripts/objects/units/randomizing_animation_for_civilians.gd @@ -0,0 +1,7 @@ +func _ready(): + randomize() + get_node("anim").seek(randf()) + if randf() < 0.5: + self.set_flip_h(true) + + get_node("anim").set_speed(rand_range(0.5, 1.5)) \ No newline at end of file diff --git a/scripts/objects/units/soldier.gd b/scripts/objects/units/soldier.gd new file mode 100644 index 00000000..81a64925 --- /dev/null +++ b/scripts/objects/units/soldier.gd @@ -0,0 +1,24 @@ +extends "unit.gd" + +func _init(): + type = 0 + type_name = 'soldier' + type_name_label = 'LABEL_WORKSHOP_INFANTRY' + + life = 10 + max_life = 10 + attack = 5 + max_ap = 4 + limited_ap = 3 + attack_ap = 1 + max_attacks_number = 1 + ap = 4 + attacks_number = 1 + visibility = 3 + +func can_capture_building(building): + if building.player == player: + return false + + return true; + diff --git a/scripts/objects/units/tank.gd b/scripts/objects/units/tank.gd new file mode 100644 index 00000000..98971b82 --- /dev/null +++ b/scripts/objects/units/tank.gd @@ -0,0 +1,23 @@ +extends "unit.gd" + +func _init(): + type = 1 + type_name = 'tank' + type_name_label = 'LABEL_WORKSHOP_TANK' + + life = 15 + max_life = 15 + attack = 10 + max_ap = 6 + limited_ap = 4 + attack_ap = 1 + max_attacks_number = 1 + ap = 6 + attacks_number = 1 + visibility = 3 + +func can_capture_building(building): + return false + + + diff --git a/scripts/objects/units/unit.gd b/scripts/objects/units/unit.gd new file mode 100644 index 00000000..f3ad67cb --- /dev/null +++ b/scripts/objects/units/unit.gd @@ -0,0 +1,250 @@ + +extends Sprite + +export var player = -1 +export var position_on_map = Vector2(0,0) +const MAX_HICCUP_DEPTH = 5 +var move_positions = [] +var current_map_terrain +var current_map +var health_bar +var icon_shield +var anim +var teleport_anim +var type = 0 +var type_name = '' +var type_name_label = '' +var kills = 0 + +var life +var max_life +var attack +var plain +var road +var river +var max_ap +var limited_ap +var attack_ap +var max_attacks_number +var ap +var attacks_number +var visibility + +var group = 'unit' + +var explosion_template = preload('res://particle/explosion.xscn') +var explosion_big_template = preload('res://particle/explosion_big.xscn') +var explosion +var floating_damage_template = preload('res://particle/hit_points.xscn') +var floating_damage +var die = false +var active = 1 +var parent + +var sprite_offset_for_64x64 = Vector2(0,8); + +func set_no_ap_idle(): + if ap == 0: + self.anim.play('idle_no_ap') + else: + self.anim.play('move') + +func force_no_ap_idle(): + self.anim.play('idle_no_ap') + +func set_ap(value): + ap = value + self.set_no_ap_idle() + +func get_ap(): + return ap; + +func get_player(): + return player + +func get_unit_type(): + return type + +func get_type(): + return type + +func get_pos_map(): + return position_on_map + +func add_move(position): + self.move_positions.push_back(position) + +func get_initial_pos(): + position_on_map = current_map_terrain.world_to_map(self.get_pos()) + self.add_move(position_on_map) + return position_on_map + +func get_stats(): + return {'life' : life, 'attack' : attack, 'ap' : get_ap(), 'attack_ap': attack_ap, 'attacks_number' : attacks_number} + +func set_stats(new_stats): + life = new_stats.life + attack = new_stats.attack + ap = new_stats.ap + attacks_number = new_stats.attacks_number + self.update_healthbar() + self.update_shield() + self.set_no_ap_idle() + +func set_hp(hp): + self.life = hp + self.update_healthbar() + +func update_ap(new_ap): + ap = new_ap + self.update_shield() + self.set_no_ap_idle() + +func reset_ap(limit_ap): + if (limit_ap): + self.ap = self.limited_ap + else: + self.ap = self.max_ap + + attacks_number = max_attacks_number + self.update_shield() + self.update_healthbar() + self.set_no_ap_idle() + +func set_pos_map(new_position): + if new_position.x > position_on_map.x: + self.set_flip_h(true) + elif new_position.x < position_on_map.x: + self.set_flip_h(false) + if new_position.y < position_on_map.y: + self.set_flip_h(true) + elif new_position.y > position_on_map.y: + self.set_flip_h(false) + + self.set_pos(current_map_terrain.map_to_world(new_position) + sprite_offset_for_64x64) + self.add_move(position_on_map) + position_on_map = new_position + self.teleport_anim.play('in') + +func check_hiccup(new_position): + var depth = MAX_HICCUP_DEPTH + var count = move_positions.size() + if count == 0: + return false + + if MAX_HICCUP_DEPTH > count: + depth = count + + var start = count - depth - 1 + if start < 0: + start = 0 + + for index in range(start, count - 1): + if new_position == move_positions[index]: + return true + + return false + +func can_attack(): + if self.ap >= self.attack_ap && self.attacks_number > 0: + return true + return false + +func can_defend(): + if self.ap >= self.attack_ap: + return true + return false + +func can_capture_buildings(): + if self.type == 0: + return true + return false + +func die(): + self.queue_free() + +func set_damaged(): + return + +func get_life_status(): + return self.life / (self.max_life * 1.0 ) + +func update_healthbar(): + var life_status = self.get_life_status() + var new_frame = floor((1.0 - life_status)*10) + self.health_bar.set_frame(new_frame) + +func show_explosion(): + explosion = explosion_template.instance() + explosion.unit = self + self.add_child(explosion) + +func show_big_explosion(): + explosion = explosion_big_template.instance() + explosion.unit = self + self.add_child(explosion) + current_map.shake_camera() + +func clear_explosion(): + self.remove_child(explosion) + explosion.queue_free() + if die: + parent.remove_child(self) + self.die() + +func show_floating_damage(amount): + floating_damage = floating_damage_template.instance() + floating_damage.set_text(str(amount)) + floating_damage.unit = self + self.add_child(floating_damage) + +func clear_floating_damage(): + self.remove_child(floating_damage) + floating_damage.queue_free() + +func die_after_explosion(ysort): + die = true + parent = self.get_parent() + self.show_big_explosion() + +func update_shield(): + if ap >= attack_ap: + self.icon_shield.show() + else: + self.icon_shield.hide() + +func score_kill(): + kills = kills + 1 + +func take_all_ap(): + self.ap = 0 + self.icon_shield.hide() + self.set_no_ap_idle() + +func fix_initial_pos(): + self.set_pos(self.get_pos() + sprite_offset_for_64x64) + +func get_type_name(): + return tr(self.type_name_label) + +func can_attack_unit_type(defender): + if type == 1 && defender.type == 2: + return false + + return true + +func _ready(): + self.add_to_group("units") + self.anim = self.get_node("anim") + self.teleport_anim = self.get_node("teleport_anim") + if self.get_node("/root/game"): + self.current_map_terrain = self.get_node("/root/game").current_map_terrain + self.current_map = self.get_node("/root/game").current_map + self.health_bar = self.get_node("health") + self.icon_shield = self.get_node("shield") + self.fix_initial_pos() + self.anim.play("move") + self.teleport_anim.play('in') + pass + + diff --git a/scripts/objects/waypoint.gd b/scripts/objects/waypoint.gd new file mode 100644 index 00000000..0fedfe3c --- /dev/null +++ b/scripts/objects/waypoint.gd @@ -0,0 +1,18 @@ +export var position_on_map = Vector2(0,0) +var group = 'waypoint' +var type = 10 +var subtype = null +var for_unit_types = [0, 1, 2] + +const TYPE_LEVEL_1 = 1 +const TYPE_LEVEL_2 = 2 +const TYPE_LEVEL_3 = 3 +const TYPE_BULDING_AREA = 10 +const TYPE_SPAWN_POINT = 11 + +func _init(pos, subtype=self.TYPE_LEVEL_1): + self.position_on_map = pos + self.subtype = subtype + +func get_pos_map(): + return position_on_map diff --git a/scripts/storyteller/actions/spawn.gd b/scripts/storyteller/actions/spawn.gd index 97b6e4a7..868ff2dd 100644 --- a/scripts/storyteller/actions/spawn.gd +++ b/scripts/storyteller/actions/spawn.gd @@ -1,6 +1,5 @@ extends "res://scripts/storyteller/actions/abstract_action.gd" - var object_factory = preload('res://scripts/object_factory.gd').new() func perform(action_details): diff --git a/scripts/waypoint.gd b/scripts/waypoint.gd deleted file mode 100644 index e7890524..00000000 --- a/scripts/waypoint.gd +++ /dev/null @@ -1,9 +0,0 @@ -export var position_on_map = Vector2(0,0) -var group = 'waypoint' -var type = 10 - -func _init(pos): - self.position_on_map = pos - -func get_pos_map(): - return position_on_map diff --git a/units/civilians/old_woman.tscn b/units/civilians/old_woman.tscn index 4b2159fa..9ec6e80c 100644 --- a/units/civilians/old_woman.tscn +++ b/units/civilians/old_woman.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://units/unit_template.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/units/civilians_spritesheet.png" type="Texture" id=2] -[ext_resource path="res://scripts/units/randomizing_animation_for_civilians.gd" type="Script" id=3] +[ext_resource path="res://scripts/objects/units/randomizing_animation_for_civilians.gd" type="Script" id=3] [sub_resource type="Animation" id=1] diff --git a/units/civilians/protest_guy.tscn b/units/civilians/protest_guy.tscn index 4acb6212..9b2b46cb 100644 --- a/units/civilians/protest_guy.tscn +++ b/units/civilians/protest_guy.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://units/unit_template.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/units/civilians_spritesheet.png" type="Texture" id=2] -[ext_resource path="res://scripts/units/randomizing_animation_for_civilians.gd" type="Script" id=3] +[ext_resource path="res://scripts/objects/units/randomizing_animation_for_civilians.gd" type="Script" id=3] [sub_resource type="Animation" id=1] diff --git a/units/civilians/protest_guy2.tscn b/units/civilians/protest_guy2.tscn index 3cc23262..bd6678e5 100644 --- a/units/civilians/protest_guy2.tscn +++ b/units/civilians/protest_guy2.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://units/unit_template.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/units/civilians_spritesheet.png" type="Texture" id=2] -[ext_resource path="res://scripts/units/randomizing_animation_for_civilians.gd" type="Script" id=3] +[ext_resource path="res://scripts/objects/units/randomizing_animation_for_civilians.gd" type="Script" id=3] [sub_resource type="Animation" id=1] diff --git a/units/civilians/refugee.tscn b/units/civilians/refugee.tscn index f2619065..e174f5ec 100644 --- a/units/civilians/refugee.tscn +++ b/units/civilians/refugee.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://units/unit_template.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/units/civilians_spritesheet.png" type="Texture" id=2] -[ext_resource path="res://scripts/units/randomizing_animation_for_civilians.gd" type="Script" id=3] +[ext_resource path="res://scripts/objects/units/randomizing_animation_for_civilians.gd" type="Script" id=3] [sub_resource type="Animation" id=1] diff --git a/units/civilians/refugee2.tscn b/units/civilians/refugee2.tscn index bba2e4ff..209da593 100644 --- a/units/civilians/refugee2.tscn +++ b/units/civilians/refugee2.tscn @@ -2,7 +2,7 @@ [ext_resource path="res://units/unit_template.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/units/civilians_spritesheet.png" type="Texture" id=2] -[ext_resource path="res://scripts/units/randomizing_animation_for_civilians.gd" type="Script" id=3] +[ext_resource path="res://scripts/objects/units/randomizing_animation_for_civilians.gd" type="Script" id=3] [sub_resource type="Animation" id=1] diff --git a/units/helicopter_blue.xscn b/units/helicopter_blue.xscn index 08d9d8ac..95668546 100644 --- a/units/helicopter_blue.xscn +++ b/units/helicopter_blue.xscn @@ -1,7 +1,7 @@ - + @@ -146,7 +146,7 @@ 12 1, 1, 1, 1 0, 0, 0, 0 - + "__editor_plugin_screen__" "2D" diff --git a/units/helicopter_red.xscn b/units/helicopter_red.xscn index 185c4972..b12ddd17 100644 --- a/units/helicopter_red.xscn +++ b/units/helicopter_red.xscn @@ -1,7 +1,7 @@ - + @@ -146,7 +146,7 @@ 17 1, 1, 1, 1 0, 0, 0, 0 - + "__editor_plugin_screen__" "2D" @@ -275,8 +275,8 @@ 1 "sources" - "res://scripts/units/tank.gd" - "res://scripts/units/helicopter.gd" + "res://scripts/objects/units/tank.gd" + "res://scripts/objects/units/helicopter.gd" diff --git a/units/soldier_blue.xscn b/units/soldier_blue.xscn index 903692cf..3daca55f 100644 --- a/units/soldier_blue.xscn +++ b/units/soldier_blue.xscn @@ -1,7 +1,7 @@ - + @@ -142,7 +142,7 @@ 6 1, 1, 1, 1 0, 0, 0, 0 - + "__editor_plugin_screen__" "2D" diff --git a/units/soldier_red.xscn b/units/soldier_red.xscn index dd72d3e4..eeaf265e 100644 --- a/units/soldier_red.xscn +++ b/units/soldier_red.xscn @@ -1,7 +1,7 @@ - + @@ -144,7 +144,7 @@ 3 1, 1, 1, 1 0, 0, 0, 0 - + "__editor_plugin_screen__" "2D" diff --git a/units/tank_blue.xscn b/units/tank_blue.xscn index 1a85c70a..a7ec4055 100644 --- a/units/tank_blue.xscn +++ b/units/tank_blue.xscn @@ -1,7 +1,7 @@ - + @@ -144,7 +144,7 @@ 14 1, 1, 1, 1 0, 0, 0, 0 - + "__editor_plugin_screen__" "2D" diff --git a/units/tank_red.xscn b/units/tank_red.xscn index c99eaaec..26538e7b 100644 --- a/units/tank_red.xscn +++ b/units/tank_red.xscn @@ -1,7 +1,7 @@ - + @@ -143,7 +143,7 @@ 9 1, 1, 1, 1 0, 0, 0, 0 - + "__editor_plugin_screen__" "2D" diff --git a/units/unit_template.tscn b/units/unit_template.tscn index ddb3342b..e23095d0 100644 --- a/units/unit_template.tscn +++ b/units/unit_template.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=8 format=1] [ext_resource path="res://assets/units/units_spritesheet.png" type="Texture" id=1] -[ext_resource path="res://scripts/units/soldier.gd" type="Script" id=2] +[ext_resource path="res://scripts/objects/units/soldier.gd" type="Script" id=2] [ext_resource path="res://gui/health_bar.xscn" type="PackedScene" id=3] [ext_resource path="res://gui/icon_shield.xscn" type="PackedScene" id=4]