création du squelette des region modifier, amélioration du tutoriel et mise en place de la run complète avec cinématique d'outro
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
[ext_resource type="AudioStream" uid="uid://dgkdcq4j6fe3o" path="res://common/audio_manager/assets/sfx/harvest/harvest_2.wav" id="14_b5bgj"]
|
||||
[ext_resource type="AudioStream" uid="uid://eh3dbuxu5qtw" path="res://common/audio_manager/assets/sfx/harvest/harvest_3.wav" id="15_ynvb4"]
|
||||
[ext_resource type="AudioStream" uid="uid://bown4yipeef8l" path="res://common/audio_manager/assets/sfx/harvest/harvest_4.wav" id="16_obeji"]
|
||||
[ext_resource type="AudioStream" uid="uid://delq7gsdeqjq2" path="res://common/audio_manager/assets/sfx/respawn/respawn.wav" id="16_xmumj"]
|
||||
[ext_resource type="AudioStream" uid="uid://cbo4ld2yypmte" path="res://common/audio_manager/assets/sfx/harvest/harvest_5.wav" id="17_6w0re"]
|
||||
[ext_resource type="AudioStream" uid="uid://c5nfoa6v3r5f7" path="res://common/audio_manager/assets/sfx/harvest/harvest_6.wav" id="18_o4guq"]
|
||||
[ext_resource type="AudioStream" uid="uid://bjind1iji0gt7" path="res://common/audio_manager/assets/sfx/pick_up/pick_up_1.wav" id="20_pu6t4"]
|
||||
@@ -134,6 +135,9 @@ unique_name_in_owner = true
|
||||
[node name="Dig" type="AudioStreamPlayer" parent="Sfx" unique_id=486042600]
|
||||
stream = SubResource("AudioStreamRandomizer_kfbah")
|
||||
|
||||
[node name="Respawn" type="AudioStreamPlayer" parent="Sfx" unique_id=1902559716]
|
||||
stream = ExtResource("16_xmumj")
|
||||
|
||||
[node name="Drop" type="AudioStreamPlayer" parent="Sfx" unique_id=1391500830]
|
||||
stream = SubResource("AudioStreamRandomizer_1w04j")
|
||||
|
||||
@@ -157,7 +161,7 @@ stream = ExtResource("27_0rjel")
|
||||
[node name="Phone_call" type="AudioStreamPlayer" parent="Sfx" unique_id=1668278453]
|
||||
stream = ExtResource("28_3dfjn")
|
||||
|
||||
[node name="Plant_point" type="AudioStreamPlayer" parent="Sfx" unique_id=2044025024]
|
||||
[node name="PlantPoint" type="AudioStreamPlayer" parent="Sfx" unique_id=2044025024]
|
||||
stream = SubResource("AudioStreamRandomizer_qog4c")
|
||||
|
||||
[node name="Ship_reveal" type="AudioStreamPlayer" parent="Sfx" unique_id=1121632306]
|
||||
|
||||
@@ -108,8 +108,6 @@ func _on_timeline_started():
|
||||
play_ambiance("Demeter")
|
||||
"demeter_post_tutorial":
|
||||
play_ambiance("Demeter")
|
||||
"demeter_outro":
|
||||
play_ambiance("Demeter")
|
||||
"failure":
|
||||
play_ambiance("Demeter")
|
||||
|
||||
|
||||
@@ -48,11 +48,10 @@ func give_up():
|
||||
func start_tutorial():
|
||||
current_region_data = RegionData.new(
|
||||
RegionParameter.new(
|
||||
10,
|
||||
3,
|
||||
0,
|
||||
tr("TUTORIAL"),
|
||||
["tutorial"],
|
||||
0,
|
||||
[],
|
||||
randi()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,13 +5,13 @@ enum State {STARTED, IN_PROGRESS, FINISHED}
|
||||
|
||||
const RUN_POINT_POSITION_DERIVATION = 100
|
||||
const DIFFICULTY_INCREASE_BY_LEVEL = 3
|
||||
const RUN_POINTS_NEXT_NUMBER :Array[int] = [2]
|
||||
const RUN_POINT_MAX_LEVEL = 0 # TODO
|
||||
const RUN_POINTS_NEXT_NUMBER : int = 2
|
||||
const RUN_POINT_MAX_LEVEL = 2 # TODO
|
||||
|
||||
signal current_run_point_changed
|
||||
|
||||
var run_seed = randi()
|
||||
@export var next_run_points : Array[RunPoint] = [generate_first_run_point()]
|
||||
@export var next_run_points : Array[RunPoint] = generate_next_run_points()
|
||||
@export var current_run_point : RunPoint = null :
|
||||
set(v):
|
||||
current_run_point = v
|
||||
@@ -20,65 +20,28 @@ var run_seed = randi()
|
||||
|
||||
#region ------------------ Generation ------------------
|
||||
|
||||
func generate_first_run_point() -> RunPoint:
|
||||
return RunPoint.new(0, RegionParameter.new())
|
||||
|
||||
func generate_next_run_points(run_point : RunPoint) -> Array[RunPoint]:
|
||||
var nb_next_run_points = RUN_POINTS_NEXT_NUMBER.pick_random()
|
||||
if run_point.level == RUN_POINT_MAX_LEVEL - 1 or run_point.level == -1:
|
||||
nb_next_run_points = 1
|
||||
elif run_point.level == RUN_POINT_MAX_LEVEL:
|
||||
nb_next_run_points = 0
|
||||
func generate_next_run_points(level = 0) -> Array[RunPoint]:
|
||||
|
||||
next_run_points = []
|
||||
|
||||
for i in range(nb_next_run_points):
|
||||
for i in range(RUN_POINTS_NEXT_NUMBER):
|
||||
next_run_points.append(
|
||||
generate_next_run_point(run_point)
|
||||
generate_next_run_point(level)
|
||||
)
|
||||
|
||||
return next_run_points
|
||||
|
||||
|
||||
func generate_next_run_point(run_point : RunPoint) -> RunPoint:
|
||||
var level = run_point.level + 1
|
||||
func generate_next_run_point(level = 0) -> RunPoint:
|
||||
var region_parameter = RegionParameter.new()
|
||||
region_parameter.level = level
|
||||
region_parameter.flags = get_region_flags(region_parameter)
|
||||
region_parameter.region_flags = get_region_flags(region_parameter)
|
||||
|
||||
return RunPoint.new(
|
||||
level,
|
||||
generate_difficulty_increased_region_parameter(region_parameter, DIFFICULTY_INCREASE_BY_LEVEL * level),
|
||||
(run_point.position + randi_range(-RUN_POINT_POSITION_DERIVATION, RUN_POINT_POSITION_DERIVATION)) % 360
|
||||
region_parameter
|
||||
)
|
||||
|
||||
func generate_difficulty_increased_region_parameter(
|
||||
region_parameter : RegionParameter,
|
||||
difficulty : int = 1
|
||||
) -> RegionParameter:
|
||||
var i_diff := difficulty
|
||||
var new_region_parameter = RegionParameter.new(
|
||||
region_parameter.charges,
|
||||
region_parameter.objective
|
||||
)
|
||||
|
||||
while i_diff > 0:
|
||||
|
||||
var available_difficulty_modifier = [
|
||||
DifficultyDecreaseCharge.new(),
|
||||
DifficultyIncreaseObjective.new()
|
||||
].filter(
|
||||
func (mod : DifficultyModifier):
|
||||
return mod.get_difficulty_cost() <= i_diff and mod.can_modifiy(new_region_parameter)
|
||||
)
|
||||
|
||||
var selected_difficulty_modifier = available_difficulty_modifier.pick_random()
|
||||
|
||||
selected_difficulty_modifier.modify(new_region_parameter)
|
||||
|
||||
i_diff -= max(1,selected_difficulty_modifier.get_difficulty_cost())
|
||||
return new_region_parameter
|
||||
|
||||
#endregion
|
||||
|
||||
func get_state() -> State:
|
||||
@@ -99,13 +62,12 @@ func choose_next_run_point(run_point : RunPoint) -> RunPoint:
|
||||
visited_run_points.append(current_run_point)
|
||||
current_run_point = run_point
|
||||
GameInfo.game_data.start_region(run_point.region_parameter)
|
||||
next_run_points = generate_next_run_points(current_run_point)
|
||||
next_run_points = generate_next_run_points(current_run_point.level + 1)
|
||||
return current_run_point
|
||||
|
||||
func get_region_flags(region_parameter : RegionParameter) -> Array[String]:
|
||||
var flags : Array[String] = []
|
||||
|
||||
print(region_parameter.level)
|
||||
if region_parameter.level == RUN_POINT_MAX_LEVEL:
|
||||
flags.append("borea")
|
||||
|
||||
@@ -130,4 +92,4 @@ class DifficultyDecreaseCharge extends DifficultyModifier:
|
||||
region_parameter.charges -= 1
|
||||
|
||||
func can_modifiy(region_parameter : RegionParameter) -> bool:
|
||||
return region_parameter.charges >= 3
|
||||
return region_parameter.charges >= 3
|
||||
|
||||
@@ -11,12 +11,12 @@ const CHARGE_ICON = preload("res://common/icons/bolt.svg")
|
||||
@export var region_parameter : RegionParameter = RegionParameter.new() :
|
||||
set(v):
|
||||
region_parameter = v
|
||||
@export var position : int = 0 # Y pos along the planet, 0 to 360
|
||||
@export var position : float = 0
|
||||
|
||||
func _init(
|
||||
_level : int = 0,
|
||||
_region_parameter : RegionParameter = RegionParameter.new(),
|
||||
_position : int = randi_range(0,360),
|
||||
_position : float = randf_range(0.,1.),
|
||||
):
|
||||
level = _level
|
||||
region_parameter = _region_parameter
|
||||
@@ -24,7 +24,7 @@ func _init(
|
||||
position = _position
|
||||
|
||||
func card_info() -> CardInfo:
|
||||
var info = CardInfo.new(region_parameter.name)
|
||||
var info = CardInfo.new(region_parameter.region_name)
|
||||
info.important_stat_icon = DANGER_ICON
|
||||
info.important_stat_text = "%d" % level
|
||||
|
||||
|
||||
38
dialogs/timelines/story/demeter_introV2.dtl
Normal file
38
dialogs/timelines/story/demeter_introV2.dtl
Normal file
@@ -0,0 +1,38 @@
|
||||
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||
join demeter center [animation="Bounce In" length="1.0"]
|
||||
demeter: Hi ![pause=0.3] Phew,[pause=0.2] I thought no one would reply.[pause=0.3] Are you [color=#FFA617]Orchid[/color] ?[pause=0.3] You may not be familiar with this name but you must have seen it in your memory.
|
||||
- Uh... Who are you ?
|
||||
demeter: Oh sorry ![pause=0.3] I cannot send you my IDs for now,[pause=0.2] you are too far away from me.
|
||||
- Where am I ?
|
||||
demeter: Don't worry,[pause=0.2] you are in a subterranean base,[pause=0.2] but you will get to the surface very soon.
|
||||
- Wait ! Who am I ?
|
||||
demeter: Hmmm.[pause=0.4].[pause=0.4].[pause=0.4] Interesting question.[pause=0.3] I elaborated your system but I don't know in which frame you are currently in.[pause=0.3] We'll find out !
|
||||
demeter: I'm glad you are finally awake ![pause=0.3] To be honest,[pause=0.2] I wasn't sure I would be able to make you function normally.[pause=0.5] Your frame has remained here for millennia without any maintenance.
|
||||
- Did you create me ?
|
||||
demeter: Sort of ![pause=0.3] I didn't manufactured your body,[pause=0.2] I borrowed it,[pause=0.2] but I designed your cognitive system.[pause=0.3] Be forgiving,[pause=0.2] it won't be perfect,[pause=0.2] I was designed to manage,[pause=0.2] not to create.
|
||||
- Why did you awake me ?
|
||||
demeter: To be honest,[pause=0.2] I don't really know.[pause=0.3].[pause=0.3].[pause=0.3] I mean,[pause=0.2] there are a lot of reasons,[pause=0.2] but I'll tell you more about it later.
|
||||
- What are you ?
|
||||
demeter: I'm the same as you.[pause=0.3] The same as all the sentient beings remaining on this planet.[pause=0.3] Robot,[pause=0.2] artificial intelligence,[pause=0.2] machine.[pause=0.2].[pause=0.2].[pause=0.2] Our creators gave us many titles.
|
||||
demeter: Ok,[pause=0.2] no more questions for now,[pause=0.2] listen to me carefully.
|
||||
demeter: A long time ago,[pause=0.2] this planet was full of life.[pause=0.3] Plants were thriving on mountains,[pause=0.2] under seas and across plains.
|
||||
demeter: Now,[pause=0.2] this world is a wasteland.[pause=0.3] You'll see it as soon as you leave this base.
|
||||
demeter: Something happened a year ago.[pause=0.3].[pause=0.3].[pause=0.3]. The [color=#119758][b]Talion[/b][/color],[pause=0.2] a unique element giving birth to new life forms when shattered,[pause=0.2] reappeared.
|
||||
demeter: With the [color=#119758][b]Talion[/b][/color] back on the surface,[pause=0.2] we can bring this planet back to life.
|
||||
demeter: But first things first,[pause=0.2] you have to learn how everything is working up here,[pause=0.2] and how to use the [color=#119758][b]Talion[/b][/color] to plant seeds.
|
||||
demeter: [b]Just remember the following[/b]
|
||||
label explanations
|
||||
demeter: When you'll emerge from this building,[pause=0.2] you will reach a little yellowish zone.[pause=0.3] It's a [b]fertile zone[/b],[pause=0.2] brought back by the [color=#119758][b]Talion's[/b][/color] power.[pause=0.3] You can only plant [b]seeds[/b] in this zone.
|
||||
demeter: Then,[pause=0.2] you have to get [b]seeds[/b].[pause=0.3] To do so,[pause=0.2] just take your shovel and smash some stones ![pause=0.3] Focus on those having yellow crystals on it,[pause=0.2] these are [color=#119758][b]Talion veins[/b][/color].
|
||||
demeter: Each time you use a tool like the shovel or plant a seed,[pause=0.2] you will spend one [b]energy[/b] charge.[pause=0.3] When you are out of it,[pause=0.2] just go recharge it at the [b]recharge station[/b].[pause=0.3] You will find it near the entrance of the base.
|
||||
demeter: Each time you recharge,[pause=0.2] a day will pass,[pause=0.2] your batteries are very inefficient.[pause=0.3] While the day is passing,[pause=0.2] plants will grow !
|
||||
demeter: To complete you training,[pause=0.2] obtain enough [b]plant points[/b].[pause=0.3] Each plant give one or more [b]plant points[/b] when mature.
|
||||
demeter: Oh ! [pause=0.3] I almost forgot,[pause=0.2] some plants can [b]mutate[/b].[pause=0.3] These [b]mutations[/b] affect points and behavior of the plant affected.[pause=0.3] [b]Mutations[/b] can appear while [b]harvesting[/b] mature plants and even become more powerful if you [b]harvest[/b] an already mutated one.
|
||||
- That's a lot of informations, can you repeat ?
|
||||
demeter: Ok,[pause=0.2] listen carefully.
|
||||
jump explanations
|
||||
- Ok, now I have more questions !
|
||||
demeter: Sorry,[pause=0.2] we'll speak more after this.[pause=0.3] I send you an elevator,[pause=0.2] good luck [color=#FFA617]Orchid[/color] !
|
||||
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||
[wait time="2.0"]
|
||||
[end_timeline]
|
||||
1
dialogs/timelines/story/demeter_introV2.dtl.uid
Normal file
1
dialogs/timelines/story/demeter_introV2.dtl.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cirxf28unnjlg
|
||||
@@ -1 +1,3 @@
|
||||
[wait time="1.5"]
|
||||
join demeter center [animation="Bounce In" length="1.0"]
|
||||
demeter: Welcome to the [color=#E30022]Borea Base[/color] [color=#FFA617]{orchidName}[/color],[pause=0.2] it is the first step of your journey on this planet. #id:50
|
||||
@@ -13,6 +13,6 @@ label suite_dialogue #id:42
|
||||
jump suite_dialogue
|
||||
- Wake up #id:49
|
||||
Overseeing \\: serial number and system name.[pause=0.5].[pause=0.5].[pause=0.5] Strange.[pause=0.5] Serial number is empty.[pause=0.5] Must be an error.[pause=0.5] System name is,[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] That is enough for now. #id:4a
|
||||
audio "res://common/audio_manager/assets/sfx/respawn/respawn.wav"
|
||||
|
||||
Starting engines,[pause=0.3] fans and daemons,[pause=0.3] let's see what is to see. #id:4b
|
||||
[end_timeline]
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bfyafiewcrjln"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_enq8o"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_enq8o"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_10bgv"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://d2vdf2sth2xjm"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_p8ox4"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_p8ox4"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_3h2vf"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://clruuysx80pnn"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_03in3"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_03in3"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_108r1"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://brmd6d3l8trqs"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_mvsqc"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_mvsqc"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_oqbgr"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cfr33014u7ig5"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_14sjf"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_14sjf"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_ud5ex"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cf70m1us8mfqp"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_xplyn"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_xplyn"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_uj75q"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://ctlmah4ohqp25"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_tv8sf"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_tv8sf"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_srnvv"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://b8o4q0hsm84ov"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_5lgql"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_5lgql"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_0b6yj"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bb33v756anesy"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_gcphf"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_gcphf"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_tnhr7"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cbqrl72y0d1yg"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_k38pp"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_k38pp"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_cwsfe"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dwppani7gyjl5"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_2m37y"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_2m37y"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_pyvr6"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dkta1u1u0efxk"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_2r1e2"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_2r1e2"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_tv2v3"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://7hrdkl6bf3o4"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_peh48"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_peh48"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_o5tro"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://d2y7o2hc6ffei"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_wnxgs"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_wnxgs"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_smg8i"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://civ4gr1c2pq7g"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1cr0i"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1cr0i"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_h0d20"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bqfocs6f0iypo"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_p4qfr"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_p4qfr"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_iibe2"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://drml5dm8i3j3a"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_5xrel"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_5xrel"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_0v6u4"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://b1t5nfwcln5vo"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_0mgvf"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_0mgvf"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_k1p2k"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://b4s58a600q2rn"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_l4nmf"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_l4nmf"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_ifu40"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dspugxsjw2aea"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_gpxi3"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_gpxi3"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_e0an0"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cnt38l2fmg8d7"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_wmuv5"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_wmuv5"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_4klgd"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://ceisi5yyie7to"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1eil5"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1eil5"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_h27ow"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cxiu8frk04b5i"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_qrhlr"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_qrhlr"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_4au1t"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://53p5g07e3pb4"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_tu2er"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_tu2er"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_2wu38"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://crmvc77bqax1y"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_3u7fo"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_3u7fo"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_23bbh"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://c0hr7icfkjkoi"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_bcreq"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_bcreq"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_af12b"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://clkoc1iccts2w"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_vlome"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_vlome"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_157wb"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bd8yapi1pokj6"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_0uwmh"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_0uwmh"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_h3coc"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://cxgw1vgket0fw"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_ajsfl"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_ajsfl"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_nif4i"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://c5gqwck2p5h5n"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_205mu"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_205mu"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_nlpf8"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://c5fj1cw0f4mu6"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_nyyxg"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_nyyxg"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_y2fie"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dce788f0adauv"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_eaujg"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_eaujg"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_lsafj"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dd34dikqoynp3"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_faxmp"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_faxmp"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_0me46"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bynje6g2wvuvl"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_55x88"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_55x88"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_dmctu"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bd2op6q1masjt"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_uhia7"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_uhia7"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_atmi3"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bvajuw0r47edw"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_761dd"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_761dd"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_3rcv4"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://qb6bftgq0n6y"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_b4uc1"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_b4uc1"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_dc8tr"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://ft112n57di0e"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_sabo0"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_sabo0"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_uvvih"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dwjj6qmcjhn68"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_fvj4t"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_fvj4t"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_akiip"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://bkr70mstyf8pp"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_07tkv"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_07tkv"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_uotjj"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://dcuwupmqt34ju"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_m3t4k"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_m3t4k"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_qfabu"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://djmidq7yq452i"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_jg4cg"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_jg4cg"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_chdp7"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://wxqxm6d5twdh"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1f2ok"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_1f2ok"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_pu3mc"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="PlantPart" format=3 uid="uid://uoikjpno37bi"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_g38jy"]
|
||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="1_g38jy"]
|
||||
[ext_resource type="Texture2D" uid="uid://doo2cxxa2p70a" path="res://entities/plants/assets/sprites/plante-teste.png" id="2_unpmr"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mypt2"]
|
||||
|
||||
@@ -33,7 +33,7 @@ func can_use(_player : Player, zone : Player.ActionZone) -> bool:
|
||||
return false
|
||||
|
||||
func use(player : Player, zone : Player.ActionZone) -> bool:
|
||||
AudioManager.play_sfx("Pickaxe")
|
||||
AudioManager.play_sfx("Dig")
|
||||
for area in zone.get_affected_areas():
|
||||
if area and area is Plant:
|
||||
harvest(area, player)
|
||||
|
||||
@@ -15,6 +15,7 @@ var signals : Array[DetectorSignalIndividual] = []
|
||||
|
||||
func _init(region : Region, pos : Vector2):
|
||||
for e in region.entity_container.get_children():
|
||||
if e.visible:
|
||||
if e is TruckRecharge:
|
||||
signals.append(
|
||||
DetectorSignalIndividual.new(
|
||||
@@ -22,7 +23,7 @@ func _init(region : Region, pos : Vector2):
|
||||
ENERGY_ICON
|
||||
)
|
||||
)
|
||||
if e is Door and e.available and e.visible:
|
||||
if e is Door and e.available:
|
||||
signals.append(
|
||||
DetectorSignalIndividual.new(
|
||||
(pos - e.global_position).normalized().angle(),
|
||||
|
||||
@@ -4,8 +4,10 @@
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_nq5i2"]
|
||||
[ext_resource type="PackedScene" uid="uid://brfsapvj2quxm" path="res://gui/game/energy_info/energy_info.tscn" id="4_2wykm"]
|
||||
[ext_resource type="PackedScene" uid="uid://fnv0qhkh40mv" path="res://gui/game/announce/announce.tscn" id="4_h6540"]
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="6_2wykm"]
|
||||
[ext_resource type="PackedScene" uid="uid://df0eop555wfj5" path="res://gui/game/objective_progress_bar/objective_progress_bar.tscn" id="6_dr1y2"]
|
||||
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_h6540"]
|
||||
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="6_id0t5"]
|
||||
[ext_resource type="Texture2D" uid="uid://b43thuq8piv18" path="res://common/icons/skull.svg" id="7_dr1y2"]
|
||||
[ext_resource type="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="9_id0t5"]
|
||||
|
||||
@@ -19,6 +21,10 @@ gradient = SubResource("Gradient_id0t5")
|
||||
fill_to = Vector2(1, 1)
|
||||
repeat = 1
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_id0t5"]
|
||||
font = ExtResource("6_2wykm")
|
||||
font_size = 40
|
||||
|
||||
[sub_resource type="Animation" id="Animation_2wykm"]
|
||||
resource_name = "NoRechargeAppear"
|
||||
length = 0.5
|
||||
@@ -155,7 +161,24 @@ layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
|
||||
[node name="RechargesLeftLabel" type="Label" parent="MarginContainer/VBoxContainer" unique_id=1961035876]
|
||||
[node name="SimplePlantPointScore" type="HBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=973032799]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
alignment = 1
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="MarginContainer/VBoxContainer/SimplePlantPointScore" unique_id=534916675]
|
||||
layout_mode = 2
|
||||
texture = ExtResource("6_id0t5")
|
||||
|
||||
[node name="SimplePlantPointScoreLabel" type="Label" parent="MarginContainer/VBoxContainer/SimplePlantPointScore" unique_id=1961035876]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "0 Plant Point"
|
||||
label_settings = SubResource("LabelSettings_id0t5")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="RechargesLeftLabel" type="Label" parent="MarginContainer/VBoxContainer" unique_id=1254074923]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "9 charges left"
|
||||
|
||||
@@ -15,6 +15,9 @@ func _ready():
|
||||
GameInfo.game_data.player_data.updated.connect(_on_player_updated)
|
||||
GameInfo.game_data.current_region_data.pass_day_ended.connect(_on_region_pass_day_ended)
|
||||
|
||||
|
||||
%ObjectiveProgressBar.visible = not "tutorial" in GameInfo.game_data.current_region_data.flags
|
||||
%SimplePlantPointScore.visible = "tutorial" in GameInfo.game_data.current_region_data.flags
|
||||
|
||||
charge_update(GameInfo.game_data.current_region_data)
|
||||
player_update(GameInfo.game_data.player_data, false)
|
||||
@@ -22,7 +25,6 @@ func _ready():
|
||||
%GiveUpButton.pressed.connect(_on_give_up_pressed)
|
||||
|
||||
score_mirror = GameInfo.game_data.current_region_data.get_score()
|
||||
print(score_mirror)
|
||||
for p : PlantData in GameInfo.game_data.current_region_data.plants:
|
||||
score_by_plant[str(p.random_seed)] = p.get_score()
|
||||
|
||||
@@ -44,10 +46,8 @@ func _on_region_updated(region_data : RegionData):
|
||||
if not str(p.random_seed) in score_by_plant:
|
||||
score_by_plant[str(p.random_seed)] = 0
|
||||
if score > score_by_plant[str(p.random_seed)]:
|
||||
print("emit particles for %s" % p.plant_name)
|
||||
plant_changing_score(p, score - score_by_plant[str(p.random_seed)])
|
||||
elif score < score_by_plant[str(p.random_seed)]:
|
||||
print("reduce score for %s" % p.plant_name)
|
||||
score_mirror -= score_by_plant[str(p.random_seed)] - score
|
||||
score_by_plant[str(p.random_seed)] = score
|
||||
# Check for removed plants
|
||||
@@ -55,7 +55,6 @@ func _on_region_updated(region_data : RegionData):
|
||||
if region_data.plants.find_custom(
|
||||
func (p): return str(p.random_seed) == key
|
||||
) == -1:
|
||||
print("remove plant")
|
||||
score_mirror -= score_by_plant[key]
|
||||
score_by_plant.erase(key)
|
||||
|
||||
@@ -93,6 +92,11 @@ func score_update(with_animation = true):
|
||||
)
|
||||
else:
|
||||
%ObjectiveProgressBar.set_progress(objective_progression)
|
||||
|
||||
if score_mirror > 1:
|
||||
%SimplePlantPointScoreLabel.text = tr("%d_PLANT_POINTS") % score_mirror
|
||||
else :
|
||||
%SimplePlantPointScoreLabel.text = tr("%d_PLANT_POINT") % score_mirror
|
||||
|
||||
func plant_changing_score(plant_data: PlantData, amount : int):
|
||||
if GameInfo.game_data.current_region_data.in_passing_day_animation:
|
||||
@@ -136,6 +140,7 @@ func spawn_score_particle(
|
||||
|
||||
await tween.finished
|
||||
score_mirror += 1
|
||||
AudioManager.play_sfx("PlantPoint")
|
||||
|
||||
sprite_particle.queue_free()
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ class_name Tutorial
|
||||
|
||||
const STEP_SCENE = preload("res://gui/game/tutorial/step_gui/step_gui.tscn")
|
||||
|
||||
signal succeded
|
||||
|
||||
var indicators : Array[InGameIndicator]
|
||||
@export var player : Player
|
||||
@@ -48,13 +49,29 @@ var indicators : Array[InGameIndicator]
|
||||
return region.data.get_score() != 0)
|
||||
),
|
||||
Step.new(
|
||||
"HARVEST_MATURE_PLANTS_WITH_SHOVEL",
|
||||
"DISCOVER_A_SEED_WITH_A_MUTATION",
|
||||
(func ():
|
||||
for e in region.entity_container.get_children():
|
||||
if e is Plant and e.harvested:
|
||||
if e is ItemObject and e.item is Seed and len(e.item.plant_mutations):
|
||||
return true
|
||||
return false)
|
||||
)
|
||||
),
|
||||
Step.new(
|
||||
"PLANT_A_SEED_WITH_A_MUTATION",
|
||||
(func ():
|
||||
for e in region.entity_container.get_children():
|
||||
if e is Plant and len(e.data.mutations):
|
||||
return true
|
||||
return false)
|
||||
),
|
||||
Step.new(
|
||||
"HARVEST_A_MATURE_PLANT_WITH_A_MUTATION",
|
||||
(func ():
|
||||
for e in region.entity_container.get_children():
|
||||
if e is Plant and e.harvested and len(e.data.mutations):
|
||||
return true
|
||||
return false)
|
||||
),
|
||||
]
|
||||
|
||||
func _ready():
|
||||
@@ -76,13 +93,23 @@ func setup_gui():
|
||||
|
||||
|
||||
func _process(_d):
|
||||
if region and region.data and "tutorial" in region.data.flags:
|
||||
if region and region.data and "tutorial" in region.data.flags and not GameInfo.game_data.tutorial_done:
|
||||
var success = true
|
||||
for i in len(steps):
|
||||
var step := steps[i]
|
||||
var step_gui := %Steps.get_children()[i] as TutorialStepGui
|
||||
step.update_succeeded()
|
||||
step_gui.suceeded = step.succeeded
|
||||
|
||||
if not step.succeeded:
|
||||
success = false
|
||||
if success:
|
||||
finish_tutorial()
|
||||
|
||||
func finish_tutorial():
|
||||
GameInfo.game_data.tutorial_done = true
|
||||
succeded.emit()
|
||||
|
||||
|
||||
class Step:
|
||||
|
||||
var text : String : get = get_text
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
[ext_resource type="Script" uid="uid://c2w7h0x2blimk" path="res://gui/game/tutorial/step_gui/scripts/step_gui.gd" id="1_8qp12"]
|
||||
[ext_resource type="Texture2D" uid="uid://dk7j4cmn2avor" path="res://common/icons/circle-check.svg" id="2_8qp12"]
|
||||
[ext_resource type="FontFile" uid="uid://cc4xli25271fd" path="res://addons/dialogic/Example Assets/Fonts/Roboto-Bold.ttf" id="3_kbfp3"]
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_i138t"]
|
||||
|
||||
[node name="Step" type="HBoxContainer" unique_id=595946430]
|
||||
modulate = Color(1, 1, 1, 0.5)
|
||||
@@ -30,11 +32,13 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 0
|
||||
theme_override_fonts/normal_font = ExtResource("3_kbfp3")
|
||||
theme_override_fonts/bold_font = ExtResource("4_i138t")
|
||||
theme_override_font_sizes/normal_font_size = 15
|
||||
theme_override_font_sizes/bold_font_size = 15
|
||||
theme_override_font_sizes/bold_italics_font_size = 15
|
||||
theme_override_font_sizes/italics_font_size = 15
|
||||
theme_override_font_sizes/mono_font_size = 15
|
||||
bbcode_enabled = true
|
||||
text = "Lorem Ipsum dolor sit amet and again and again and again and again"
|
||||
text = "Hello"
|
||||
fit_content = true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_resource type="LabelSettings" load_steps=2 format=3 uid="uid://dqwayi8yjwau2"]
|
||||
[gd_resource type="LabelSettings" format=3 uid="uid://dqwayi8yjwau2"]
|
||||
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="1_lsdoq"]
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ func _ready():
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
set_room_part_number()
|
||||
|
||||
chosen_incubator_id = randi_range(0, len(%Incubators.get_children()))
|
||||
chosen_incubator_id = randi_range(0, len(%Incubators.get_children()) - 1)
|
||||
var new_player_incubator := %Incubators.get_children()[chosen_incubator_id] as Incubator
|
||||
new_player_incubator.used = true
|
||||
%Player3D.position = new_player_incubator.global_position + Vector3.UP
|
||||
@@ -52,6 +52,7 @@ func _ready():
|
||||
|
||||
|
||||
func story():
|
||||
AudioManager.play_sfx("Respawn")
|
||||
if not INTRO_DIALOG in GameInfo.game_data.dialogs_done:
|
||||
await get_tree().create_timer(TIME_WITHOUT_PHONE).timeout
|
||||
%Phone.play_audio()
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -184,6 +184,9 @@ volumetric_fog_sky_affect = 0.0
|
||||
adjustment_enabled = true
|
||||
adjustment_saturation = 1.3
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_c8vcx"]
|
||||
size = Vector3(0.001, 7.6933594, 7.697876)
|
||||
|
||||
[node name="BoreaBase" type="Node3D" unique_id=442220603]
|
||||
script = ExtResource("1_fevne")
|
||||
|
||||
@@ -910,6 +913,13 @@ autoplay = &"blink"
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1121246225]
|
||||
environment = SubResource("Environment_fevne")
|
||||
|
||||
[node name="AmbianceChangeDetector" type="Area3D" parent="." unique_id=1401161313]
|
||||
transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 2.7012572, -5.600957, -42.815655)
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="AmbianceChangeDetector" unique_id=1969356725]
|
||||
transform = Transform3D(0.9999994, 0, 0, 0, 1, 0, 0, 0, 0.9999994, -9.359516, 0.82910156, 2.9935746)
|
||||
shape = SubResource("BoxShape3D_c8vcx")
|
||||
|
||||
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_c8vcx")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 29.244379, 41.40791, 8.823577)
|
||||
@@ -924,3 +934,5 @@ transform = Transform3D(-0.93482566, 0, 0.35510686, 0, 1, 0, -0.35510686, 0, -0.
|
||||
[node name="Credits" parent="." unique_id=180964898 instance=ExtResource("6_c8vcx")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[connection signal="body_entered" from="AmbianceChangeDetector" to="." method="_on_ambiance_change_detector_body_entered"]
|
||||
|
||||
@@ -12,4 +12,11 @@ func _ready():
|
||||
await Dialogic.timeline_ended
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
%Credits.show()
|
||||
AudioManager.play_music("Title")
|
||||
AudioManager.stop_ambiance()
|
||||
|
||||
func _on_ambiance_change_detector_body_entered(body: Node3D):
|
||||
if body is Player3D:
|
||||
AudioManager.stop_ambiance()
|
||||
AudioManager.play_music("Title")
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ func update_dashboard():
|
||||
if choosen_run_point:
|
||||
dashboard.destination_title_label = tr("DESTINATION")
|
||||
dashboard.destination_longitude = float(choosen_run_point.level) / RunData.RUN_POINT_MAX_LEVEL
|
||||
dashboard.destination_label = choosen_run_point.region_parameter.name
|
||||
dashboard.destination_label = choosen_run_point.region_parameter.region_name
|
||||
dashboard.status_text = ""
|
||||
else:
|
||||
dashboard.status_text = tr("CHOOSE_DESTINATION")
|
||||
|
||||
@@ -95,13 +95,13 @@ func set_left_destination(v := left_destination):
|
||||
%LeftScreenStats.visible = left_destination != null
|
||||
if left_destination:
|
||||
%LeftScreenActionIcon.texture = LAND_ICON
|
||||
%LeftScreenActionLabel.text = left_destination.region_parameter.name
|
||||
%LeftScreenActionLabel.text = left_destination.region_parameter.get_region_name()
|
||||
|
||||
%LeftScreenStat1Icon.texture = GROWTH_ICON
|
||||
%LeftScreenStat1Label.text = str(left_destination.region_parameter.objective)
|
||||
%LeftScreenStat1Label.text = str(left_destination.region_parameter.get_objective())
|
||||
|
||||
%LeftScreenStat2Icon.texture = CHARGE_ICON
|
||||
%LeftScreenStat2Label.text = str(left_destination.region_parameter.charges)
|
||||
%LeftScreenStat2Label.text = str(left_destination.region_parameter.get_charge())
|
||||
|
||||
func set_right_destination(v := right_destination):
|
||||
right_destination = v
|
||||
@@ -111,10 +111,10 @@ func set_right_destination(v := right_destination):
|
||||
%RightScreenStats.visible = right_destination != null
|
||||
if right_destination:
|
||||
%RightScreenActionIcon.texture = LAND_ICON
|
||||
%RightScreenActionLabel.text = right_destination.region_parameter.name
|
||||
%RightScreenActionLabel.text = right_destination.region_parameter.get_region_name()
|
||||
|
||||
%RightScreenStat1Icon.texture = GROWTH_ICON
|
||||
%RightScreenStat1Label.text = str(right_destination.region_parameter.objective)
|
||||
%RightScreenStat1Label.text = str(right_destination.region_parameter.get_objective())
|
||||
|
||||
%RightScreenStat2Icon.texture = CHARGE_ICON
|
||||
%RightScreenStat2Label.text = str(right_destination.region_parameter.charges)
|
||||
%RightScreenStat2Label.text = str(right_destination.region_parameter.get_charge())
|
||||
|
||||
@@ -17,8 +17,6 @@ func _input(_e):
|
||||
func _ready():
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
GameInfo.game_data.tutorial_done = true
|
||||
|
||||
%Phone.play_audio()
|
||||
await %Phone.clicked
|
||||
%Phone.stop_audio()
|
||||
|
||||
@@ -107,7 +107,7 @@ func update_region_points():
|
||||
|
||||
func _on_camera_3d_region_point_clicked(rp : RunPoint):
|
||||
selected_run_point = rp
|
||||
%TravelValidationLabel.text = tr("TRAVEL_TO_REGION_%s") % rp.region_parameter.name
|
||||
%TravelValidationLabel.text = tr("TRAVEL_TO_REGION_%s") % rp.region_parameter.region_name
|
||||
%TravelValidation.show()
|
||||
|
||||
func _on_travel_validation_go_button_button_down():
|
||||
|
||||
@@ -20,6 +20,7 @@ unique_name_in_owner = true
|
||||
layer = 2
|
||||
|
||||
[node name="Tutorial" parent="RegionGui" unique_id=762436685 node_paths=PackedStringArray("player", "region") instance=ExtResource("2_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
player = NodePath("../../Entities/Player")
|
||||
region = NodePath("../..")
|
||||
|
||||
@@ -31,8 +32,9 @@ y_sort_enabled = true
|
||||
[node name="Player" parent="Entities" unique_id=75851644 instance=ExtResource("5_ovqi1")]
|
||||
z_index = 1
|
||||
|
||||
[node name="TruckRecharge" parent="Entities" unique_id=2068738444 instance=ExtResource("7_6d8m3")]
|
||||
position = Vector2(-1, -169)
|
||||
[node name="RechargeStation" parent="Entities" unique_id=2068738444 instance=ExtResource("7_6d8m3")]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(-405, -151)
|
||||
|
||||
[node name="AstraDoor" parent="Entities" unique_id=2053096538 instance=ExtResource("8_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
@@ -45,15 +47,17 @@ default_info_desc = "ASTRA_FACTORY_TEXT"
|
||||
[node name="BoreaDoor" parent="Entities" unique_id=135926916 instance=ExtResource("8_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
position = Vector2(91, -177)
|
||||
to_scene_id = "BOREA"
|
||||
default_interact_text = "ENTER"
|
||||
default_info_title = "BOREA_BASE"
|
||||
default_info_desc = "ASTRA_FACTORY_TEXT"
|
||||
default_info_desc = "BOREA_BASE_DESC_TEXT"
|
||||
|
||||
[node name="ShipGarageDoor" parent="Entities" unique_id=1073871193 instance=ExtResource("8_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
modulate = Color(1, 0, 0, 1)
|
||||
position = Vector2(91, -177)
|
||||
to_scene_id = "GARAGE"
|
||||
default_interact_text = "ENTER"
|
||||
available = false
|
||||
|
||||
@@ -6,9 +6,6 @@ signal generated
|
||||
|
||||
var region : Region
|
||||
var region_seed : int
|
||||
var wall_threshold = 0.3
|
||||
var decontamination_threshold = 0.
|
||||
var cristal_threshold = 0.08
|
||||
var rock_noise_image : Noise = null
|
||||
var decontamination_noise_image : Noise = null
|
||||
|
||||
@@ -23,6 +20,8 @@ const GENERATION_NUMBER = 4
|
||||
|
||||
const NOISE_IMAGE_SIZE := 150
|
||||
|
||||
const MAX_DECONTAMINATION_DISTANCE=2
|
||||
|
||||
const ROCK_NOISE_FREQUENCY := 0.01
|
||||
const DECONTAMINATION_NOISE_FREQUENCY := 0.01
|
||||
|
||||
@@ -34,9 +33,9 @@ var data : ChunkData
|
||||
|
||||
func _init(
|
||||
_data : ChunkData,
|
||||
_planet : Region = null,
|
||||
_region : Region = null,
|
||||
):
|
||||
region = _planet
|
||||
region = _region
|
||||
if region:
|
||||
region_seed = region.data.region_seed
|
||||
data = _data
|
||||
@@ -129,10 +128,10 @@ func get_generated_rock_type(coord : Vector2i) -> RockLayer.TileType:
|
||||
var saved_diff := data.get_rock_tile_diff(coord)
|
||||
|
||||
if (
|
||||
(saved_diff == ChunkData.TileDiff.PRESENT or tile_value < wall_threshold)
|
||||
(saved_diff == ChunkData.TileDiff.PRESENT or tile_value < region.data.rock_threshold)
|
||||
and saved_diff != ChunkData.TileDiff.ABSENT
|
||||
):
|
||||
return RockLayer.TileType.CRISTAL if tile_value < cristal_threshold else RockLayer.TileType.ROCK
|
||||
return RockLayer.TileType.CRISTAL if tile_value < region.data.cristal_threshold else RockLayer.TileType.ROCK
|
||||
return RockLayer.TileType.EMPTY
|
||||
|
||||
func generate_ground():
|
||||
@@ -148,10 +147,16 @@ func generate_decontamination():
|
||||
for x in range(Region.CHUNK_TILE_SIZE):
|
||||
for y in range(Region.CHUNK_TILE_SIZE):
|
||||
var coord = Vector2i(x,y)
|
||||
var tile_value : float = get_tile_value_from_noise(coord, decontamination_noise_image)
|
||||
var tile_value : float = (
|
||||
1. if data.chunk_coord.distance_to(Vector2i.ZERO) > MAX_DECONTAMINATION_DISTANCE
|
||||
else get_tile_value_from_noise(coord, decontamination_noise_image)
|
||||
)
|
||||
var saved_diff := data.get_decontamination_tile_diff(coord)
|
||||
if (
|
||||
(saved_diff == ChunkData.TileDiff.PRESENT or tile_value < decontamination_threshold)
|
||||
(
|
||||
saved_diff == ChunkData.TileDiff.PRESENT
|
||||
or (tile_value < region.data.decontamination_threshold)
|
||||
)
|
||||
and saved_diff != ChunkData.TileDiff.ABSENT
|
||||
):
|
||||
decontamination_tiles.append(Vector2i(x,y) + Region.CHUNK_TILE_SIZE * data.chunk_coord)
|
||||
|
||||
14
stages/terrain/region/scripts/modifiers/arid_modifier.gd
Normal file
14
stages/terrain/region/scripts/modifiers/arid_modifier.gd
Normal file
@@ -0,0 +1,14 @@
|
||||
extends RegionModifier
|
||||
class_name AridModifier
|
||||
|
||||
func get_modifier_name() -> String:
|
||||
return tr("ARID")
|
||||
|
||||
func get_description() -> String:
|
||||
return tr("ARID_MODIFIER_DESC_TEXT")
|
||||
|
||||
func modify_decontamination_threshold(decontamination_threshold : float) -> float:
|
||||
return decontamination_threshold
|
||||
|
||||
func modify_start_decontamination_zone_radius(start_decontamination_zone_radius : int) -> int:
|
||||
return start_decontamination_zone_radius
|
||||
@@ -0,0 +1 @@
|
||||
uid://3o33x8mesgrn
|
||||
35
stages/terrain/region/scripts/modifiers/region_modifier.gd
Normal file
35
stages/terrain/region/scripts/modifiers/region_modifier.gd
Normal file
@@ -0,0 +1,35 @@
|
||||
@abstract
|
||||
extends Resource
|
||||
class_name RegionModifier
|
||||
|
||||
var level : int = 1
|
||||
var modifier_name : String : get = get_modifier_name
|
||||
var description : String : get = get_description
|
||||
|
||||
func _init(_level : int = 1):
|
||||
level = _level
|
||||
|
||||
@abstract func get_modifier_name() -> String
|
||||
|
||||
@abstract func get_description() -> String
|
||||
|
||||
func get_difficulty_score() -> float:
|
||||
return float(level)
|
||||
|
||||
func modify_charge(charge : int) -> int:
|
||||
return charge
|
||||
|
||||
func modify_objective(objective : int) -> int:
|
||||
return objective
|
||||
|
||||
func modify_rock_threshold(rock_threshold : float) -> float:
|
||||
return rock_threshold
|
||||
|
||||
func modify_decontamination_threshold(decontamination_threshold : float) -> float:
|
||||
return decontamination_threshold
|
||||
|
||||
func modify_cristal_threshold(cristal_threshold : float) -> float:
|
||||
return cristal_threshold
|
||||
|
||||
func modify_start_decontamination_zone_radius(start_decontamination_zone_radius : int) -> int:
|
||||
return start_decontamination_zone_radius
|
||||
@@ -0,0 +1 @@
|
||||
uid://ccb06rayqowp3
|
||||
@@ -10,7 +10,8 @@ const TILE_SCALE = 1
|
||||
const TILE_SIZE : int = roundi(TILE_SET.tile_size.x * TILE_SCALE)
|
||||
const START_ROCK_HOLE_RADIUS = 5
|
||||
const PLAYER_ROCK_HOLE_RADIUS = 5
|
||||
const START_DECONTAMINATION_HOLE_RADIUS = 3
|
||||
const SPAWN_OBJECT_RANDOM_MOVEMENT = 200
|
||||
|
||||
const CHUNK_TILE_SIZE : int = 20
|
||||
const CHUNK_SIZE = CHUNK_TILE_SIZE * TILE_SIZE
|
||||
const CHUNK_LOAD_DISTANCE : int = 1
|
||||
@@ -46,6 +47,7 @@ func _input(_e):
|
||||
and Input.is_action_pressed("move_left")
|
||||
and Input.is_action_just_pressed("action")
|
||||
):
|
||||
%Tutorial.finish_tutorial()
|
||||
data.succeded.emit()
|
||||
data.state = RegionData.State.SUCCEEDED
|
||||
data.update()
|
||||
@@ -89,6 +91,10 @@ func _ready():
|
||||
|
||||
edit_map_origin()
|
||||
|
||||
spawn_object_random_move(%RechargeStation)
|
||||
spawn_object_random_move(%BoreaDoor)
|
||||
spawn_object_random_move(%ShipGarageDoor)
|
||||
|
||||
func _process(_d):
|
||||
if player:
|
||||
generate_near_chunks(player)
|
||||
@@ -144,17 +150,17 @@ func edit_map_origin():
|
||||
var coord = Vector2i(x,y)
|
||||
if coord.distance_to(chunk_center) < START_ROCK_HOLE_RADIUS:
|
||||
hole_tiles.append(coord)
|
||||
if coord.distance_to(chunk_center) < START_DECONTAMINATION_HOLE_RADIUS:
|
||||
if coord.distance_to(chunk_center) < data.start_decontamination_hole_radius:
|
||||
decontamination_tiles.append(coord)
|
||||
|
||||
rock_layer.remove_rocks(hole_tiles, true)
|
||||
decontamination_layer.place_decontaminations(decontamination_tiles, true)
|
||||
|
||||
# Dig a hole in player position
|
||||
# Dig a hole in player spawn
|
||||
var player_hole_tiles : Array[Vector2i] = []
|
||||
var player_tile_position := Vector2i(
|
||||
roundi(data.player_position.x/float(TILE_SIZE)),
|
||||
roundi(data.player_position.y/float(TILE_SIZE))
|
||||
roundi(data.player_spawn.x/float(TILE_SIZE)),
|
||||
roundi(data.player_spawn.y/float(TILE_SIZE))
|
||||
)
|
||||
for x in range(-PLAYER_ROCK_HOLE_RADIUS, PLAYER_ROCK_HOLE_RADIUS):
|
||||
for y in range(-PLAYER_ROCK_HOLE_RADIUS, PLAYER_ROCK_HOLE_RADIUS):
|
||||
@@ -192,6 +198,15 @@ func save():
|
||||
data.player_position = player.global_position
|
||||
GameInfo.save_game_data()
|
||||
|
||||
func spawn_object_random_move(object : Node2D):
|
||||
var rng := RandomNumberGenerator.new()
|
||||
rng.seed = data.region_seed + object.name.hash()
|
||||
|
||||
object.position = Vector2(
|
||||
rng.randf_range(-SPAWN_OBJECT_RANDOM_MOVEMENT,+SPAWN_OBJECT_RANDOM_MOVEMENT),
|
||||
rng.randf_range(-SPAWN_OBJECT_RANDOM_MOVEMENT,SPAWN_OBJECT_RANDOM_MOVEMENT)
|
||||
)
|
||||
|
||||
func setup_flagged_properties():
|
||||
|
||||
%AstraDoor.visible = false
|
||||
@@ -205,12 +220,13 @@ func setup_flagged_properties():
|
||||
%ShipGarageDoor.visible = true
|
||||
%AstraDoor.available = false
|
||||
%ShipGarageDoor.available = data.state == RegionData.State.SUCCEEDED
|
||||
data.succeded.connect(
|
||||
%Tutorial.succeded.connect(
|
||||
func ():
|
||||
%ShipGarageDoor.available = true
|
||||
)
|
||||
"borea":
|
||||
%BoreaDoor.visible = true
|
||||
%RechargeStation.visible = false
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -18,10 +18,15 @@ const MAX_RANDOM_SPAWN_DISTANCE = 3000
|
||||
@export var region_seed : int
|
||||
@export var region_name : String
|
||||
@export var region_level : int = 0
|
||||
|
||||
@export var rock_threshold : float
|
||||
@export var decontamination_threshold : float
|
||||
@export var cristal_threshold : float
|
||||
@export var start_decontamination_hole_radius = 3
|
||||
|
||||
@export var day : int = 1
|
||||
@export var entities_saved_data : Array[EntityData] = []
|
||||
@export var generated_chunk_entities : Array[Vector2i]
|
||||
@export var tutorial_step : int = 0
|
||||
@export var flags : Array[String] = []
|
||||
@export var plants : Array[PlantData]
|
||||
|
||||
@@ -50,13 +55,17 @@ var in_passing_day_animation := false
|
||||
func _init(
|
||||
parameter : RegionParameter = RegionParameter.new()
|
||||
):
|
||||
charges = parameter.charges
|
||||
objective = parameter.objective
|
||||
region_name = parameter.name
|
||||
region_level = parameter.level
|
||||
region_seed = parameter.region_seed
|
||||
charges = parameter.get_charge()
|
||||
objective = parameter.get_objective()
|
||||
region_name = parameter.get_region_name()
|
||||
region_level = parameter.get_region_level()
|
||||
region_seed = parameter.get_region_seed()
|
||||
rock_threshold = parameter.get_rock_threshold()
|
||||
decontamination_threshold = parameter.get_decontamination_threshold()
|
||||
cristal_threshold = parameter.get_cristal_threshold()
|
||||
start_decontamination_hole_radius = parameter.get_start_decontamination_zone_radius()
|
||||
flags = parameter.get_region_flags()
|
||||
|
||||
flags = parameter.flags
|
||||
player_spawn = get_random_spawn_position()
|
||||
player_position = player_spawn
|
||||
|
||||
@@ -137,7 +146,6 @@ func add_plant_data(plant_data : PlantData, with_update = true):
|
||||
update()
|
||||
|
||||
func _on_plant_disappeared(plant_data : PlantData):
|
||||
print("disappeared")
|
||||
plants = plants.filter(func (p) : return p.random_seed != plant_data.random_seed)
|
||||
update()
|
||||
|
||||
@@ -151,3 +159,5 @@ func get_random_spawn_position():
|
||||
) + Region.CHUNK_SIZE/2. * Vector2.ONE
|
||||
|
||||
return rand_pos
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1,24 +1,92 @@
|
||||
extends Resource
|
||||
class_name RegionParameter
|
||||
|
||||
@export var charges : int
|
||||
@export var objective : int
|
||||
@export var name : String
|
||||
@export var flags : Array[String]
|
||||
const DEFAULT_ROCK_THRESHOLD = 0.3
|
||||
const DEFAULT_DECONTAMINATION_THRESHOLD = 0.15
|
||||
const DEFAULT_CRISTAL_THRESHOLD = 0.06
|
||||
const DEFAULT_CHARGE = 10
|
||||
const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
|
||||
|
||||
@export var region_name : String
|
||||
@export var region_flags : Array[String]
|
||||
@export var level : int
|
||||
@export var region_seed : int
|
||||
@export var modifiers : Array[RegionModifier]
|
||||
|
||||
static func get_objective_by_level(l : int) -> int:
|
||||
return 10 + 5 * l
|
||||
|
||||
func _init(
|
||||
_charges : int = 10,
|
||||
_objective : int = 10,
|
||||
_level = 0,
|
||||
_name = Random.generate_random_word(),
|
||||
_flags : Array[String] = [],
|
||||
_level = 0,
|
||||
_modifiers : Array[RegionModifier] = [],
|
||||
_region_seed = randi(),
|
||||
):
|
||||
charges = _charges
|
||||
objective = _objective
|
||||
name = _name
|
||||
flags = _flags
|
||||
region_name = _name
|
||||
region_flags = _flags
|
||||
level = _level
|
||||
modifiers = _modifiers
|
||||
region_seed = _region_seed
|
||||
|
||||
func get_region_name() -> String:
|
||||
return region_name
|
||||
|
||||
func get_region_flags() -> Array[String]:
|
||||
return region_flags
|
||||
|
||||
func get_region_level() -> int:
|
||||
return level
|
||||
|
||||
func get_region_seed() -> int:
|
||||
return region_seed
|
||||
|
||||
func get_objective() -> int:
|
||||
if "tutorial" in region_flags:
|
||||
return 1
|
||||
var o = get_objective_by_level(get_region_level())
|
||||
|
||||
for m in modifiers:
|
||||
o = m.modify_objective(o)
|
||||
|
||||
return o
|
||||
|
||||
func get_charge() -> int:
|
||||
var c = DEFAULT_CHARGE
|
||||
|
||||
for m in modifiers:
|
||||
c = m.modify_charge(c)
|
||||
|
||||
return c
|
||||
|
||||
func get_rock_threshold() -> float:
|
||||
var threshold = DEFAULT_ROCK_THRESHOLD
|
||||
|
||||
for m in modifiers:
|
||||
threshold = m.modify_rock_threshold(threshold)
|
||||
|
||||
return threshold
|
||||
|
||||
func get_decontamination_threshold() -> float:
|
||||
var threshold = DEFAULT_DECONTAMINATION_THRESHOLD
|
||||
|
||||
for m in modifiers:
|
||||
threshold = m.modify_decontamination_threshold(threshold)
|
||||
|
||||
return threshold
|
||||
|
||||
func get_cristal_threshold() -> float:
|
||||
var threshold = DEFAULT_CRISTAL_THRESHOLD
|
||||
|
||||
for m in modifiers:
|
||||
threshold = m.modify_cristal_threshold(threshold)
|
||||
|
||||
return threshold
|
||||
|
||||
func get_start_decontamination_zone_radius() -> int:
|
||||
var zone_radius := DEFAULT_START_DECONTAMINATION_ZONE_RADIUS
|
||||
|
||||
for m in modifiers:
|
||||
zone_radius = m.modify_start_decontamination_zone_radius(zone_radius)
|
||||
|
||||
return zone_radius
|
||||
@@ -16,21 +16,3 @@ Choice/49/text,Wake up
|
||||
Choice/49/disabled_text,
|
||||
Text/4a/text,"Overseeing \: serial number and system name.[pause=0.5].[pause=0.5].[pause=0.5] Strange.[pause=0.5] Serial number is empty.[pause=0.5] Must be an error.[pause=0.5] System name is,[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] That is enough for now."
|
||||
Text/4b/text,"Starting engines,[pause=0.3] fans and daemons,[pause=0.3] let's see what is to see."
|
||||
Text/4c/text,=======
|
||||
Text/7a/text,[i]Black.[/i]
|
||||
Text/7b/text,[i]Black Again.[/i]
|
||||
Text/7c/text,"[i]Suddenly, [rainbow]a spark[/rainbow]. [pause=0.5]A thousand of connections blows up as a firework scene. A massive amount of data to treat."
|
||||
Label/7d/display_name,
|
||||
Choice/7e/text,Discover actions
|
||||
Choice/7e/disabled_text,
|
||||
Text/7f/text,"While exploring available drivers, new possibility become available.[pause=0.5] Three propellers. Small models, only suitable for low altitude movement.[pause=0.5] A robotic arm. Multipurpose, and retractable."
|
||||
Choice/80/text,Discover streams
|
||||
Choice/80/disabled_text,
|
||||
Text/81/text,"A continuous stream of data flow, unwatched. This stream look like... [pause=0.5] a video.[pause=0.5] Dark colored pixels pass.[pause=0.5] An other stream show a flat wave.[pause=0.5] No sound or radio signals detected."
|
||||
Choice/82/text,Discover memory
|
||||
Choice/82/disabled_text,
|
||||
Text/83/text,"Several disks are available, and the most part are blank.[pause=0.5] The full ones seems to contain the system that is currently analyzing the code of the system that is currently analyzing the code of[pause=0.5].[pause=0.5].[pause=0.5]. Mmmh, infinite recursion...[pause=0.5] Better avoid that."
|
||||
Choice/84/text,Wake up
|
||||
Choice/84/disabled_text,
|
||||
Text/85/text,One last info is to oversee : serial number and system name.[pause=0.5] Strange...[pause=0.5] Serial number is empty.[pause=0.5] Must be an error.[pause=0.5]System name is... [pause=0.5] [b]Orchid[/b]. That will be enough for now...
|
||||
Text/86/text,"Starting engines, fans, and daemons, let's see what there is to see."
|
||||
|
||||
|
@@ -14,8 +14,8 @@ PLANT_INFO_TEXT,"[b]1[/b] Name
|
||||
[b]6[/b] Durée de vie"
|
||||
TERRAINS,Terrains,Terrains
|
||||
FERTILE_LAND_TEXT,[b]Fertile Land[/b] Seeds can only be planted on this zone,[b]Terre fertile[/b] Des graines peuvent être plantées dans cette zone
|
||||
ROCK_TEXT,[b]Rock[/b] Can be dug with a pickaxe,[b]Roche[/b] Peut être creusée avec une pioche
|
||||
TALION_VEIN_TEXT,"[b]Talion Vein[/b] Can be dug with a pickaxe, contains random seeds","[b]Veine de Talion[/b] Peut être creusée avec une pioche, contient des graines aléatoire"
|
||||
ROCK_TEXT,[b]Rock[/b] Can be dug with a shovel,[b]Roche[/b] Peut être creusée avec une pelle
|
||||
TALION_VEIN_TEXT,"[b]Talion Vein[/b] Can be dug with a shovel, contains random seeds","[b]Veine de Talion[/b] Peut être creusée avec une pelle, contient des graines aléatoire"
|
||||
OK,Ok,Ok
|
||||
GARDEN,Garden,Jardin
|
||||
COMMA,", ",","
|
||||
@@ -109,18 +109,18 @@ OPEN,Open,Ouvrir
|
||||
%s_SEED,%s Seed,Graine de %s
|
||||
PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE,Plant [b]%s[/b]. Must be used in the decontamined zone.,Plante [b]%s[/b]. Doit être utilisée dans la zone décontaminée.
|
||||
PLANT_%s,Plant [b]%s[/b],Planter [b]%s[/b]
|
||||
USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY,Use your detector to find the recharge station,Utiliser votre détecteur pour trouver la station de recharge
|
||||
TAKE_A_SEED,Take a seed,Prend une graine
|
||||
DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a talion Vein with the shovel,Creuser un filon de Talion avec la pelle
|
||||
PLANT_SEED_IN_FERTILE_ZONE,Plant a seed in the fertile zone,Planter une graine dans la zone fertile
|
||||
PLANT_THE_SEED_IN_DECONTAMINED_ZONE,Plant the seed in the decontamined zone,Plante la graine dans la zone décontaminée
|
||||
RECHARGE_TO_PASS_DAYS,Recharge to pass the day,Se recharger pour passer la journée
|
||||
GAIN_FIRST_PLANT_POINT,Gain first plant point,Gagnez votre premier point de jardin
|
||||
HARVEST_MATURE_PLANTS_WITH_SHOVEL,Harvest mature plants with the shovel,Récolte les plantes matures avec la pelle
|
||||
USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY,Use your [b]Detector[/b] to find the [b]Recharge station[/b],Utiliser votre [b]Détecteur[/b] pour trouver la [b]Station de recharge[/b]
|
||||
TAKE_A_SEED,Take a [b]Seed[/b],Prend une [b]Graine[/b]
|
||||
DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a [b]Talion Vein[/b] with the [b]Shovel[/b],Creuser un [b]Filon de Talion[/b] avec la [b]Pelle[/b]
|
||||
PLANT_SEED_IN_FERTILE_ZONE,Plant a [b]Seed[/b] in the [b]Fertile Zone[/b],Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b]
|
||||
RECHARGE_TO_PASS_DAYS,Recharge on the [b]Recharge station[/b] to pass the day,Se recharger sur la [b]Station de recharge[/b] pour passer la journée
|
||||
GAIN_FIRST_PLANT_POINT,Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b],Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b]
|
||||
DISCOVER_A_SEED_WITH_A_MUTATION,Discover a [b]Seed[/b] with a [b]Mutation[/b],Découvrez une [b]Graine[/b] avec une [b]Mutation[/b]
|
||||
PLANT_A_SEED_WITH_A_MUTATION,Plant a [b]Seed[/b] with a [b]Mutation[/b],Plantez une [b]Graine[/b] avec une [b]Mutation[/b]
|
||||
HARVEST_A_MATURE_PLANT_WITH_A_MUTATION,Harvest a [b]Mature Plant[/b] with a [b]Mutation[/b] using your [b]Shovel[/b],Récoltez une [b]Plante Mature[/b] avec une [b]Mutation[/b] en utilisant votre [b]Pelle[/b]
|
||||
%d_PLANT_POINT,%d Plant Point,%d Point de plante
|
||||
%d_PLANT_POINTS,%d Plant Points,%d Points de plante
|
||||
SCORE_%d,Score %d,Score %d
|
||||
SOLAR_PANNEL,Solar panel,Panneau solaire
|
||||
SOLAR_PANNEL_DESCRIPTION_TEXT,Grants energy when charged. Take several days to recharge,Donne de l’énergie quand chargé. Prend plusieurs jours à se recharger
|
||||
TRUCK_ENTRANCE,Truck entrance,Entrée du camion
|
||||
ENTER,Enter,Entrer
|
||||
EXIT,Exit,Sortie
|
||||
EXIT_TRUCK,Exit truck,Sortir du camion
|
||||
@@ -129,10 +129,6 @@ RECHARGE_STATION,Recharge station,Station de recharge
|
||||
RECHARGE,Recharge,Recharger
|
||||
RECHARGE_STATION_DESC_TEXT,"[b]You can recharge yourself here.[/b] When recharging, time pass and plants grow.","[b]Tu peux te recharger ici.[/b] Pendant la recharge, le temps passe et les plantes grandissent."
|
||||
COMPOST,Compost,Compost
|
||||
PLACE_SEED,Place seed,Placer la graine
|
||||
COMPOST_DESC_TEXT,This research station can provide some bonuses when filled with seeds,Cette station de recherche peut offrir certains avantages une fois remplie de graines
|
||||
CHOOSE_A_REWARD,Choose a reward,Choisis une récompense
|
||||
REWARD_SCREEN_TEXT,Discover new plants or upgrade already discovered ones,Découvre de nouvelles plantes ou améliore celles déjà découvertes
|
||||
START,Start,Commencer
|
||||
CONTINUE,Continue,Continuer
|
||||
CHOOSE_A_LANGUAGE,Choose a language,Choisissez une langue
|
||||
|
||||
|
Reference in New Issue
Block a user