Merge pull request #17 from STEMuli-Tx/feature/hot-fixes

Track missions and fix lamp post
pull/18/head
mrwadepro 2025-04-21 13:14:39 +07:00 committed by GitHub
commit e6a0cdfbbb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
88 changed files with 1684 additions and 57 deletions

@ -23,6 +23,7 @@ allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]

@ -0,0 +1,64 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://x5h4xutbldq3"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="1_nv6c6"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_yfbrc"]
[ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_d0ffl"]
[sub_resource type="Resource" id="Resource_ywws1"]
script = ExtResource("1_yfbrc")
type = 0
target_count = 3
current_count = 0
description = "Build 3 connecting roads"
completed = false
structure = ExtResource("2_d0ffl")
[resource]
script = ExtResource("1_nv6c6")
id = "1"
title = "Census Planning"
description = "As the new city planner, you need to establish a baseline understanding of your growing community. The mayor has requested a comprehensive census to guide future development."
objectives = Array[ExtResource("1_yfbrc")]([SubResource("Resource_ywws1")])
rewards = {
"cash": 250
}
next_mission_id = "2"
graph_path = ""
full_screen_path = ""
intro_text = "Welcome to Stem City! Let's learn how to build a city from the ground up. Start by building a road."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"correct_answer": {
"animation": "happy",
"duration": 5000,
"text": ["Great job! That's the right answer!", "Perfect! You got it right!"]
},
"incorrect_answer": {
"animation": "sad",
"duration": 5000,
"text": ["Hmm, that doesn't look right. Let's try again.", "Not quite right. Don't worry, you can try again!"]
},
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["You've completed your first mission! Great job building your first road!"]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Welcome to Stem City! I'm your learning companion. Let's build a city together!", "Time to start our adventure in Stem City! I'll help you build your first city."]
},
"objective_completed_2": {
"animation": "happy",
"duration": 5000,
"text": ["You built a road! Now your citizens can move around the city.", "Nice work on that road! Roads help connect different parts of your city."]
}
}
unlocked_items = Array[String](["res://models/building-small-a.glb"])

@ -0,0 +1,64 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cjr36hqnmyn0x"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_dhx01"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_em5vq"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_mum3p"]
[sub_resource type="Resource" id="Resource_7c02e"]
script = ExtResource("1_dhx01")
type = 0
target_count = 3
current_count = 0
description = "Build 3 residential buildings"
completed = false
structure = ExtResource("2_em5vq")
[resource]
script = ExtResource("2_mum3p")
id = "2"
title = "Census Planning"
description = "Now that we have a road, let's build a residential building for our citizens!"
objectives = Array[ExtResource("1_dhx01")]([SubResource("Resource_7c02e")])
rewards = {
"cash": 250
}
next_mission_id = "3"
graph_path = ""
full_screen_path = ""
intro_text = "Great job on the road! Now let's build a residential building where our citizens can live."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"correct_answer": {
"animation": "happy",
"duration": 5000,
"text": ["Great job! That's the right answer!", "Perfect! You got it right!"]
},
"incorrect_answer": {
"animation": "sad",
"duration": 5000,
"text": ["Hmm, that doesn't look right. Let's try again.", "Not quite right. Don't worry, you can try again!"]
},
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["You've completed your second mission! Great job building your first residential building!"]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Now it's time to build homes for our citizens!", "Let's add a residential building to our city!"]
},
"objective_completed_3": {
"animation": "excited",
"duration": 5000,
"text": ["Amazing! You built your first residential building where people can live.", "You just built a home for your city residents! The population is growing."]
}
}
unlocked_items = Array[String](["res://models/road-corner.glb"])

@ -0,0 +1,62 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://dykbopx8n3c3v"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_l3spi"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_b4llw"]
[sub_resource type="Resource" id="Resource_c06be"]
script = ExtResource("1_l3spi")
type = 3
target_count = 50
current_count = 0
description = "Reach a population of 50 citizens"
completed = false
[resource]
script = ExtResource("2_b4llw")
id = "3"
title = "Census Planning"
description = "As your city grows, you need to choose the most efficient construction company."
objectives = Array[ExtResource("1_l3spi")]([SubResource("Resource_c06be")])
rewards = {
"cash": 500
}
next_mission_id = "4"
graph_path = "res://images/mission_2.png"
full_screen_path = ""
intro_text = "Your city is rapidly growing, and you need to build houses to accommodate new residents! Two different construction companies offer to help. Study the company data below, find the unit rates (houses per worker), and determine which company would require fewer workers to build 40 houses in a week. Which company requires fewer workers to build 40 houses in a week? (A or B)"
question_text = "Which company requires fewer workers to build 40 houses in a week? (A or B)"
correct_answer = "A"
feedback_text = "Correct! Company A (City Builders Inc.) would require fewer workers to build 40 houses. Company A builds at a rate of 4 houses per worker per week, while Company B builds at a rate of 3 houses per worker per week. For 40 houses, Company A needs 10 workers while Company B needs about 13.33 workers."
incorrect_feedback = "Not quite right. Look carefully at the data for both companies. Compare their rates: Company A builds 4 houses per worker per week, while Company B builds 3 houses per worker per week. Calculate how many workers each would need for 40 houses."
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"correct_answer": {
"animation": "happy",
"duration": 5000,
"text": ["Perfect! Company A is more efficient because each worker builds more houses per week.", "Exactly right! You found the company that can build the houses with fewer workers."]
},
"incorrect_answer": {
"animation": "sad",
"duration": 5000,
"text": ["Let's think about this differently. Look at how many houses each worker can build per week and calculate from there.", "Not quite right. Check the rates carefully: how many houses can one worker build in a week for each company?"]
},
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": "Great job selecting the most efficient construction company! Your city will grow faster now."
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["It's time to expand our city! We need to choose the most efficient construction company.", "We have two construction companies offering their services. Let's analyze which one is better!"]
},
"objective_completed_7": {
"animation": "happy",
"duration": 5000,
"text": ["You've solved the construction company problem! That's good mathematical thinking.", "You've made a wise decision based on the data. That's how city planners work!"]
}
}
unlocked_items = Array[String](["res://models/store.glb"])

@ -0,0 +1,38 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://442cwthak2pa"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_tcpuf"]
[ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_d7dn8"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_viy3t"]
[sub_resource type="Resource" id="Resource_1rxby"]
script = ExtResource("1_tcpuf")
type = 0
target_count = 2
current_count = 0
description = "Build 2 store buildings "
completed = false
structure = ExtResource("2_d7dn8")
[resource]
script = ExtResource("3_viy3t")
id = "4"
title = "Market Research"
description = "Local businesses are interested in setting up shop in your city, but they need data on where to locate for maximum profit."
objectives = Array[ExtResource("1_tcpuf")]([SubResource("Resource_1rxby")])
rewards = {
"cash": 0
}
next_mission_id = "5"
graph_path = ""
full_screen_path = ""
intro_text = ""
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://bom5bu47dy5kp"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_pfd6v"]
[ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_ktjdq"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_w1cq1"]
[sub_resource type="Resource" id="Resource_a42kn"]
script = ExtResource("1_pfd6v")
type = 0
target_count = 3
current_count = 0
description = "Build 3 additional road segments"
completed = false
structure = ExtResource("2_ktjdq")
[resource]
script = ExtResource("3_w1cq1")
id = "5"
title = "Market Research"
description = "To support the growing commercial district, you need to improve city infrastructure by adding more roads."
objectives = Array[ExtResource("1_pfd6v")]([SubResource("Resource_a42kn")])
rewards = {
"cash": 300
}
next_mission_id = "6"
graph_path = ""
full_screen_path = ""
intro_text = "Your businesses need better access! Add 3 more road segments to improve city connectivity."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great job expanding the road network! Better roads mean better business for your stores."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to improve city infrastructure! Let's add more roads to support your growing commercial district."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,47 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://csrqvfwp63ygr"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_a8iy6"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_5q4dp"]
[sub_resource type="Resource" id="Resource_m1jev"]
script = ExtResource("1_a8iy6")
type = 3
target_count = 75
current_count = 0
description = "Reach a population of 75 citizens"
completed = false
[resource]
script = ExtResource("2_5q4dp")
id = "6"
title = "Market Research"
description = "Your commercial district needs more customers! Grow your city's population to support local businesses."
objectives = Array[ExtResource("1_a8iy6")]([SubResource("Resource_m1jev")])
rewards = {
"cash": 400
}
next_mission_id = "7"
graph_path = ""
full_screen_path = ""
intro_text = "Businesses need customers! Increase your city population to 75 citizens to support your commercial sector."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Your city has reached 75 citizens! That's a great boost for your local economy and businesses."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Let's grow our city population to support our new businesses! More people means more customers."]
}
}
unlocked_items = Array[String](["res://models/road-straight-lightposts.glb"])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://qwiwim2pg88f"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_lsd8i"]
[ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="2_v2q1j"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_gtu3s"]
[sub_resource type="Resource" id="Resource_mhw3l"]
script = ExtResource("1_lsd8i")
type = 0
target_count = 2
current_count = 0
description = "Add 2 roads with lamp posts"
completed = false
structure = ExtResource("2_v2q1j")
[resource]
script = ExtResource("3_gtu3s")
id = "7"
title = "Market Research"
description = "The Chamber of Commerce has requested better lighting for the commercial district to attract evening shoppers."
objectives = Array[ExtResource("1_lsd8i")]([SubResource("Resource_mhw3l")])
rewards = {
"cash": 350
}
next_mission_id = "8"
graph_path = ""
full_screen_path = ""
intro_text = "Let's improve the shopping experience! Add roads with lamp posts to make the commercial district more inviting at night."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Excellent! These lamp posts will help businesses attract customers even in the evening hours."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Let's light up the commercial district! Well-lit streets attract more shoppers in the evening."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cfgw8dblm55c5"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_fvshb"]
[ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_evy85"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_mtrpd"]
[sub_resource type="Resource" id="Resource_pj2vg"]
script = ExtResource("1_fvshb")
type = 0
target_count = 5
current_count = 0
description = "Build 5 road segments"
completed = false
structure = ExtResource("2_evy85")
[resource]
script = ExtResource("3_mtrpd")
id = "8"
title = "Grid Growth"
description = "City planners have proposed a grid-based layout for efficient city expansion. Begin implementing this pattern with strategic road placement."
objectives = Array[ExtResource("1_fvshb")]([SubResource("Resource_pj2vg")])
rewards = {
"cash": 300
}
next_mission_id = "9"
graph_path = ""
full_screen_path = ""
intro_text = "Let's start implementing a grid pattern for your city! Begin by placing 5 road segments in a grid layout."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great work establishing a grid pattern! This layout will make future city expansion more organized."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to think about city patterns! Grid layouts help organize urban development effectively."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ba3ndftq7dht7"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_miqck"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_r3vpw"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_mdu3m"]
[sub_resource type="Resource" id="Resource_utswr"]
script = ExtResource("1_miqck")
type = 1
target_count = 3
current_count = 0
description = "Place 3 residential buildings"
completed = false
structure = ExtResource("2_r3vpw")
[resource]
script = ExtResource("3_mdu3m")
id = "9"
title = "Grid Growth"
description = "Now that you've established your grid pattern, it's time to add residential zones to the grid. This will demonstrate how building placement follows the road network."
objectives = Array[ExtResource("1_miqck")]([SubResource("Resource_utswr")])
rewards = {
"cash": 350
}
next_mission_id = "10"
graph_path = ""
full_screen_path = ""
intro_text = "Let's add residents to our grid pattern! Place 3 residential buildings along your road network."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Excellent job placing those residential buildings! Notice how they align with your grid pattern."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to add people to our grid! Watch how building placement creates patterns in urban development."]
}
}
unlocked_items = Array[String](["res://models/power_plant.glb"])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://dgimr2v12rjqu"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_8rvyb"]
[ext_resource type="Resource" uid="uid://c4qbn3d85prxx" path="res://structures/power-plant.tres" id="2_0kbkj"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_8cjg3"]
[sub_resource type="Resource" id="Resource_fmshv"]
script = ExtResource("1_8rvyb")
type = 0
target_count = 1
current_count = 0
description = "Maintain positive electricity balance"
completed = false
structure = ExtResource("2_0kbkj")
[resource]
script = ExtResource("3_8cjg3")
id = "10"
title = "Grid Growth"
description = "Your growing city needs more power! Ensure you have enough electricity production to support your expanding grid."
objectives = Array[ExtResource("1_8rvyb")]([SubResource("Resource_fmshv")])
rewards = {
"cash": 400
}
next_mission_id = "11"
graph_path = ""
full_screen_path = ""
intro_text = "Your city needs power to grow! Make sure you have a positive electricity balance by adding power infrastructure."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great job securing power for your city! Balanced infrastructure is key to sustainable growth."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Let's ensure our grid has enough power! Every growing city needs reliable electricity."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://dm2o4dq2oml53"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_x4c68"]
[ext_resource type="Resource" uid="uid://ccb475jeg7ym5" path="res://structures/grass-trees.tres" id="2_hcf87"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_mjpfs"]
[sub_resource type="Resource" id="Resource_mldwf"]
script = ExtResource("1_x4c68")
type = 0
target_count = 4
current_count = 0
description = "Add 4 grass tiles with trees"
completed = false
structure = ExtResource("2_hcf87")
[resource]
script = ExtResource("3_mjpfs")
id = "11"
title = "Grid Growth"
description = "Complete your grid pattern with green spaces! Add trees and grass to create a more balanced and livable city pattern."
objectives = Array[ExtResource("1_x4c68")]([SubResource("Resource_mldwf")])
rewards = {
"cash": 300
}
next_mission_id = "12"
graph_path = ""
full_screen_path = ""
intro_text = "Let's add some green spaces to our grid pattern! Place 4 grass tiles with trees to improve city aesthetics."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Wonderful! These green spaces create a pattern of balance between urban development and nature."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to add natural elements to our grid! Green spaces are an important part of city planning patterns."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://btwrfq37q8vey"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_ajvs5"]
[ext_resource type="Resource" uid="uid://d2jplegnkl6u2" path="res://structures/road-corner.tres" id="2_exdai"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_kexcf"]
[sub_resource type="Resource" id="Resource_qykcx"]
script = ExtResource("1_ajvs5")
type = 0
target_count = 2
current_count = 0
description = "Create 2 curved road segments"
completed = false
structure = ExtResource("2_exdai")
[resource]
script = ExtResource("3_kexcf")
id = "12"
title = "Traffic Flow Analysis"
description = "The Transportation Department wants to analyze how curved roads affect traffic flow. Add corner roads to create more natural pathways."
objectives = Array[ExtResource("1_ajvs5")]([SubResource("Resource_qykcx")])
rewards = {
"cash": 300
}
next_mission_id = "13"
graph_path = ""
full_screen_path = ""
intro_text = "Let's improve traffic flow by adding curved roads! Place 2 corner road segments to create more natural pathways."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great job adding those curved roads! These corners help traffic flow more naturally through your city."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to analyze traffic patterns! Curved roads create different traffic flow patterns than straight roads."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cf7gpb4j7gq1g"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_8k2sf"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_4a8uo"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_aihyv"]
[sub_resource type="Resource" id="Resource_fmsjh"]
script = ExtResource("1_8k2sf")
type = 1
target_count = 3
current_count = 0
description = "Build 3 more residential buildings"
completed = false
structure = ExtResource("2_4a8uo")
[resource]
script = ExtResource("3_aihyv")
id = "13"
title = "Traffic Flow Analysis"
description = "To better analyze traffic patterns, we need more residents using the road network. Add residential buildings to generate traffic flow."
objectives = Array[ExtResource("1_8k2sf")]([SubResource("Resource_fmsjh")])
rewards = {
"cash": 350
}
next_mission_id = "14"
graph_path = ""
full_screen_path = ""
intro_text = "Let's add more traffic to analyze flow patterns! Build 3 more residential buildings along your road network."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Well done! These new residences will generate traffic patterns for us to analyze."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to add more residents to our road network! More people means more traffic to analyze."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ddmxjjyxgxyxo"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_1hl01"]
[ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_i3hgc"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_6fq1p"]
[sub_resource type="Resource" id="Resource_h6f0e"]
script = ExtResource("1_1hl01")
type = 0
target_count = 4
current_count = 0
description = "Add 4 additional road segments"
completed = false
structure = ExtResource("2_i3hgc")
[resource]
script = ExtResource("3_6fq1p")
id = "14"
title = "Traffic Flow Analysis"
description = "Our traffic study needs more data! Expand the road network to create more complex traffic patterns for analysis."
objectives = Array[ExtResource("1_1hl01")]([SubResource("Resource_h6f0e")])
rewards = {
"cash": 350
}
next_mission_id = "15"
graph_path = ""
full_screen_path = ""
intro_text = "Let's expand our traffic study! Add 4 more road segments to create a more complex network for analysis."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Excellent work expanding the road network! Now we can analyze more complex traffic patterns."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to create more complex traffic patterns! More roads means more data to analyze."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://doxd30r8qbgdq"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_kdkdo"]
[ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="2_0dtbf"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_uodr7"]
[sub_resource type="Resource" id="Resource_uq2hw"]
script = ExtResource("1_kdkdo")
type = 0
target_count = 3
current_count = 0
description = "Install 3 lamp posts on roads"
completed = false
structure = ExtResource("2_0dtbf")
[resource]
script = ExtResource("3_uodr7")
id = "15"
title = "Traffic Flow Analysis"
description = "Night traffic requires special consideration. Add roads with lamp posts to analyze how lighting affects traffic flow and safety."
objectives = Array[ExtResource("1_kdkdo")]([SubResource("Resource_uq2hw")])
rewards = {
"cash": 400
}
next_mission_id = "16"
graph_path = ""
full_screen_path = ""
intro_text = "Let's study night traffic patterns! Add 3 roads with lamp posts to analyze how lighting affects traffic flow."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Perfect! These lamp posts will help us analyze night traffic patterns and safety improvements."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to study night traffic! Proper lighting is essential for traffic safety after dark."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,47 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://duaxn13myfx22"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_40kcw"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_x8j3r"]
[sub_resource type="Resource" id="Resource_qlixo"]
script = ExtResource("1_40kcw")
type = 3
target_count = 100
current_count = 0
description = "Increase population to 100 citizens"
completed = false
[resource]
script = ExtResource("2_x8j3r")
id = "16"
title = "Sustainable Development"
description = "Your city is growing rapidly, but you need to ensure this growth happens sustainably. Model population growth to ensure you can meet everyone's needs."
objectives = Array[ExtResource("1_40kcw")]([SubResource("Resource_qlixo")])
rewards = {
"cash": 500
}
next_mission_id = "17"
graph_path = ""
full_screen_path = ""
intro_text = "Let's model sustainable population growth! Grow your city to 100 citizens while balancing resources."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Congratulations on reaching 100 citizens! Your sustainable growth model is working well."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to model sustainable growth! Can we grow our population while maintaining quality of life?"]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,59 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=7 format=3 uid="uid://fuxb3pfbbwjm"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_75i2t"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_lh8y5"]
[ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="3_3t66o"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="4_30pdy"]
[sub_resource type="Resource" id="Resource_qb5w1"]
script = ExtResource("1_75i2t")
type = 1
target_count = 6
current_count = 0
description = "Have 6 residential buildings"
completed = false
structure = ExtResource("2_lh8y5")
[sub_resource type="Resource" id="Resource_vcbou"]
script = ExtResource("1_75i2t")
type = 0
target_count = 3
current_count = 0
description = "Have 3 store buildings"
completed = false
structure = ExtResource("3_3t66o")
[resource]
script = ExtResource("4_30pdy")
id = "17"
title = "Sustainable Development"
description = "A balanced mix of residential and commercial zones is key to sustainable development. Model the ideal ratio for your city."
objectives = Array[ExtResource("1_75i2t")]([SubResource("Resource_qb5w1"), SubResource("Resource_vcbou")])
rewards = {
"cash": 600
}
next_mission_id = "18"
graph_path = ""
full_screen_path = ""
intro_text = "Let's model the perfect balance between homes and businesses! You need 6 residential buildings and 3 store buildings."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Perfect balance! This ratio of homes to businesses creates a sustainable economic model."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to model the perfect ratio! A sustainable city needs the right balance of homes and businesses."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://byd5jxiutxpky"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_3s3sm"]
[ext_resource type="Resource" uid="uid://c4qbn3d85prxx" path="res://structures/power-plant.tres" id="2_5l1dw"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_w8jc7"]
[sub_resource type="Resource" id="Resource_d7jw4"]
script = ExtResource("1_3s3sm")
type = 0
target_count = 1
current_count = 0
description = "Ensure positive electricity production"
completed = false
structure = ExtResource("2_5l1dw")
[resource]
script = ExtResource("3_w8jc7")
id = "18"
title = "Sustainable Development"
description = "Energy sustainability is crucial for long-term growth. Model your city's power needs to ensure you have enough electricity for everyone."
objectives = Array[ExtResource("1_3s3sm")]([SubResource("Resource_d7jw4")])
rewards = {
"cash": 450
}
next_mission_id = "19"
graph_path = ""
full_screen_path = ""
intro_text = "Let's model energy sustainability! Ensure your city has a positive electricity balance as it grows."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great job balancing energy production! Sustainable power is essential for long-term growth."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to model energy sustainability! Can we meet everyone's power needs while still growing?"]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://daug1o7kppqit"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_oa16m"]
[ext_resource type="Resource" uid="uid://ccb475jeg7ym5" path="res://structures/grass-trees.tres" id="2_wudjj"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_3tpnw"]
[sub_resource type="Resource" id="Resource_8dxyl"]
script = ExtResource("1_oa16m")
type = 0
target_count = 5
current_count = 0
description = "Add 5 grass tiles with trees"
completed = false
structure = ExtResource("2_wudjj")
[resource]
script = ExtResource("3_3tpnw")
id = "19"
title = "Sustainable Development"
description = "Environmental sustainability requires green spaces. Model how adding natural elements improves the sustainability of your city."
objectives = Array[ExtResource("1_oa16m")]([SubResource("Resource_8dxyl")])
rewards = {
"cash": 400
}
next_mission_id = "20"
graph_path = ""
full_screen_path = ""
intro_text = "Let's model environmental sustainability! Add green spaces to improve air quality and livability."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Beautiful! These green spaces make your city more environmentally sustainable and livable."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to add some nature to our city model! Green spaces are crucial for environmental sustainability."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cp7tcpktwlrkt"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_fywct"]
[ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_a71iq"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_38y5t"]
[sub_resource type="Resource" id="Resource_wq8mf"]
script = ExtResource("1_fywct")
type = 0
target_count = 3
current_count = 0
description = "Build 3 store buildings"
completed = false
structure = ExtResource("2_a71iq")
[resource]
script = ExtResource("3_38y5t")
id = "20"
title = "Urban Planning"
description = "Good urban planning requires commercial zones strategically placed throughout the city. Plan and build new commercial districts."
objectives = Array[ExtResource("1_fywct")]([SubResource("Resource_wq8mf")])
rewards = {
"cash": 450
}
next_mission_id = "21"
graph_path = ""
full_screen_path = ""
intro_text = "Let's create a commercial district! Build 3 store buildings as part of your urban planning model."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Excellent commercial planning! These stores will serve as hubs for economic activity in your city."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to plan commercial zones! Strategic store placement is key to good urban planning."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://c3q1afcvwi4rk"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_0s0wv"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_6f04c"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_7jlc0"]
[sub_resource type="Resource" id="Resource_3fy3g"]
script = ExtResource("1_0s0wv")
type = 1
target_count = 4
current_count = 0
description = "Add 4 residential buildings"
completed = false
structure = ExtResource("2_6f04c")
[resource]
script = ExtResource("3_7jlc0")
id = "21"
title = "Urban Planning"
description = "Residential zoning is a critical component of urban planning. Create new residential areas to accommodate your growing population."
objectives = Array[ExtResource("1_0s0wv")]([SubResource("Resource_3fy3g")])
rewards = {
"cash": 500
}
next_mission_id = "22"
graph_path = ""
full_screen_path = ""
intro_text = "Let's plan residential zones! Build 4 more residential buildings as part of your urban development model."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great residential planning! You've created well-designed neighborhoods for your citizens."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to plan residential areas! Good housing placement is essential to urban planning."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ct1k7n2oopwdu"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_40klq"]
[ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="2_u46hd"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_j3mtn"]
[sub_resource type="Resource" id="Resource_fai8r"]
script = ExtResource("1_40klq")
type = 0
target_count = 4
current_count = 0
description = "Add 4 roads with lamp posts"
completed = false
structure = ExtResource("2_u46hd")
[resource]
script = ExtResource("3_j3mtn")
id = "22"
title = "Urban Planning"
description = "Well-lit streets are essential for safety and walkability. Plan and implement street lighting in your urban development model."
objectives = Array[ExtResource("1_40klq")]([SubResource("Resource_fai8r")])
rewards = {
"cash": 450
}
next_mission_id = "23"
graph_path = ""
full_screen_path = ""
intro_text = "Let's improve street safety! Add 4 roads with lamp posts as part of your urban infrastructure plan."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Excellent lighting plan! Well-lit streets make your city safer and more accessible at night."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to plan street lighting! Good urban planning includes well-lit public spaces."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,59 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=7 format=3 uid="uid://d1fykuxfmh2q1"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_wnlf0"]
[ext_resource type="Resource" uid="uid://dqqe3iofnleup" path="res://structures/pavement-fountain.tres" id="2_bmmdj"]
[ext_resource type="Resource" uid="uid://ccb475jeg7ym5" path="res://structures/grass-trees.tres" id="3_ycm66"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="4_8gmvv"]
[sub_resource type="Resource" id="Resource_1ht3m"]
script = ExtResource("1_wnlf0")
type = 0
target_count = 1
current_count = 0
description = "Create 1 fountain"
completed = false
structure = ExtResource("2_bmmdj")
[sub_resource type="Resource" id="Resource_5f31m"]
script = ExtResource("1_wnlf0")
type = 0
target_count = 4
current_count = 0
description = "Add 4 grass tiles with trees surrounding the fountain"
completed = false
structure = ExtResource("3_ycm66")
[resource]
script = ExtResource("4_8gmvv")
id = "23"
title = "Urban Planning"
description = "Public spaces like parks and fountains improve quality of life. Plan and create a beautiful public square in your city."
objectives = Array[ExtResource("1_wnlf0")]([SubResource("Resource_1ht3m"), SubResource("Resource_5f31m")])
rewards = {
"cash": 600
}
next_mission_id = "24"
graph_path = ""
full_screen_path = ""
intro_text = "Let's create a public square! Build a fountain surrounded by 4 grass tiles with trees for your citizens to enjoy."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Beautiful public space! This fountain plaza will be a favorite gathering spot for your citizens."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to plan public spaces! Good urban design includes beautiful areas for people to gather."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,47 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://detwnqsq87r30"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_cjqfg"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_pv8r1"]
[sub_resource type="Resource" id="Resource_e2jx7"]
script = ExtResource("1_cjqfg")
type = 3
target_count = 150
current_count = 0
description = "Increase city population to 150"
completed = false
[resource]
script = ExtResource("2_pv8r1")
id = "24"
title = "Economic Forecasting"
description = "Economic models predict substantial growth for your city. Use population data to forecast economic trends and prepare for the future."
objectives = Array[ExtResource("1_cjqfg")]([SubResource("Resource_e2jx7")])
rewards = {
"cash": 700
}
next_mission_id = "25"
graph_path = ""
full_screen_path = ""
intro_text = "Let's create economic growth forecasts! Increase your population to 150 citizens to model future economic needs."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Congratulations on reaching 150 citizens! Your economic growth model is showing positive trends."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to forecast economic growth! Population trends are key indicators for economic planning."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,59 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=7 format=3 uid="uid://bj7tjuknfaeyg"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_t87pd"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_ys3mw"]
[ext_resource type="Resource" uid="uid://bh65eqgid4kxy" path="res://structures/building-small-c.tres" id="3_jl18p"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="4_2h1ol"]
[sub_resource type="Resource" id="Resource_mht7j"]
script = ExtResource("1_t87pd")
type = 1
target_count = 3
current_count = 0
description = "Build 3 small residential buildings"
completed = false
structure = ExtResource("2_ys3mw")
[sub_resource type="Resource" id="Resource_vvuiq"]
script = ExtResource("1_t87pd")
type = 1
target_count = 2
current_count = 0
description = "Build 2 large residential buildings"
completed = false
structure = ExtResource("3_jl18p")
[resource]
script = ExtResource("4_2h1ol")
id = "25"
title = "Economic Forecasting"
description = "Housing diversity is important for economic resilience. Create a mix of small and large residential buildings to model housing market forecasts."
objectives = Array[ExtResource("1_t87pd")]([SubResource("Resource_mht7j"), SubResource("Resource_vvuiq")])
rewards = {
"cash": 800
}
next_mission_id = "26"
graph_path = ""
full_screen_path = ""
intro_text = "Let's model housing market forecasts! Build a mix of small and large residential buildings to create a diverse housing market."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Excellent housing diversity! This mix of building types creates a more resilient housing market."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to forecast housing needs! Different types of residences serve different economic segments."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ctyrlnq5cxuiu"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_r0j2r"]
[ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_oqy42"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_r78ev"]
[sub_resource type="Resource" id="Resource_c21kt"]
script = ExtResource("1_r0j2r")
type = 0
target_count = 5
current_count = 0
description = "Build 5 store buildings"
completed = false
structure = ExtResource("2_oqy42")
[resource]
script = ExtResource("3_r78ev")
id = "26"
title = "Economic Forecasting"
description = "Commercial growth drives economic development. Create a robust commercial sector to generate positive economic forecasts."
objectives = Array[ExtResource("1_r0j2r")]([SubResource("Resource_c21kt")])
rewards = {
"cash": 750
}
next_mission_id = "27"
graph_path = ""
full_screen_path = ""
intro_text = "Let's boost economic forecasts! Build 5 store buildings to increase commercial activity in your economic model."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Fantastic commercial expansion! These stores will drive economic growth in your forecasting model."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to forecast commercial growth! A strong business sector is key to economic development."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,47 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://ct45gjmw5b7pa"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_6j12t"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_t4o2b"]
[sub_resource type="Resource" id="Resource_f1uf2"]
script = ExtResource("1_6j12t")
type = 2
target_count = 1000
current_count = 0
description = "Maintain a minimum of 1000 money"
completed = false
[resource]
script = ExtResource("2_t4o2b")
id = "27"
title = "Economic Forecasting"
description = "Financial reserves are critical for economic stability. Use your forecasting model to ensure your city maintains a healthy treasury."
objectives = Array[ExtResource("1_6j12t")]([SubResource("Resource_f1uf2")])
rewards = {
"cash": 500
}
next_mission_id = "28"
graph_path = ""
full_screen_path = ""
intro_text = "Let's forecast financial stability! Maintain a minimum treasury of 1000 money to ensure your city's economic health."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Well done maintaining a healthy treasury! Your financial forecasting model shows strong fiscal health."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to focus on fiscal forecasting! A strong treasury indicates good economic management."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://bwrkqv42wk8f"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_1k37f"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_qlnvj"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_4udbq"]
[sub_resource type="Resource" id="Resource_0fxto"]
script = ExtResource("1_1k37f")
type = 1
target_count = 5
current_count = 0
description = "Build 5 residential buildings"
completed = false
structure = ExtResource("2_qlnvj")
[resource]
script = ExtResource("3_4udbq")
id = "28"
title = "Resource Allocation"
description = "Efficient resource allocation starts with housing. Create a residential expansion plan that maximizes land use efficiency."
objectives = Array[ExtResource("1_1k37f")]([SubResource("Resource_0fxto")])
rewards = {
"cash": 600
}
next_mission_id = "29"
graph_path = ""
full_screen_path = ""
intro_text = "Let's practice residential resource allocation! Build 5 residential buildings while optimizing land use patterns."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great residential planning! You've allocated resources efficiently for your housing needs."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to allocate land resources! Efficient housing placement is key to city planning."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://d0nblitd4ixir"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_vdhxy"]
[ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_hh0xb"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_k5ivn"]
[sub_resource type="Resource" id="Resource_21csl"]
script = ExtResource("1_vdhxy")
type = 0
target_count = 4
current_count = 0
description = "Build 4 store buildings"
completed = false
structure = ExtResource("2_hh0xb")
[resource]
script = ExtResource("3_k5ivn")
id = "29"
title = "Resource Allocation"
description = "Commercial resource allocation requires strategic planning. Develop a commercial sector that balances land use with economic benefits."
objectives = Array[ExtResource("1_vdhxy")]([SubResource("Resource_21csl")])
rewards = {
"cash": 650
}
next_mission_id = "30"
graph_path = ""
full_screen_path = ""
intro_text = "Let's practice commercial resource allocation! Build 4 store buildings in locations that maximize their effectiveness."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Excellent commercial planning! You've allocated business resources optimally in your city."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to allocate commercial resources! Strategic store placement maximizes economic benefits."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cxh8dgf54oimx"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_c76o5"]
[ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_4rkoa"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_iqaae"]
[sub_resource type="Resource" id="Resource_r01e3"]
script = ExtResource("1_c76o5")
type = 0
target_count = 8
current_count = 0
description = "Add 8 total road segments"
completed = false
structure = ExtResource("2_4rkoa")
[resource]
script = ExtResource("3_iqaae")
id = "30"
title = "Resource Allocation"
description = "Transportation infrastructure requires careful resource allocation. Develop an efficient road network that connects all parts of your city."
objectives = Array[ExtResource("1_c76o5")]([SubResource("Resource_r01e3")])
rewards = {
"cash": 700
}
next_mission_id = "31"
graph_path = ""
full_screen_path = ""
intro_text = "Let's optimize transportation resource allocation! Build 8 road segments to create an efficient transit network."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Great transportation planning! You've allocated road resources efficiently for optimal city connectivity."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to allocate transportation resources! Efficient road networks require careful planning."]
}
}
unlocked_items = Array[String]([])

@ -0,0 +1,49 @@
[gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cpfr2xnjtpcog"]
[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_4b0uw"]
[ext_resource type="Resource" uid="uid://ccb475jeg7ym5" path="res://structures/grass-trees.tres" id="2_y8alv"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_p34yh"]
[sub_resource type="Resource" id="Resource_grdmr"]
script = ExtResource("1_4b0uw")
type = 0
target_count = 6
current_count = 0
description = "Place 6 grass tiles with trees"
completed = false
structure = ExtResource("2_y8alv")
[resource]
script = ExtResource("3_p34yh")
id = "31"
title = "Resource Allocation"
description = "Green space allocation improves quality of life. Create a strategic plan for natural areas throughout your city."
objectives = Array[ExtResource("1_4b0uw")]([SubResource("Resource_grdmr")])
rewards = {
"cash": 600
}
next_mission_id = "32"
graph_path = ""
full_screen_path = ""
intro_text = "Let's allocate resources for green spaces! Add 6 grass tiles with trees to create natural areas in your city."
question_text = ""
correct_answer = ""
feedback_text = ""
incorrect_feedback = ""
company_data = ""
power_math_content = ""
num_of_user_inputs = 1
input_labels = Array[String]([])
companion_dialog = {
"mission_completed": {
"animation": "happy",
"duration": 6000,
"text": ["Beautiful green space allocation! These natural areas will improve quality of life in your city."]
},
"mission_started": {
"animation": "excited",
"duration": 6000,
"text": ["Time to allocate resources for nature! Green spaces are an important investment in city well-being."]
}
}
unlocked_items = Array[String]([])

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -18,6 +18,7 @@ nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true

@ -13,7 +13,7 @@ config_version=5
config/name="Starter Kit City Builder"
config/tags=PackedStringArray("starterkit")
run/main_scene="res://scenes/main.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/features=PackedStringArray("4.4", "Forward Plus")
boot_splash/bg_color=Color(0.92549, 0.92549, 0.960784, 1)
boot_splash/image="res://splash-screen.png"
config/icon="res://icon.png"

@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://7aqckirt7b41"]
[ext_resource type="PackedScene" uid="uid://h2jjkvc4edsp" path="res://people/character-female-d.glb" id="1_anb25"]
[ext_resource type="Script" uid="uid://88a6avyptj0n" path="res://scripts/NavigationNPC.gd" id="1_eug4x"]
[ext_resource type="Script" uid="uid://ckfghf3quyfwv" path="res://scripts/NavigationNPC.gd" id="1_eug4x"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8rf01"]
radius = 0.307771

@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://bqjnp7uypupog"]
[ext_resource type="FontFile" uid="uid://d0cxd77jybrcn" path="res://fonts/lilita_one_regular.ttf" id="1_tnlhn"]
[ext_resource type="Script" path="res://scripts/controls_panel.gd" id="1_xyuqg"]
[ext_resource type="Script" uid="uid://drdr16kowbvmd" path="res://scripts/controls_panel.gd" id="1_xyuqg"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_f2mso"]
bg_color = Color(0.145098, 0.172549, 0.231373, 0.941176)

@ -89,4 +89,4 @@ autowrap_mode = 2
layout_mode = 2
theme_override_colors/font_color = Color(1, 0, 0, 1)
theme_override_font_sizes/font_size = 20
text = "CLOSE"
text = "CLOSE"

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://cq1w6ovisjgsg"]
[ext_resource type="Script" uid="uid://w2g0h4c8ymo4" path="res://scripts/mission/fullscreen_learning_panel.gd" id="1_kq0jb"]
[ext_resource type="Script" uid="uid://b30jnxc4070o6" path="res://scripts/mission/fullscreen_learning_panel.gd" id="1_kq0jb"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxFlat_empty"]

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://dmsy06s02tcw4"]
[ext_resource type="Script" path="res://scenes/generic_text.gd" id="1_qcnox"]
[ext_resource type="Script" uid="uid://biocll6runtqr" path="res://scenes/generic_text.gd" id="1_qcnox"]
[ext_resource type="FontFile" uid="uid://d0cxd77jybrcn" path="res://fonts/lilita_one_regular.ttf" id="2_7oj77"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_f2mso"]

@ -1,6 +1,6 @@
[gd_scene load_steps=10 format=3 uid="uid://cgk66f6rg03mj"]
[ext_resource type="Script" path="res://scripts/hud_manager.gd" id="1_6vdxc"]
[ext_resource type="Script" uid="uid://delou5bqioyxe" path="res://scripts/hud_manager.gd" id="1_6vdxc"]
[ext_resource type="Texture2D" uid="uid://hendpftbt4iw" path="res://sprites/population_icon.png" id="2_28oy1"]
[ext_resource type="Texture2D" uid="uid://jk3mremfu7lm" path="res://sprites/electricity_icon.png" id="3_2u5bk"]
[ext_resource type="FontFile" uid="uid://d0cxd77jybrcn" path="res://fonts/lilita_one_regular.ttf" id="4_qfmf5"]

@ -1,6 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://bb04k2hkfmls6"]
[ext_resource type="Script" path="res://scripts/mission/improved_unlocked_panel.gd" id="1_r3fws"]
[sub_resource type="Resource" id="Resource_0aveo"]
metadata/__load_path__ = "res://scripts/mission/improved_unlocked_panel.gd"
[node name="ImprovedUnlockedPanel" type="Control"]
layout_mode = 3
@ -9,7 +10,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_r3fws")
script = SubResource("Resource_0aveo")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
@ -66,4 +67,4 @@ size_flags_vertical = 3
layout_mode = 2
text = "Close"
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/CloseButton" to="." method="_on_close_button_pressed"]
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/CloseButton" to="." method="_on_close_button_pressed"]

@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://ceae06aaigfhh"]
[ext_resource type="Script" path="res://scripts/mission/learning_panel.gd" id="1_wn8yp"]
[ext_resource type="Script" uid="uid://dnquivpg0ead" path="res://scripts/mission/learning_panel.gd" id="1_wn8yp"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxFlat_empty"]

@ -1,23 +1,23 @@
[gd_scene load_steps=63 format=3 uid="uid://vgwrcfy1qawf"]
[gd_scene load_steps=64 format=3 uid="uid://vgwrcfy1qawf"]
[ext_resource type="Script" path="res://scripts/builder.gd" id="1_jybm7"]
[ext_resource type="Script" uid="uid://c37h6na3e4twn" path="res://scripts/builder.gd" id="1_jybm7"]
[ext_resource type="Environment" uid="uid://jbptgqvstei3" path="res://scenes/main-environment.tres" id="1_yndf3"]
[ext_resource type="Script" path="res://scripts/structure.gd" id="2_54v6r"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_54v6r"]
[ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_bwyku"]
[ext_resource type="Texture2D" uid="uid://cbk07cxgshg26" path="res://sprites/selector.png" id="4_wr1wv"]
[ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="5_v5o2m"]
[ext_resource type="Resource" uid="uid://ccb475jeg7ym5" path="res://structures/grass-trees.tres" id="6_fwsy4"]
[ext_resource type="Script" path="res://scripts/view.gd" id="8_yovpv"]
[ext_resource type="Script" uid="uid://d3n8yylhejdoh" path="res://scripts/view.gd" id="8_yovpv"]
[ext_resource type="Resource" uid="uid://tm532uesguhk" path="res://structures/grass.tres" id="9_2t3p4"]
[ext_resource type="Resource" uid="uid://d2jplegnkl6u2" path="res://structures/road-corner.tres" id="10_ii8xx"]
[ext_resource type="Script" path="res://scripts/mission/mission_manager.gd" id="10_oe3re"]
[ext_resource type="Script" uid="uid://otnxt4e77gmc" path="res://scripts/mission/mission_manager.gd" id="10_oe3re"]
[ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="11_20frt"]
[ext_resource type="Resource" uid="uid://c4qbn3d85prxx" path="res://structures/power-plant.tres" id="12_xtc7p"]
[ext_resource type="PackedScene" uid="uid://dmsy06s02tcw4" path="res://scenes/generic_text_panel.tscn" id="13_7i6dj"]
[ext_resource type="Script" path="res://scripts/mission/mission_ui.gd" id="13_xvw5w"]
[ext_resource type="Script" path="res://resources/generic_text_panel.resource.gd" id="14_76jlq"]
[ext_resource type="Script" path="res://scripts/mission/learning_panel.gd" id="14_q2ymb"]
[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="14_vcrh8"]
[ext_resource type="Script" uid="uid://ctqqmg4ydlbse" path="res://scripts/mission/mission_ui.gd" id="13_xvw5w"]
[ext_resource type="Script" uid="uid://bt3emc1vt40gq" path="res://resources/generic_text_panel.resource.gd" id="14_76jlq"]
[ext_resource type="Script" uid="uid://dnquivpg0ead" path="res://scripts/mission/learning_panel.gd" id="14_q2ymb"]
[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="14_vcrh8"]
[ext_resource type="Resource" uid="uid://x5h4xutbldq3" path="res://mission/unit_1.02/census_planning_1.tres" id="15_obmwc"]
[ext_resource type="Resource" uid="uid://cjr36hqnmyn0x" path="res://mission/unit_1.02/census_planning_2.tres" id="16_rl54y"]
[ext_resource type="Resource" uid="uid://dykbopx8n3c3v" path="res://mission/unit_1.02/census_planning_3.tres" id="17_rrdy6"]
@ -25,14 +25,14 @@
[ext_resource type="PackedScene" uid="uid://b4gkfwf4i3ydl" path="res://scenes/character.tscn" id="18_8lrh8"]
[ext_resource type="PackedScene" uid="uid://cgk66f6rg03mj" path="res://scenes/hud.tscn" id="18_hud"]
[ext_resource type="PackedScene" uid="uid://bqjnp7uypupog" path="res://scenes/controls_panel.tscn" id="19_controls"]
[ext_resource type="Script" path="res://scripts/game_manager.gd" id="20_game_manager"]
[ext_resource type="Script" uid="uid://b5nubrdeseay4" path="res://scripts/game_manager.gd" id="20_game_manager"]
[ext_resource type="Resource" uid="uid://442cwthak2pa" path="res://mission/unit_1.02/market_research_1.tres" id="20_ngu16"]
[ext_resource type="PackedScene" uid="uid://b4s46k58ddpyc" path="res://scenes/sound_panel.tscn" id="21_sound_panel"]
[ext_resource type="PackedScene" uid="uid://cb2rylpbex3ep" path="res://models/building-arcology.glb" id="27_m8wco"]
[ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="21_y11qv"]
[ext_resource type="Resource" uid="uid://bom5bu47dy5kp" path="res://mission/unit_1.02/market_research_2.tres" id="24_xud6a"]
[ext_resource type="Resource" uid="uid://csrqvfwp63ygr" path="res://mission/unit_1.02/market_research_3.tres" id="25_6hx7u"]
[ext_resource type="Resource" uid="uid://qwiwim2pg88f" path="res://mission/unit_1.02/market_research_4.tres" id="26_lvk23"]
[ext_resource type="PackedScene" uid="uid://cb2rylpbex3ep" path="res://models/building-arcology.glb" id="27_m8wco"]
[ext_resource type="Resource" uid="uid://cfgw8dblm55c5" path="res://mission/unit_1.03_1.05/grid_growth_1.tres" id="27_s0e58"]
[ext_resource type="Resource" uid="uid://ba3ndftq7dht7" path="res://mission/unit_1.03_1.05/grid_growth_2.tres" id="28_hurxs"]
[ext_resource type="Resource" uid="uid://dgimr2v12rjqu" path="res://mission/unit_1.03_1.05/grid_growth_3.tres" id="29_rhn1n"]

@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://bo6c8g64ixmo"]
[ext_resource type="Script" path="res://scripts/mission/mission_ui.gd" id="1_wl28p"]
[ext_resource type="Script" uid="uid://ctqqmg4ydlbse" path="res://scripts/mission/mission_ui.gd" id="1_wl28p"]
[node name="Control" type="Control"]
layout_mode = 3

@ -1,6 +1,6 @@
[gd_scene load_steps=7 format=3 uid="uid://c6qxpgne58hon"]
[ext_resource type="PackedScene" uid="uid://b4tgtg0j2dgh8" path="res://models/road-straight.glb" id="1_e1p8p"]
[ext_resource type="PackedScene" uid="uid://do24bjaohw3vy" path="res://models/road-straight.glb" id="1_e1p8p"]
[ext_resource type="Script" uid="uid://dm10exi6726ue" path="res://scripts/pathfinding.gd" id="2_3elxe"]
[ext_resource type="PackedScene" uid="uid://h2jjkvc4edsp" path="res://people/character-female-d.glb" id="3_8fawu"]

@ -1,6 +1,6 @@
[gd_scene load_steps=3 format=3 uid="uid://b3kdhu8jq41iq"]
[ext_resource type="PackedScene" uid="uid://b4tgtg0j2dgh8" path="res://models/road-straight.glb" id="2_kgyfd"]
[ext_resource type="PackedScene" uid="uid://do24bjaohw3vy" path="res://models/road-straight.glb" id="2_kgyfd"]
[sub_resource type="NavigationMesh" id="NavigationMesh_qdlwc"]
vertices = PackedVector3Array(-1.27868, 0.435088, -1.17848, -1.27868, 0.435088, 1.32152, 1.22132, 0.435088, 1.32152, 1.22132, 0.435088, -1.17848)

@ -1,6 +1,6 @@
[gd_scene load_steps=7 format=3 uid="uid://b4s46k58ddpyc"]
[ext_resource type="Script" uid="uid://danypf5uo4vob" path="res://scripts/sound_panel.gd" id="1_c6ykp"]
[ext_resource type="Script" uid="uid://br2xotmt1ihsl" path="res://scripts/sound_panel.gd" id="1_c6ykp"]
[ext_resource type="FontFile" uid="uid://d0cxd77jybrcn" path="res://fonts/lilita_one_regular.ttf" id="2_kpgjp"]
[ext_resource type="Texture2D" uid="uid://hx3maksi7ma" path="res://sprites/unmuted.png" id="3_c3hj5"]
[ext_resource type="Texture2D" uid="uid://djxd33vvtr58p" path="res://sprites/muted.png" id="4_jdlh2"]

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://cc3c30ioo11if"]
[ext_resource type="Script" path="res://scripts/mission/unlocked_items_panel.gd" id="1_j0tih"]
[ext_resource type="Script" uid="uid://dkmsixil2a7ur" path="res://scripts/mission/unlocked_items_panel.gd" id="1_j0tih"]
[ext_resource type="FontFile" uid="uid://d0cxd77jybrcn" path="res://fonts/lilita_one_regular.ttf" id="2_exmr5"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2q5cr"]
@ -86,8 +86,8 @@ theme_override_constants/margin_top = 8
[node name="CloseButton" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
theme_override_colors/font_hover_color = Color(1, 0.921569, 0.231373, 1)
theme_override_colors/font_pressed_color = Color(0.87451, 0.87451, 0.87451, 1)
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_colors/font_pressed_color = Color(0.87451, 0.87451, 0.87451, 1)
theme_override_fonts/font = ExtResource("2_exmr5")
theme_override_font_sizes/font_size = 20
text = "CONTINUE"

@ -519,18 +519,8 @@ func _add_road_to_navregion(position: Vector3, structure_index: int):
if nav_region.has_node(road_name):
return
# Instantiate the road model - get the actual model based on road type
var road_model
var model_path = structures[structure_index].model.resource_path
if model_path.contains("road-straight"):
# Use the specific road-straight model that works with navmesh
road_model = load("res://models/road-straight.glb").instantiate()
elif model_path.contains("road-corner"):
# Use the specific road-corner model
road_model = load("res://models/road-corner.glb").instantiate()
else:
# Fall back to the structure's model for other road types
road_model = structures[structure_index].model.instantiate()
# Instantiate the road model using the actual selected structure
var road_model = structures[structure_index].model.instantiate()
road_model.name = road_name

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://bqb6g3t0tebno"]
[ext_resource type="PackedScene" uid="uid://d0nnrx2y4px2v" path="res://models/building-garage.glb" id="1_gyclk"]
[ext_resource type="Script" path="res://scripts/structure.gd" id="2_jrinw"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_jrinw"]
[resource]
script = ExtResource("2_jrinw")
title = ""
model = ExtResource("1_gyclk")
type = 1
price = 70
@ -12,3 +13,6 @@ population_count = 0
kW_usage = 0.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://cntgl86ianngh"]
[ext_resource type="PackedScene" uid="uid://cnycdi6t5tj01" path="res://models/building-small-a.glb" id="1_v5apy"]
[ext_resource type="Script" path="res://scripts/structure.gd" id="2_q3i1h"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_q3i1h"]
[resource]
script = ExtResource("2_q3i1h")

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://c5fveedgvunju"]
[ext_resource type="PackedScene" uid="uid://d2h51qlls136h" path="res://models/building-small-b.glb" id="1_klt7o"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_a2t3e"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_a2t3e"]
[resource]
script = ExtResource("2_a2t3e")
title = ""
model = ExtResource("1_klt7o")
type = 1
price = 60
@ -12,3 +13,6 @@ population_count = 1
kW_usage = 1.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://bh65eqgid4kxy"]
[ext_resource type="PackedScene" uid="uid://m74mvao50wnm" path="res://models/building-small-c.glb" id="1_6yyww"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_rkiq0"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_rkiq0"]
[resource]
script = ExtResource("2_rkiq0")
title = ""
model = ExtResource("1_6yyww")
type = 1
price = 70
@ -12,3 +13,6 @@ population_count = 1
kW_usage = 1.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://y6jafhfnhbrp"]
[ext_resource type="PackedScene" uid="uid://dy26b1ba2j2v1" path="res://models/grass-trees-tall.glb" id="1_nbdd1"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_b2sah"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_b2sah"]
[resource]
script = ExtResource("2_b2sah")
title = ""
model = ExtResource("1_nbdd1")
type = 6
price = 25
@ -12,3 +13,6 @@ population_count = 0
kW_usage = 0.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://ccb475jeg7ym5"]
[ext_resource type="PackedScene" uid="uid://b1711sieed2u6" path="res://models/grass-trees.glb" id="1_lcgc1"]
[ext_resource type="Script" path="res://scripts/structure.gd" id="2_pnpij"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_pnpij"]
[resource]
script = ExtResource("2_pnpij")

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://tm532uesguhk"]
[ext_resource type="PackedScene" uid="uid://cr3btp34bp3eg" path="res://models/grass.glb" id="1_2n0ef"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_1i4lf"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_1i4lf"]
[resource]
script = ExtResource("2_1i4lf")
title = ""
model = ExtResource("1_2n0ef")
type = 6
price = 10
@ -14,4 +15,4 @@ kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Some lush green grass!"
thumbnail = "res://sprites/residential/grass.png"
thumbnail = "res://sprites/residential/grass.png"

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://dqqe3iofnleup"]
[ext_resource type="PackedScene" uid="uid://6v0t536s83vb" path="res://models/pavement-fountain.glb" id="1_r2n53"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_wqyte"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_wqyte"]
[resource]
script = ExtResource("2_wqyte")
title = ""
model = ExtResource("1_r2n53")
type = 6
price = 10
@ -12,3 +13,6 @@ population_count = 0
kW_usage = 0.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://ch8vtcpine1lc"]
[ext_resource type="PackedScene" uid="uid://cpv75mfsda1ml" path="res://models/pavement.glb" id="1_gudnj"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_i48go"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_i48go"]
[resource]
script = ExtResource("2_i48go")
title = ""
model = ExtResource("1_gudnj")
type = 6
price = 10
@ -12,3 +13,6 @@ population_count = 0
kW_usage = 0.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://c4qbn3d85prxx"]
[ext_resource type="PackedScene" uid="uid://ckxkrnomcegue" path="res://models/power_plant.glb" id="1_r8n8k"]
[ext_resource type="Script" path="res://scripts/structure.gd" id="3_oloyn"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="3_oloyn"]
[resource]
script = ExtResource("3_oloyn")

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://d2jplegnkl6u2"]
[ext_resource type="PackedScene" uid="uid://c4ccm2qr5wa58" path="res://models/road-corner.glb" id="1_r8n8k"]
[ext_resource type="Script" path="res://scripts/structure.gd" id="3_oloyn"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="3_oloyn"]
[resource]
script = ExtResource("3_oloyn")

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://dveu4dnue0d54"]
[ext_resource type="PackedScene" uid="uid://euxdh7lkq0oj" path="res://models/road-intersection.glb" id="1_pnjl2"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_3eq5k"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_3eq5k"]
[resource]
script = ExtResource("2_3eq5k")
title = ""
model = ExtResource("1_pnjl2")
type = 0
price = 25
@ -12,3 +13,6 @@ population_count = 0
kW_usage = 0.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://cqvwy36htu81"]
[ext_resource type="PackedScene" uid="uid://mu30r6rmht07" path="res://models/road-split.glb" id="1_ku0rj"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_xa71m"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_xa71m"]
[resource]
script = ExtResource("2_xa71m")
title = ""
model = ExtResource("1_ku0rj")
type = 0
price = 25
@ -12,3 +13,6 @@ population_count = 0
kW_usage = 0.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://mxrnqinnsqnt"]
[ext_resource type="PackedScene" uid="uid://5kchntr735l" path="res://models/road-straight-lightposts.glb" id="1_i07jw"]
[ext_resource type="Script" uid="uid://smbpvh2nwds4" path="res://scripts/structure.gd" id="2_470aq"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_470aq"]
[resource]
script = ExtResource("2_470aq")
title = ""
model = ExtResource("1_i07jw")
type = 0
price = 25
@ -12,3 +13,6 @@ population_count = 0
kW_usage = 0.0
kW_production = 0.0
selector_scale = 2.8
unlocked = false
description = "Description"
thumbnail = "Thumbnail"

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="Structure" load_steps=3 format=3 uid="uid://dv14kkhb6umkv"]
[ext_resource type="Script" path="res://scripts/structure.gd" id="1_5fmmh"]
[ext_resource type="PackedScene" uid="uid://b4tgtg0j2dgh8" path="res://models/road-straight.glb" id="1_ump1f"]
[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="1_5fmmh"]
[ext_resource type="PackedScene" uid="uid://do24bjaohw3vy" path="res://models/road-straight.glb" id="1_ump1f"]
[resource]
script = ExtResource("1_5fmmh")