Old Tam speaks (Kokoro); CC0 birdsong, crickets and owls; no plants through floors; menu and marker fixes
This commit is contained in:
@@ -149,6 +149,22 @@ func _chapter_one() -> void:
|
||||
check(float(G.counters.get("walk", 0.0)) < 15.0, "(a jump isn't counted as walking)")
|
||||
player.global_position = start
|
||||
await process_frame
|
||||
print(" Old Tam's voice")
|
||||
var NR: Node = root.get_node("Narrator")
|
||||
check(NR.spoken.has("tutorial_look"), "he reads the first step aloud")
|
||||
var TD: Dictionary = JSON.parse_string(FileAccess.get_file_as_string("res://data/tutorial.json"))
|
||||
var HD: Dictionary = JSON.parse_string(FileAccess.get_file_as_string("res://data/hints.json"))
|
||||
var stale: Array = []
|
||||
for s in TD.steps:
|
||||
if not NR.has_line("tutorial_" + String(s.id), String(s.text)):
|
||||
stale.append(s.id)
|
||||
if not NR.has_line("tutorial_finish", String(TD.finish.text)):
|
||||
stale.append("finish")
|
||||
for h in HD.hints:
|
||||
if not NR.has_line("hint_" + String(h.id), String(h.text)):
|
||||
stale.append("hint " + String(h.id))
|
||||
check(stale.is_empty(), "every line he says is recorded, from the text as it is now (else run tools/voice/make_voice.sh) %s" % [stale])
|
||||
check(not NR.say("tutorial_look", "Some other words"), "(changed words: he stays quiet rather than say the old ones)")
|
||||
print("2. sticks and stones")
|
||||
check(String(G.current().id) == "sticks", "next: %s" % G.current().get("title", "?"))
|
||||
await process_frame
|
||||
@@ -158,13 +174,24 @@ func _chapter_one() -> void:
|
||||
for pk in world.props.pickups.values():
|
||||
if pk.item_id == "stick" and not pk.taken and pk.global_position.distance_to(m) < 0.01:
|
||||
near_stick = true
|
||||
check(m != Vector3.INF and near_stick, "the marker stands on the nearest stick")
|
||||
var near_stone := false
|
||||
for pk in world.props.pickups.values():
|
||||
if pk.item_id == "stone" and not pk.taken and pk.global_position.distance_to(m) < 0.01:
|
||||
near_stone = true
|
||||
check(m != Vector3.INF and (near_stick or near_stone), "the marker stands on the nearest stick or stone")
|
||||
# Flax first, out of order: step 3 will tick the moment it comes up.
|
||||
check(_take("fiber"), "(pick some flax early)")
|
||||
check(_take("stick") and _take("stick"), "two sticks")
|
||||
check(G.progress_text().contains("Sticks 2/3") and G.progress_text().contains("Stone 0/3"), "the panel counts them: \"%s\"" % G.progress_text())
|
||||
check(_panel()._progress.text == G.progress_text(), "(shown on the panel)")
|
||||
check(_take("stick") and _take("stone") and _take("stone"), "a third, and two stones")
|
||||
check(_take("stick"), "a third stick")
|
||||
G._marker = G.find_marker()
|
||||
var on_stone := false
|
||||
for pk in world.props.pickups.values():
|
||||
if pk.item_id == "stone" and not pk.taken and pk.global_position.distance_to(G.marker_position()) < 0.01:
|
||||
on_stone = true
|
||||
check(on_stone, "enough sticks: now the marker's on a stone")
|
||||
check(_take("stone") and _take("stone"), "two stones")
|
||||
check(String(G.current().id) == "sticks", "not done yet (2 of 3 stones)")
|
||||
check(_take("stone"), "the third stone")
|
||||
check(ticked == ["look", "sticks", "flax"], "sticks and stones tick, and so does the flax picked earlier (%s)" % [ticked])
|
||||
|
||||
Reference in New Issue
Block a user