public static void Play_LostToEvilMonster_2() { UIBlack.Show(); OvermapHandler.StopOvermapRunning(); List <World_Sprite> ropeWorldSpriteList = new List <World_Sprite>(); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetPlayer().GetPosition(), Vector3.one * 1f, GameAssets.i.s_Rope, Color.white, 100)); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Healer)).GetPosition(), Vector3.one * 1f, GameAssets.i.s_Rope, Color.white, 100)); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Tank)).GetPosition(), Vector3.one * 1.2f, GameAssets.i.s_Rope, Color.white, 100)); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Sleezer)).GetPosition(), Vector3.one * 0.7f, GameAssets.i.s_Rope, Color.white, 100)); NPCOvermap randyOvermap = OvermapHandler.GetInstance().GetNPC(GameData.GetCharacter(Character.Type.Randy)); randyOvermap.GetUnitAnimation().PlayAnimForced(UnitAnim.GetUnitAnim("dBareHands_IdleUp"), 1f, null); Vector3 randyStartingPosition = randyOvermap.GetPosition(); randyOvermap.overrideOvermapRunning = true; Dialogue dialogue = Dialogue.GetInstance(); dialogue.SetDialogueActions(new List <Action>() { () => { dialogue.Show(); dialogue.ShowLeftCharacter(GameAssets.i.s_PlayerDialogueSprite, true); dialogue.ShowLeftCharacterName(GameData.GetCharacterName(Character.Type.Player)); dialogue.HideLeftText(); dialogue.ShowRightCharacter(GameAssets.i.s_RandyPortrait, false); dialogue.ShowRightCharacterName(GameData.GetCharacterName(Character.Type.Randy)); dialogue.ShowRightText("Oh my, this is my lucky day"); }, () => { dialogue.ShowLeftActiveTalkerHideRight("Oh no, you again"); }, () => { dialogue.ShowRightActiveTalkerHideLeft("What's wrong, not happy to see me?"); }, () => { dialogue.ShowLeftActiveTalkerHideRight("It seems we miraculously lost again"); }, () => { dialogue.ShowLeftText("It's very annoying to get the Evil Monster almost near death and suddenly he wins"); }, () => { dialogue.ShowRightActiveTalkerHideLeft("Oh dear that is a real bother"); }, () => { dialogue.ShowLeftActiveTalkerHideRight("Yes it is, are you going to let us go?"); }, () => { dialogue.ShowRightActiveTalkerHideLeft("Huhuhu maybe"); }, () => { dialogue.ShowRightText("My oh my, you are truly precious"); }, () => { dialogue.ShowRightText("If you really want to defeat him you need the Sword of Thousand Truths"); }, () => { dialogue.ShowRightText("And would you look at that, I have it right here!"); }, () => { dialogue.ShowRightText("Have fun! Huhuhu!"); }, () => { // Randy Disappears in Smoke // Drop Sword /* * NPCOvermap npcOvermap = OvermapHandler.GetInstance().GetNPC(GameData.GetCharacter(Character.Type.Randy)); * Transform objectTractorTransform = UnityEngine.Object.Instantiate(GameAssets.i.pfObjectTractor, npcOvermap.GetPosition(), Quaternion.identity); * objectTractorTransform.GetComponent<TractorBehaviour>().Setup(OvermapHandler.GetInstance().GetPlayer(), 20f, 8f, () => { * GameData.GetCharacter(Character.Type.Player).hasSwordThousandTruths = true; * OvermapHandler.GetInstance().GetPlayer().RefreshTexture(); * }); * * npcOvermap.Hide(); * UIBlack.Hide(); * dialogue.Hide(); * FunctionTimer.Create(() => { * UIBlack.Show(); * dialogue.Show(); * dialogue.PlayNextAction(); * }, 1f); */ Transform objectTractorTransform = UnityEngine.Object.Instantiate(GameAssets.i.pfObjectTractor, randyOvermap.GetPosition(), Quaternion.identity); objectTractorTransform.localEulerAngles = new Vector3(0, 0, -45); objectTractorTransform.GetComponent <TractorBehaviour>().Setup(OvermapHandler.GetInstance().GetPlayer(), 20f, 8f, () => { GameData.GetCharacter(Character.Type.Player).hasSwordThousandTruths = true; OvermapHandler.GetInstance().GetPlayer().RefreshTexture(); SoundManager.PlaySound(SoundManager.Sound.Coin); }); // Randy Disappears in Smoke UIBlack.Hide(); dialogue.Hide(); // Untie Player randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetPlayer().GetPosition() + new Vector3(0, -5)); FunctionTimer.Create(() => { ropeWorldSpriteList[0].DestroySelf(); }, 1f); // Untie Healer FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Healer)).GetPosition() + new Vector3(+5, 0)); }, 1f); FunctionTimer.Create(() => { ropeWorldSpriteList[1].DestroySelf(); }, 2f); // Untie Tank FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Tank)).GetPosition() + new Vector3(-5, 0)); }, 2f); FunctionTimer.Create(() => { ropeWorldSpriteList[2].DestroySelf(); }, 3f); // Untie Sleezer FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Sleezer)).GetPosition() + new Vector3(-5, 0)); }, 3f); FunctionTimer.Create(() => { ropeWorldSpriteList[3].DestroySelf(); }, 4f); // Go to disappear FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(randyStartingPosition); }, 4f); FunctionTimer.Create(() => { OvermapHandler.GetInstance().SpawnSmoke(randyOvermap.GetPosition(), .0f, Vector3.one); }, 5f); FunctionTimer.Create(() => { randyOvermap.Hide(); }, 5.5f); FunctionTimer.Create(() => { UIBlack.Show(); dialogue.Show(); dialogue.PlayNextAction(); }, 6.5f); }, () => { dialogue.ShowLeftActiveTalkerHideRight("He's very odd but somehow very helpful"); dialogue.HideRightCharacter(); dialogue.HideRightCharacterName(); }, () => { dialogue.ShowLeftText("Why would the Evil Monster keep him around?"); }, () => { dialogue.ShowLeftText("Anyways who cares we have the Sword of a Thousand Truths!"); }, () => { dialogue.ShowLeftText("Let's get him once and for all!"); }, () => { dialogue.Hide(); UIBlack.Hide(); OvermapHandler.StartOvermapRunning(); GameData.state = GameData.State.MovingToEvilMonster_3; Window_QuestPointer.Create(GameAssets.i.Map.Find("evilMonster_3").position, Color.white, Color.white); }, }, true); }
public static void Play_LostToEvilMonster_1() { UIBlack.Show(); OvermapHandler.StopOvermapRunning(); List <World_Sprite> ropeWorldSpriteList = new List <World_Sprite>(); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetPlayer().GetPosition(), Vector3.one * 1f, GameAssets.i.s_Rope, Color.white, 100)); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Healer)).GetPosition(), Vector3.one * 1f, GameAssets.i.s_Rope, Color.white, 100)); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Tank)).GetPosition(), Vector3.one * 1.2f, GameAssets.i.s_Rope, Color.white, 100)); ropeWorldSpriteList.Add(World_Sprite.Create(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Sleezer)).GetPosition(), Vector3.one * 0.7f, GameAssets.i.s_Rope, Color.white, 100)); NPCOvermap randyOvermap = OvermapHandler.GetInstance().GetNPC(GameData.GetCharacter(Character.Type.Randy)); randyOvermap.GetUnitAnimation().PlayAnimForced(UnitAnim.GetUnitAnim("dBareHands_IdleUp"), 1f, null); Vector3 randyStartingPosition = randyOvermap.GetPosition(); randyOvermap.overrideOvermapRunning = true; Dialogue dialogue = Dialogue.GetInstance(); dialogue.SetDialogueActions(new List <Action>() { () => { dialogue.Show(); dialogue.ShowLeftCharacter(GameAssets.i.s_PlayerDialogueSprite, false); dialogue.ShowLeftCharacterName(GameData.GetCharacterName(Character.Type.Player)); dialogue.ShowLeftText("Oh come on, we had him! What happened?"); dialogue.ShowRightCharacter(GameAssets.i.s_TankPortrait, true); dialogue.ShowRightCharacterName(GameData.GetCharacterName(Character.Type.Tank)); dialogue.HideRightText(); }, () => { dialogue.ShowRightActiveTalkerHideLeft("Seems he overpowered us somehow..."); }, () => { dialogue.ShowRightCharacter(GameAssets.i.s_RandyPortrait, false); dialogue.ShowRightCharacterName(GameData.GetCharacterName(Character.Type.Randy)); dialogue.ShowRightActiveTalkerHideLeft("Oh my, aren't you precious"); }, () => { dialogue.ShowRightText("You boys are quite fancy huhuhu"); }, () => { dialogue.ShowLeftActiveTalkerHideRight("Who are you? Are you here to torture us?"); }, () => { dialogue.ShowRightActiveTalkerHideLeft("Oh my, I could never torture such delicate specimens"); }, () => { dialogue.ShowRightText("You are too pretty to be tied up"); }, () => { dialogue.ShowRightText("Allow me to help you huhuhu"); }, () => { // Randy Disappears in Smoke UIBlack.Hide(); dialogue.Hide(); // Untie Player randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetPlayer().GetPosition() + new Vector3(0, -5)); FunctionTimer.Create(() => { ropeWorldSpriteList[0].DestroySelf(); }, 1f); // Untie Healer FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Healer)).GetPosition() + new Vector3(+5, 0)); }, 1f); FunctionTimer.Create(() => { ropeWorldSpriteList[1].DestroySelf(); }, 2f); // Untie Tank FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Tank)).GetPosition() + new Vector3(-5, 0)); }, 2f); FunctionTimer.Create(() => { ropeWorldSpriteList[2].DestroySelf(); }, 3f); // Untie Sleezer FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(OvermapHandler.GetInstance().GetFollower(GameData.GetCharacter(Character.Type.Sleezer)).GetPosition() + new Vector3(-5, 0)); }, 3f); FunctionTimer.Create(() => { ropeWorldSpriteList[3].DestroySelf(); }, 4f); // Go to disappear FunctionTimer.Create(() => { randyOvermap.SetTargetMovePosition(randyStartingPosition); }, 4f); FunctionTimer.Create(() => { OvermapHandler.GetInstance().SpawnSmoke(randyOvermap.GetPosition(), .0f, Vector3.one); }, 5f); FunctionTimer.Create(() => { randyOvermap.Hide(); }, 5.5f); FunctionTimer.Create(() => { UIBlack.Show(); dialogue.Show(); dialogue.PlayNextAction(); }, 7.5f); }, () => { dialogue.ShowLeftActiveTalkerHideRight("Well that was weird..."); dialogue.HideRightCharacterName(); dialogue.HideRightCharacter(); }, () => { dialogue.ShowLeftText("But hey lets keep going! He's not getting away this time"); }, /* * () => { * NPCOvermap npcOvermap = OvermapHandler.GetInstance().GetNPC(GameData.GetCharacter(Character.Type.Randy)); * npcOvermap.SetTargetMovePosition(); * dialogue.Hide(); * UIBlack.Hide(); * OvermapHandler.StartOvermapRunning(); * },*/ () => { dialogue.Hide(); UIBlack.Hide(); OvermapHandler.StartOvermapRunning(); GameData.state = GameData.State.MovingToEvilMonster_2; Window_QuestPointer.Create(GameAssets.i.Map.Find("evilMonster_2").position, Color.white, Color.white); }, }, true); }
public void Start(Transform transform) { overmapFtnDewHandler = new OvermapFtnDewHandler(); UIBlack.Show(); StopOvermapRunning(); Window_PickName.Show_Static(); Window_PickName.AddOption_Static("Custom Name (Length 4)", () => { }); foreach (string badName in GameData.badNamesArray) { Window_PickName.AddOption_Static(badName, () => { Debug.Log(badName); }); } Window_PickName.Hide_Static(); StartOvermapRunning(); UIBlack.Hide(); foreach (Character character in GameData.characterList) { if (character.isDead) { continue; } if (character.IsEnemy()) { SpawnEnemy(character); continue; } switch (character.type) { case Character.Type.Player: playerOvermap.Setup(character); break; case Character.Type.Tank: if (character.subType == Character.SubType.Tank_BeforeJoin) { // Before Tank joined, make him an NPC SpawnNPC(character); } else { // After Tank joined, make him a Follower SpawnFollower(character, new Vector3(10, 0)); } break; case Character.Type.Sleezer: if (character.subType == Character.SubType.Sleezer_Friendly) { // After Tank joined, make him a Follower SpawnFollower(character, new Vector3(10, -5)); } break; case Character.Type.Healer: if (character.subType == Character.SubType.Healer_BeforeJoin) { // Before Healer joined, make him an NPC SpawnNPC(character); } else { // After Healer joined, make him a Follower SpawnFollower(character, new Vector3(10, 0)); } break; case Character.Type.PlayerDoppelganger: case Character.Type.Shop: case Character.Type.Randy: case Character.Type.TavernAmbush: case Character.Type.TavernAmbush_2: case Character.Type.TavernAmbush_3: SpawnNPC(character); break; case Character.Type.Villager_1: case Character.Type.Villager_2: case Character.Type.Villager_3: case Character.Type.Villager_4: case Character.Type.Villager_5: NPCOvermap npcOvermap = SpawnNPC(character); foreach (Transform child in transform.Find("Map")) { if (Vector3.Distance(npcOvermap.GetPosition(), child.position) < 1f) { CharacterSetLastMoveDirData characterSetLastMoveDirData = child.GetComponent <CharacterSetLastMoveDirData>(); npcOvermap.SetLastMoveDir(characterSetLastMoveDirData.lastMoveDir); } } break; } } foreach (Item item in GameData.itemList) { if (item.IsDestroyed()) { continue; } SpawnItem(item); } //OvermapHandler.SpawnNPC(new Vector3(0, 70)); // Starting state switch (GameData.state) { case GameData.State.Start: Cutscenes.Play_Start(); break; case GameData.State.DefeatedHurtMeDaddy: case GameData.State.DefeatedHurtMeDaddy_2: Window_QuestPointer.Create(GetNPC(GameData.GetCharacter(Character.Type.Tank)).GetPosition() + new Vector3(0, 10), Color.yellow, Color.yellow, crossSprite: GameAssets.i.s_ExclamationPoint); break; case GameData.State.DefeatedTank: Cutscenes.Play_Tank_AfterJoin(); break; case GameData.State.SurvivedTavernAmbush: Cutscenes.Play_SurvivedTavernAmbush(); break; case GameData.State.HealerJoined: Window_QuestPointer.Create(GameAssets.i.Map.Find("shop").position, Color.white, Color.white); break; case GameData.State.LostToEvilMonster_1: playerOvermap.SetPosition(GameAssets.i.Map.Find("dungeonPlayer").position); GetFollower(GameData.GetCharacter(Character.Type.Tank)).SetPosition(GameAssets.i.Map.Find("dungeonTank").position); GetFollower(GameData.GetCharacter(Character.Type.Sleezer)).SetPosition(GameAssets.i.Map.Find("dungeonSleezer").position); GetFollower(GameData.GetCharacter(Character.Type.Healer)).SetPosition(GameAssets.i.Map.Find("dungeonHealer").position); Cutscenes.Play_LostToEvilMonster_1(); break; case GameData.State.MovingToEvilMonster_2: Window_QuestPointer.Create(GameAssets.i.Map.Find("evilMonster_2").position, Color.white, Color.white); break; case GameData.State.LostToEvilMonster_2: playerOvermap.SetPosition(GameAssets.i.Map.Find("dungeonPlayer").position); GetFollower(GameData.GetCharacter(Character.Type.Tank)).SetPosition(GameAssets.i.Map.Find("dungeonTank").position); GetFollower(GameData.GetCharacter(Character.Type.Sleezer)).SetPosition(GameAssets.i.Map.Find("dungeonSleezer").position); GetFollower(GameData.GetCharacter(Character.Type.Healer)).SetPosition(GameAssets.i.Map.Find("dungeonHealer").position); Cutscenes.Play_LostToEvilMonster_2(); break; case GameData.State.MovingToEvilMonster_3: Window_QuestPointer.Create(GameAssets.i.Map.Find("evilMonster_3").position, Color.white, Color.white); break; case GameData.State.DefeatedEvilMonster: Cutscenes.Play_DefeatedEvilMonster(); break; } transform.Find("Map").Find("Hitboxes").Find("TavernEntryHitbox").gameObject.SetActive(((int)GameData.state) < ((int)GameData.State.DefeatedTank)); transform.Find("Map").Find("Hitboxes").Find("HurtMeDaddyHitbox").gameObject.SetActive(((int)GameData.state) < ((int)GameData.State.DefeatedHurtMeDaddy)); transform.Find("Map").Find("Hitboxes").Find("HurtMeDaddy2Hitbox").gameObject.SetActive(((int)GameData.state) < ((int)GameData.State.DefeatedHurtMeDaddy_2)); transform.Find("Map").Find("Hitboxes").Find("CastleBlockageHitbox").gameObject.SetActive(((int)GameData.state) < ((int)GameData.State.LostToEvilMonster_2)); transform.Find("Map").Find("VillagerBlocker").gameObject.SetActive(((int)GameData.state) < ((int)GameData.State.DefeatedTank)); transform.Find("Map").Find("Blockage").gameObject.SetActive(((int)GameData.state) < ((int)GameData.State.LostToEvilMonster_2)); //transform.Find("Map").Find("Hitboxes").Find("HurtMeDaddyHitbox").GetComponent<SpriteRenderer>().color = new Color(0, 0, 0, 0); //transform.Find("Map").Find("Hitboxes").Find("HurtMeDaddy2Hitbox").GetComponent<SpriteRenderer>().color = new Color(0, 0, 0, 0); foreach (Transform hitboxTransform in transform.Find("Map").Find("Hitboxes")) { hitboxTransform.GetComponent <SpriteRenderer>().color = new Color(0, 0, 0, 0); } //transform.Find("Map").Find("Hitboxes").Find("CastleBlockageHitbox").GetComponent<SpriteRenderer>().color = new Color(0, 0, 0, .5f); //Window_QuestPointer.Create(new Vector3(150, 0), Color.white, Color.white); //ChatBubble.Create(playerOvermap.transform, new Vector3(3.5f, 5), "Oh Sleezer! You're so silly!"); //ChatBubble.Create(playerOvermap.transform, new Vector3(3.5f, 5), "Hihihi"); }
public static void Play_Tavern() { Window_QuestPointer.DestroyPointer(GameAssets.i.Map.Find("tavern").position); UIBlack.Show(); OvermapHandler.StopOvermapRunning(); Dialogue dialogue = Dialogue.GetInstance(); Character tavernAmbushCharacter = GameData.GetCharacter(Character.Type.TavernAmbush); dialogue.SetDialogueActions(new List <Action>() { () => { dialogue.Show(); dialogue.ShowLeftCharacter(GameAssets.i.s_PlayerDialogueSprite, false); dialogue.ShowLeftCharacterName(GameData.GetCharacterName(Character.Type.Player)); dialogue.ShowLeftText("Greetings!"); dialogue.HideRightCharacter(); dialogue.HideRightText(); dialogue.HideRightCharacterName(); }, () => { dialogue.ShowLeftText("May we have some refreshments?"); }, () => { UIBlack.Hide(); dialogue.Hide(); Vector3 playerPosition = OvermapHandler.GetInstance().GetPlayer().GetPosition(); OvermapHandler.GetInstance().GetPlayer().GetUnitAnimation().PlayAnimForced(UnitAnim.GetUnitAnim("dSwordTwoHandedBack_IdleDown"), 1f, null); NPCOvermap enemyOvermap = OvermapHandler.GetInstance().GetNPC(tavernAmbushCharacter); enemyOvermap.transform.position = playerPosition + new Vector3(0, -17f); enemyOvermap.GetUnitAnimation().PlayAnimForced(UnitAnim.GetUnitAnim("dMinion_IdleUp"), 1f, null); OvermapHandler.GetInstance().SpawnSmoke(enemyOvermap.GetPosition(), .3f, Vector3.one); NPCOvermap enemyOvermap_2 = OvermapHandler.GetInstance().GetNPC(GameData.GetCharacter(Character.Type.TavernAmbush_2)); enemyOvermap_2.transform.position = playerPosition + new Vector3(14f, -12f); enemyOvermap_2.GetUnitAnimation().PlayAnimForced(UnitAnim.GetUnitAnim("dMinion_IdleUp"), 1f, null); OvermapHandler.GetInstance().SpawnSmoke(enemyOvermap_2.GetPosition(), .3f, Vector3.one); NPCOvermap enemyOvermap_3 = OvermapHandler.GetInstance().GetNPC(GameData.GetCharacter(Character.Type.TavernAmbush_3)); enemyOvermap_3.transform.position = playerPosition + new Vector3(-14, -12f); enemyOvermap_3.GetUnitAnimation().PlayAnimForced(UnitAnim.GetUnitAnim("dMinion_IdleUp"), 1f, null); OvermapHandler.GetInstance().SpawnSmoke(enemyOvermap_3.GetPosition(), .3f, Vector3.one); enemyOvermap.gameObject.SetActive(false); enemyOvermap_2.gameObject.SetActive(false); enemyOvermap_3.gameObject.SetActive(false); FunctionTimer.Create(() => { enemyOvermap.gameObject.SetActive(true); enemyOvermap_2.gameObject.SetActive(true); enemyOvermap_3.gameObject.SetActive(true); }, .45f); FunctionTimer.Create(() => { UIBlack.Show(); dialogue.Show(); dialogue.PlayNextAction(); }, 1.2f); }, () => { dialogue.HideLeftText(); dialogue.FadeLeftCharacter(); dialogue.ShowRightCharacter(GameAssets.i.s_EnemyMinionRedPortrait, false); dialogue.ShowRightText("That's the one! Get him!"); }, () => { GameData.GetCharacter(Character.Type.TavernAmbush_2).isDead = true; GameData.GetCharacter(Character.Type.TavernAmbush_3).isDead = true; GameData.state = GameData.State.FightingTavernAmbush; BattleHandler.LoadEnemyEncounter(tavernAmbushCharacter, tavernAmbushCharacter.enemyEncounter); }, }, true); }
public NPCOvermap GetClosestNPC(Vector3 position, float maxDistance = float.MaxValue) { NPCOvermap closest = null; foreach (NPCOvermap npcOvermap in npcList) { if (Vector3.Distance(position, npcOvermap.GetPosition()) > maxDistance) { continue; // Too far } if (closest == null) { closest = npcOvermap; } else { if (Vector3.Distance(position, npcOvermap.GetPosition()) < Vector3.Distance(position, closest.GetPosition())) { closest = npcOvermap; } } } return(closest); }