diff --git a/Assets/Audio/kivikausi_bushEffect.it b/Assets/Audio/kivikausi_bushEffect.it
new file mode 100644
index 0000000000000000000000000000000000000000..e3ea46a3e62fc99fca80a4340d94bb08e90be42b
Binary files /dev/null and b/Assets/Audio/kivikausi_bushEffect.it differ
diff --git a/Assets/Audio/kivikausi_bushEffect.it.meta b/Assets/Audio/kivikausi_bushEffect.it.meta
new file mode 100644
index 0000000000000000000000000000000000000000..141e02b08298f205842a489d3f2ddc60d384f7a0
--- /dev/null
+++ b/Assets/Audio/kivikausi_bushEffect.it.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 2edad0f30cce2dc47a11eee3baf3118a
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 1
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Audio/kivikausi_stoneEffect.it b/Assets/Audio/kivikausi_stoneEffect.it
new file mode 100644
index 0000000000000000000000000000000000000000..2a47042bf0b2ffa210eb655f2a7a6289ffc6d6c5
Binary files /dev/null and b/Assets/Audio/kivikausi_stoneEffect.it differ
diff --git a/Assets/Audio/kivikausi_stoneEffect.it.meta b/Assets/Audio/kivikausi_stoneEffect.it.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2ae594d7068b28f50de0c7047790bd47b380e487
--- /dev/null
+++ b/Assets/Audio/kivikausi_stoneEffect.it.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 86208dc8a75ffb24ebab218e12d74c9a
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 1
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Audio/kivikausi_woodeffect.it b/Assets/Audio/kivikausi_woodeffect.it
new file mode 100644
index 0000000000000000000000000000000000000000..043d5d6c36669d991bbff45d54e9a185d4040a0c
Binary files /dev/null and b/Assets/Audio/kivikausi_woodeffect.it differ
diff --git a/Assets/Audio/kivikausi_woodeffect.it.meta b/Assets/Audio/kivikausi_woodeffect.it.meta
new file mode 100644
index 0000000000000000000000000000000000000000..287aea64d01ba0b19bde000915746a59319c45f9
--- /dev/null
+++ b/Assets/Audio/kivikausi_woodeffect.it.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 1b51dbf8319818449ab62be8d9450e31
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 1
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Audio/lautanen.it b/Assets/Audio/lautanen.it
new file mode 100644
index 0000000000000000000000000000000000000000..ff08993bd67bc1930bcead22e1da9b79cce42b45
Binary files /dev/null and b/Assets/Audio/lautanen.it differ
diff --git a/Assets/Audio/lautanen.it.meta b/Assets/Audio/lautanen.it.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1d0f4f56f7534fbc5eebcb1affa8bf5a626631eb
--- /dev/null
+++ b/Assets/Audio/lautanen.it.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 117f35b9a9c960540ae24eea2bf3ea27
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 1
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Prefab/Flag.prefab b/Assets/Prefab/Flag.prefab
new file mode 100644
index 0000000000000000000000000000000000000000..ce84a5a726df5d5e6f75a32f0efc449b91fd28a6
--- /dev/null
+++ b/Assets/Prefab/Flag.prefab
@@ -0,0 +1,122 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &8796312832300166883
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3911026953838394632}
+  - component: {fileID: 7981019715402497320}
+  - component: {fileID: 3689336998828211151}
+  - component: {fileID: 4443572787190976141}
+  m_Layer: 0
+  m_Name: Flag
+  m_TagString: Flag
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3911026953838394632
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8796312832300166883}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 4.078, y: 2.369, z: -1.0712891}
+  m_LocalScale: {x: 0.3136983, y: 0.3136983, z: 0.3136983}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &7981019715402497320
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8796312832300166883}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 0
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_Sprite: {fileID: 21300000, guid: dd3f1a90ef7844947ae3599531fcd6d2, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 0.2, y: 0.2}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!114 &3689336998828211151
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8796312832300166883}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1c028ba564ee8304e9c41111c8912ebe, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Worker: {fileID: 0}
+--- !u!61 &4443572787190976141
+BoxCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8796312832300166883}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0, y: 0}
+  m_SpriteTilingProperty:
+    border: {x: 0, y: 0, z: 0, w: 0}
+    pivot: {x: 0.5, y: 0.5}
+    oldSize: {x: 1.78, y: 1.44}
+    newSize: {x: 0.2, y: 0.2}
+    adaptiveTilingThreshold: 0.5
+    drawMode: 0
+    adaptiveTiling: 0
+  m_AutoTiling: 0
+  serializedVersion: 2
+  m_Size: {x: 1.78, y: 1.44}
+  m_EdgeRadius: 0
diff --git a/Assets/Prefab/Flag.prefab.meta b/Assets/Prefab/Flag.prefab.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b52c8108c0461fb3038ea4687dc08a5834f4764f
--- /dev/null
+++ b/Assets/Prefab/Flag.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5cba37404bc15114b929eea3f4ec84f3
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Prefab/FoodResource.prefab b/Assets/Prefab/FoodResource.prefab
index 37954173b999b0c1192680c789bd3b99319cfe00..16fec162eab2d6bf40554fd1bb489f785de57e43 100644
--- a/Assets/Prefab/FoodResource.prefab
+++ b/Assets/Prefab/FoodResource.prefab
@@ -93,6 +93,13 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: fa5bb155b8732f34994d234d1a214353, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  sprites:
+  - {fileID: 21300000, guid: f85d51a973c87b04692395ace7bbb53d, type: 3}
+  - {fileID: 21300002, guid: f85d51a973c87b04692395ace7bbb53d, type: 3}
+  - {fileID: 21300004, guid: f85d51a973c87b04692395ace7bbb53d, type: 3}
+  - {fileID: 21300006, guid: f85d51a973c87b04692395ace7bbb53d, type: 3}
+  - {fileID: 21300008, guid: f85d51a973c87b04692395ace7bbb53d, type: 3}
+  - {fileID: 21300010, guid: f85d51a973c87b04692395ace7bbb53d, type: 3}
 --- !u!61 &5070108541231774712
 BoxCollider2D:
   m_ObjectHideFlags: 0
diff --git a/Assets/Prefab/WoodResource.prefab b/Assets/Prefab/WoodResource.prefab
index f8225feb1e148874c57c1cec61c1841e1985f68e..bdbac8470052847f56671c03ab060c469cd1004f 100644
--- a/Assets/Prefab/WoodResource.prefab
+++ b/Assets/Prefab/WoodResource.prefab
@@ -119,3 +119,13 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: cb94cfa918a502245a4097b1749281ad, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  resources: 0
+  sprites:
+  - {fileID: 21300000, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
+  - {fileID: 21300002, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
+  - {fileID: 21300004, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
+  - {fileID: 21300006, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
+  - {fileID: 21300008, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
+  - {fileID: 21300010, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
+  - {fileID: 21300012, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
+  - {fileID: 21300014, guid: c6be499253804b13b9d479f7394d8bd4, type: 3}
diff --git a/Assets/Prefab/worker.prefab b/Assets/Prefab/worker.prefab
index d6506cee223d065f8f7b5dd080b1e6bd4dd3a107..c7c68fbb4ed920d43488ee2da1dfecd2da8c8d05 100644
--- a/Assets/Prefab/worker.prefab
+++ b/Assets/Prefab/worker.prefab
@@ -14,7 +14,7 @@ GameObject:
   - component: {fileID: 548039319383633028}
   - component: {fileID: 548039319383633031}
   m_Layer: 0
-  m_Name: Worker
+  m_Name: worker
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -101,6 +101,7 @@ MonoBehaviour:
   home: {fileID: 7607310651946833762, guid: 118ed7528555d45418acb5a87b330000, type: 3}
   resource: {fileID: 0}
   speed: 1
+  flag: {fileID: 8796312832300166883, guid: 5cba37404bc15114b929eea3f4ec84f3, type: 3}
 --- !u!61 &548039319383633028
 BoxCollider2D:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity
index ab770ecadb98649c22e97eefb16e30d7f610e767..0452e9c46aebcd461d2aface2a55974f383d70a2 100644
--- a/Assets/Scenes/MainScene.unity
+++ b/Assets/Scenes/MainScene.unity
@@ -274,6 +274,31 @@ PrefabInstance:
       propertyPath: m_LocalEulerAnglesHint.z
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63,
+        type: 3}
+      propertyPath: musics.Array.size
+      value: 10
+      objectReference: {fileID: 0}
+    - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63,
+        type: 3}
+      propertyPath: musics.Array.data[6]
+      value: 
+      objectReference: {fileID: 8300000, guid: 117f35b9a9c960540ae24eea2bf3ea27, type: 3}
+    - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63,
+        type: 3}
+      propertyPath: musics.Array.data[7]
+      value: 
+      objectReference: {fileID: 8300000, guid: 1b51dbf8319818449ab62be8d9450e31, type: 3}
+    - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63,
+        type: 3}
+      propertyPath: musics.Array.data[8]
+      value: 
+      objectReference: {fileID: 8300000, guid: 86208dc8a75ffb24ebab218e12d74c9a, type: 3}
+    - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63,
+        type: 3}
+      propertyPath: musics.Array.data[9]
+      value: 
+      objectReference: {fileID: 8300000, guid: 2edad0f30cce2dc47a11eee3baf3118a, type: 3}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 530bea3a047bd31458b647c456257c63, type: 3}
 --- !u!1001 &5792638251041000132
diff --git a/Assets/Scripts/AudioSystem.cs b/Assets/Scripts/AudioSystem.cs
index a611bb0a463d80e00d727470fd5aa8e37f0717fc..cf61860a9210eab662695b268c0c8b0f13eced8a 100644
--- a/Assets/Scripts/AudioSystem.cs
+++ b/Assets/Scripts/AudioSystem.cs
@@ -10,8 +10,10 @@ public class AudioSystem : MonoBehaviour, IAction
     private List<AudioClip> musics = new List<AudioClip>();
 
     [SerializeField]
-    private AudioSource ac;
+    private AudioSource ac = null;
+    
     // Start is called before the first frame update
+    
     void Start()
     {
 
@@ -22,12 +24,7 @@ public class AudioSystem : MonoBehaviour, IAction
         React(EventType.GameStarts);
     }
 
-    // Update is called once per frame
-    void Update()
-    {
-        
-    }
-
+    
     public void React(EventType type) {
         if (type == EventType.GameStarts)
         {
@@ -51,18 +48,32 @@ public class AudioSystem : MonoBehaviour, IAction
         }
         if (type == EventType.WoodChopped)
         {
-            
+            WoodClip();
         }
         if (type == EventType.StoneCut)
         {
-            
+            StoneClip();
+        }
+        if (type == EventType.Berrypicked)
+        {
+            BerryClip();
+        }
+        if (type == EventType.UpgradeBuilt)
+        {
+
+        }
+        if (type == EventType.TimePeriodChanged)
+        {
+
         }
+        
     }
 
 
     public void GameStartsClip()
     {
-        StartCoroutine("FadeOutIn", new Timing(0,0));
+        StartCoroutine("FadeOutIn", new Timing(2,1));
+        StartCoroutine("PlayEffect", 6);
     }
     public void CitySmallClip()
     {
@@ -80,6 +91,18 @@ public class AudioSystem : MonoBehaviour, IAction
     {
         StartCoroutine("FadeOutIn", new Timing(2, 6));
     }
+    public void WoodClip()
+    {
+        StartCoroutine("PlayEffect", 7);
+    }
+    public void StoneClip()
+    {
+        StartCoroutine("PlayEffect", 8);
+    }
+    public void BerryClip()
+    {
+        StartCoroutine("PlayEffect", 9);
+    }
 
     IEnumerator FadeOutIn(Timing t) {
         //yield return FadeOut(t.duration);
@@ -115,13 +138,20 @@ public class AudioSystem : MonoBehaviour, IAction
         {
             float current = Time.time - start;
             //(max-current)/(max-min)
-            float volume = (end - Time.time) / (end - start);
+            float volume = (Time.time - start) / (end - start);
             yield return null;
             ac.volume = volume;
         }
         ac.volume = 1;
     }
-
+    public IEnumerator PlayEffect(int clip)
+    {
+        AudioSource v = gameObject.AddComponent<AudioSource>();
+        v.clip = musics[clip];
+        v.Play();
+        yield return new WaitForSeconds(v.clip.length + 1);
+        Destroy(v);
+    }
 
 
 
diff --git a/Assets/Scripts/Collector.cs b/Assets/Scripts/Collector.cs
index d772789090ed0174bacc40f72d1e189363aabf1e..56f8cae6af3e7a7dc68eafd684907271a70bca04 100644
--- a/Assets/Scripts/Collector.cs
+++ b/Assets/Scripts/Collector.cs
@@ -18,11 +18,15 @@ public class Collector : MonoBehaviour
 
     [SerializeField]
     private GameObject home;
-
+    
     [SerializeField]
     private Resource resource;
     public float speed = 1;
 
+    [SerializeField]
+    private GameObject target_flag;
+
+    public GameObject flag;
     // Start is called before the first frame update
     void Start()
     {
@@ -37,7 +41,7 @@ public class Collector : MonoBehaviour
     {
         this.move_to = target;
     }
-
+    
     // Update is called once per frame
     void Update()
     {
@@ -49,8 +53,12 @@ public class Collector : MonoBehaviour
             RaycastHit2D hit = Physics2D.Raycast(mousePos2D, Vector2.zero);
             if (hit.collider != null)
             {
+                DestroyImmediate(target_flag);
+                target_flag = Instantiate(flag, hit.point, Quaternion.identity);
+                target_flag.GetComponent<Flag>().SetWorker(this.gameObject);
                 SetTarget(hit.collider.gameObject);
-                MoveTo(hit.collider.gameObject);
+                if(resource == null || hit.collider.gameObject.tag == "Home")
+                    MoveTo(hit.collider.gameObject);
             }
         }
         if (move_to != null)
@@ -59,15 +67,28 @@ public class Collector : MonoBehaviour
     private void OnTriggerEnter2D(Collider2D collision)
     {
 
-        if (collision.gameObject.tag == "Resource")
+        if (target_flag != null)
         {
-            //Amount of resources worker is carrying right now
-            this.amount = collision.gameObject.GetComponent<Resource>().extractResource(this.max_amount);
-            //Gives target resource to resource variable
-            this.resource = this.target.GetComponent<Resource>();
-            StartCoroutine("goHome");
+            if(collision.gameObject.transform.position == target_flag.transform.position) { 
+                if(resource == null)
+                {
+                    /*if(target.GetComponent<Resource>().vie_tavaraa())
+                    {
+                        
+                    }
+                    else
+                    {*/
+                        //Amount of resources worker is carrying right now
+                        this.amount = target.GetComponent<Resource>().extractResource(this.max_amount);
+                        //Gives target resource to resource variable
+                        this.resource = this.target.GetComponent<Resource>();
+                    //}
+                   
+                }
+                StartCoroutine("goHome");
+            }
         }
-        else if (collision.gameObject.tag == "Home" && this.resource != null)
+         if (collision.gameObject.tag == "Home" && this.resource != null)
         {
             //resets amount and resource variables
             collision.gameObject.GetComponent<City>().AddResource(this.resource, this.amount);
@@ -80,6 +101,8 @@ public class Collector : MonoBehaviour
     IEnumerator goHome()
     {
         yield return new WaitForSeconds(4);
+        if(target == null)
+            DestroyImmediate(target_flag);
         MoveTo(home);
     }
 
diff --git a/Assets/Scripts/EventSystem/EventType.cs b/Assets/Scripts/EventSystem/EventType.cs
index 1b3013264a49a984465560353127b9961279d50a..80cd57fcd4908c637f7cab71b66433fde216ead5 100644
--- a/Assets/Scripts/EventSystem/EventType.cs
+++ b/Assets/Scripts/EventSystem/EventType.cs
@@ -4,14 +4,17 @@ using UnityEngine;
 
 public enum EventType
 {
-    GameStarts, //music
-    TimePeriodChanged, // music
-    CitySmall, //music
-    CityBig, //music
-    WoodChopped, //effect
-    StoneCut, //effect
-    HuntingSmall, //music
-    HuntingBig, //music
-    UpgradeBuilt //effect
+    //music
+    GameStarts, 
+    TimePeriodChanged, 
+    CitySmall, 
+    CityBig, 
+    HuntingSmall,
+    HuntingBig, 
+    //effects
+    WoodChopped, 
+    StoneCut, 
+    Berrypicked,
+    UpgradeBuilt
 
 }
diff --git a/Assets/Scripts/Flag.cs b/Assets/Scripts/Flag.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fd1157d400e79126c643310a113f5217476426a6
--- /dev/null
+++ b/Assets/Scripts/Flag.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Flag : MonoBehaviour
+{
+    [SerializeField]
+    private GameObject Worker;
+
+    public void SetWorker(GameObject w)
+    {
+        this.Worker = w;
+    }
+    public GameObject GetWorker()
+    {
+        return this.Worker;
+    }
+}
diff --git a/Assets/Scripts/Flag.cs.meta b/Assets/Scripts/Flag.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..81aa7e9625e914f41337c7c67f0eb5ebfce1b2c1
--- /dev/null
+++ b/Assets/Scripts/Flag.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1c028ba564ee8304e9c41111c8912ebe
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Resources/BerryBush.cs b/Assets/Scripts/Resources/BerryBush.cs
index fab98963e5170604ad5ee99422d55dfc71201525..f708c7e3817ebbcf3b60e5309a94576b6518a1cb 100644
--- a/Assets/Scripts/Resources/BerryBush.cs
+++ b/Assets/Scripts/Resources/BerryBush.cs
@@ -4,34 +4,64 @@ using UnityEngine;
 
 public class BerryBush : Resource
 {
-
-    private float growthspeed;
+    public bool coroutineRunning =false;
 
     public override void checkExistence()
     {
-        
+        if (!coroutineRunning)
+        {
+            StartCoroutine("timer");
+            coroutineRunning = true;
+        }
     }
 
-    public override void refreshSprite()
+    private IEnumerator timer()
     {
+        yield return new WaitForSeconds(3);
+        setAmount(500);
+        coroutineRunning = false;
+
 
     }
 
-    // Start is called before the first frame update
-    void Start()
+
+    public override void setAmount(int i)
     {
-        resources = Random.Range(50, 200);
-        growthspeed = 1;
-        StartCoroutine("Grow");
+        base.setAmount(i);
     }
 
-    IEnumerator Grow()
+    public override void refreshSprite()
     {
-        while (resources < 500)
+        if (getAmount() < 1)
         {
-            resources++;
-            yield return new WaitForSeconds(growthspeed);
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5];
         }
+        else if (getAmount() < 100)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[4];
+        }
+        else if (getAmount() < 200)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[3];
+        }
+        else if (getAmount() < 300)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[2];
+        }
+        else if (getAmount() < 400)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[1];
+        }
+        else
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[0];
+        }
+    }
+
+    // Start is called before the first frame update
+    void Start()
+    {
+        setAmount(500);
     }
 
     // Update is called once per frame
@@ -39,4 +69,5 @@ public class BerryBush : Resource
     {
         
     }
+    
 }
diff --git a/Assets/Scripts/Resources/Forest.cs b/Assets/Scripts/Resources/Forest.cs
index cc8347eebf1a6f3d92be47f767e51297be5da037..8e61b5b483ba33448f573bad481a8a4fc21b47e6 100644
--- a/Assets/Scripts/Resources/Forest.cs
+++ b/Assets/Scripts/Resources/Forest.cs
@@ -16,49 +16,49 @@ public class Forest : Resource
         }
         else
         {
-            growthspeed = 1;
+            growthspeed = 1f;
         }
     }
 
     public override void refreshSprite()
     {
-        if (resources < 125)
+        if (getAmount() < 125)
         {
-            //yhden puun sprite
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[7];
         }
-        else if (resources < 250)
+        else if (getAmount() < 250)
         {
-            //2 sprite
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[6];
         }
-        else if (resources < 375)
+        else if (getAmount() < 375)
         {
-
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5];
         }
-        else if (resources < 500)
+        else if (getAmount() < 500)
         {
-
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[4];
         }
-        else if (resources < 625)
+        else if (getAmount() < 625)
         {
-
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[3];
         }
-        else if (resources < 750)
+        else if (getAmount() < 750)
         {
-
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[2];
         }
-        else if (resources < 875)
+        else if (getAmount() < 875)
         {
-
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[1];
         }
         else
         {
-
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[0];
         }
     }
 
     public override void checkExistence()
     {
-        if (resources < 1)
+        if (getAmount() < 1)
         {
             Destroy(gameObject);
         }
@@ -67,7 +67,8 @@ public class Forest : Resource
     // Start is called before the first frame update
     void Start()
     {
-        resources = Random.Range(50, 300);
+
+        setAmount(Random.Range(50, 300));
         isForester = false;
         growthspeed = 1;
         StartCoroutine("Grow");
@@ -81,9 +82,9 @@ public class Forest : Resource
 
     IEnumerator Grow()
     {
-        while (resources < 1000)
+        while (getAmount() < 1000)
         {
-            resources++;
+            setAmount(getAmount() + 1);
             yield return new WaitForSeconds(growthspeed);
         }
     }
diff --git a/Assets/Scripts/Resources/Outcrop.cs b/Assets/Scripts/Resources/Outcrop.cs
index c89d689992d547b8cd1de695f5653952984a80e1..9f1f36f9b82c5d21adb1e4c37cae0dc24962a0c5 100644
--- a/Assets/Scripts/Resources/Outcrop.cs
+++ b/Assets/Scripts/Resources/Outcrop.cs
@@ -2,33 +2,54 @@
 using System.Collections.Generic;
 using UnityEngine;
 
-public class Outcrop : Resource
+// Luokka, joka vaatii collectoreilta 100 puuta ennen kuin Quarry voidaan luoda samaan pisteeseen kartalla
+public class Outcrop : MonoBehaviour
 {
-    public override void checkExistence()
+    [SerializeField]
+    private int wood;
+
+    [SerializeField]
+    private GameObject quarry;
+
+    public int getAmount()
+    {
+        return wood;
+    }
+
+    public void setAmount(int amount)
     {
-        if (resources < 1)
+        wood += amount;
+    }
+
+    public void checkExistence()
+    {
+        if (getAmount() >= 100)
         {
+            GameObject go = Instantiate<GameObject>(quarry);
+            go.transform.position = this.transform.position;
             Destroy(gameObject);
         }
     }
 
-    public override void refreshSprite()
+    public void addResource(int amount)
     {
-
+        setAmount(getAmount() + amount);
+        checkExistence();
     }
 
     // Start is called before the first frame update
     void Start()
     {
-        resources = 0;
+        setAmount(0);
     }
 
     // Update is called once per frame
     void Update()
     {
-        if (resources == 100)
+        if (getAmount() == 100)
         {
             // luo Quarry -olio samaan pisteeseen kartalla ja tuhoa Outcrop -olio
         }
     }
+
 }
diff --git a/Assets/Scripts/Resources/Quarry.cs b/Assets/Scripts/Resources/Quarry.cs
index 07199d7c4cfd739ab29be5bd2193e398464ed881..2975e62dd47fb7c409ca1768fc3485a3bef16974 100644
--- a/Assets/Scripts/Resources/Quarry.cs
+++ b/Assets/Scripts/Resources/Quarry.cs
@@ -7,7 +7,7 @@ public class Quarry : Resource
  
     public override void checkExistence()
     {
-        if (resources < 1)
+        if (getAmount() < 1)
         {
             Destroy(gameObject);
         }
@@ -15,13 +15,37 @@ public class Quarry : Resource
 
     public override void refreshSprite()
     {
-
+        if (getAmount() < 100)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5];
+        }
+        else if (getAmount() < 200)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[4];
+        }
+        else if (getAmount() < 300)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[3];
+        }
+        else if (getAmount() < 400)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[2];
+        }
+        else if (getAmount() < 500)
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[1];
+        }
+        else
+        {
+            gameObject.GetComponent<SpriteRenderer>().sprite = sprites[0];
+        }
     }
 
     // Start is called before the first frame update
     void Start()
     {
-        resources = Random.Range(2000, 4000);
+
+        setAmount(Random.Range(2000, 4000));
     }
 
     // Update is called once per frame
diff --git a/Assets/Scripts/Resources/Resource.cs b/Assets/Scripts/Resources/Resource.cs
index 12e2222176840903099736ceb30c8c6e9d458faf..cd22d75ee8518514ec6d475a899b1a25c4126e34 100644
--- a/Assets/Scripts/Resources/Resource.cs
+++ b/Assets/Scripts/Resources/Resource.cs
@@ -4,18 +4,35 @@ using UnityEngine;
 
 public abstract class Resource : MonoBehaviour
 {
-    protected int resources;
+    [SerializeField]
+    private int resources;
 
-    public void setAmount(int i)
+    [SerializeField]
+    private bool resourceSource;
+
+    [SerializeField]
+    protected Sprite[] sprites;
+
+    public bool isResourceSource()
+    {
+        return resourceSource;
+    }
+
+    public void setResourceSource(bool i)
+    {
+        resourceSource = i;
+    }
+
+    public virtual void setAmount(int i)
     {
         resources = i;
+        refreshSprite();
+        checkExistence();
     }
 
     public int getAmount()
     {
-        //r.setAmount(ref.getAmount() - extraction);
         return resources;
-
     }
     
     public int extractResource(int amount)
@@ -23,16 +40,12 @@ public abstract class Resource : MonoBehaviour
         if (resources-amount < 0)
         {
             int r = resources;
-            resources = 0;
-            refreshSprite();
-            checkExistence();
+            setAmount(0);
             return r;
         }
         else
         {
-            resources = resources - amount;
-            refreshSprite();
-            checkExistence();
+            setAmount(resources - amount);
             return amount;
         }
       
diff --git a/Assets/Scripts/Upgrades/CityUpgrade.cs b/Assets/Scripts/Upgrades/CityUpgrade.cs
new file mode 100644
index 0000000000000000000000000000000000000000..c16877c631e7ee7b4b78021fb4bf14ae02065305
--- /dev/null
+++ b/Assets/Scripts/Upgrades/CityUpgrade.cs
@@ -0,0 +1,32 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class CityUpgrade : Upgrade
+{
+    // Start is called before the first frame update
+    void Start()
+    {
+        
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        
+    }
+
+    public void UpgradeCity()
+    {
+
+        UpgradeTargets target = UpgradeTargets.city;
+        City city = gameObject.GetComponent<City>();
+        int currentLevel = city.GetLevel(target);
+
+        if (city.GetLevel(UpgradeTargets.population) >= 5) {
+            city.UseResources(GetPrices(currentLevel * 10));
+        //    city.IncreaseCityLevel();  currently not implemented in City
+        }
+        
+    }
+}
diff --git a/Assets/Scripts/Upgrades/CityUpgrade.cs.meta b/Assets/Scripts/Upgrades/CityUpgrade.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..a1b5e1c7f62cd4a595b1e11a76cab2a5e2c23ad3
--- /dev/null
+++ b/Assets/Scripts/Upgrades/CityUpgrade.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d033c0fdb28116543820fef49807d764
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Upgrades/CollectorUpgrade.cs b/Assets/Scripts/Upgrades/CollectorUpgrade.cs
index ab1c34d767aed16bf66ab706a5824176a0ddf3d0..698c69f81df2271713aa2f59445cbd456d772dcb 100644
--- a/Assets/Scripts/Upgrades/CollectorUpgrade.cs
+++ b/Assets/Scripts/Upgrades/CollectorUpgrade.cs
@@ -8,12 +8,7 @@ public class CollectorUpgrade : Upgrade
     // Start is called before the first frame update
     void Start()
     {
-
-        UpgradeTargets target = UpgradeTargets.collector;
-        City city = gameObject.GetComponent<City>();
-        int currentLevel = city.GetLevel(target);
-        city.UseResources(GetPrices(currentLevel));
-        city.AddCollector();
+        maxLevelModifier = 4;
     }
 
     // Update is called once per frame
@@ -21,4 +16,17 @@ public class CollectorUpgrade : Upgrade
     {
         
     }
+
+    public void UpgradeCollector()
+    {
+        UpgradeTargets target = UpgradeTargets.collector;
+        City city = gameObject.GetComponent<City>();
+        int currentLevel = city.GetLevel(target);
+
+        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        {
+            city.UseResources(GetPrices(currentLevel));
+            city.AddCollector();
+        }
+    }
 }
diff --git a/Assets/Scripts/Upgrades/PopulationUpgrade.cs b/Assets/Scripts/Upgrades/PopulationUpgrade.cs
index 04377c22e30f7c2ab3c8ded9ff765617130e67b9..f9fa3da07604c3e55aba3aaa0b2138978d2febe6 100644
--- a/Assets/Scripts/Upgrades/PopulationUpgrade.cs
+++ b/Assets/Scripts/Upgrades/PopulationUpgrade.cs
@@ -7,7 +7,7 @@ public class PopulationUpgrade : Upgrade
     // Start is called before the first frame update
     public void Start()
     {
-        
+        maxLevelModifier = 10;
     }
 
     // Update is called once per frame
@@ -21,8 +21,12 @@ public class PopulationUpgrade : Upgrade
         UpgradeTargets target = UpgradeTargets.population;
         City city = gameObject.GetComponent<City>();
         int currentLevel = city.GetLevel(target);
-        city.UseResources(GetPrices(currentLevel));
-        city.AddPopulation(currentLevel * 10);
-        Debug.Log("population upgraded");
+
+        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        {
+            city.UseResources(GetPrices(currentLevel));
+            city.AddPopulation(currentLevel * 10);
+            Debug.Log("population upgraded");
+        }
     }
 }
diff --git a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs
index 6158772d0a4fb080ef6a4b477144b05c3ea18f13..3f17ea3427668157c75c22cb8f418d61ca06e607 100644
--- a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs
+++ b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs
@@ -7,7 +7,7 @@ public class ResourceCapacityUpgrade : Upgrade
     // Start is called before the first frame update
     void Start()
     {
-
+        maxLevelModifier = 4;
     }
 
     // Update is called once per frame
@@ -21,9 +21,13 @@ public class ResourceCapacityUpgrade : Upgrade
         UpgradeTargets target = UpgradeTargets.capacity;
         City city = gameObject.GetComponent<City>();
         int currentLevel = city.GetLevel(target);
-        city.UseResources((GetPrices(currentLevel)));
-        city.IncreaseCapacity(currentLevel * 100);
-        Debug.Log("Capacity upgraded");
+
+        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        {
+            city.UseResources((GetPrices(currentLevel)));
+            city.IncreaseCapacity(currentLevel * 100);
+            Debug.Log("Capacity upgraded");
+        }
     }
 
 }
diff --git a/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs b/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs
index 94cb070ee00f1601542f1e71b113f0a87d970a9a..ab8ee4ad8d5d365e71254840a757e27284d13cca 100644
--- a/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs
+++ b/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs
@@ -7,7 +7,7 @@ public class ResourceEfficiencyUpgrade : Upgrade
     // Start is called before the first frame update
     void Start()
     {
-        
+        maxLevelModifier = 5;
     }
 
     // Update is called once per frame
@@ -19,8 +19,11 @@ public class ResourceEfficiencyUpgrade : Upgrade
     public void UpgradeEfficiency()
     {
         City city = gameObject.GetComponent<City>();
-        IncreaseEfficiencyLevel();
-        city.UseResources(GetPrices(GetEfficiencyLevel() * GetEfficiencyLevel()));
-        Debug.Log("Efficienfy upgraded to: " + GetEfficiencyLevel());
+        if (GetEfficiencyLevel() <= maxLevelModifier)
+        {
+            IncreaseEfficiencyLevel();
+            city.UseResources(GetPrices(GetEfficiencyLevel() * GetEfficiencyLevel()));
+            Debug.Log("Efficienfy upgraded to: " + GetEfficiencyLevel());
+        }
     }
 }
diff --git a/Assets/Scripts/Upgrades/RoadUpgrade.cs b/Assets/Scripts/Upgrades/RoadUpgrade.cs
index 52676a0fd29f8148bfedffab67789e09a572ed9a..6ef9e4daafc52f2d623ddcaed3cd1e86dc5d898e 100644
--- a/Assets/Scripts/Upgrades/RoadUpgrade.cs
+++ b/Assets/Scripts/Upgrades/RoadUpgrade.cs
@@ -4,10 +4,11 @@ using UnityEngine;
 
 public class RoadUpgrade : Upgrade
 {
+
     // Start is called before the first frame update
     void Start()
     {
-        
+        maxLevelModifier = 2;
     }
 
     // Update is called once per frame
@@ -21,10 +22,14 @@ public class RoadUpgrade : Upgrade
         UpgradeTargets target = UpgradeTargets.speed;
         Road road = gameObject.GetComponent<Road>();
         City city = gameObject.GetComponent<City>();
-        float currentLevel = road.GetLevel(target);
-        city.UseResources(GetPrices(currentLevel));
-        road.IncreaseSpeed(1 / currentLevel);
-        Debug.Log("Road upgraded");
+        int currentLevel = (int) road.GetLevel(target);
+
+        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        {
+            city.UseResources(GetPrices(currentLevel));
+            road.IncreaseSpeed(1 / currentLevel);
+            Debug.Log("Road upgraded");
+        }
     }
 
 }
diff --git a/Assets/Scripts/Upgrades/Upgrade.cs b/Assets/Scripts/Upgrades/Upgrade.cs
index 085a6a5f479780f3601d5d71e3bde5c52f4832bd..9bc13dc5d1fafcfc3df4ab2134527ff2e795af59 100644
--- a/Assets/Scripts/Upgrades/Upgrade.cs
+++ b/Assets/Scripts/Upgrades/Upgrade.cs
@@ -4,14 +4,16 @@ using UnityEngine;
 
 public abstract class Upgrade : MonoBehaviour
 {
-    /*
-    private float baseWoodCost = 10;
-    private float baseStoneCost = 10;
-    private float baseFoodCost = 10;
-    */
+    protected int maxLevelModifier;
+
     private float efficiencyLevel = 1;
 
-    private Dictionary<Resources, int> resources = new Dictionary<Resources, int>();
+    private Dictionary<Resource, int> resources = new Dictionary<Resource, int>()
+    {
+        { null , 1},
+        { null , 1},
+        { null , 0},
+    };
 
     // Start is called before the first frame update
     void Start()
@@ -61,7 +63,7 @@ public abstract class Upgrade : MonoBehaviour
     public List<int> GetPrices(float modifier)
     {
         List<int> prices = new List<int>();
-        foreach(KeyValuePair<Resources, int> key in resources)
+        foreach(KeyValuePair<Resource, int> key in resources)
         {
             prices.Add((int) (key.Value * modifier * 50 * GetEfficiency()));
         }
diff --git a/Assets/Scripts/Upgrades/UpgradeTargets.cs b/Assets/Scripts/Upgrades/UpgradeTargets.cs
index ae059aa35a7bd0107c426ee560069bc9db115f51..57c44cd58ea805d7643d30e1959562063434b595 100644
--- a/Assets/Scripts/Upgrades/UpgradeTargets.cs
+++ b/Assets/Scripts/Upgrades/UpgradeTargets.cs
@@ -3,5 +3,5 @@ using System.Collections.Generic;
 using UnityEngine;
 
 public enum UpgradeTargets
-    {population, capacity, speed, collector}
+    {population, capacity, speed, collector, city}
 
diff --git a/Assets/Sprites/flag.png b/Assets/Sprites/flag.png
new file mode 100644
index 0000000000000000000000000000000000000000..09ada3428cabb1a3b13a42f8c8d5f2d46c493488
Binary files /dev/null and b/Assets/Sprites/flag.png differ
diff --git a/Assets/Sprites/flag.png.meta b/Assets/Sprites/flag.png.meta
new file mode 100644
index 0000000000000000000000000000000000000000..6e783e839844da15123f8acaed294f4e8c7db059
--- /dev/null
+++ b/Assets/Sprites/flag.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: dd3f1a90ef7844947ae3599531fcd6d2
+TextureImporter:
+  fileIDToRecycleName: {}
+  externalObjects: {}
+  serializedVersion: 9
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -100
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - serializedVersion: 2
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 4f0b75042eebcc842953244e7cf3cc95
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: