From: gendelo3 Date: Wed, 20 Sep 2023 07:46:56 +0000 (+0200) Subject: Update to v4.4.0 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=f6cfa0718975b270be77d17882eaa620750c524f;p=rhonda%2Ftheotherroles.git Update to v4.4.0 --- diff --git a/Images/TOR_Roles.png b/Images/TOR_Roles.png index 8d3a134..b644045 100644 Binary files a/Images/TOR_Roles.png and b/Images/TOR_Roles.png differ diff --git a/Images/TOR_colors.jpg b/Images/TOR_colors.jpg index 59c0d09..2a71347 100644 Binary files a/Images/TOR_colors.jpg and b/Images/TOR_colors.jpg differ diff --git a/README.md b/README.md index 9550c3a..3ed0f7f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Even more roles are coming soon. :) | [Mafioso (Mafia)](#mafia) | [Engineer](#engineer) | [Arsonist](#arsonist) | [Anti Teleport](#anti-teleport) | [Guesser Modifier](#guesser-modifier) | | [Janitor (Mafia)](#mafia) | [Sheriff](#sheriff) | [Jackal](#jackal) | [Tie Breaker](#tie-breaker) | [Hide 'n' Seek](#hide-n-seek) | | [Morphling](#morphling) | [Deputy](#deputy) | [Sidekick](#sidekick) | [Bait](#bait) | [Vanilla Hide 'n' Seek](https://www.innersloth.com/new-game-mode-hide-n-seek-is-here-emergency-meeting-35/) | -| [Camouflager](#camouflager) | [Lighter](#lighter) | [Vulture](#vulture) | [Lovers](#lovers) | +| [Camouflager](#camouflager) | [Lighter](#lighter) | [Vulture](#vulture) | [Lovers](#lovers) | [PropHunt](#prophunt)| | [Vampire](#vampire) | [Detective](#detective) | [Lawyer](#lawyer) | [Sunglasses](#sunglasses) | | [Eraser](#eraser) | [Time Master](#time-master) | [Prosecutor](#prosecutor) | [Mini](#mini) | | [Trickster](#trickster) | [Medic](#medic) | [Pursuer](#pursuer) | [VIP](#vip) | @@ -124,7 +124,11 @@ The [Role Assignment](#role-assignment) sections explains how the roles are bein # Changelog
Click to show the Changelog - + +**Version 4.4.0** +- Added a new gamemode, PropHunt. Players can disguise as objects on the map +- Changed Lighter and Darker colors: L/D are no longer random, but rather assigned in alternating order. + **Version 4.3.4** - Updated BepInEx dependency to 671 - Fixed compatibility to Submerged (not thouroughly tested) @@ -796,7 +800,8 @@ docker run -d -p 22023:22023/udp --env IMPOSTOR_AntiCheatEnabled=false --env IMP [Crowded-Mod](https://github.com/CrowdedMods/CrowdedMod) - Our implementation for 10+ player lobbies were inspired by the one from the **Crowded Mod Team**\ [Goose-Goose-Duck](https://store.steampowered.com/app/1568590/Goose_Goose_Duck) - Idea for the Vulture role came from **Slushiegoose**\ [TheEpicRoles](https://github.com/LaicosVK/TheEpicRoles) - Idea for the first kill shield (partly) and the tabbed option menu (fully + some code), by **LaicosVK** **DasMonschta** **Nova**\ -[Ninja](#ninja), [Thief](#thief), [Lawyer](#lawyer) / [Pursuer](#pursuer), [Deputy](#deputy), [Portalmaker](#portalmaker), [Guesser Modifier](#guesser-modifier) - Idea: [K3ndo](https://github.com/K3ndoo) ; Developed by [Gendelo](https://github.com/gendelo3) & [Mallöris](https://github.com/Mallaris) +[Ninja](#ninja), [Thief](#thief), [Lawyer](#lawyer) / [Pursuer](#pursuer), [Deputy](#deputy), [Portalmaker](#portalmaker), [Guesser Modifier](#guesser-modifier) - Idea: [K3ndo](https://github.com/K3ndoo) ; Developed by [Gendelo](https://github.com/gendelo3) & [Mallöris](https://github.com/Mallaris) \ +[dMiner53](https://github.com/ugackMiner53/PropHunt) - Idea and core code for the Prop Hunt game mode # Settings The mod adds a few new settings to Among Us (in addition to the role settings): @@ -885,6 +890,7 @@ Here are a few instructions, on how to create a custom hat: - **Submission:** If you got a hat design, you can submit it on our [Discord server](https://discord.gg/77RkMJHWsM). We'll look at all the hats and add all the good ones to the game. # Colors +Note: Lighter and Darker colors are no longer based on the players color. Instead they are assigned alternatingly, s.t. they are always balanced in a lobby. ![TOR Colors](./Images/TOR_colors.jpg) # Roles @@ -2070,15 +2076,55 @@ Each Hunter action or finished Crew task will lower the timer by a configurable | Kill Cooldown | - | Hunter Light Vision | - | Hunted Rewind Time | - | Hunter Vision | - | Hunter Light Punish in Sec | - | Hunted Shield Number | - | Hunted Vision | - | Hunter Admin Cooldown | - -| Common Tasks | - | Hunter Admin Duration | - -| Short Tasks | - | Hunter Admin Punish In Sec | - -| Long Tasks | - | Hunter Arrow Cooldown | - -| Timer In Min | - | Hunter Arrow Duration | - +| | - | Hunter Admin Duration | - +| | - | Hunter Admin Punish In Sec | - +| | - | Hunter Arrow Cooldown | - +| | - | Hunter Arrow Duration | - | Task Win Is Possible | - | Hunter Arrow Punish In Sec | - | Finish Tasks Punish In Sec | - | Enable Sabotages | - | Time The Hunter Needs To Wait | - +## PropHunt +The **Prop-Gamemode** is a standalone Gamemode where Hunters have to find the disguised players ("Props").\ +The Hunters and Props who are still alive are displayed to everyone in the bottom left corner (similar to the Arsonist display).\ +When the game starts, the Hunter's movement is disabled for x-seconds (depends on the settings), and their screen is blacked out.\ +There is a time-limit for each round, if the timer runs out and at least one Prop is still alive, the remaining Props win.\ +If the Hunters kill all players before the timer runs out the Hunters win.\ +When a Prop dies, they will either join the Hunter team or die (setting). + +#### Shared Abilities: +- Unstuck: By pressing this button, you can travel through walls for a short time. This is needed, because props sometimes get stuck in walls, due to their changed colliders. Don't use it to cheat! + +#### Hunter Abilities: +- Reveal: A random players current prop is revealed to all players for x seconds (according to settings). The timer will be reduced by *punish* s. +- Mobile Admin table (like Hacker) - Normal Admin table shares the cooldown +- Find: Display the DangerMeter known from Vanilla HideNSeek for x seconds. The dangerlevel is rising the closer the Hunter gets to the neares prop. +#### Prop Abilities: +- Invisibility: As a disguised Prop, become invisible for x seconds. +- Speedboost: Move faster for x seconds. + +**NOTE:** +- The Report button lights up, but cannot be pressed. +- Hunters can vent +- The Kill Button and Vent Button are permanently enabled, so that you cannot use them to check if there is a prop nearby +- The Kill Button can always be pressed, but you can also miss if no Prop is nearby. The cooldown can be configured for hits and misses seperately. + + +### Game Options +| General | Description | Hunter | Description | Hunted | Description | +|----------|:-------------:|----------|:-------------:|----------|:-------------:| +| Map | - | Number of Hunters | - | Props Become Hunters When Found | - +| Timer in Min | - | Initial Blackout Duration | - | Invisibility Enabled | - +| Unstuck Cooldown | - | Kill Cooldown After Miss | - | Invisibility Cooldown | - +| Unstuck Duration | - | Kill Cooldown After Hit | - | Invisibility Duration | - +| Hunter Vision | - | Reveal Prop Cooldown | - | Speedboost Enabled | - +| Prop Vision | - | Reveal Prop Duration | - | Speedboost Cooldown | - +| | - | Reveal Time Punish | deducted from rem. timer | Speedboost Duration | - +| | - | Hunter Admin Cooldown | - | Speedboost Ratio | Factor with which speed is multiplied +| | - | Find Cooldown | - +| | - | Find Duration | - + ## GCERROR If the error message "Fatal Error in GC - Collecting from unknown thread" stops you from playing the game, you can now disable the mod-updater, which causes this error. In order to do this, create a file called `noupdater.txt` in your modded Among Us folder. diff --git a/TheOtherRoles/Buttons.cs b/TheOtherRoles/Buttons.cs index 1c8c472..f733166 100644 --- a/TheOtherRoles/Buttons.cs +++ b/TheOtherRoles/Buttons.cs @@ -62,9 +62,18 @@ namespace TheOtherRoles private static CustomButton hunterAdminTableButton; private static CustomButton hunterArrowButton; private static CustomButton huntedShieldButton; + public static CustomButton propDisguiseButton; + private static CustomButton propHuntUnstuckButton; + public static CustomButton propHuntRevealButton; + private static CustomButton propHuntInvisButton; + private static CustomButton propHuntSpeedboostButton; + public static CustomButton propHuntAdminButton; + public static CustomButton propHuntFindButton; public static Dictionary> deputyHandcuffedButtons = null; public static PoolablePlayer targetDisplay; + public static GameObject propSpriteHolder; + public static SpriteRenderer propSpriteRenderer; public static TMPro.TMP_Text securityGuardButtonScrewsText; public static TMPro.TMP_Text securityGuardChargesText; @@ -132,6 +141,13 @@ namespace TheOtherRoles huntedShieldButton.MaxTimer = Hunted.shieldCooldown; defuseButton.MaxTimer = 0f; defuseButton.Timer = 0f; + propDisguiseButton.MaxTimer = 1f; + propHuntUnstuckButton.MaxTimer = PropHunt.unstuckCooldown; + propHuntRevealButton.MaxTimer = PropHunt.revealCooldown; + propHuntInvisButton.MaxTimer = PropHunt.invisCooldown; + propHuntSpeedboostButton.MaxTimer = PropHunt.speedboostCooldown; + propHuntAdminButton.MaxTimer = PropHunt.adminCooldown; + propHuntFindButton.MaxTimer = PropHunt.findCooldown; timeMasterShieldButton.EffectDuration = TimeMaster.shieldDuration; hackerButton.EffectDuration = Hacker.duration; @@ -151,6 +167,12 @@ namespace TheOtherRoles huntedShieldButton.EffectDuration = Hunted.shieldDuration; defuseButton.EffectDuration = Bomber.defuseDuration; bomberButton.EffectDuration = Bomber.destructionTime + Bomber.bombActiveAfter; + propHuntUnstuckButton.EffectDuration = PropHunt.unstuckDuration; + propHuntRevealButton.EffectDuration = PropHunt.revealDuration; + propHuntInvisButton.EffectDuration = PropHunt.invisDuration; + propHuntSpeedboostButton.EffectDuration = PropHunt.speedboostDuration; + propHuntAdminButton.EffectDuration = PropHunt.adminDuration; + propHuntFindButton.EffectDuration = PropHunt.findDuration; // Already set the timer to the max, as the button is enabled during the game and not available at the start lightsOutButton.Timer = lightsOutButton.MaxTimer; zoomOutButton.MaxTimer = 0f; @@ -848,7 +870,7 @@ namespace TheOtherRoles RPCProcedure.placeGarlic(buff); SoundEffectsManager.play("garlic"); }, - () => { return !Vampire.localPlacedGarlic && !CachedPlayer.LocalPlayer.Data.IsDead && Vampire.garlicsActive && !HideNSeek.isHideNSeekGM; }, + () => { return !Vampire.localPlacedGarlic && !CachedPlayer.LocalPlayer.Data.IsDead && Vampire.garlicsActive && !HideNSeek.isHideNSeekGM && !PropHunt.isPropHuntGM; }, () => { return CachedPlayer.LocalPlayer.PlayerControl.CanMove && !Vampire.localPlacedGarlic; }, () => { }, Vampire.getGarlicButtonSprite(), @@ -1261,7 +1283,6 @@ namespace TheOtherRoles if (GameOptionsManager.Instance.currentNormalGameOptions.MapId != 1) { if (SecurityGuard.minigame == null) { byte mapId = GameOptionsManager.Instance.currentNormalGameOptions.MapId; - UnityEngine.Object.FindObjectsOfType().ToList().ForEach(x => TheOtherRolesPlugin.Logger.LogMessage($"{x.name} {x.GetType()}, {x.MinigamePrefab.TaskType}")); var e = UnityEngine.Object.FindObjectsOfType().FirstOrDefault(x => x.gameObject.name.Contains("Surv_Panel") || x.name.Contains("Cam")); if (mapId == 0 || mapId == 3) e = UnityEngine.Object.FindObjectsOfType().FirstOrDefault(x => x.gameObject.name.Contains("SurvConsole")); else if (mapId == 4) e = UnityEngine.Object.FindObjectsOfType().FirstOrDefault(x => x.gameObject.name.Contains("task_cams")); @@ -2020,6 +2041,191 @@ namespace TheOtherRoles huntedShieldCountText.transform.localScale = Vector3.one * 0.5f; huntedShieldCountText.transform.localPosition += new Vector3(-0.05f, 0.7f, 0); + + propDisguiseButton = new CustomButton( + () => { + // Prop stuff + var player = PlayerControl.LocalPlayer; + GameObject disguiseTarget = PropHunt.currentTarget; + // PropHunt.FindClosestDisguiseObject(player.gameObject, 1, true); + if (disguiseTarget != null) { + player.transform.localScale = disguiseTarget.transform.lossyScale; + MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.SetProp, Hazel.SendOption.Reliable, -1); + writer.Write(CachedPlayer.LocalPlayer.PlayerId); + writer.Write(disguiseTarget.gameObject.name); + writer.Write(disguiseTarget.gameObject.transform.position.x); + AmongUsClient.Instance.FinishRpcImmediately(writer); + RPCProcedure.propHuntSetProp(CachedPlayer.LocalPlayer.PlayerId, disguiseTarget.gameObject.name, disguiseTarget.gameObject.transform.position.x); + SoundEffectsManager.play("morphlingMorph"); + propDisguiseButton.Timer = 1f; + } + }, + () => { return PropHunt.isPropHuntGM && !PlayerControl.LocalPlayer.Data.Role.IsImpostor && !PlayerControl.LocalPlayer.Data.IsDead; }, + () => { + propSpriteRenderer.sprite = PropHunt.currentTarget?.GetComponent()?.sprite; + if (propSpriteRenderer.sprite != null) + propSpriteHolder.transform.localScale *= 1 / propSpriteRenderer.bounds.size.magnitude; + return PropHunt.currentTarget != null && PropHunt.currentTarget?.GetComponent()?.sprite != null; + }, + () => {}, + null, + CustomButton.ButtonPositions.lowerRowRight, + __instance, + KeyCode.F, + buttonText: "DISGUISE" + ); + propSpriteHolder = new GameObject("TORPropButtonPropSpritePreview"); + propSpriteRenderer = propSpriteHolder.AddComponent(); + propSpriteHolder.transform.SetParent(propDisguiseButton.actionButtonGameObject.transform, false); + propSpriteHolder.transform.localPosition = new Vector3(0, 0, -2f); + + propHuntUnstuckButton = new CustomButton( + + () => { + PlayerControl.LocalPlayer.Collider.enabled = false; + }, + () => { return PropHunt.isPropHuntGM && !PlayerControl.LocalPlayer.Data.IsDead; }, + () => { return true; }, + () => { }, + PropHunt.getUnstuckButtonSprite(), + CustomButton.ButtonPositions.upperRowLeft, + __instance, + KeyCode.LeftShift, + true, + 1f, + () => { PlayerControl.LocalPlayer.Collider.enabled = true; + propHuntUnstuckButton.Timer = propHuntUnstuckButton.MaxTimer; + }, + buttonText: "UNSTUCK" + ); + + propHuntRevealButton = new CustomButton( + () => { + // select a random crewplayer to reveal. + var candidates = PlayerControl.AllPlayerControls.ToArray().Where(x => !x.Data.Role.IsImpostor && !x.Data.IsDead && !PropHunt.isCurrentlyRevealed.ContainsKey(x.PlayerId)).ToList(); + var rng = new System.Random(); + PlayerControl selectedPlayer = candidates[rng.Next(candidates.Count)]; + MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.SetRevealed, Hazel.SendOption.Reliable, -1); + writer.Write(selectedPlayer.PlayerId); + AmongUsClient.Instance.FinishRpcImmediately(writer); + RPCProcedure.propHuntSetRevealed(selectedPlayer.PlayerId); + + }, + () => { return PropHunt.isPropHuntGM && !PlayerControl.LocalPlayer.Data.IsDead && PlayerControl.LocalPlayer.Data.Role.IsImpostor; }, + () => { return PropHunt.timer - PropHunt.revealPunish > 0; }, + () => { }, + PropHunt.getRevealButtonSprite(), + CustomButton.ButtonPositions.upperRowFarLeft, + __instance, + KeyCode.R, + true, + 5f, + () => { + propHuntRevealButton.Timer = propHuntRevealButton.MaxTimer; + } + ); + + propHuntInvisButton = new CustomButton( + () => { + MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.PropHuntSetInvis, Hazel.SendOption.Reliable, -1); + writer.Write(CachedPlayer.LocalPlayer.PlayerId); + AmongUsClient.Instance.FinishRpcImmediately(writer); + RPCProcedure.propHuntSetInvis(CachedPlayer.LocalPlayer.PlayerId); + SoundEffectsManager.play("morphlingMorph"); + }, + () => { return PropHunt.isPropHuntGM && !PlayerControl.LocalPlayer.Data.IsDead && !PlayerControl.LocalPlayer.Data.Role.IsImpostor && PropHunt.enableInvis; }, + () => { return PropHunt.currentObject.ContainsKey(PlayerControl.LocalPlayer.PlayerId); }, + () => { }, + PropHunt.getInvisButtonSprite(), + CustomButton.ButtonPositions.upperRowFarLeft, + __instance, + KeyCode.I, + true, + 5f, + () => { + SoundEffectsManager.play("morphlingMorph"); + propHuntInvisButton.Timer = propHuntInvisButton.MaxTimer; + }, + buttonText: "INVIS" + ); + + propHuntSpeedboostButton = new CustomButton( + () => { + MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.PropHuntSetSpeedboost, Hazel.SendOption.Reliable, -1); + writer.Write(CachedPlayer.LocalPlayer.PlayerId); + AmongUsClient.Instance.FinishRpcImmediately(writer); + RPCProcedure.propHuntSetSpeedboost(CachedPlayer.LocalPlayer.PlayerId); + SoundEffectsManager.play("timemasterShield"); + }, + () => { return PropHunt.isPropHuntGM && !PlayerControl.LocalPlayer.Data.IsDead && !PlayerControl.LocalPlayer.Data.Role.IsImpostor && PropHunt.enableSpeedboost; }, + () => { return true; }, + () => { }, + PropHunt.getSpeedboostButtonSprite(), + CustomButton.ButtonPositions.lowerRowCenter, + __instance, + KeyCode.G, + true, + 5f, + () => { + SoundEffectsManager.stop("timemasterShield"); + propHuntSpeedboostButton.Timer = propHuntSpeedboostButton.MaxTimer; + }, + buttonText: "BOOST" + ); + + propHuntAdminButton = new CustomButton( + () => { + if (!MapBehaviour.Instance || !MapBehaviour.Instance.isActiveAndEnabled) { + HudManager __instance = FastDestroyableSingleton.Instance; + __instance.InitMap(); + MapBehaviour.Instance.ShowCountOverlay(allowedToMove: true, showLivePlayerPosition: true, includeDeadBodies: false); + } + + CachedPlayer.LocalPlayer.NetTransform.Halt(); // Stop current movement + }, + () => { return PropHunt.isPropHuntGM && !PlayerControl.LocalPlayer.Data.IsDead && PlayerControl.LocalPlayer.Data.Role.IsImpostor; }, + () => { + propHuntAdminButton.PositionOffset = PlayerControl.LocalPlayer.inVent ? CustomButton.ButtonPositions.lowerRowRight : CustomButton.ButtonPositions.upperRowCenter; + return !PlayerControl.LocalPlayer.inVent; }, + () => { + propHuntAdminButton.Timer = hunterAdminTableButton.MaxTimer; + propHuntAdminButton.isEffectActive = false; + propHuntAdminButton.actionButton.cooldownTimerText.color = Palette.EnabledColor; + }, + Hacker.getAdminSprite(), + CustomButton.ButtonPositions.upperRowCenter, + __instance, + KeyCode.G, + true, + PropHunt.adminDuration, + () => { + propHuntAdminButton.Timer = propHuntAdminButton.MaxTimer; + if (MapBehaviour.Instance && MapBehaviour.Instance.isActiveAndEnabled) MapBehaviour.Instance.Close(); + }, + false, + "ADMIN" + ); + propHuntFindButton = new CustomButton( + () => { + SoundEffectsManager.play("timemasterShield"); + }, + () => { return PropHunt.isPropHuntGM && !PlayerControl.LocalPlayer.Data.IsDead && PlayerControl.LocalPlayer.Data.Role.IsImpostor; }, + () => { return true; }, + () => { }, + PropHunt.getFindButtonSprite(), + CustomButton.ButtonPositions.lowerRowCenter, + __instance, + KeyCode.F, + true, + 5f, + () => { + SoundEffectsManager.stop("timemasterShield"); + propHuntFindButton.Timer = propHuntFindButton.MaxTimer; + propHuntFindButton.isEffectActive = false; + }, + buttonText: "FIND" + ); + // Set the default (or settings from the previous game) timers / durations when spawning the buttons initialized = true; setCustomButtonCooldowns(); diff --git a/TheOtherRoles/CustomGameModes/PropHunt.cs b/TheOtherRoles/CustomGameModes/PropHunt.cs new file mode 100644 index 0000000..cc5ab1f --- /dev/null +++ b/TheOtherRoles/CustomGameModes/PropHunt.cs @@ -0,0 +1,576 @@ +using AmongUs.Data; +using AmongUs.GameOptions; +using HarmonyLib; +using Hazel; +using Reactor.Utilities; +using Reactor.Utilities.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using TheOtherRoles.Patches; +using TheOtherRoles.Players; +using TheOtherRoles.Utilities; +using TMPro; +using UnityEngine; + +namespace TheOtherRoles.CustomGameModes { + [HarmonyPatch] + class PropHunt { + public static bool isPropHuntGM = false; + + public static Dictionary remainingShots = new Dictionary(); + public static float timer = 20f; + public static bool timerRunning = false; + public static float blackOutTimer = 0f; + + public static int numberOfHunters; + public static float initialBlackoutTime; + public static float killCooldownHit; + public static float killCooldownMiss; + public static float hunterVision; + public static float propVision; + public static float revealCooldown = 5f; + public static float revealDuration = 5f; + public static float unstuckDuration = 5f; + public static float unstuckCooldown = 5f; + public static float revealPunish = 0f; + + public static float invisCooldown = 0f; + public static float invisDuration = 0f; + public static float speedboostCooldown = 0f; + public static float speedboostDuration = 0f; + public static float speedboostRatio = 0f; + + public static float adminCooldown = 5f; + public static float adminDuration = 10f; + + public static float findCooldown = 10f; + public static float findDuration = 10f; + + public static bool enableSpeedboost = true; + public static bool enableInvis = true; + + public static bool propBecomesHunterWhenFound; + private static Sprite disguiseButtonSprite; + private static Sprite unstuckButtonSprite; + private static Sprite revealButtonSprite; + private static Sprite invisButtonSprite; + private static Sprite speedboostButtonSprite; + private static Sprite findButtonSprite; + private static Sprite poolablesBackgroundSprite; + public static DateTime startTime = DateTime.UtcNow; + public static TMP_Text timerText; + public static List whitelistedObjects = new List() { }; + + public static Dictionary> currentObject = new(); + public static Dictionary isCurrentlyRevealed = new(); + private static Dictionary revealRenderer = new(); + public static Dictionary invisPlayers = new(); + + public static Dictionary speedboostActive = new(); + + public static GameObject currentTarget = null; + private static GameObject poolablesBackground; + + public static float dangerMeterActive = 0f; + + private static List duplicatedCollider = new(); + private static GameObject introObject; + + public static void clearAndReload() { + remainingShots.Clear(); + isPropHuntGM = TORMapOptions.gameMode == CustomGamemodes.PropHunt; + numberOfHunters = CustomOptionHolder.propHuntNumberOfHunters.getQuantity(); + initialBlackoutTime = CustomOptionHolder.hunterInitialBlackoutTime.getFloat(); + //maxMissesBeforeDeath = CustomOptionHolder.hunterMaxMissesBeforeDeath.getQuantity(); + propBecomesHunterWhenFound = CustomOptionHolder.propBecomesHunterWhenFound.getBool(); + killCooldownMiss = CustomOptionHolder.hunterMissCooldown.getFloat(); + killCooldownHit = CustomOptionHolder.hunterHitCooldown.getFloat(); + hunterVision = CustomOptionHolder.propHunterVision.getFloat(); + propVision = CustomOptionHolder.propVision.getFloat(); + timer = CustomOptionHolder.propHuntTimer.getFloat() * 60; + revealDuration = CustomOptionHolder.propHuntRevealDuration.getFloat(); + revealCooldown = CustomOptionHolder.propHuntRevealCooldown.getFloat(); + unstuckDuration = CustomOptionHolder.propHuntUnstuckDuration.getFloat(); + unstuckCooldown = CustomOptionHolder.propHuntUnstuckCooldown.getFloat(); + revealPunish = CustomOptionHolder.propHuntRevealPunish.getFloat(); + invisCooldown = CustomOptionHolder.propHuntInvisCooldown.getFloat(); + invisDuration = CustomOptionHolder.propHuntInvisDuration.getFloat(); + speedboostCooldown = CustomOptionHolder.propHuntSpeedboostCooldown.getFloat(); + speedboostDuration = CustomOptionHolder.propHuntSpeedboostDuration.getFloat(); + speedboostRatio = CustomOptionHolder.propHuntSpeedboostSpeed.getFloat(); + enableSpeedboost = CustomOptionHolder.propHuntSpeedboostEnabled.getBool(); + enableInvis = CustomOptionHolder.propHuntInvisEnabled.getBool(); + adminCooldown = CustomOptionHolder.propHuntAdminCooldown.getFloat(); + findCooldown = CustomOptionHolder.propHuntFindCooldown.getFloat(); + findDuration = CustomOptionHolder.propHuntFindDuration.getFloat(); + timerRunning = false; + timerText?.Destroy(); + timerText = null; + currentObject = new(); + isCurrentlyRevealed = new(); + poolablesBackground?.Destroy(); + foreach (var go in revealRenderer.Values) { go.Destroy(); } + revealRenderer = new(); + speedboostActive = new(); + invisPlayers = new(); + foreach (var go in duplicatedCollider) { go.Destroy(); } + duplicatedCollider = new(); + } + + public static Sprite getIntroSprite(int index) { + return Helpers.loadSpriteFromResources($"TheOtherRoles.Resources.IntroAnimation.intro_{index + 1000}.png", 150f, cache: false); + } + + public static void update() { + + if (!isPropHuntGM) { + // Make sure the DangerMeter is not displayed in TOR HideNSeek, Classic or Guesser Game mode. + if (GameOptionsManager.Instance.currentGameOptions.GameMode != AmongUs.GameOptions.GameModes.HideNSeek) HudManager.Instance.DangerMeter?.gameObject.SetActive(false); + return; + } + if (timerRunning) timer = Math.Clamp(timer -= Time.deltaTime, 0, timer >= 0 ? timer : 0); + else if (blackOutTimer > 0f) blackOutTimer -= Time.deltaTime; + + // Local player find prop Target: + if (!PlayerControl.LocalPlayer.Data.Role.IsImpostor) currentTarget = FindClosestDisguiseObject(PlayerControl.LocalPlayer.gameObject, 1f); + + if (timerText == null) { + RoomTracker roomTracker = FastDestroyableSingleton.Instance?.roomTracker; + if (roomTracker != null) { + GameObject gameObject = UnityEngine.Object.Instantiate(roomTracker.gameObject); + + gameObject.transform.SetParent(FastDestroyableSingleton.Instance.transform); + UnityEngine.Object.DestroyImmediate(gameObject.GetComponent()); + timerText = gameObject.GetComponent(); + + // Use local position to place it in the player's view instead of the world location + gameObject.transform.localPosition = new Vector3(0, -1.8f, gameObject.transform.localPosition.z); + if (AmongUs.Data.DataManager.Settings.Gameplay.StreamerMode) gameObject.transform.localPosition = new Vector3(0, 2f, gameObject.transform.localPosition.z); + } + } else { + if (timerRunning || blackOutTimer > 0f) { + var relevantTimer = timerRunning ? timer : blackOutTimer; + int minutes = (int)relevantTimer / 60; + int seconds = (int)relevantTimer % 60; + string suffix = $" {minutes:00}:{seconds:00}"; + timerText.text = Helpers.cs(timerRunning ? Color.blue : Color.red, suffix); + timerText.outlineColor = Color.white; + timerText.outlineWidth = 0.1f; + timerText.color = timerRunning ? Color.blue : Color.red; + } + } + if (HudManagerStartPatch.propDisguiseButton != null && HudManagerStartPatch.propDisguiseButton.Timer > HudManagerStartPatch.propDisguiseButton.MaxTimer) HudManagerStartPatch.propDisguiseButton.Timer = HudManagerStartPatch.propDisguiseButton.MaxTimer; + // poolable players update. + if (poolablesBackground == null) { + poolablesBackground = new GameObject("poolablesBackground"); + poolablesBackground.AddComponent(); + if (poolablesBackgroundSprite == null) poolablesBackgroundSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.poolablesBackground.jpg", 200f); + } + poolablesBackground.transform.SetParent(HudManager.Instance.transform); + poolablesBackground.transform.localPosition = IntroCutsceneOnDestroyPatch.bottomLeft + new Vector3(-1.45f, -0.05f, 0) + Vector3.right * PlayerControl.AllPlayerControls.Count * 0.2f; + var backgroundSizeX = PlayerControl.AllPlayerControls.Count * 0.4f + 0.2f; + poolablesBackground.GetComponent().sprite = poolablesBackgroundSprite; + poolablesBackground.transform.localScale = new Vector3(poolablesBackground.transform.localScale.x * backgroundSizeX / poolablesBackground.GetComponent().bounds.size.x, poolablesBackground.transform.localScale.y, poolablesBackground.transform.localScale.z); + + foreach (var pc in PlayerControl.AllPlayerControls) { + if (!TORMapOptions.playerIcons.ContainsKey(pc.PlayerId)) continue; + var poolablePlayer = TORMapOptions.playerIcons[pc.PlayerId]; + if (pc.Data.IsDead) { + poolablePlayer.setSemiTransparent(true, 0.25f); + poolablePlayer.cosmetics.nameText.text = Helpers.cs(Palette.DisabledGrey, pc.Data.PlayerName); ; + } else if (pc.Data.Role.IsImpostor) { + poolablePlayer.cosmetics.nameText.text = Helpers.cs(Palette.ImpostorRed, pc.Data.PlayerName); + poolablePlayer.cosmetics.currentBodySprite.BodySprite.material.SetFloat("_Outline", 2f); + poolablePlayer.cosmetics.currentBodySprite.BodySprite.material.SetColor("_OutlineColor", Palette.ImpostorRed); + poolablePlayer.cosmetics.nameText.fontSize = 4; + } else { + // Display Prop + poolablePlayer.cosmetics.nameText.text = Helpers.cs(Palette.CrewmateBlue, pc.Data.PlayerName); ; + if (isCurrentlyRevealed.ContainsKey(pc.PlayerId)) { + + } + } + // update currently revealed: + if (isCurrentlyRevealed.ContainsKey(pc.PlayerId)) { + if (!revealRenderer.ContainsKey(pc.PlayerId)) { + var go = new GameObject($"reveal_renderer_{pc.PlayerId}"); + go.AddComponent(); + go.transform.SetParent(poolablePlayer.transform.parent, false); + go.SetActive(true); + go.transform.localPosition = poolablePlayer.transform.localPosition + new Vector3(0, 0, -50f); + poolablePlayer.gameObject.SetActive(false); + revealRenderer.Add(pc.PlayerId, go); + } + float revealTimer = isCurrentlyRevealed[pc.PlayerId] - Time.deltaTime; + isCurrentlyRevealed[pc.PlayerId] = revealTimer; + if (revealTimer > 0) { + // get sprite: + if (currentObject.ContainsKey(pc.PlayerId)) { + revealRenderer[pc.PlayerId].GetComponent().sprite = pc.GetComponent().sprite; + revealRenderer[pc.PlayerId].transform.localScale *= 0.5f / revealRenderer[pc.PlayerId].GetComponent().bounds.size.magnitude; + } + } else { + revealRenderer[pc.PlayerId].Destroy(); + isCurrentlyRevealed.Remove(pc.PlayerId); + revealRenderer.Remove(pc.PlayerId); + poolablePlayer.gameObject.SetActive(true); + SoundEffectsManager.play("morphlingMorph"); + } + } + } + + // speedboost + foreach (var key in speedboostActive.Keys) { + float speedboostTimer = speedboostActive[key] - Time.deltaTime; + speedboostActive[key] = speedboostTimer; + if (speedboostTimer < 0) + speedboostActive.Remove(key); + } + // invisupdate + foreach (var playerId in invisPlayers.Keys) { + var pc = Helpers.playerById(playerId); + if (pc == null || pc.Data.IsDead) continue; + float timeLeft = invisPlayers[playerId] - Time.deltaTime; + invisPlayers[playerId] = timeLeft; + if (timeLeft > 0) { + pc.GetComponent().color = new Color(1f, 1f, 1f, PlayerControl.LocalPlayer.Data.IsDead || PlayerControl.LocalPlayer.PlayerId == playerId ? 0.1f: 0f); + + } + else { + pc.GetComponent().color = new Color(1f, 1f, 1f, 1f); + invisPlayers.Remove(playerId); + } + if (isCurrentlyRevealed.ContainsKey(playerId)) { + revealRenderer[playerId].GetComponent().color = pc.GetComponent().color; + } + } + + // Update dangerMeter + if (HudManager.Instance.DangerMeter.gameObject.active) { + float dist = 55f; + float dist2 = 15f; + float curr = float.MaxValue; + foreach (PlayerControl playerControl in PlayerControl.AllPlayerControls.ToArray().Where(x => !x.Data.IsDead && (PlayerControl.LocalPlayer.Data.Role.IsImpostor ? !x.Data.Role.IsImpostor : x.Data.Role.IsImpostor))) { + if (invisPlayers.ContainsKey(playerControl.PlayerId)) continue; // Dont light up for invisible players + if (!(playerControl == null)) { + + float sqrMagnitude = (playerControl.transform.position - PlayerControl.LocalPlayer.transform.position).sqrMagnitude; + if (sqrMagnitude < dist && curr > sqrMagnitude) { + curr = sqrMagnitude; + } + } + } + float dangerLevel1 = Mathf.Clamp01((dist - curr) / (dist - dist2)); + float dangerLevel2 = Mathf.Clamp01((dist2 - curr) / dist2); + HudManager.Instance.DangerMeter.SetDangerValue(dangerLevel1, dangerLevel2); + } + HudManager.Instance.DangerMeter?.gameObject.SetActive(!PlayerControl.LocalPlayer.Data.IsDead && (!PlayerControl.LocalPlayer.Data.Role.IsImpostor || HudManagerStartPatch.propHuntFindButton.isEffectActive)); + } + + public static void transformLayers() { // A bit of a hacky way to make sure that props as well as propable objects are not visible in the dark, while keeping collisions enabled. + PlayerControl.LocalPlayer.clearAllTasks(); + foreach (Collider2D collider in Physics2D.OverlapCircleAll(PlayerControl.LocalPlayer.transform.position, 500)) { + bool whiteListed = false; + foreach (var whiteListedWord in whitelistedObjects) if (collider.gameObject.name.Contains(whiteListedWord) && collider.gameObject.GetComponent() != null) whiteListed = true; + if (collider.GetComponent() != null || whiteListed) { + if (whiteListed) { + var newgo = GameObject.Instantiate(collider.gameObject, collider.transform.parent); + newgo.name = "DONTUSE"; + duplicatedCollider.Add(newgo); + } + + collider.gameObject.layer = PlayerControl.LocalPlayer.gameObject.layer; + } + } + } + + public static Sprite getDisguiseButtonSprite() { + if (disguiseButtonSprite) return disguiseButtonSprite; + disguiseButtonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.DisguiseButton.png", 115f); + return disguiseButtonSprite; + } + + public static Sprite getUnstuckButtonSprite() { + if (unstuckButtonSprite) return unstuckButtonSprite; + unstuckButtonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.UnStuck.png", 115f); + return unstuckButtonSprite; + } + public static Sprite getRevealButtonSprite() { + if (revealButtonSprite) return revealButtonSprite; + revealButtonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.Reveal.png", 115f); + return revealButtonSprite; + } + + public static Sprite getInvisButtonSprite() { + if (invisButtonSprite) return invisButtonSprite; + invisButtonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.InvisButton.png", 115f); + return invisButtonSprite; + } + + public static Sprite getFindButtonSprite() { + if (findButtonSprite) return findButtonSprite; + findButtonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.FindButton.png", 115f); + return findButtonSprite; + } + public static Sprite getSpeedboostButtonSprite() { + if (speedboostButtonSprite) return speedboostButtonSprite; + speedboostButtonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.SpeedboostButton.png", 115f); + return speedboostButtonSprite; + } + + + public static GameObject FindClosestDisguiseObject(GameObject origin, float radius, bool verbose=false) { + // This throws errors if no console is nearby + try { + Collider2D bestCollider = null; + float bestDist = 9999; + if (whitelistedObjects == null || whitelistedObjects.Count == 0) { + string allNames = Helpers.readTextFromResources("TheOtherRoles.Resources.Txt.Props.txt"); + whitelistedObjects = allNames.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries).ToList(); + } + foreach (Collider2D collider in Physics2D.OverlapCircleAll(origin.transform.position, radius)) { + if (verbose) { + TheOtherRolesPlugin.Logger.LogMessage($"Nearby Object: {collider.gameObject.name}"); + } + bool whiteListed = false; + foreach (var whiteListedWord in whitelistedObjects) { + if (collider.gameObject.name.Contains(whiteListedWord)) whiteListed = true; + } + if (collider.GetComponent() != null || whiteListed) { + float dist = Vector2.Distance(origin.transform.position, collider.transform.position); + if (dist < bestDist) { + bestCollider = collider; + bestDist = dist; + } + } + } + return bestCollider.gameObject; + } catch { return null; } + } + + public static GameObject FindPropByNameAndPos(string propName, float posX) { + var candidates = GameObject.FindObjectsOfType(); + GameObject prop = null; + foreach (var candidate in candidates) { + if (candidate.name == propName && candidate.transform.position.x == posX) + prop = candidate; + } + return prop; + } + + [HarmonyPatch(typeof(PlayerPhysics), nameof(PlayerPhysics.FixedUpdate))] + [HarmonyPostfix] + public static void SpeedbostPostfix(PlayerPhysics __instance) { + if (!__instance.AmOwner || !speedboostActive.ContainsKey(__instance.myPlayer.PlayerId)) return; + if (GameData.Instance && __instance.myPlayer.CanMove) + __instance.body.velocity *= speedboostRatio; + } + + [HarmonyPatch(typeof(CustomNetworkTransform), nameof(CustomNetworkTransform.FixedUpdate))] + [HarmonyPostfix] + public static void PostfixNetworkSpeed(CustomNetworkTransform __instance) { + if (__instance.AmOwner || !speedboostActive.ContainsKey(__instance.myPlayer.PlayerId)) return; + if (GameData.Instance && __instance.myPlayer.CanMove) + __instance.body.velocity *= speedboostRatio; + } + + [HarmonyPatch(typeof(IntroCutscene), nameof(IntroCutscene.OnDestroy))] + [HarmonyPostfix] + public static void IntroCutsceneDestroyPatch(IntroCutscene __instance) { + if (!isPropHuntGM || !PlayerControl.LocalPlayer.Data.Role.IsImpostor) return; + PlayerControl.LocalPlayer.moveable = false; + MessageWriter writer2 = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.PropHuntStartTimer, Hazel.SendOption.Reliable, -1); + writer2.Write(true); + AmongUsClient.Instance.FinishRpcImmediately(writer2); + RPCProcedure.propHuntStartTimer(true); + introObject = new GameObject("introrenderer"); + introObject.layer = HudManager.Instance.FullScreen.gameObject.layer; + introObject.transform.SetParent(HudManager.Instance.FullScreen.transform); + introObject.transform.localPosition = new Vector3(0, 0, -1f); + SpriteRenderer introRenderer = introObject.AddComponent(); + introObject.SetActive(true); + introRenderer.enabled = true; + int nFrames = 25 * (int)initialBlackoutTime + 10; + FastDestroyableSingleton.Instance.StartCoroutine(Effects.Lerp(initialBlackoutTime, new Action((p) => { + if (p == 1f) { + // start timer + MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.PropHuntStartTimer, Hazel.SendOption.Reliable, -1); + writer.Write(false); + AmongUsClient.Instance.FinishRpcImmediately(writer); + RPCProcedure.propHuntStartTimer(); + PlayerControl.LocalPlayer.moveable = true; + HudManager.Instance.FullScreen.enabled = false; + introObject.Destroy(); + } else { + HudManager.Instance.FullScreen.enabled = true; + HudManager.Instance.FullScreen.gameObject.SetActive(true); + HudManager.Instance.FullScreen.color = new Color(0, 0, 0, 1); + introRenderer.sprite?.Destroy(); + introRenderer.sprite = getIntroSprite(510 - nFrames + (int)(p * nFrames)); + Resources.UnloadUnusedAssets(); // Needed so that the last sprite gets unloaded + } + }))); + } + + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.FixedUpdate))] + [HarmonyPostfix] + public static void PlayerControlFixedUpdatePatch(PlayerControl __instance) { + if (!PropHunt.isPropHuntGM) return; + if (__instance.Data.Role.IsImpostor) { + __instance.GetComponent().radius = 0.2234f; + return; + } + if (__instance.GetComponent() != null || __instance.Data.IsDead) return; + + __instance.gameObject.AddComponent(); + __instance.GetComponent().radius = 0.00001f; + } + + + // Runs periodically, resets animation data for players + [HarmonyPatch(typeof(PlayerPhysics), nameof(PlayerPhysics.HandleAnimation))] + [HarmonyPostfix] + public static void PlayerPhysicsAnimationPatch(PlayerPhysics __instance) { + if (!AmongUsClient.Instance.IsGameStarted || !PropHunt.isPropHuntGM) + return; + try { + if (__instance.GetComponent().sprite != null && !__instance.myPlayer.Data.Role.IsImpostor) { + __instance.myPlayer.Visible = false; + __instance.GetComponent().flipX = __instance.myPlayer.cosmetics.currentBodySprite.BodySprite.flipX; + __instance.myPlayer.cosmetics.currentPet?.Destroy(); + } + if (__instance.myPlayer.Data.IsDead) { + __instance.myPlayer.Visible = PlayerControl.LocalPlayer.Data.IsDead; + GameObject.Destroy(__instance.GetComponent()); + } + } catch { } + } + + // Make prop impostor on death + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.Die))] + [HarmonyPostfix] + public static void MakePropImpostorPatch(PlayerControl __instance) { + if (!PropHunt.isPropHuntGM) return; + __instance.transform.localScale = new Vector3(0.7f, 0.7f, 1); + if (!__instance.Data.Role.IsImpostor && propBecomesHunterWhenFound) { + __instance.Revive(); + DestroyableSingleton.Instance.SetRole(__instance, RoleTypes.Impostor); + if (__instance == PlayerControl.LocalPlayer) { + HudManagerStartPatch.propHuntRevealButton.Timer = revealCooldown; + HudManagerStartPatch.propHuntFindButton.Timer = findCooldown; + HudManagerStartPatch.propHuntAdminButton.Timer = adminCooldown; + } + __instance.MyPhysics.SetBodyType(PlayerBodyTypes.Seeker); + } else { + // Find correct dead body, set sprite to dead console object... + Sprite currentPlayerSprite = __instance.GetComponent().sprite; + foreach (var db in UnityEngine.Object.FindObjectsOfType()) + if (db.ParentId == __instance.PlayerId && currentPlayerSprite != null) { + db.bodyRenderers[0].sprite = currentPlayerSprite; + db.bodyRenderers[0].color = new Color(0.5f, 0.5f, 0.5f, 0.5f); + } + } + __instance.GetComponent().sprite = null; + } + + [HarmonyPatch(typeof(HudManager), nameof(HudManager.Update))] + [HarmonyPostfix] + public static void MapSetPostfix() { // Make sure the map in the settings is in sync with the map from li + if (TORMapOptions.gameMode != CustomGamemodes.PropHunt && TORMapOptions.gameMode != CustomGamemodes.HideNSeek || AmongUsClient.Instance.IsGameStarted) return; + int map = GameOptionsManager.Instance.currentGameOptions.MapId; + if (map > 3) map--; + if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) + if (CustomOptionHolder.hideNSeekMap.selection != map) + CustomOptionHolder.hideNSeekMap.updateSelection(map); + if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) + if (CustomOptionHolder.propHuntMap.selection != map) + CustomOptionHolder.propHuntMap.updateSelection(map); + } + + + [HarmonyPatch(typeof(MapConsole), nameof(MapConsole.CanUse))] + [HarmonyPostfix] + public static void AdminCanUsePostfix(MapConsole __instance, GameData.PlayerInfo pc, ref bool canUse, ref bool couldUse, ref float __result) { + if (!PropHunt.isPropHuntGM || !PlayerControl.LocalPlayer.Data.Role.IsImpostor) return; + if (canUse) { + if (HudManagerStartPatch.propHuntAdminButton.Timer > 0) { + canUse = couldUse = false; + __result = float.MaxValue; + } + } + } + + [HarmonyPatch(typeof(MapConsole), nameof(MapConsole.Use))] + [HarmonyPrefix] + public static bool AdminUsePostfix(MapConsole __instance) { + if (!PropHunt.isPropHuntGM || !PlayerControl.LocalPlayer.Data.Role.IsImpostor) return true; + HudManagerStartPatch.propHuntAdminButton.onClickEvent(); + return false; + } + + + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.MurderPlayer))] + [HarmonyPostfix] + public static void MurderPlayerPostfix(PlayerControl __instance, [HarmonyArgument(0)] PlayerControl target) { + if (!PropHunt.isPropHuntGM) return; + try { + target.NetTransform.RpcSnapTo(__instance.transform.position); + } catch { } + } + + // Make it so that the kill button doesn't light up when near a player + [HarmonyPatch(typeof(VentButton), nameof(VentButton.SetTarget))] + [HarmonyPatch(typeof(KillButton), nameof(KillButton.SetTarget))] + [HarmonyPostfix] + public static void KillButtonHighlightPatch(ActionButton __instance) { + if (!PropHunt.isPropHuntGM) return; + __instance.SetEnabled(); + } + + + // Penalize the impostor if there is no prop killed + [HarmonyPatch(typeof(KillButton), nameof(KillButton.CheckClick))] + [HarmonyPrefix] + public static bool CheckClickPatch(KillButton __instance) { + if (!PropHunt.isPropHuntGM) return true; + __instance.DoClick(); + return false; + } + + // Penalize the impostor if there is no prop killed + [HarmonyPatch(typeof(KillButton), nameof(KillButton.DoClick))] + [HarmonyPrefix] + public static bool KillButtonClickPatch(KillButton __instance) { + if (!PropHunt.isPropHuntGM || __instance.isCoolingDown || PlayerControl.LocalPlayer.Data.IsDead || PlayerControl.LocalPlayer.inVent) return false; + + __instance.SetTarget(PlayerControl.LocalPlayer.Data.Role.GetPlayersInAbilityRangeSorted(RoleBehaviour.GetTempPlayerList(), true).ToArray().FirstOrDefault()); + + if (__instance.currentTarget == null) { + PlayerControl.LocalPlayer.SetKillTimer(killCooldownMiss); + } else { // There is a target, execute kill! + MurderAttemptResult res = Helpers.checkMurderAttemptAndKill(CachedPlayer.LocalPlayer.PlayerControl, __instance.currentTarget); + __instance.SetTarget(null); + PlayerControl.LocalPlayer.SetKillTimer(killCooldownHit); + } + return false; + } + + [HarmonyPatch(typeof(MapBehaviour), nameof(MapBehaviour.Show))] + [HarmonyPrefix] + public static void MapBehaviourShowPatch(MapBehaviour __instance, ref MapOptions opts) { + if (!PropHunt.isPropHuntGM) return; + if (opts.Mode == MapOptions.Modes.Sabotage) opts.Mode = MapOptions.Modes.Normal; + } + + + // Disable a lot of stuff + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.CmdReportDeadBody))] + [HarmonyPatch(typeof(Vent), nameof(Vent.SetOutline))] + [HarmonyPrefix] + public static bool DisableFunctions() { + if (!PropHunt.isPropHuntGM) return true; + return false; + } + } +} diff --git a/TheOtherRoles/CustomOptionHolder.cs b/TheOtherRoles/CustomOptionHolder.cs index d932b15..2d78be4 100644 --- a/TheOtherRoles/CustomOptionHolder.cs +++ b/TheOtherRoles/CustomOptionHolder.cs @@ -362,6 +362,33 @@ namespace TheOtherRoles { public static CustomOption huntedShieldRewindTime; public static CustomOption huntedShieldNumber; + // Prop Hunt Settings + public static CustomOption propHuntMap; + public static CustomOption propHuntTimer; + public static CustomOption propHuntNumberOfHunters; + public static CustomOption hunterInitialBlackoutTime; + public static CustomOption hunterMissCooldown; + public static CustomOption hunterHitCooldown; + public static CustomOption hunterMaxMissesBeforeDeath; + public static CustomOption propBecomesHunterWhenFound; + public static CustomOption propHunterVision; + public static CustomOption propVision; + public static CustomOption propHuntRevealCooldown; + public static CustomOption propHuntRevealDuration; + public static CustomOption propHuntRevealPunish; + public static CustomOption propHuntUnstuckCooldown; + public static CustomOption propHuntUnstuckDuration; + public static CustomOption propHuntInvisCooldown; + public static CustomOption propHuntInvisDuration; + public static CustomOption propHuntSpeedboostCooldown; + public static CustomOption propHuntSpeedboostDuration; + public static CustomOption propHuntSpeedboostSpeed; + public static CustomOption propHuntSpeedboostEnabled; + public static CustomOption propHuntInvisEnabled; + public static CustomOption propHuntAdminCooldown; + public static CustomOption propHuntFindCooldown; + public static CustomOption propHuntFindDuration; + internal static Dictionary blockedRolePairings = new Dictionary(); public static string cs(Color c, string s) { @@ -373,6 +400,10 @@ namespace TheOtherRoles { return (byte)(f * 255); } + public static bool isMapSelectionOption(CustomOption option) { + return option == CustomOptionHolder.propHuntMap && option == CustomOptionHolder.hideNSeekMap; + } + public static void Load() { CustomOption.vanillaSettings = TheOtherRolesPlugin.Instance.Config.Bind("Preset0", "VanillaOptions", ""); @@ -687,7 +718,7 @@ namespace TheOtherRoles { guesserGamemodeCantGuessSnitchIfTaksDone = CustomOption.Create(2010, Types.Guesser, "Guesser Can't Guess Snitch When Tasks Completed", true, null); // Hide N Seek Gamemode (3000 - 3999) - hideNSeekMap = CustomOption.Create(3020, Types.HideNSeekMain, cs(Color.yellow, "Map"), new string[] { "The Skeld", "Mira", "Polus", "Airship", "Submerged" }, null, true); + hideNSeekMap = CustomOption.Create(3020, Types.HideNSeekMain, cs(Color.yellow, "Map"), new string[] { "The Skeld", "Mira", "Polus", "Airship", "Submerged", "LI Map"}, null, true, onChange: () => { int map = hideNSeekMap.selection; if (map >= 3) map++; GameOptionsManager.Instance.currentNormalGameOptions.MapId = (byte)map; }); hideNSeekHunterCount = CustomOption.Create(3000, Types.HideNSeekMain, cs(Color.yellow, "Number Of Hunters"), 1f, 1f, 3f, 1f); hideNSeekKillCooldown = CustomOption.Create(3021, Types.HideNSeekMain, cs(Color.yellow, "Kill Cooldown"), 10f, 2.5f, 60f, 2.5f); hideNSeekHunterVision = CustomOption.Create(3001, Types.HideNSeekMain, cs(Color.yellow, "Hunter Vision"), 0.5f, 0.25f, 2f, 0.25f); @@ -695,7 +726,7 @@ namespace TheOtherRoles { hideNSeekCommonTasks = CustomOption.Create(3023, Types.HideNSeekMain, cs(Color.yellow, "Common Tasks"), 1f, 0f, 4f, 1f); hideNSeekShortTasks = CustomOption.Create(3024, Types.HideNSeekMain, cs(Color.yellow, "Short Tasks"), 3f, 1f, 23f, 1f); hideNSeekLongTasks = CustomOption.Create(3025, Types.HideNSeekMain, cs(Color.yellow, "Long Tasks"), 3f, 0f, 15f, 1f); - hideNSeekTimer = CustomOption.Create(3003, Types.HideNSeekMain, cs(Color.yellow, "Timer In Min"), 5f, 1f, 30f, 1f); + hideNSeekTimer = CustomOption.Create(3003, Types.HideNSeekMain, cs(Color.yellow, "Timer In Min"), 5f, 1f, 30f, 0.5f); hideNSeekTaskWin = CustomOption.Create(3004, Types.HideNSeekMain, cs(Color.yellow, "Task Win Is Possible"), false); hideNSeekTaskPunish = CustomOption.Create(3017, Types.HideNSeekMain, cs(Color.yellow, "Finish Tasks Punish In Sec"), 10f, 0f, 30f, 1f); hideNSeekCanSabotage = CustomOption.Create(3019, Types.HideNSeekMain, cs(Color.yellow, "Enable Sabotages"), false); @@ -717,6 +748,36 @@ namespace TheOtherRoles { huntedShieldRewindTime = CustomOption.Create(3018, Types.HideNSeekRoles, cs(Color.gray, "Hunted Rewind Time"), 3f, 1f, 10f, 1f); huntedShieldNumber = CustomOption.Create(3026, Types.HideNSeekRoles, cs(Color.gray, "Hunted Shield Number"), 3f, 1f, 15f, 1f); + // Prop Hunt General Options + propHuntMap = CustomOption.Create(4020, Types.PropHunt, cs(Color.yellow, "Map"), new string[] { "The Skeld", "Mira", "Polus", "Airship", "Submerged", "LI Map"}, null, true, onChange: ()=> { int map = propHuntMap.selection; if (map >= 3) map++; GameOptionsManager.Instance.currentNormalGameOptions.MapId = (byte)map;}); + propHuntTimer = CustomOption.Create(4021, Types.PropHunt, cs(Color.yellow, "Timer In Min"), 5f, 1f, 30f, 0.5f); + propHuntUnstuckCooldown = CustomOption.Create(4011, Types.PropHunt, cs(Color.yellow, "Unstuck Cooldown"), 30f, 2.5f, 60f, 2.5f); + propHuntUnstuckDuration = CustomOption.Create(4012, Types.PropHunt, cs(Color.yellow, "Unstuck Duration"), 2f, 1f, 60f, 1f); + propHunterVision = CustomOption.Create(4006, Types.PropHunt, cs(Color.yellow, "Hunter Vision"), 0.5f, 0.25f, 2f, 0.25f); + propVision = CustomOption.Create(4007, Types.PropHunt, cs(Color.yellow, "Prop Vision"), 2f, 0.25f, 5f, 0.25f); + // Hunter Options + propHuntNumberOfHunters = CustomOption.Create(4000, Types.PropHunt, cs(Color.red, "Number Of Hunters"), 1f, 1f, 5f, 1f, null, true); + hunterInitialBlackoutTime = CustomOption.Create(4001, Types.PropHunt, cs(Color.red, "Hunter Initial Blackout Duration"), 10f, 5f, 20f, 1f); + hunterMissCooldown = CustomOption.Create(4004, Types.PropHunt, cs(Color.red, "Kill Cooldown After Miss"), 10f, 2.5f, 60f, 2.5f); + hunterHitCooldown = CustomOption.Create(4005, Types.PropHunt, cs(Color.red, "Kill Cooldown After Hit"), 10f, 2.5f, 60f, 2.5f); + propHuntRevealCooldown = CustomOption.Create(4008, Types.PropHunt, cs(Color.red, "Reveal Prop Cooldown"), 30f, 10f, 90f, 2.5f); + propHuntRevealDuration = CustomOption.Create(4009, Types.PropHunt, cs(Color.red, "Reveal Prop Duration"), 5f, 1f, 60f, 1f); + propHuntRevealPunish = CustomOption.Create(4010, Types.PropHunt, cs(Color.red, "Reveal Time Punish"), 10f, 0f, 1800f, 5f); + propHuntAdminCooldown = CustomOption.Create(4022, Types.PropHunt, cs(Color.red, "Hunter Admin Cooldown"), 30f, 2.5f, 1800f, 2.5f); + propHuntFindCooldown = CustomOption.Create(4023, Types.PropHunt, cs(Color.red, "Find Cooldown"), 60f, 2.5f, 1800f, 2.5f); + propHuntFindDuration = CustomOption.Create(4024, Types.PropHunt, cs(Color.red, "Find Duration"), 5f, 1f, 15f, 1f); + // Prop Options + propBecomesHunterWhenFound = CustomOption.Create(4003, Types.PropHunt, cs(Palette.CrewmateBlue, "Props Become Hunters When Found"), false, null, true); + propHuntInvisEnabled = CustomOption.Create(4013, Types.PropHunt, cs(Palette.CrewmateBlue, "Invisibility Enabled"), true, null, true); + propHuntInvisCooldown = CustomOption.Create(4014, Types.PropHunt, cs(Palette.CrewmateBlue, "Invisibility Cooldown"), 120f, 10f, 1800f, 2.5f, propHuntInvisEnabled); + propHuntInvisDuration = CustomOption.Create(4015, Types.PropHunt, cs(Palette.CrewmateBlue, "Invisibility Duration"), 5f, 1f, 30f, 1f, propHuntInvisEnabled); + propHuntSpeedboostEnabled = CustomOption.Create(4016, Types.PropHunt, cs(Palette.CrewmateBlue, "Speedboost Enabled"), true, null, true); + propHuntSpeedboostCooldown = CustomOption.Create(4017, Types.PropHunt, cs(Palette.CrewmateBlue, "Speedboost Cooldown"), 60f, 2.5f, 1800f, 2.5f, propHuntSpeedboostEnabled); + propHuntSpeedboostDuration = CustomOption.Create(4018, Types.PropHunt, cs(Palette.CrewmateBlue, "Speedboost Duration"), 5f, 1f, 15f, 1f, propHuntSpeedboostEnabled); + propHuntSpeedboostSpeed = CustomOption.Create(4019, Types.PropHunt, cs(Palette.CrewmateBlue, "Speedboost Ratio"), 2f, 1.25f, 5f, 0.25f, propHuntSpeedboostEnabled); + + + // Other options maxNumberOfMeetings = CustomOption.Create(3, Types.General, "Number Of Meetings (excluding Mayor meeting)", 10, 0, 15, 1, null, true); blockSkippingInEmergencyMeetings = CustomOption.Create(4, Types.General, "Block Skipping In Emergency Meetings", false); diff --git a/TheOtherRoles/Helpers.cs b/TheOtherRoles/Helpers.cs index b582871..8dfc3ab 100644 --- a/TheOtherRoles/Helpers.cs +++ b/TheOtherRoles/Helpers.cs @@ -28,22 +28,24 @@ namespace TheOtherRoles { public enum CustomGamemodes { Classic, Guesser, - HideNSeek + HideNSeek, + PropHunt } public static class Helpers { public static Dictionary CachedSprites = new(); - public static Sprite loadSpriteFromResources(string path, float pixelsPerUnit) { + public static Sprite loadSpriteFromResources(string path, float pixelsPerUnit, bool cache=true) { try { - if (CachedSprites.TryGetValue(path + pixelsPerUnit, out var sprite)) return sprite; + if (cache && CachedSprites.TryGetValue(path + pixelsPerUnit, out var sprite)) return sprite; Texture2D texture = loadTextureFromResources(path); sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f), pixelsPerUnit); - sprite.hideFlags |= HideFlags.HideAndDontSave | HideFlags.DontSaveInEditor; + if (cache) sprite.hideFlags |= HideFlags.HideAndDontSave | HideFlags.DontSaveInEditor; + if (!cache) return sprite; return CachedSprites[path + pixelsPerUnit] = sprite; - } catch { + } catch (Exception e) { System.Console.WriteLine("Error loading sprite from path: " + path); } return null; @@ -110,6 +112,14 @@ namespace TheOtherRoles { if (Constants.ShouldPlaySfx()) SoundManager.Instance.PlaySound(exampleClip, false, 0.8f); */ } + + public static string readTextFromResources(string path) { + Assembly assembly = Assembly.GetExecutingAssembly(); + Stream stream = assembly.GetManifestResourceStream(path); + StreamReader textStreamReader = new StreamReader(stream); + return textStreamReader.ReadToEnd(); + } + public static PlayerControl playerById(byte id) { foreach (PlayerControl player in CachedPlayer.AllPlayers) @@ -187,9 +197,13 @@ namespace TheOtherRoles { return cs(roleInfo.color, $"{roleInfo.name}: {roleInfo.shortDescription}"); } - - public static bool isLighterColor(int colorId) { - return CustomColors.lighterColors.Contains(colorId); + + public static bool isD(byte playerId) { + return playerId % 2 == 0; + } + + public static bool isLighterColor(PlayerControl target) { + return isD(target.PlayerId); } public static bool isCustomServer() { @@ -223,8 +237,8 @@ namespace TheOtherRoles { player.Data.Tasks.Clear(); } - public static void setSemiTransparent(this PoolablePlayer player, bool value) { - float alpha = value ? 0.25f : 1f; + public static void setSemiTransparent(this PoolablePlayer player, bool value, float alpha=0.25f) { + alpha = value ? alpha : 1f; foreach (SpriteRenderer r in player.gameObject.GetComponentsInChildren()) r.color = new Color(r.color.r, r.color.g, r.color.b, alpha); player.cosmetics.nameText.color = new Color(player.cosmetics.nameText.color.r, player.cosmetics.nameText.color.g, player.cosmetics.nameText.color.b, alpha); @@ -377,8 +391,7 @@ namespace TheOtherRoles { if (AmongUsClient.Instance.IsGameOver) return MurderAttemptResult.SuppressKill; if (killer == null || killer.Data == null || (killer.Data.IsDead && !ignoreIfKillerIsDead) || killer.Data.Disconnected) return MurderAttemptResult.SuppressKill; // Allow non Impostor kills compared to vanilla code if (target == null || target.Data == null || target.Data.IsDead || target.Data.Disconnected) return MurderAttemptResult.SuppressKill; // Allow killing players in vents compared to vanilla code - - if (GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek) return MurderAttemptResult.PerformKill; + if (GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek || PropHunt.isPropHuntGM) return MurderAttemptResult.PerformKill; // Handle first kill attempt if (TORMapOptions.shieldFirstKill && TORMapOptions.firstKillPlayer == target) return MurderAttemptResult.SuppressKill; @@ -440,8 +453,8 @@ namespace TheOtherRoles { public static MurderAttemptResult checkMurderAttemptAndKill(PlayerControl killer, PlayerControl target, bool isMeetingStart = false, bool showAnimation = true, bool ignoreBlank = false, bool ignoreIfKillerIsDead = false) { // The local player checks for the validity of the kill and performs it afterwards (different to vanilla, where the host performs all the checks) // The kill attempt will be shared using a custom RPC, hence combining modded and unmodded versions is impossible - MurderAttemptResult murder = checkMuderAttempt(killer, target, isMeetingStart, ignoreBlank, ignoreIfKillerIsDead); + if (murder == MurderAttemptResult.PerformKill) { MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.UncheckedMurderPlayer, Hazel.SendOption.Reliable, -1); writer.Write(killer.PlayerId); diff --git a/TheOtherRoles/Main.cs b/TheOtherRoles/Main.cs index fed9777..48e3a81 100644 --- a/TheOtherRoles/Main.cs +++ b/TheOtherRoles/Main.cs @@ -31,7 +31,7 @@ namespace TheOtherRoles public class TheOtherRolesPlugin : BasePlugin { public const string Id = "me.eisbison.theotherroles"; - public const string VersionString = "4.3.4"; + public const string VersionString = "4.4.0"; public static uint betaDays = 0; // amount of days for the build to be usable (0 for infinite!) public static Version Version = Version.Parse(VersionString); diff --git a/TheOtherRoles/Modules/CustomHats.cs b/TheOtherRoles/Modules/CustomHats.cs index 559bd9b..a7ff4de 100644 --- a/TheOtherRoles/Modules/CustomHats.cs +++ b/TheOtherRoles/Modules/CustomHats.cs @@ -389,7 +389,6 @@ namespace TheOtherRoles.Modules { [HarmonyPatch(typeof(HatParent), nameof(HatParent.LateUpdate))] public static class HatParentLateUpdatePatch { public static bool Prefix(HatParent __instance) { - return false; if (__instance.Parent) { HatViewData hatViewData; try { diff --git a/TheOtherRoles/Modules/CustomOptions.cs b/TheOtherRoles/Modules/CustomOptions.cs index 1328883..d751e99 100644 --- a/TheOtherRoles/Modules/CustomOptions.cs +++ b/TheOtherRoles/Modules/CustomOptions.cs @@ -14,6 +14,9 @@ using static TheOtherRoles.TheOtherRoles; using static TheOtherRoles.CustomOption; using Reactor.Utilities.Extensions; using AmongUs.GameOptions; +using BepInEx.Unity.IL2CPP; +using BepInEx; +using static ShipStatus; namespace TheOtherRoles { public class CustomOption { @@ -25,7 +28,8 @@ namespace TheOtherRoles { Modifier, Guesser, HideNSeekMain, - HideNSeekRoles + HideNSeekRoles, + PropHunt, } public static List options = new List(); @@ -43,10 +47,11 @@ namespace TheOtherRoles { public CustomOption parent; public bool isHeader; public CustomOptionType type; + public Action onChange = null; // Option creation - public CustomOption(int id, CustomOptionType type, string name, System.Object[] selections, System.Object defaultValue, CustomOption parent, bool isHeader) { + public CustomOption(int id, CustomOptionType type, string name, System.Object[] selections, System.Object defaultValue, CustomOption parent, bool isHeader, Action onChange = null) { this.id = id; this.name = parent == null ? name : "- " + name; this.selections = selections; @@ -55,6 +60,7 @@ namespace TheOtherRoles { this.parent = parent; this.isHeader = isHeader; this.type = type; + this.onChange = onChange; selection = 0; if (id != 0) { entry = TheOtherRolesPlugin.Instance.Config.Bind($"Preset{preset}", id.ToString(), defaultSelection); @@ -63,19 +69,19 @@ namespace TheOtherRoles { options.Add(this); } - public static CustomOption Create(int id, CustomOptionType type, string name, string[] selections, CustomOption parent = null, bool isHeader = false) { - return new CustomOption(id, type, name, selections, "", parent, isHeader); + public static CustomOption Create(int id, CustomOptionType type, string name, string[] selections, CustomOption parent = null, bool isHeader = false, Action onChange = null) { + return new CustomOption(id, type, name, selections, "", parent, isHeader, onChange); } - public static CustomOption Create(int id, CustomOptionType type, string name, float defaultValue, float min, float max, float step, CustomOption parent = null, bool isHeader = false) { + public static CustomOption Create(int id, CustomOptionType type, string name, float defaultValue, float min, float max, float step, CustomOption parent = null, bool isHeader = false, Action onChange = null) { List selections = new(); for (float s = min; s <= max; s += step) selections.Add(s); - return new CustomOption(id, type, name, selections.ToArray(), defaultValue, parent, isHeader); + return new CustomOption(id, type, name, selections.ToArray(), defaultValue, parent, isHeader, onChange); } - public static CustomOption Create(int id, CustomOptionType type, string name, bool defaultValue, CustomOption parent = null, bool isHeader = false) { - return new CustomOption(id, type, name, new string[]{"Off", "On"}, defaultValue ? "On" : "Off", parent, isHeader); + public static CustomOption Create(int id, CustomOptionType type, string name, bool defaultValue, CustomOption parent = null, bool isHeader = false, Action onChange = null) { + return new CustomOption(id, type, name, new string[]{"Off", "On"}, defaultValue ? "On" : "Off", parent, isHeader, onChange); } // Static behaviour @@ -161,10 +167,12 @@ namespace TheOtherRoles { public void updateSelection(int newSelection) { selection = Mathf.Clamp((newSelection + selections.Length) % selections.Length, 0, selections.Length - 1); + try { + if (onChange != null) onChange(); + } catch { } if (optionBehaviour != null && optionBehaviour is StringOption stringOption) { stringOption.oldValue = stringOption.Value = selection; stringOption.ValueText.text = selections[selection].ToString(); - if (AmongUsClient.Instance?.AmHost == true && CachedPlayer.LocalPlayer.PlayerControl) { if (id == 0 && selection != preset) { switchPreset(selection); // Switch presets @@ -178,6 +186,7 @@ namespace TheOtherRoles { switchPreset(selection); ShareOptionSelections();// Share all selections } + } public static byte[] serializeOptions() { @@ -263,6 +272,9 @@ namespace TheOtherRoles { case CustomGamemodes.HideNSeek: createHideNSeekTabs(__instance); break; + case CustomGamemodes.PropHunt: + createPropHuntTabs(__instance); + break; } // create copy to clipboard and paste from clipboard buttons. @@ -651,6 +663,86 @@ namespace TheOtherRoles { gameSettingMenu.GameSettingsHightlight.enabled = false; } + + private static void createPropHuntTabs(GameOptionsMenu __instance) { + bool isReturn = setNames( + new Dictionary() { + ["TORSettings"] = "Prop Hunt Settings" + }); + + if (isReturn) return; + + // Setup TOR tab + var template = UnityEngine.Object.FindObjectsOfType().FirstOrDefault(); + if (template == null) return; + var gameSettings = GameObject.Find("Game Settings"); + var gameSettingMenu = UnityEngine.Object.FindObjectsOfType().FirstOrDefault(); + + var torSettings = UnityEngine.Object.Instantiate(gameSettings, gameSettings.transform.parent); + var torMenu = getMenu(torSettings, "TORSettings"); + var roleTab = GameObject.Find("RoleTab"); + var gameTab = GameObject.Find("GameTab"); + + var torTab = UnityEngine.Object.Instantiate(roleTab, gameTab.transform.parent); + var torTabHighlight = getTabHighlight(torTab, "TheOtherRolesTab", "TheOtherRoles.Resources.TabIconPropHuntSettings.png"); + + roleTab.active = false; + gameTab.active = false; + + // Position of Tab Icons + torTab.transform.position += Vector3.left * 3f; + + var tabs = new GameObject[] {torTab}; + var settingsHighlightMap = new Dictionary { + [torSettings.gameObject] = torTabHighlight + }; + for (int i = 0; i < tabs.Length; i++) { + var button = tabs[i].GetComponentInChildren(); + if (button == null) continue; + int copiedIndex = i; + button.OnClick = new UnityEngine.UI.Button.ButtonClickedEvent(); + button.OnClick.AddListener((System.Action)(() => { + setListener(settingsHighlightMap, copiedIndex); + })); + } + + destroyOptions(new List>{ + torMenu.GetComponentsInChildren().ToList(), + }); + + List torOptions = new List(); + + List menus = new List() { torMenu.transform }; + List> optionBehaviours = new List>() { torOptions }; + + for (int i = 0; i < CustomOption.options.Count; i++) { + CustomOption option = CustomOption.options[i]; + if (option.type != CustomOptionType.PropHunt) continue; + if (option.optionBehaviour == null) { + int index = 0; + StringOption stringOption = UnityEngine.Object.Instantiate(template, menus[index]); + optionBehaviours[index].Add(stringOption); + stringOption.OnValueChanged = new Action((o) => { }); + stringOption.TitleText.text = option.name; + stringOption.Value = stringOption.oldValue = option.selection; + stringOption.ValueText.text = option.selections[option.selection].ToString(); + + option.optionBehaviour = stringOption; + } + option.optionBehaviour.gameObject.SetActive(true); + } + + setOptions( + new List { torMenu}, + new List> { torOptions }, + new List { torSettings } + ); + + torSettings.gameObject.SetActive(true); + torTabHighlight.enabled = true; + gameSettingMenu.RegularGameSettings.SetActive(false); + gameSettingMenu.GameSettingsHightlight.enabled = false; + } private static void setListener(Dictionary settingsHighlightMap, int index) { foreach (KeyValuePair entry in settingsHighlightMap) { @@ -732,7 +824,7 @@ namespace TheOtherRoles { return false; } } - + [HarmonyPatch(typeof(StringOption), nameof(StringOption.Increase))] public class StringOptionIncreasePatch { @@ -741,6 +833,12 @@ namespace TheOtherRoles { CustomOption option = CustomOption.options.FirstOrDefault(option => option.optionBehaviour == __instance); if (option == null) return true; option.updateSelection(option.selection + 1); + if (CustomOptionHolder.isMapSelectionOption(option)) { + IGameOptions currentGameOptions = GameOptionsManager.Instance.CurrentGameOptions; + currentGameOptions.SetByte(ByteOptionNames.MapId, (byte)option.selection); + GameOptionsManager.Instance.GameHostOptions = GameOptionsManager.Instance.CurrentGameOptions; + GameManager.Instance.LogicOptions.SyncOptions(); + } return false; } } @@ -753,10 +851,34 @@ namespace TheOtherRoles { CustomOption option = CustomOption.options.FirstOrDefault(option => option.optionBehaviour == __instance); if (option == null) return true; option.updateSelection(option.selection - 1); + if (CustomOptionHolder.isMapSelectionOption(option)) { + IGameOptions currentGameOptions = GameOptionsManager.Instance.CurrentGameOptions; + currentGameOptions.SetByte(ByteOptionNames.MapId, (byte)option.selection); + GameOptionsManager.Instance.GameHostOptions = GameOptionsManager.Instance.CurrentGameOptions; + GameManager.Instance.LogicOptions.SyncOptions(); + } return false; } } + [HarmonyPatch(typeof(StringOption), nameof(StringOption.FixedUpdate))] + public class StringOptionFixedUpdate { + public static void Postfix(StringOption __instance) { + if (!IL2CPPChainloader.Instance.Plugins.TryGetValue("com.DigiWorm.LevelImposter", out PluginInfo _)) return; + CustomOption option = CustomOption.options.FirstOrDefault(option => option.optionBehaviour == __instance); + if (option == null || !CustomOptionHolder.isMapSelectionOption(option)) return; + if (GameOptionsManager.Instance.CurrentGameOptions.MapId == 6) + if (option.optionBehaviour != null && option.optionBehaviour is StringOption stringOption) { + stringOption.ValueText.text = option.selections[option.selection].ToString(); + } + else if (option.optionBehaviour != null && option.optionBehaviour is StringOption stringOptionToo) { + stringOptionToo.oldValue = stringOptionToo.Value = option.selection; + stringOptionToo.ValueText.text = option.selections[option.selection].ToString(); + } + } + } + + [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.RpcSyncSettings))] public class RpcSyncSettingsPatch { @@ -793,7 +915,7 @@ namespace TheOtherRoles { float offset = 2.75f; foreach (CustomOption option in CustomOption.options) { - if (GameObject.Find("TORSettings") && option.type != CustomOption.CustomOptionType.General && option.type != CustomOptionType.HideNSeekMain) + if (GameObject.Find("TORSettings") && option.type != CustomOption.CustomOptionType.General && option.type != CustomOptionType.HideNSeekMain && option.type != CustomOptionType.PropHunt) continue; if (GameObject.Find("ImpostorSettings") && option.type != CustomOption.CustomOptionType.Impostor) continue; @@ -828,10 +950,6 @@ namespace TheOtherRoles { [HarmonyPatch] class GameOptionsDataPatch { - /*private static IEnumerable TargetMethods() { - return typeof(IGameOptionsExtensions.).GetMethods().Where(x => x.ReturnType == typeof(string) && x.GetParameters().Length == 1 && x.GetParameters()[0].ParameterType == typeof(int)); - }*/ - private static string buildRoleOptions() { var impRoles = buildOptionsOfType(CustomOption.CustomOptionType.Impostor, true) + "\n"; var neutralRoles = buildOptionsOfType(CustomOption.CustomOptionType.Neutral, true) + "\n"; @@ -863,6 +981,8 @@ namespace TheOtherRoles { options = options.Where(x => !(x.type == CustomOption.CustomOptionType.Guesser || x == CustomOptionHolder.crewmateRolesFill)); else if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) options = options.Where(x => (x.type == CustomOption.CustomOptionType.HideNSeekMain || x.type == CustomOption.CustomOptionType.HideNSeekRoles)); + else if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) + options = options.Where(x => (x.type == CustomOption.CustomOptionType.PropHunt)); foreach (var option in options) { if (option.parent == null) { @@ -884,6 +1004,7 @@ namespace TheOtherRoles { foreach (CustomOption option in options) { if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek && option.type != CustomOptionType.HideNSeekMain && option.type != CustomOptionType.HideNSeekRoles) continue; + if (TORMapOptions.gameMode == CustomGamemodes.PropHunt && option.type != CustomOptionType.PropHunt) continue; if (option.parent != null) { bool isIrrelevant = option.parent.getSelection() == 0 || (option.parent.parent != null && option.parent.parent.getSelection() == 0); @@ -942,12 +1063,14 @@ namespace TheOtherRoles { return sb.ToString(); } + + public static int maxPage = 7; public static string buildAllOptions(string vanillaSettings = "", bool hideExtras = false) { if (vanillaSettings == "") vanillaSettings = GameOptionsManager.Instance.CurrentGameOptions.ToHudString(PlayerControl.AllPlayerControls.Count); int counter = TheOtherRolesPlugin.optionsPage; string hudString = counter != 0 && !hideExtras ? Helpers.cs(DateTime.Now.Second % 2 == 0 ? Color.white : Color.red, "(Use scroll wheel if necessary)\n\n") : ""; - int maxPage = 7; + if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) { if (TheOtherRolesPlugin.optionsPage > 1) TheOtherRolesPlugin.optionsPage = 0; maxPage = 2; @@ -959,10 +1082,18 @@ namespace TheOtherRoles { hudString += "Page 2: Hide N Seek Role Settings \n\n" + buildOptionsOfType(CustomOption.CustomOptionType.HideNSeekRoles, false); break; } + } else if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) { + maxPage = 1; + switch (counter) { + case 0: + hudString += "Page 1: Prop Hunt Settings \n\n" + buildOptionsOfType(CustomOption.CustomOptionType.PropHunt, false); + break; + } } else { + maxPage = 7; switch (counter) { case 0: - hudString += (!hideExtras ? "" :"Page 1: Vanilla Settings \n\n") + vanillaSettings; + hudString += (!hideExtras ? "" : "Page 1: Vanilla Settings \n\n") + vanillaSettings; break; case 1: hudString += "Page 2: The Other Roles Settings \n" + buildOptionsOfType(CustomOption.CustomOptionType.General, false); @@ -1030,6 +1161,7 @@ namespace TheOtherRoles { } if (Input.GetKeyDown(KeyCode.F1)) HudManagerUpdate.ToggleSettings(HudManager.Instance); + if (TheOtherRolesPlugin.optionsPage >= GameOptionsDataPatch.maxPage) TheOtherRolesPlugin.optionsPage = 0; if (page != TheOtherRolesPlugin.optionsPage) { Vector3 position = (Vector3)FastDestroyableSingleton.Instance?.GameSettings?.transform.localPosition; @@ -1152,7 +1284,6 @@ namespace TheOtherRoles { blockCount++; } for (int i = 0; i < blockCount; i++) { - TheOtherRolesPlugin.Logger.LogMessage(blockCount); settingsTMPs[i].transform.localPosition = new Vector3(- blockCount * 1.2f + 2.7f * i, 2.2f, -500f); } } diff --git a/TheOtherRoles/Modules/ModUpdater.cs b/TheOtherRoles/Modules/ModUpdater.cs index 4bec0dd..44dda53 100644 --- a/TheOtherRoles/Modules/ModUpdater.cs +++ b/TheOtherRoles/Modules/ModUpdater.cs @@ -201,7 +201,7 @@ namespace TheOtherRoles.Modules { // Since running the update check task causes a crash for some users, allow the user to disable the updater by creating a file called noupdater.txt // in their Among Us folder (root) - if (Il2CppSystem.IO.File.Exists(System.IO.Directory.GetCurrentDirectory() + "\\noupdater.txt")) yield break; + if (System.IO.File.Exists(System.IO.Directory.GetCurrentDirectory() + "\\noupdater.txt")) yield break; var torUpdateCheck = Task.Run(() => Instance.GetGithubUpdate("Eisbison", "TheOtherRoles")); while (!torUpdateCheck.IsCompleted) yield return null; if (torUpdateCheck.Result != null && torUpdateCheck.Result.IsNewer(Version.Parse(TheOtherRolesPlugin.VersionString))) diff --git a/TheOtherRoles/Objects/NinjaTrace.cs b/TheOtherRoles/Objects/NinjaTrace.cs index 82bd3f1..8194739 100644 --- a/TheOtherRoles/Objects/NinjaTrace.cs +++ b/TheOtherRoles/Objects/NinjaTrace.cs @@ -34,14 +34,13 @@ namespace TheOtherRoles.Objects { float colorDuration = CustomOptionHolder.ninjaTraceColorTime.getFloat(); FastDestroyableSingleton.Instance.StartCoroutine(Effects.Lerp(colorDuration, new Action((p) => { Color c = Palette.PlayerColors[(int)Ninja.ninja.Data.DefaultOutfit.ColorId]; - if (Helpers.isLighterColor(Ninja.ninja.Data.DefaultOutfit.ColorId)) c = Color.white; + if (Helpers.isLighterColor(Ninja.ninja)) c = Color.white; else c = Palette.PlayerColors[6]; //if (Camouflager.camouflageTimer > 0) { // c = Palette.PlayerColors[6]; //} - Color g = Color.green; // Usual display color. could also be Palette.PlayerColors[6] for default grey like camo - // if this stays black (0,0,0), it can ofc be removed. + Color g = Color.green; // Usual display color. Color combinedColor = Mathf.Clamp01(p) * g + Mathf.Clamp01(1 - p) * c; diff --git a/TheOtherRoles/Objects/Portal.cs b/TheOtherRoles/Objects/Portal.cs index abc3ac0..d68e9af 100644 --- a/TheOtherRoles/Objects/Portal.cs +++ b/TheOtherRoles/Objects/Portal.cs @@ -48,7 +48,7 @@ namespace TheOtherRoles.Objects { firstPortal.animationFgRenderer.flipX = flip; secondPortal.animationFgRenderer.flipX = flip; if (Morphling.morphling != null && Morphling.morphTimer > 0) playerControl = Morphling.morphTarget; // Will output info of morph-target instead - string playerNameDisplay = Portalmaker.logOnlyHasColors ? "A player (" + (Helpers.isLighterColor(playerControl.Data.DefaultOutfit.ColorId) ? "L" : "D") + ")" : playerControl.Data.PlayerName; + string playerNameDisplay = Portalmaker.logOnlyHasColors ? "A player (" + (Helpers.isLighterColor(playerControl) ? "L" : "D") + ")" : playerControl.Data.PlayerName; int colorId = playerControl.Data.DefaultOutfit.ColorId; diff --git a/TheOtherRoles/Patches/CreateOptionsPickerPatch.cs b/TheOtherRoles/Patches/CreateOptionsPickerPatch.cs index e436b96..c4e6359 100644 --- a/TheOtherRoles/Patches/CreateOptionsPickerPatch.cs +++ b/TheOtherRoles/Patches/CreateOptionsPickerPatch.cs @@ -18,14 +18,17 @@ namespace TheOtherRoles.Patches { return true; } - __instance.SetGameMode(GameModes.Normal); //__instance.Refresh(); - - if ((int)mode == 3) { + __instance.SetGameMode(GameModes.Normal); + CustomGamemodes gm = (CustomGamemodes)((int) mode - 2); + if (gm == CustomGamemodes.Guesser) { __instance.GameModeText.text = "TOR Guesser"; TORMapOptions.gameMode = CustomGamemodes.Guesser; - } else { + } else if (gm == CustomGamemodes.HideNSeek) { __instance.GameModeText.text = "TOR Hide N Seek"; TORMapOptions.gameMode = CustomGamemodes.HideNSeek; + } else if (gm == CustomGamemodes.PropHunt) { + __instance.GameModeText.text = "TOR Prop Hunt"; + TORMapOptions.gameMode = CustomGamemodes.PropHunt; } return false; } @@ -38,6 +41,8 @@ namespace TheOtherRoles.Patches { } else if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) { __instance.GameModeText.text = "TOR Hide N Seek"; + } else if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) { + __instance.GameModeText.text = "TOR Prop Hunt"; } } } @@ -50,8 +55,8 @@ namespace TheOtherRoles.Patches { float num = ((float)Mathf.CeilToInt(4f / 10f) / 2f - 0.5f) * -2.5f; // 4 for 4 buttons! __instance.controllerSelectable.Clear(); int num2 = 0; - __instance.ButtonPool.poolSize = 4; - for (int i=0; i <= 4; i++) { + __instance.ButtonPool.poolSize = 5; + for (int i=0; i <= 5; i++) { GameModes entry = (GameModes)i; if (entry != GameModes.None) { ChatLanguageButton chatLanguageButton = __instance.ButtonPool.Get(); @@ -60,13 +65,15 @@ namespace TheOtherRoles.Patches { chatLanguageButton.Text.text = DestroyableSingleton.Instance.GetString(GameModesHelpers.ModeToName[entry], new Il2CppReferenceArray(0)); else { chatLanguageButton.Text.text = i == 3 ? "TOR Guesser" : "TOR Hide N Seek"; + if (i == 5) + chatLanguageButton.Text.text = "TOR Prop Hunt"; } chatLanguageButton.Button.OnClick.RemoveAllListeners(); chatLanguageButton.Button.OnClick.AddListener((System.Action)delegate { __instance.ChooseOption(entry); }); - bool isCurrentMode = i <= 2 && TORMapOptions.gameMode == CustomGamemodes.Classic ? (long)entry == (long)((ulong)gameMode) : (i == 3 && TORMapOptions.gameMode == CustomGamemodes.Guesser || i == 4 && TORMapOptions.gameMode == CustomGamemodes.HideNSeek); + bool isCurrentMode = i <= 2 && TORMapOptions.gameMode == CustomGamemodes.Classic ? (long)entry == (long)((ulong)gameMode) : (i == 3 && TORMapOptions.gameMode == CustomGamemodes.Guesser || i == 4 && TORMapOptions.gameMode == CustomGamemodes.HideNSeek || i == 5 && TORMapOptions.gameMode == CustomGamemodes.PropHunt); chatLanguageButton.SetSelected(isCurrentMode); __instance.controllerSelectable.Add(chatLanguageButton.Button); if (isCurrentMode) { diff --git a/TheOtherRoles/Patches/CredentialsPatch.cs b/TheOtherRoles/Patches/CredentialsPatch.cs index d5c2ce8..a0566f6 100644 --- a/TheOtherRoles/Patches/CredentialsPatch.cs +++ b/TheOtherRoles/Patches/CredentialsPatch.cs @@ -47,6 +47,7 @@ $@" Special thanks to K3ndo & Smeggy"; string gameModeText = $""; if (HideNSeek.isHideNSeekGM) gameModeText = $"Hide 'N Seek"; else if (HandleGuesser.isGuesserGm) gameModeText = $"Guesser"; + else if (PropHunt.isPropHuntGM) gameModeText = "Prop Hunt"; if (gameModeText != "") gameModeText = Helpers.cs(Color.yellow, gameModeText) + "\n"; __instance.text.text = $"TheOtherRoles v{TheOtherRolesPlugin.Version.ToString() + (TheOtherRolesPlugin.betaDays > 0 ? "-BETA" : "")}\n{gameModeText}" + __instance.text.text; if (CachedPlayer.LocalPlayer.Data.IsDead || (!(CachedPlayer.LocalPlayer.PlayerControl == null) && (CachedPlayer.LocalPlayer.PlayerControl == Lovers.lover1 || CachedPlayer.LocalPlayer.PlayerControl == Lovers.lover2))) { @@ -58,6 +59,7 @@ $@" Special thanks to K3ndo & Smeggy"; string gameModeText = $""; if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) gameModeText = $"Hide 'N Seek"; else if (TORMapOptions.gameMode == CustomGamemodes.Guesser) gameModeText = $"Guesser"; + else if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) gameModeText = $"Prop Hunt"; if (gameModeText != "") gameModeText = Helpers.cs(Color.yellow, gameModeText) + "\n"; __instance.text.text = $"{fullCredentialsVersion}\n {gameModeText + fullCredentials}\n {__instance.text.text}"; diff --git a/TheOtherRoles/Patches/EndGamePatch.cs b/TheOtherRoles/Patches/EndGamePatch.cs index 304fdb9..5a88ba2 100644 --- a/TheOtherRoles/Patches/EndGamePatch.cs +++ b/TheOtherRoles/Patches/EndGamePatch.cs @@ -225,10 +225,10 @@ namespace TheOtherRoles.Patches { AdditionalTempData.additionalWinConditions.Add(WinCondition.AdditionalAlivePursuerWin); } - AdditionalTempData.timer = ((float)(DateTime.UtcNow - HideNSeek.startTime).TotalMilliseconds) / 1000; + AdditionalTempData.timer = ((float)(DateTime.UtcNow - (HideNSeek.isHideNSeekGM ? HideNSeek.startTime : PropHunt.startTime)).TotalMilliseconds) / 1000; // Reset Settings - if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) ShipStatusPatch.resetVanillaSettings(); + if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek ) ShipStatusPatch.resetVanillaSettings(); RPCProcedure.resetVariables(); EventUtility.gameEndsUpdate(); } @@ -332,14 +332,14 @@ namespace TheOtherRoles.Patches { } } - if (TORMapOptions.showRoleSummary || HideNSeek.isHideNSeekGM) { + if (TORMapOptions.showRoleSummary || HideNSeek.isHideNSeekGM || PropHunt.isPropHuntGM) { var position = Camera.main.ViewportToWorldPoint(new Vector3(0f, 1f, Camera.main.nearClipPlane)); GameObject roleSummary = UnityEngine.Object.Instantiate(__instance.WinText.gameObject); roleSummary.transform.position = new Vector3(__instance.Navigation.ExitButton.transform.position.x + 0.1f, position.y - 0.1f, -214f); roleSummary.transform.localScale = new Vector3(1f, 1f, 1f); var roleSummaryText = new StringBuilder(); - if (HideNSeek.isHideNSeekGM) { + if (HideNSeek.isHideNSeekGM || PropHunt.isPropHuntGM) { int minutes = (int)AdditionalTempData.timer / 60; int seconds = (int)AdditionalTempData.timer % 60; roleSummaryText.AppendLine($"Time: {minutes:00}:{seconds:00} \n"); @@ -452,7 +452,7 @@ namespace TheOtherRoles.Patches { } private static bool CheckAndEndGameForTaskWin(ShipStatus __instance) { - if (HideNSeek.isHideNSeekGM && !HideNSeek.taskWinPossible) return false; + if (HideNSeek.isHideNSeekGM && !HideNSeek.taskWinPossible || PropHunt.isPropHuntGM) return false; if (GameData.Instance.TotalTasks > 0 && GameData.Instance.TotalTasks <= GameData.Instance.CompletedTasks) { //__instance.enabled = false; GameManager.Instance.RpcEndGame(GameOverReason.HumansByTask, false); @@ -489,7 +489,7 @@ namespace TheOtherRoles.Patches { } private static bool CheckAndEndGameForImpostorWin(ShipStatus __instance, PlayerStatistics statistics) { - if (HideNSeek.isHideNSeekGM) + if (HideNSeek.isHideNSeekGM || PropHunt.isPropHuntGM) if ((0 != statistics.TotalAlive - statistics.TeamImpostorsAlive)) return false; if (statistics.TeamImpostorsAlive >= statistics.TotalAlive - statistics.TeamImpostorsAlive && statistics.TeamJackalAlive == 0 && !(statistics.TeamImpostorHasAliveLover && statistics.TeamLoversAlive == 2)) { @@ -518,6 +518,10 @@ namespace TheOtherRoles.Patches { GameManager.Instance.RpcEndGame(GameOverReason.HumansByVote, false); return true; } + if (PropHunt.isPropHuntGM && PropHunt.timer <= 0 && PropHunt.timerRunning) { + GameManager.Instance.RpcEndGame(GameOverReason.HumansByVote, false); + return true; + } if (statistics.TeamImpostorsAlive == 0 && statistics.TeamJackalAlive == 0) { //__instance.enabled = false; GameManager.Instance.RpcEndGame(GameOverReason.HumansByVote, false); diff --git a/TheOtherRoles/Patches/GameStartManagerPatch.cs b/TheOtherRoles/Patches/GameStartManagerPatch.cs index f1c7a1d..a49d03a 100644 --- a/TheOtherRoles/Patches/GameStartManagerPatch.cs +++ b/TheOtherRoles/Patches/GameStartManagerPatch.cs @@ -187,8 +187,10 @@ namespace TheOtherRoles.Patches { break; } } - if (continueStart && TORMapOptions.gameMode == CustomGamemodes.HideNSeek) { - byte mapId = (byte) CustomOptionHolder.hideNSeekMap.getSelection(); + if ((continueStart && TORMapOptions.gameMode == CustomGamemodes.HideNSeek || TORMapOptions.gameMode == CustomGamemodes.PropHunt) && GameOptionsManager.Instance.CurrentGameOptions.MapId != 6) { + byte mapId = 0; + if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) mapId = (byte)CustomOptionHolder.hideNSeekMap.getSelection(); + else if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) mapId = (byte)CustomOptionHolder.propHuntMap.getSelection(); if (mapId >= 3) mapId++; MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.DynamicMapOption, Hazel.SendOption.Reliable, -1); writer.Write(mapId); diff --git a/TheOtherRoles/Patches/HauntMenuMinigamePatch.cs b/TheOtherRoles/Patches/HauntMenuMinigamePatch.cs index 32040ba..7837d79 100644 --- a/TheOtherRoles/Patches/HauntMenuMinigamePatch.cs +++ b/TheOtherRoles/Patches/HauntMenuMinigamePatch.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using TheOtherRoles.Players; using System; +using TheOtherRoles.CustomGameModes; namespace TheOtherRoles.Patches { [HarmonyPatch] @@ -71,12 +72,12 @@ namespace TheOtherRoles.Patches { [HarmonyPostfix] [HarmonyPatch(typeof(AbilityButton), nameof(AbilityButton.Update))] public static void showOrHideAbilityButtonPostfix(AbilityButton __instance) { - bool isHideNSeek = GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek; - if (CachedPlayer.LocalPlayer.Data.IsDead && (CustomOptionHolder.finishTasksBeforeHauntingOrZoomingOut.getBool() || isHideNSeek)) { + bool isGameMode = GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek || PropHunt.isPropHuntGM || HideNSeek.isHideNSeekGM; + if (CachedPlayer.LocalPlayer.Data.IsDead && (CustomOptionHolder.finishTasksBeforeHauntingOrZoomingOut.getBool() || isGameMode)) { // player has haunt button. var (playerCompleted, playerTotal) = TasksHandler.taskInfo(CachedPlayer.LocalPlayer.Data); int numberOfLeftTasks = playerTotal - playerCompleted; - if (numberOfLeftTasks <= 0 || isHideNSeek) + if (numberOfLeftTasks <= 0 || isGameMode) __instance.Show(); else __instance.Hide(); diff --git a/TheOtherRoles/Patches/IntroPatch.cs b/TheOtherRoles/Patches/IntroPatch.cs index 6c98285..71b4609 100644 --- a/TheOtherRoles/Patches/IntroPatch.cs +++ b/TheOtherRoles/Patches/IntroPatch.cs @@ -57,6 +57,13 @@ namespace TheOtherRoles.Patches { player.gameObject.SetActive(true); } + } else if (PropHunt.isPropHuntGM) { + player.transform.localPosition = bottomLeft + new Vector3(-1.25f, -0.1f, 0) + Vector3.right * hideNSeekCounter++ * 0.4f; + player.transform.localScale = Vector3.one * 0.24f; + player.setSemiTransparent(false); + player.cosmetics.nameText.transform.localPosition += Vector3.up * 0.2f * (hideNSeekCounter % 2 == 0 ? 1 : -1); + player.SetFlipX(false); + player.gameObject.SetActive(true); } else { // This can be done for all players not just for the bounty hunter as it was before. Allows the thief to have the correct position and scaling player.transform.localPosition = bottomLeft; player.transform.localScale = Vector3.one * 0.4f; @@ -81,7 +88,7 @@ namespace TheOtherRoles.Patches { SoundEffectsManager.Load(); // First kill - if (AmongUsClient.Instance.AmHost && TORMapOptions.shieldFirstKill && TORMapOptions.firstKillName != "" && !HideNSeek.isHideNSeekGM) { + if (AmongUsClient.Instance.AmHost && TORMapOptions.shieldFirstKill && TORMapOptions.firstKillName != "" && !HideNSeek.isHideNSeekGM && !PropHunt.isPropHuntGM) { PlayerControl target = PlayerControl.AllPlayerControls.ToArray().ToList().FirstOrDefault(x => x.Data.PlayerName.Equals(TORMapOptions.firstKillName)); if (target != null) { MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.SetFirstKill, Hazel.SendOption.Reliable, -1); diff --git a/TheOtherRoles/Patches/MainMenuPatch.cs b/TheOtherRoles/Patches/MainMenuPatch.cs index aa4ea4c..e1f8951 100644 --- a/TheOtherRoles/Patches/MainMenuPatch.cs +++ b/TheOtherRoles/Patches/MainMenuPatch.cs @@ -107,7 +107,8 @@ TownOfUs - Idea for the Swapper, Shifter, Arsonist and a similar Mayor role came Ottomated - Idea for the Morphling, Snitch and Camouflager role came from Ottomated Crowded-Mod - Our implementation for 10+ player lobbies was inspired by the one from the Crowded Mod Team Goose-Goose-Duck - Idea for the Vulture role came from Slushiegoose -TheEpicRoles - Idea for the first kill shield (partly) and the tabbed option menu (fully + some code), by LaicosVK DasMonschta Nova"; +TheEpicRoles - Idea for the first kill shield (partly) and the tabbed option menu (fully + some code), by LaicosVK DasMonschta Nova +ugackMiner53 - Idea and core code for the Prop Hunt game mode"; creditsString += ""; Assets.InnerNet.Announcement creditsAnnouncement = new() { @@ -169,10 +170,22 @@ TheEpicRoles - Idea for the first kill shield (partly) and the tabbed option men template.OnClick(); })); + var PropHuntButton = GameObject.Instantiate(gameButton, gameButton.parent); + PropHuntButton.transform.localPosition += new Vector3(3.4f, -0.5f); + var PropHuntButtonText = PropHuntButton.GetComponentInChildren(); + var PropHuntButtonPassiveButton = PropHuntButton.GetComponentInChildren(); + + PropHuntButtonPassiveButton.OnClick = new Button.ButtonClickedEvent(); + PropHuntButtonPassiveButton.OnClick.AddListener((System.Action)(() => { + TORMapOptions.gameMode = CustomGamemodes.PropHunt; + template.OnClick(); + })); + template.StartCoroutine(Effects.Lerp(0.1f, new System.Action((p) => { guesserButtonText.SetText("TOR Guesser"); HideNSeekButtonText.SetText("TOR Hide N Seek"); - }))); + PropHuntButtonText.SetText("TOR Prop Hunt"); + }))); })); } } diff --git a/TheOtherRoles/Patches/PlayerControlPatch.cs b/TheOtherRoles/Patches/PlayerControlPatch.cs index 726772b..b251d7c 100644 --- a/TheOtherRoles/Patches/PlayerControlPatch.cs +++ b/TheOtherRoles/Patches/PlayerControlPatch.cs @@ -13,6 +13,7 @@ using TheOtherRoles.CustomGameModes; using static UnityEngine.GraphicsBuffer; using AmongUs.GameOptions; using Sentry.Internal.Extensions; +using Reactor.Utilities.Extensions; namespace TheOtherRoles.Patches { [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.FixedUpdate))] @@ -618,7 +619,8 @@ namespace TheOtherRoles.Patches { Snitch.text.text = $"Snitch is alive: " + playerCompleted + "/" + playerTotal; if (snitchIsDead) Snitch.text.text = $"Snitch is dead!"; } - } + } else if (Snitch.text != null) + Snitch.text.Destroy(); if (snitchIsDead) { if (MeetingHud.Instance == null) Snitch.needsUpdate = false; @@ -961,7 +963,7 @@ namespace TheOtherRoles.Patches { if (AmongUsClient.Instance.GameState != InnerNet.InnerNetClient.GameStates.Started || GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek) return; // Mini and Morphling shrink - playerSizeUpdate(__instance); + if (!PropHunt.isPropHuntGM) playerSizeUpdate(__instance); // set position of colorblind text foreach (var pc in PlayerControl.AllPlayerControls) { @@ -1065,6 +1067,7 @@ namespace TheOtherRoles.Patches { // -- GAME MODE -- hunterUpdate(); + PropHunt.update(); } } } @@ -1085,7 +1088,7 @@ namespace TheOtherRoles.Patches { [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.CmdReportDeadBody))] class PlayerControlCmdReportDeadBodyPatch { public static bool Prefix(PlayerControl __instance) { - if (HideNSeek.isHideNSeekGM) return false; + if (HideNSeek.isHideNSeekGM || PropHunt.isPropHuntGM) return false; Helpers.handleVampireBiteOnBodyReport(); return true; } @@ -1113,7 +1116,7 @@ namespace TheOtherRoles.Patches { if (timeSinceDeath < Detective.reportNameDuration * 1000) { msg = $"Body Report: The killer appears to be {deadPlayer.killerIfExisting.Data.PlayerName}!"; } else if (timeSinceDeath < Detective.reportColorDuration * 1000) { - var typeOfColor = Helpers.isLighterColor(deadPlayer.killerIfExisting.Data.DefaultOutfit.ColorId) ? "lighter" : "darker"; + var typeOfColor = Helpers.isLighterColor(deadPlayer.killerIfExisting) ? "lighter" : "darker"; msg = $"Body Report: The killer appears to be a {typeOfColor} color!"; } else { msg = $"Body Report: The corpse is too old to gain information from!"; diff --git a/TheOtherRoles/Patches/RoleAssignmentPatch.cs b/TheOtherRoles/Patches/RoleAssignmentPatch.cs index a403f0e..43dddd5 100644 --- a/TheOtherRoles/Patches/RoleAssignmentPatch.cs +++ b/TheOtherRoles/Patches/RoleAssignmentPatch.cs @@ -21,8 +21,8 @@ namespace TheOtherRoles.Patches { [HarmonyPatch(typeof(IGameOptionsExtensions), nameof(IGameOptionsExtensions.GetAdjustedNumImpostors))] class GameOptionsDataGetAdjustedNumImpostorsPatch { public static void Postfix(ref int __result) { - if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek) { - int impCount = Mathf.RoundToInt(CustomOptionHolder.hideNSeekHunterCount.getFloat()); + if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek || TORMapOptions.gameMode == CustomGamemodes.PropHunt) { + int impCount = TORMapOptions.gameMode == CustomGamemodes.HideNSeek ? Mathf.RoundToInt(CustomOptionHolder.hideNSeekHunterCount.getFloat()) : CustomOptionHolder.propHuntNumberOfHunters.getQuantity(); __result = impCount; ; // Set Imp Num } else if (GameOptionsManager.Instance.CurrentGameOptions.GameMode == GameModes.Normal) { // Ignore Vanilla impostor limits in TOR Games. __result = Mathf.Clamp(GameOptionsManager.Instance.CurrentGameOptions.NumImpostors, 1, 3); @@ -34,6 +34,8 @@ namespace TheOtherRoles.Patches { class GameOptionsDataValidatePatch { public static void Postfix(GameOptionsData __instance) { if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek || GameOptionsManager.Instance.CurrentGameOptions.GameMode != GameModes.Normal) return; + if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) + __instance.NumImpostors = CustomOptionHolder.propHuntNumberOfHunters.getQuantity(); __instance.NumImpostors = GameOptionsManager.Instance.CurrentGameOptions.NumImpostors; } } @@ -49,7 +51,7 @@ namespace TheOtherRoles.Patches { MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, (byte)CustomRPC.ResetVaribles, Hazel.SendOption.Reliable, -1); AmongUsClient.Instance.FinishRpcImmediately(writer); RPCProcedure.resetVariables(); - if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek || GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek) return; // Don't assign Roles in Hide N Seek + if (TORMapOptions.gameMode == CustomGamemodes.HideNSeek || TORMapOptions.gameMode == CustomGamemodes.PropHunt || GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek) return; // Don't assign Roles in Hide N Seek if (CustomOptionHolder.activateRoles.getBool()) // Don't assign Roles in Tutorial or if deactivated assignRoles(); } diff --git a/TheOtherRoles/Patches/ShipStatusPatch.cs b/TheOtherRoles/Patches/ShipStatusPatch.cs index 40d6cd9..9aada93 100644 --- a/TheOtherRoles/Patches/ShipStatusPatch.cs +++ b/TheOtherRoles/Patches/ShipStatusPatch.cs @@ -17,7 +17,18 @@ namespace TheOtherRoles.Patches { public static bool Prefix(ref float __result, ShipStatus __instance, [HarmonyArgument(0)] GameData.PlayerInfo player) { if (!__instance.Systems.ContainsKey(SystemTypes.Electrical) || GameOptionsManager.Instance.currentGameOptions.GameMode == GameModes.HideNSeek) return true; - + // If Game Mode is PropHunt: + if (PropHunt.isPropHuntGM) { + if (!PropHunt.timerRunning) { + float progress = (PropHunt.blackOutTimer > 0f && PropHunt.blackOutTimer < 1f) ? 1 - PropHunt.blackOutTimer : 0f; + float minVision = __instance.MaxLightRadius * (PropHunt.propBecomesHunterWhenFound ? 0.25f : PropHunt.propVision); + __result = Mathf.Lerp(minVision, __instance.MaxLightRadius * PropHunt.propVision, progress); // For future start animation + } else { + __result = __instance.MaxLightRadius * (PlayerControl.LocalPlayer.Data.Role.IsImpostor ? PropHunt.hunterVision : PropHunt.propVision); + } + return false; + } + if (!HideNSeek.isHideNSeekGM || (HideNSeek.isHideNSeekGM && !Hunter.lightActive.Contains(player.PlayerId))) { // If player is a role which has Impostor vision if (Helpers.hasImpVision(player)) { @@ -37,6 +48,7 @@ namespace TheOtherRoles.Patches { else if (HideNSeek.isHideNSeekGM && Hunter.isLightActive(player.PlayerId)) { float unlerped = Mathf.InverseLerp(__instance.MinLightRadius, __instance.MaxLightRadius, GetNeutralLightRadius(__instance, false)); __result = Mathf.Lerp(__instance.MaxLightRadius * Hunter.lightVision, __instance.MaxLightRadius * Hunter.lightVision, unlerped); + return false; } // If there is a Trickster with their ability active @@ -108,6 +120,11 @@ namespace TheOtherRoles.Patches { var normalTaskCount = __instance.NormalTasks.Count; var longTaskCount = __instance.LongTasks.Count; + if (TORMapOptions.gameMode == CustomGamemodes.PropHunt) { + commonTaskCount = normalTaskCount = longTaskCount = 0; + } + + if (GameOptionsManager.Instance.currentNormalGameOptions.NumCommonTasks > commonTaskCount) GameOptionsManager.Instance.currentNormalGameOptions.NumCommonTasks = commonTaskCount; if (GameOptionsManager.Instance.currentNormalGameOptions.NumShortTasks > normalTaskCount) GameOptionsManager.Instance.currentNormalGameOptions.NumShortTasks = normalTaskCount; if (GameOptionsManager.Instance.currentNormalGameOptions.NumLongTasks > longTaskCount) GameOptionsManager.Instance.currentNormalGameOptions.NumLongTasks = longTaskCount; diff --git a/TheOtherRoles/Patches/UpdatePatch.cs b/TheOtherRoles/Patches/UpdatePatch.cs index 71573d7..8ef4a72 100644 --- a/TheOtherRoles/Patches/UpdatePatch.cs +++ b/TheOtherRoles/Patches/UpdatePatch.cs @@ -228,7 +228,7 @@ namespace TheOtherRoles.Patches { if (CachedPlayer.LocalPlayer != null && MeetingHud.Instance != null && TORMapOptions.showLighterDarker) { foreach (PlayerVoteArea player in MeetingHud.Instance.playerStates) { var target = Helpers.playerById(player.TargetPlayerId); - if (target != null) player.NameText.text += $" ({(Helpers.isLighterColor(target.Data.DefaultOutfit.ColorId) ? "L" : "D")})"; + if (target != null) player.NameText.text += $" ({(Helpers.isLighterColor(target) ? "L" : "D")})"; } } } @@ -313,7 +313,7 @@ namespace TheOtherRoles.Patches { } static void updateSabotageButton(HudManager __instance) { - if (MeetingHud.Instance || TORMapOptions.gameMode == CustomGamemodes.HideNSeek) __instance.SabotageButton.Hide(); + if (MeetingHud.Instance || TORMapOptions.gameMode == CustomGamemodes.HideNSeek || TORMapOptions.gameMode == CustomGamemodes.PropHunt) __instance.SabotageButton.Hide(); } static void updateMapButton(HudManager __instance) { diff --git a/TheOtherRoles/Patches/UsablesPatch.cs b/TheOtherRoles/Patches/UsablesPatch.cs index 5e1af9c..2835ec9 100644 --- a/TheOtherRoles/Patches/UsablesPatch.cs +++ b/TheOtherRoles/Patches/UsablesPatch.cs @@ -169,6 +169,10 @@ namespace TheOtherRoles.Patches { [HarmonyPatch(typeof(KillButton), nameof(KillButton.DoClick))] class KillButtonDoClickPatch { public static bool Prefix(KillButton __instance) { + if (PropHunt.isPropHuntGM) { + KillAnimationCoPerformKillPatch.hideNextAnimation = true; // dont jump out of bounds! + return false; + } if (__instance.isActiveAndEnabled && __instance.currentTarget && !__instance.isCoolingDown && !CachedPlayer.LocalPlayer.Data.IsDead && CachedPlayer.LocalPlayer.PlayerControl.CanMove) { // Deputy handcuff update. if (Deputy.handcuffedPlayers.Contains(CachedPlayer.LocalPlayer.PlayerId)) { @@ -416,19 +420,18 @@ namespace TheOtherRoles.Patches { if (playerInfo != null) { var color = Palette.PlayerColors[playerInfo.DefaultOutfit.ColorId]; if (Hacker.onlyColorType) - color = Helpers.isLighterColor(playerInfo.DefaultOutfit.ColorId) ? Palette.PlayerColors[7] : Palette.PlayerColors[6]; + color = Helpers.isD(playerInfo.PlayerId) ? Palette.PlayerColors[7] : Palette.PlayerColors[6]; roomColors.Add(color); } } - } else { + } else if (!collider2D.isTrigger) { PlayerControl component = collider2D.GetComponent(); if (component && component.Data != null && !component.Data.Disconnected && !component.Data.IsDead && (__instance.showLivePlayerPosition || !component.AmOwner) && hashSet.Add((int)component.PlayerId)) { num2++; if (component?.cosmetics?.currentBodySprite?.BodySprite?.material != null) { Color color = component.cosmetics.currentBodySprite.BodySprite.material.GetColor("_BodyColor"); if (Hacker.onlyColorType) { - var id = Mathf.Max(0, Palette.PlayerColors.IndexOf(color)); - color = Helpers.isLighterColor((byte)id) ? Palette.PlayerColors[7] : Palette.PlayerColors[6]; + color = Helpers.isLighterColor(component) ? Palette.PlayerColors[7] : Palette.PlayerColors[6]; } roomColors.Add(color); } @@ -712,6 +715,7 @@ namespace TheOtherRoles.Patches { static bool Prefix(MapBehaviour __instance) { if (HideNSeek.isHideNSeekGM) return HideNSeek.canSabotage; + if (PropHunt.isPropHuntGM) return false; return true; } } diff --git a/TheOtherRoles/RPC.cs b/TheOtherRoles/RPC.cs index 4ea20a7..0e64211 100644 --- a/TheOtherRoles/RPC.cs +++ b/TheOtherRoles/RPC.cs @@ -153,6 +153,11 @@ namespace TheOtherRoles SetGuesserGm, HuntedShield, HuntedRewindTime, + SetProp, + SetRevealed, + PropHuntStartTimer, + PropHuntSetInvis, + PropHuntSetSpeedboost, // Other functionality ShareTimer, @@ -1126,6 +1131,42 @@ namespace TheOtherRoles CachedPlayer.LocalPlayer.PlayerControl.moveable = false; } + public static void propHuntStartTimer(bool blackout = false) { + if (blackout) { + PropHunt.blackOutTimer = PropHunt.initialBlackoutTime; + PropHunt.transformLayers(); + } else { + PropHunt.timerRunning = true; + PropHunt.blackOutTimer = 0f; + } + PropHunt.startTime = DateTime.UtcNow; + foreach (var pc in PlayerControl.AllPlayerControls.ToArray().Where(x => x.Data.Role.IsImpostor)) { + pc.MyPhysics.SetBodyType(PlayerBodyTypes.Seeker); + } + } + + public static void propHuntSetProp(byte playerId, string propName, float posX) { + PlayerControl player = Helpers.playerById(playerId); + var prop = PropHunt.FindPropByNameAndPos(propName, posX); + if (prop == null) return; + player.GetComponent().sprite = prop.GetComponent().sprite; + player.transform.localScale = prop.transform.lossyScale; + player.Visible = false; + PropHunt.currentObject[player.PlayerId] = new Tuple(propName, posX); + } + + public static void propHuntSetRevealed(byte playerId) { + SoundEffectsManager.play("morphlingMorph"); + PropHunt.isCurrentlyRevealed.Add(playerId, PropHunt.revealDuration); + PropHunt.timer -= PropHunt.revealPunish; + } + public static void propHuntSetInvis(byte playerId) { + PropHunt.invisPlayers.Add(playerId, PropHunt.invisDuration); + } + public static void propHuntSetSpeedboost(byte playerId) { + PropHunt.speedboostActive.Add(playerId, PropHunt.speedboostDuration); + } + public enum GhostInfoTypes { HandcuffNoticed, HandcuffOver, @@ -1472,6 +1513,24 @@ namespace TheOtherRoles byte rewindPlayer = reader.ReadByte(); RPCProcedure.huntedRewindTime(rewindPlayer); break; + case (byte)CustomRPC.PropHuntStartTimer: + RPCProcedure.propHuntStartTimer(reader.ReadBoolean()); + break; + case (byte)CustomRPC.SetProp: + byte targetPlayer = reader.ReadByte(); + string propName = reader.ReadString(); + float posX = reader.ReadSingle(); + RPCProcedure.propHuntSetProp(targetPlayer, propName, posX); + break; + case (byte)CustomRPC.SetRevealed: + RPCProcedure.propHuntSetRevealed(reader.ReadByte()); + break; + case (byte)CustomRPC.PropHuntSetInvis: + RPCProcedure.propHuntSetInvis(reader.ReadByte()); + break; + case (byte)CustomRPC.PropHuntSetSpeedboost: + RPCProcedure.propHuntSetSpeedboost(reader.ReadByte()); + break; case (byte)CustomRPC.ShareGhostInfo: RPCProcedure.receiveGhostInfo(reader.ReadByte(), reader); break; diff --git a/TheOtherRoles/Resources/DisguiseButton.png b/TheOtherRoles/Resources/DisguiseButton.png new file mode 100644 index 0000000..dbc4b8d Binary files /dev/null and b/TheOtherRoles/Resources/DisguiseButton.png differ diff --git a/TheOtherRoles/Resources/FindButton.png b/TheOtherRoles/Resources/FindButton.png new file mode 100644 index 0000000..b476302 Binary files /dev/null and b/TheOtherRoles/Resources/FindButton.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1000.png b/TheOtherRoles/Resources/IntroAnimation/intro_1000.png new file mode 100644 index 0000000..05fea99 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1000.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1001.png b/TheOtherRoles/Resources/IntroAnimation/intro_1001.png new file mode 100644 index 0000000..73abae1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1001.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1002.png b/TheOtherRoles/Resources/IntroAnimation/intro_1002.png new file mode 100644 index 0000000..bb7b7ab Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1002.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1003.png b/TheOtherRoles/Resources/IntroAnimation/intro_1003.png new file mode 100644 index 0000000..65fc6ad Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1003.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1004.png b/TheOtherRoles/Resources/IntroAnimation/intro_1004.png new file mode 100644 index 0000000..cd60a56 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1004.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1005.png b/TheOtherRoles/Resources/IntroAnimation/intro_1005.png new file mode 100644 index 0000000..63aaa11 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1005.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1006.png b/TheOtherRoles/Resources/IntroAnimation/intro_1006.png new file mode 100644 index 0000000..aec564f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1006.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1007.png b/TheOtherRoles/Resources/IntroAnimation/intro_1007.png new file mode 100644 index 0000000..37c0fdb Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1007.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1008.png b/TheOtherRoles/Resources/IntroAnimation/intro_1008.png new file mode 100644 index 0000000..0aa6eee Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1008.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1009.png b/TheOtherRoles/Resources/IntroAnimation/intro_1009.png new file mode 100644 index 0000000..2a46847 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1009.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1010.png b/TheOtherRoles/Resources/IntroAnimation/intro_1010.png new file mode 100644 index 0000000..ef82164 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1010.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1011.png b/TheOtherRoles/Resources/IntroAnimation/intro_1011.png new file mode 100644 index 0000000..7015702 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1011.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1012.png b/TheOtherRoles/Resources/IntroAnimation/intro_1012.png new file mode 100644 index 0000000..982bb5d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1012.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1013.png b/TheOtherRoles/Resources/IntroAnimation/intro_1013.png new file mode 100644 index 0000000..8d650cd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1013.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1014.png b/TheOtherRoles/Resources/IntroAnimation/intro_1014.png new file mode 100644 index 0000000..4365d16 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1014.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1015.png b/TheOtherRoles/Resources/IntroAnimation/intro_1015.png new file mode 100644 index 0000000..13c7af5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1015.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1016.png b/TheOtherRoles/Resources/IntroAnimation/intro_1016.png new file mode 100644 index 0000000..0ac7f64 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1016.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1017.png b/TheOtherRoles/Resources/IntroAnimation/intro_1017.png new file mode 100644 index 0000000..0750a1a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1017.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1018.png b/TheOtherRoles/Resources/IntroAnimation/intro_1018.png new file mode 100644 index 0000000..0f07b33 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1018.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1019.png b/TheOtherRoles/Resources/IntroAnimation/intro_1019.png new file mode 100644 index 0000000..36a0934 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1019.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1020.png b/TheOtherRoles/Resources/IntroAnimation/intro_1020.png new file mode 100644 index 0000000..8c8801b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1020.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1021.png b/TheOtherRoles/Resources/IntroAnimation/intro_1021.png new file mode 100644 index 0000000..98b98aa Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1021.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1022.png b/TheOtherRoles/Resources/IntroAnimation/intro_1022.png new file mode 100644 index 0000000..5a7efb1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1022.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1023.png b/TheOtherRoles/Resources/IntroAnimation/intro_1023.png new file mode 100644 index 0000000..8739b1a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1023.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1024.png b/TheOtherRoles/Resources/IntroAnimation/intro_1024.png new file mode 100644 index 0000000..8739b1a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1024.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1025.png b/TheOtherRoles/Resources/IntroAnimation/intro_1025.png new file mode 100644 index 0000000..8739b1a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1025.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1026.png b/TheOtherRoles/Resources/IntroAnimation/intro_1026.png new file mode 100644 index 0000000..6b0ace1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1026.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1027.png b/TheOtherRoles/Resources/IntroAnimation/intro_1027.png new file mode 100644 index 0000000..79f52a3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1027.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1028.png b/TheOtherRoles/Resources/IntroAnimation/intro_1028.png new file mode 100644 index 0000000..cc9d981 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1028.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1029.png b/TheOtherRoles/Resources/IntroAnimation/intro_1029.png new file mode 100644 index 0000000..19b0613 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1029.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1030.png b/TheOtherRoles/Resources/IntroAnimation/intro_1030.png new file mode 100644 index 0000000..2f735ca Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1030.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1031.png b/TheOtherRoles/Resources/IntroAnimation/intro_1031.png new file mode 100644 index 0000000..f2cb322 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1031.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1032.png b/TheOtherRoles/Resources/IntroAnimation/intro_1032.png new file mode 100644 index 0000000..ba5c7bc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1032.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1033.png b/TheOtherRoles/Resources/IntroAnimation/intro_1033.png new file mode 100644 index 0000000..1d71088 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1033.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1034.png b/TheOtherRoles/Resources/IntroAnimation/intro_1034.png new file mode 100644 index 0000000..f5ee5c8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1034.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1035.png b/TheOtherRoles/Resources/IntroAnimation/intro_1035.png new file mode 100644 index 0000000..596c979 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1035.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1036.png b/TheOtherRoles/Resources/IntroAnimation/intro_1036.png new file mode 100644 index 0000000..afe57ca Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1036.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1037.png b/TheOtherRoles/Resources/IntroAnimation/intro_1037.png new file mode 100644 index 0000000..6982da2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1037.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1038.png b/TheOtherRoles/Resources/IntroAnimation/intro_1038.png new file mode 100644 index 0000000..a6a9ae0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1038.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1039.png b/TheOtherRoles/Resources/IntroAnimation/intro_1039.png new file mode 100644 index 0000000..e404b7d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1039.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1040.png b/TheOtherRoles/Resources/IntroAnimation/intro_1040.png new file mode 100644 index 0000000..77d8e77 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1040.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1041.png b/TheOtherRoles/Resources/IntroAnimation/intro_1041.png new file mode 100644 index 0000000..966da1f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1041.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1042.png b/TheOtherRoles/Resources/IntroAnimation/intro_1042.png new file mode 100644 index 0000000..a3f1f90 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1042.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1043.png b/TheOtherRoles/Resources/IntroAnimation/intro_1043.png new file mode 100644 index 0000000..e40efa4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1043.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1044.png b/TheOtherRoles/Resources/IntroAnimation/intro_1044.png new file mode 100644 index 0000000..973a059 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1044.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1045.png b/TheOtherRoles/Resources/IntroAnimation/intro_1045.png new file mode 100644 index 0000000..dca0db5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1045.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1046.png b/TheOtherRoles/Resources/IntroAnimation/intro_1046.png new file mode 100644 index 0000000..f1b132f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1046.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1047.png b/TheOtherRoles/Resources/IntroAnimation/intro_1047.png new file mode 100644 index 0000000..43ab596 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1047.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1048.png b/TheOtherRoles/Resources/IntroAnimation/intro_1048.png new file mode 100644 index 0000000..0637309 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1048.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1049.png b/TheOtherRoles/Resources/IntroAnimation/intro_1049.png new file mode 100644 index 0000000..0637309 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1049.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1050.png b/TheOtherRoles/Resources/IntroAnimation/intro_1050.png new file mode 100644 index 0000000..0637309 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1050.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1051.png b/TheOtherRoles/Resources/IntroAnimation/intro_1051.png new file mode 100644 index 0000000..a628d27 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1051.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1052.png b/TheOtherRoles/Resources/IntroAnimation/intro_1052.png new file mode 100644 index 0000000..8a81720 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1052.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1053.png b/TheOtherRoles/Resources/IntroAnimation/intro_1053.png new file mode 100644 index 0000000..426d548 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1053.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1054.png b/TheOtherRoles/Resources/IntroAnimation/intro_1054.png new file mode 100644 index 0000000..4acce89 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1054.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1055.png b/TheOtherRoles/Resources/IntroAnimation/intro_1055.png new file mode 100644 index 0000000..ef4844e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1055.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1056.png b/TheOtherRoles/Resources/IntroAnimation/intro_1056.png new file mode 100644 index 0000000..af44596 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1056.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1057.png b/TheOtherRoles/Resources/IntroAnimation/intro_1057.png new file mode 100644 index 0000000..860e76c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1057.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1058.png b/TheOtherRoles/Resources/IntroAnimation/intro_1058.png new file mode 100644 index 0000000..e5d5afd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1058.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1059.png b/TheOtherRoles/Resources/IntroAnimation/intro_1059.png new file mode 100644 index 0000000..1171df9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1059.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1060.png b/TheOtherRoles/Resources/IntroAnimation/intro_1060.png new file mode 100644 index 0000000..f2f29f9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1060.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1061.png b/TheOtherRoles/Resources/IntroAnimation/intro_1061.png new file mode 100644 index 0000000..8660d93 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1061.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1062.png b/TheOtherRoles/Resources/IntroAnimation/intro_1062.png new file mode 100644 index 0000000..e2362d6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1062.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1063.png b/TheOtherRoles/Resources/IntroAnimation/intro_1063.png new file mode 100644 index 0000000..d1c2de7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1063.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1064.png b/TheOtherRoles/Resources/IntroAnimation/intro_1064.png new file mode 100644 index 0000000..774276f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1064.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1065.png b/TheOtherRoles/Resources/IntroAnimation/intro_1065.png new file mode 100644 index 0000000..0d291c6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1065.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1066.png b/TheOtherRoles/Resources/IntroAnimation/intro_1066.png new file mode 100644 index 0000000..09d5f02 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1066.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1067.png b/TheOtherRoles/Resources/IntroAnimation/intro_1067.png new file mode 100644 index 0000000..fe3bd23 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1067.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1068.png b/TheOtherRoles/Resources/IntroAnimation/intro_1068.png new file mode 100644 index 0000000..5ea610a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1068.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1069.png b/TheOtherRoles/Resources/IntroAnimation/intro_1069.png new file mode 100644 index 0000000..79d4df9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1069.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1070.png b/TheOtherRoles/Resources/IntroAnimation/intro_1070.png new file mode 100644 index 0000000..3aae68c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1070.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1071.png b/TheOtherRoles/Resources/IntroAnimation/intro_1071.png new file mode 100644 index 0000000..e21f54f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1071.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1072.png b/TheOtherRoles/Resources/IntroAnimation/intro_1072.png new file mode 100644 index 0000000..dbc8a43 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1072.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1073.png b/TheOtherRoles/Resources/IntroAnimation/intro_1073.png new file mode 100644 index 0000000..61ec137 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1073.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1074.png b/TheOtherRoles/Resources/IntroAnimation/intro_1074.png new file mode 100644 index 0000000..61ec137 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1074.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1075.png b/TheOtherRoles/Resources/IntroAnimation/intro_1075.png new file mode 100644 index 0000000..61ec137 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1075.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1076.png b/TheOtherRoles/Resources/IntroAnimation/intro_1076.png new file mode 100644 index 0000000..67fe8ac Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1076.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1077.png b/TheOtherRoles/Resources/IntroAnimation/intro_1077.png new file mode 100644 index 0000000..b8e526c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1077.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1078.png b/TheOtherRoles/Resources/IntroAnimation/intro_1078.png new file mode 100644 index 0000000..6c6938a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1078.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1079.png b/TheOtherRoles/Resources/IntroAnimation/intro_1079.png new file mode 100644 index 0000000..c48bf17 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1079.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1080.png b/TheOtherRoles/Resources/IntroAnimation/intro_1080.png new file mode 100644 index 0000000..be05c14 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1080.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1081.png b/TheOtherRoles/Resources/IntroAnimation/intro_1081.png new file mode 100644 index 0000000..b0084ee Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1081.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1082.png b/TheOtherRoles/Resources/IntroAnimation/intro_1082.png new file mode 100644 index 0000000..ca33b03 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1082.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1083.png b/TheOtherRoles/Resources/IntroAnimation/intro_1083.png new file mode 100644 index 0000000..f70a8f6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1083.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1084.png b/TheOtherRoles/Resources/IntroAnimation/intro_1084.png new file mode 100644 index 0000000..0ce764c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1084.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1085.png b/TheOtherRoles/Resources/IntroAnimation/intro_1085.png new file mode 100644 index 0000000..b248ecb Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1085.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1086.png b/TheOtherRoles/Resources/IntroAnimation/intro_1086.png new file mode 100644 index 0000000..b12548b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1086.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1087.png b/TheOtherRoles/Resources/IntroAnimation/intro_1087.png new file mode 100644 index 0000000..8dddc07 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1087.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1088.png b/TheOtherRoles/Resources/IntroAnimation/intro_1088.png new file mode 100644 index 0000000..e499fc6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1088.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1089.png b/TheOtherRoles/Resources/IntroAnimation/intro_1089.png new file mode 100644 index 0000000..d2b420c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1089.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1090.png b/TheOtherRoles/Resources/IntroAnimation/intro_1090.png new file mode 100644 index 0000000..1d48b40 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1090.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1091.png b/TheOtherRoles/Resources/IntroAnimation/intro_1091.png new file mode 100644 index 0000000..19789f5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1091.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1092.png b/TheOtherRoles/Resources/IntroAnimation/intro_1092.png new file mode 100644 index 0000000..78e663c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1092.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1093.png b/TheOtherRoles/Resources/IntroAnimation/intro_1093.png new file mode 100644 index 0000000..0af67cf Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1093.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1094.png b/TheOtherRoles/Resources/IntroAnimation/intro_1094.png new file mode 100644 index 0000000..227961c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1094.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1095.png b/TheOtherRoles/Resources/IntroAnimation/intro_1095.png new file mode 100644 index 0000000..9b693ab Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1095.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1096.png b/TheOtherRoles/Resources/IntroAnimation/intro_1096.png new file mode 100644 index 0000000..99ec691 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1096.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1097.png b/TheOtherRoles/Resources/IntroAnimation/intro_1097.png new file mode 100644 index 0000000..9764199 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1097.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1098.png b/TheOtherRoles/Resources/IntroAnimation/intro_1098.png new file mode 100644 index 0000000..6bf25a6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1098.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1099.png b/TheOtherRoles/Resources/IntroAnimation/intro_1099.png new file mode 100644 index 0000000..6bf25a6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1099.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1100.png b/TheOtherRoles/Resources/IntroAnimation/intro_1100.png new file mode 100644 index 0000000..76de009 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1100.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1101.png b/TheOtherRoles/Resources/IntroAnimation/intro_1101.png new file mode 100644 index 0000000..17c1bec Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1101.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1102.png b/TheOtherRoles/Resources/IntroAnimation/intro_1102.png new file mode 100644 index 0000000..851cc69 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1102.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1103.png b/TheOtherRoles/Resources/IntroAnimation/intro_1103.png new file mode 100644 index 0000000..498d7bc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1103.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1104.png b/TheOtherRoles/Resources/IntroAnimation/intro_1104.png new file mode 100644 index 0000000..3a43697 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1104.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1105.png b/TheOtherRoles/Resources/IntroAnimation/intro_1105.png new file mode 100644 index 0000000..29aaec2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1105.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1106.png b/TheOtherRoles/Resources/IntroAnimation/intro_1106.png new file mode 100644 index 0000000..1540c34 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1106.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1107.png b/TheOtherRoles/Resources/IntroAnimation/intro_1107.png new file mode 100644 index 0000000..659a72e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1107.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1108.png b/TheOtherRoles/Resources/IntroAnimation/intro_1108.png new file mode 100644 index 0000000..9fc4195 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1108.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1109.png b/TheOtherRoles/Resources/IntroAnimation/intro_1109.png new file mode 100644 index 0000000..79e8ff7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1109.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1110.png b/TheOtherRoles/Resources/IntroAnimation/intro_1110.png new file mode 100644 index 0000000..e29b341 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1110.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1111.png b/TheOtherRoles/Resources/IntroAnimation/intro_1111.png new file mode 100644 index 0000000..26557da Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1111.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1112.png b/TheOtherRoles/Resources/IntroAnimation/intro_1112.png new file mode 100644 index 0000000..3b073e5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1112.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1113.png b/TheOtherRoles/Resources/IntroAnimation/intro_1113.png new file mode 100644 index 0000000..7b641dc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1113.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1114.png b/TheOtherRoles/Resources/IntroAnimation/intro_1114.png new file mode 100644 index 0000000..78e86ac Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1114.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1115.png b/TheOtherRoles/Resources/IntroAnimation/intro_1115.png new file mode 100644 index 0000000..cca343b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1115.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1116.png b/TheOtherRoles/Resources/IntroAnimation/intro_1116.png new file mode 100644 index 0000000..a80f3ac Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1116.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1117.png b/TheOtherRoles/Resources/IntroAnimation/intro_1117.png new file mode 100644 index 0000000..6980f51 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1117.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1118.png b/TheOtherRoles/Resources/IntroAnimation/intro_1118.png new file mode 100644 index 0000000..2fd5bb5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1118.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1119.png b/TheOtherRoles/Resources/IntroAnimation/intro_1119.png new file mode 100644 index 0000000..b6a01f7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1119.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1120.png b/TheOtherRoles/Resources/IntroAnimation/intro_1120.png new file mode 100644 index 0000000..41e2290 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1120.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1121.png b/TheOtherRoles/Resources/IntroAnimation/intro_1121.png new file mode 100644 index 0000000..8da9d7e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1121.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1122.png b/TheOtherRoles/Resources/IntroAnimation/intro_1122.png new file mode 100644 index 0000000..944d081 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1122.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1123.png b/TheOtherRoles/Resources/IntroAnimation/intro_1123.png new file mode 100644 index 0000000..944d081 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1123.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1124.png b/TheOtherRoles/Resources/IntroAnimation/intro_1124.png new file mode 100644 index 0000000..944d081 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1124.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1125.png b/TheOtherRoles/Resources/IntroAnimation/intro_1125.png new file mode 100644 index 0000000..944d081 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1125.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1126.png b/TheOtherRoles/Resources/IntroAnimation/intro_1126.png new file mode 100644 index 0000000..d4d7fe5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1126.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1127.png b/TheOtherRoles/Resources/IntroAnimation/intro_1127.png new file mode 100644 index 0000000..8b6d0d2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1127.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1128.png b/TheOtherRoles/Resources/IntroAnimation/intro_1128.png new file mode 100644 index 0000000..9824d29 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1128.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1129.png b/TheOtherRoles/Resources/IntroAnimation/intro_1129.png new file mode 100644 index 0000000..ae7d503 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1129.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1130.png b/TheOtherRoles/Resources/IntroAnimation/intro_1130.png new file mode 100644 index 0000000..8c1dbe4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1130.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1131.png b/TheOtherRoles/Resources/IntroAnimation/intro_1131.png new file mode 100644 index 0000000..f9688a8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1131.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1132.png b/TheOtherRoles/Resources/IntroAnimation/intro_1132.png new file mode 100644 index 0000000..29f46bf Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1132.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1133.png b/TheOtherRoles/Resources/IntroAnimation/intro_1133.png new file mode 100644 index 0000000..b4b5b7b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1133.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1134.png b/TheOtherRoles/Resources/IntroAnimation/intro_1134.png new file mode 100644 index 0000000..ced6043 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1134.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1135.png b/TheOtherRoles/Resources/IntroAnimation/intro_1135.png new file mode 100644 index 0000000..536ff44 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1135.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1136.png b/TheOtherRoles/Resources/IntroAnimation/intro_1136.png new file mode 100644 index 0000000..d2f7dd4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1136.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1137.png b/TheOtherRoles/Resources/IntroAnimation/intro_1137.png new file mode 100644 index 0000000..82884b3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1137.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1138.png b/TheOtherRoles/Resources/IntroAnimation/intro_1138.png new file mode 100644 index 0000000..ebb40ba Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1138.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1139.png b/TheOtherRoles/Resources/IntroAnimation/intro_1139.png new file mode 100644 index 0000000..40a0f80 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1139.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1140.png b/TheOtherRoles/Resources/IntroAnimation/intro_1140.png new file mode 100644 index 0000000..ff361d4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1140.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1141.png b/TheOtherRoles/Resources/IntroAnimation/intro_1141.png new file mode 100644 index 0000000..c41529a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1141.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1142.png b/TheOtherRoles/Resources/IntroAnimation/intro_1142.png new file mode 100644 index 0000000..5f5b190 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1142.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1143.png b/TheOtherRoles/Resources/IntroAnimation/intro_1143.png new file mode 100644 index 0000000..82ecad5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1143.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1144.png b/TheOtherRoles/Resources/IntroAnimation/intro_1144.png new file mode 100644 index 0000000..59e0802 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1144.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1145.png b/TheOtherRoles/Resources/IntroAnimation/intro_1145.png new file mode 100644 index 0000000..4503f8d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1145.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1146.png b/TheOtherRoles/Resources/IntroAnimation/intro_1146.png new file mode 100644 index 0000000..302c0c3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1146.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1147.png b/TheOtherRoles/Resources/IntroAnimation/intro_1147.png new file mode 100644 index 0000000..6233376 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1147.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1148.png b/TheOtherRoles/Resources/IntroAnimation/intro_1148.png new file mode 100644 index 0000000..833662a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1148.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1149.png b/TheOtherRoles/Resources/IntroAnimation/intro_1149.png new file mode 100644 index 0000000..833662a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1149.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1150.png b/TheOtherRoles/Resources/IntroAnimation/intro_1150.png new file mode 100644 index 0000000..833662a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1150.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1151.png b/TheOtherRoles/Resources/IntroAnimation/intro_1151.png new file mode 100644 index 0000000..6d88b4e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1151.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1152.png b/TheOtherRoles/Resources/IntroAnimation/intro_1152.png new file mode 100644 index 0000000..a00682f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1152.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1153.png b/TheOtherRoles/Resources/IntroAnimation/intro_1153.png new file mode 100644 index 0000000..3e0bb4e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1153.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1154.png b/TheOtherRoles/Resources/IntroAnimation/intro_1154.png new file mode 100644 index 0000000..905fe7a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1154.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1155.png b/TheOtherRoles/Resources/IntroAnimation/intro_1155.png new file mode 100644 index 0000000..4c99411 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1155.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1156.png b/TheOtherRoles/Resources/IntroAnimation/intro_1156.png new file mode 100644 index 0000000..afacff2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1156.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1157.png b/TheOtherRoles/Resources/IntroAnimation/intro_1157.png new file mode 100644 index 0000000..2ebff5e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1157.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1158.png b/TheOtherRoles/Resources/IntroAnimation/intro_1158.png new file mode 100644 index 0000000..7688f5f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1158.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1159.png b/TheOtherRoles/Resources/IntroAnimation/intro_1159.png new file mode 100644 index 0000000..ef95ef0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1159.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1160.png b/TheOtherRoles/Resources/IntroAnimation/intro_1160.png new file mode 100644 index 0000000..b6edf6a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1160.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1161.png b/TheOtherRoles/Resources/IntroAnimation/intro_1161.png new file mode 100644 index 0000000..e2c27d4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1161.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1162.png b/TheOtherRoles/Resources/IntroAnimation/intro_1162.png new file mode 100644 index 0000000..5f6b4da Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1162.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1163.png b/TheOtherRoles/Resources/IntroAnimation/intro_1163.png new file mode 100644 index 0000000..f6165af Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1163.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1164.png b/TheOtherRoles/Resources/IntroAnimation/intro_1164.png new file mode 100644 index 0000000..8c4ff31 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1164.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1165.png b/TheOtherRoles/Resources/IntroAnimation/intro_1165.png new file mode 100644 index 0000000..c8f7651 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1165.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1166.png b/TheOtherRoles/Resources/IntroAnimation/intro_1166.png new file mode 100644 index 0000000..c96d1e2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1166.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1167.png b/TheOtherRoles/Resources/IntroAnimation/intro_1167.png new file mode 100644 index 0000000..8316ab5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1167.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1168.png b/TheOtherRoles/Resources/IntroAnimation/intro_1168.png new file mode 100644 index 0000000..0b222fd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1168.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1169.png b/TheOtherRoles/Resources/IntroAnimation/intro_1169.png new file mode 100644 index 0000000..64748fe Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1169.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1170.png b/TheOtherRoles/Resources/IntroAnimation/intro_1170.png new file mode 100644 index 0000000..88e4a32 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1170.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1171.png b/TheOtherRoles/Resources/IntroAnimation/intro_1171.png new file mode 100644 index 0000000..4940a65 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1171.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1172.png b/TheOtherRoles/Resources/IntroAnimation/intro_1172.png new file mode 100644 index 0000000..9447964 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1172.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1173.png b/TheOtherRoles/Resources/IntroAnimation/intro_1173.png new file mode 100644 index 0000000..3a2a1c8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1173.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1174.png b/TheOtherRoles/Resources/IntroAnimation/intro_1174.png new file mode 100644 index 0000000..3a2a1c8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1174.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1175.png b/TheOtherRoles/Resources/IntroAnimation/intro_1175.png new file mode 100644 index 0000000..3a2a1c8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1175.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1176.png b/TheOtherRoles/Resources/IntroAnimation/intro_1176.png new file mode 100644 index 0000000..5d274c0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1176.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1177.png b/TheOtherRoles/Resources/IntroAnimation/intro_1177.png new file mode 100644 index 0000000..60d7015 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1177.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1178.png b/TheOtherRoles/Resources/IntroAnimation/intro_1178.png new file mode 100644 index 0000000..23cde04 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1178.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1179.png b/TheOtherRoles/Resources/IntroAnimation/intro_1179.png new file mode 100644 index 0000000..125a58f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1179.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1180.png b/TheOtherRoles/Resources/IntroAnimation/intro_1180.png new file mode 100644 index 0000000..452b5e4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1180.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1181.png b/TheOtherRoles/Resources/IntroAnimation/intro_1181.png new file mode 100644 index 0000000..3438dfd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1181.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1182.png b/TheOtherRoles/Resources/IntroAnimation/intro_1182.png new file mode 100644 index 0000000..0b2b4d7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1182.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1183.png b/TheOtherRoles/Resources/IntroAnimation/intro_1183.png new file mode 100644 index 0000000..ebcd78c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1183.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1184.png b/TheOtherRoles/Resources/IntroAnimation/intro_1184.png new file mode 100644 index 0000000..6a2a47d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1184.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1185.png b/TheOtherRoles/Resources/IntroAnimation/intro_1185.png new file mode 100644 index 0000000..9d91c33 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1185.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1186.png b/TheOtherRoles/Resources/IntroAnimation/intro_1186.png new file mode 100644 index 0000000..ac4ec99 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1186.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1187.png b/TheOtherRoles/Resources/IntroAnimation/intro_1187.png new file mode 100644 index 0000000..de4becd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1187.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1188.png b/TheOtherRoles/Resources/IntroAnimation/intro_1188.png new file mode 100644 index 0000000..e6a5646 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1188.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1189.png b/TheOtherRoles/Resources/IntroAnimation/intro_1189.png new file mode 100644 index 0000000..4b42219 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1189.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1190.png b/TheOtherRoles/Resources/IntroAnimation/intro_1190.png new file mode 100644 index 0000000..c8155b6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1190.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1191.png b/TheOtherRoles/Resources/IntroAnimation/intro_1191.png new file mode 100644 index 0000000..67716dc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1191.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1192.png b/TheOtherRoles/Resources/IntroAnimation/intro_1192.png new file mode 100644 index 0000000..e61c012 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1192.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1193.png b/TheOtherRoles/Resources/IntroAnimation/intro_1193.png new file mode 100644 index 0000000..eaf42fe Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1193.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1194.png b/TheOtherRoles/Resources/IntroAnimation/intro_1194.png new file mode 100644 index 0000000..35cc4c9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1194.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1195.png b/TheOtherRoles/Resources/IntroAnimation/intro_1195.png new file mode 100644 index 0000000..1331e0f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1195.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1196.png b/TheOtherRoles/Resources/IntroAnimation/intro_1196.png new file mode 100644 index 0000000..fa085e1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1196.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1197.png b/TheOtherRoles/Resources/IntroAnimation/intro_1197.png new file mode 100644 index 0000000..ab70234 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1197.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1198.png b/TheOtherRoles/Resources/IntroAnimation/intro_1198.png new file mode 100644 index 0000000..598e9f0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1198.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1199.png b/TheOtherRoles/Resources/IntroAnimation/intro_1199.png new file mode 100644 index 0000000..598e9f0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1199.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1200.png b/TheOtherRoles/Resources/IntroAnimation/intro_1200.png new file mode 100644 index 0000000..598e9f0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1200.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1201.png b/TheOtherRoles/Resources/IntroAnimation/intro_1201.png new file mode 100644 index 0000000..daf309a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1201.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1202.png b/TheOtherRoles/Resources/IntroAnimation/intro_1202.png new file mode 100644 index 0000000..c91a54a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1202.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1203.png b/TheOtherRoles/Resources/IntroAnimation/intro_1203.png new file mode 100644 index 0000000..b969806 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1203.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1204.png b/TheOtherRoles/Resources/IntroAnimation/intro_1204.png new file mode 100644 index 0000000..b0d0a2f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1204.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1205.png b/TheOtherRoles/Resources/IntroAnimation/intro_1205.png new file mode 100644 index 0000000..a247af5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1205.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1206.png b/TheOtherRoles/Resources/IntroAnimation/intro_1206.png new file mode 100644 index 0000000..292fffc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1206.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1207.png b/TheOtherRoles/Resources/IntroAnimation/intro_1207.png new file mode 100644 index 0000000..54f203b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1207.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1208.png b/TheOtherRoles/Resources/IntroAnimation/intro_1208.png new file mode 100644 index 0000000..3270848 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1208.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1209.png b/TheOtherRoles/Resources/IntroAnimation/intro_1209.png new file mode 100644 index 0000000..4dd2888 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1209.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1210.png b/TheOtherRoles/Resources/IntroAnimation/intro_1210.png new file mode 100644 index 0000000..9e8bb10 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1210.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1211.png b/TheOtherRoles/Resources/IntroAnimation/intro_1211.png new file mode 100644 index 0000000..581e131 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1211.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1212.png b/TheOtherRoles/Resources/IntroAnimation/intro_1212.png new file mode 100644 index 0000000..6ff3263 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1212.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1213.png b/TheOtherRoles/Resources/IntroAnimation/intro_1213.png new file mode 100644 index 0000000..2687a69 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1213.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1214.png b/TheOtherRoles/Resources/IntroAnimation/intro_1214.png new file mode 100644 index 0000000..af723bc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1214.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1215.png b/TheOtherRoles/Resources/IntroAnimation/intro_1215.png new file mode 100644 index 0000000..b03b7b8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1215.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1216.png b/TheOtherRoles/Resources/IntroAnimation/intro_1216.png new file mode 100644 index 0000000..f2e46bb Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1216.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1217.png b/TheOtherRoles/Resources/IntroAnimation/intro_1217.png new file mode 100644 index 0000000..34ac4d0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1217.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1218.png b/TheOtherRoles/Resources/IntroAnimation/intro_1218.png new file mode 100644 index 0000000..0170a5f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1218.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1219.png b/TheOtherRoles/Resources/IntroAnimation/intro_1219.png new file mode 100644 index 0000000..3bbfc6d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1219.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1220.png b/TheOtherRoles/Resources/IntroAnimation/intro_1220.png new file mode 100644 index 0000000..a6f4b1e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1220.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1221.png b/TheOtherRoles/Resources/IntroAnimation/intro_1221.png new file mode 100644 index 0000000..b49a9e0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1221.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1222.png b/TheOtherRoles/Resources/IntroAnimation/intro_1222.png new file mode 100644 index 0000000..56c5563 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1222.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1223.png b/TheOtherRoles/Resources/IntroAnimation/intro_1223.png new file mode 100644 index 0000000..8d39290 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1223.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1224.png b/TheOtherRoles/Resources/IntroAnimation/intro_1224.png new file mode 100644 index 0000000..8d39290 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1224.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1225.png b/TheOtherRoles/Resources/IntroAnimation/intro_1225.png new file mode 100644 index 0000000..8d39290 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1225.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1226.png b/TheOtherRoles/Resources/IntroAnimation/intro_1226.png new file mode 100644 index 0000000..10aac40 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1226.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1227.png b/TheOtherRoles/Resources/IntroAnimation/intro_1227.png new file mode 100644 index 0000000..9651c16 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1227.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1228.png b/TheOtherRoles/Resources/IntroAnimation/intro_1228.png new file mode 100644 index 0000000..11c2415 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1228.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1229.png b/TheOtherRoles/Resources/IntroAnimation/intro_1229.png new file mode 100644 index 0000000..966ee2f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1229.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1230.png b/TheOtherRoles/Resources/IntroAnimation/intro_1230.png new file mode 100644 index 0000000..aa54c53 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1230.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1231.png b/TheOtherRoles/Resources/IntroAnimation/intro_1231.png new file mode 100644 index 0000000..ab5718c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1231.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1232.png b/TheOtherRoles/Resources/IntroAnimation/intro_1232.png new file mode 100644 index 0000000..486ad30 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1232.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1233.png b/TheOtherRoles/Resources/IntroAnimation/intro_1233.png new file mode 100644 index 0000000..11dc866 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1233.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1234.png b/TheOtherRoles/Resources/IntroAnimation/intro_1234.png new file mode 100644 index 0000000..97ee1e5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1234.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1235.png b/TheOtherRoles/Resources/IntroAnimation/intro_1235.png new file mode 100644 index 0000000..2f76a49 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1235.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1236.png b/TheOtherRoles/Resources/IntroAnimation/intro_1236.png new file mode 100644 index 0000000..ae33fb3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1236.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1237.png b/TheOtherRoles/Resources/IntroAnimation/intro_1237.png new file mode 100644 index 0000000..1616db5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1237.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1238.png b/TheOtherRoles/Resources/IntroAnimation/intro_1238.png new file mode 100644 index 0000000..2185475 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1238.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1239.png b/TheOtherRoles/Resources/IntroAnimation/intro_1239.png new file mode 100644 index 0000000..c46f5dd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1239.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1240.png b/TheOtherRoles/Resources/IntroAnimation/intro_1240.png new file mode 100644 index 0000000..54dfd84 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1240.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1241.png b/TheOtherRoles/Resources/IntroAnimation/intro_1241.png new file mode 100644 index 0000000..1660b53 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1241.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1242.png b/TheOtherRoles/Resources/IntroAnimation/intro_1242.png new file mode 100644 index 0000000..7c8841a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1242.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1243.png b/TheOtherRoles/Resources/IntroAnimation/intro_1243.png new file mode 100644 index 0000000..6e4fdd8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1243.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1244.png b/TheOtherRoles/Resources/IntroAnimation/intro_1244.png new file mode 100644 index 0000000..e72ab8f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1244.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1245.png b/TheOtherRoles/Resources/IntroAnimation/intro_1245.png new file mode 100644 index 0000000..04a289d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1245.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1246.png b/TheOtherRoles/Resources/IntroAnimation/intro_1246.png new file mode 100644 index 0000000..e2d0137 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1246.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1247.png b/TheOtherRoles/Resources/IntroAnimation/intro_1247.png new file mode 100644 index 0000000..db1b56d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1247.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1248.png b/TheOtherRoles/Resources/IntroAnimation/intro_1248.png new file mode 100644 index 0000000..26f1dc8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1248.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1249.png b/TheOtherRoles/Resources/IntroAnimation/intro_1249.png new file mode 100644 index 0000000..26f1dc8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1249.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1250.png b/TheOtherRoles/Resources/IntroAnimation/intro_1250.png new file mode 100644 index 0000000..26f1dc8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1250.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1251.png b/TheOtherRoles/Resources/IntroAnimation/intro_1251.png new file mode 100644 index 0000000..6bf6b55 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1251.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1252.png b/TheOtherRoles/Resources/IntroAnimation/intro_1252.png new file mode 100644 index 0000000..037c0aa Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1252.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1253.png b/TheOtherRoles/Resources/IntroAnimation/intro_1253.png new file mode 100644 index 0000000..df0b11b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1253.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1254.png b/TheOtherRoles/Resources/IntroAnimation/intro_1254.png new file mode 100644 index 0000000..2877dba Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1254.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1255.png b/TheOtherRoles/Resources/IntroAnimation/intro_1255.png new file mode 100644 index 0000000..986a2bd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1255.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1256.png b/TheOtherRoles/Resources/IntroAnimation/intro_1256.png new file mode 100644 index 0000000..b1276a8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1256.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1257.png b/TheOtherRoles/Resources/IntroAnimation/intro_1257.png new file mode 100644 index 0000000..1f74e7a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1257.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1258.png b/TheOtherRoles/Resources/IntroAnimation/intro_1258.png new file mode 100644 index 0000000..0eb9a30 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1258.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1259.png b/TheOtherRoles/Resources/IntroAnimation/intro_1259.png new file mode 100644 index 0000000..e874b90 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1259.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1260.png b/TheOtherRoles/Resources/IntroAnimation/intro_1260.png new file mode 100644 index 0000000..ea87be7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1260.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1261.png b/TheOtherRoles/Resources/IntroAnimation/intro_1261.png new file mode 100644 index 0000000..c4157cb Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1261.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1262.png b/TheOtherRoles/Resources/IntroAnimation/intro_1262.png new file mode 100644 index 0000000..5dccbf3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1262.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1263.png b/TheOtherRoles/Resources/IntroAnimation/intro_1263.png new file mode 100644 index 0000000..854ac4f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1263.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1264.png b/TheOtherRoles/Resources/IntroAnimation/intro_1264.png new file mode 100644 index 0000000..4e91024 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1264.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1265.png b/TheOtherRoles/Resources/IntroAnimation/intro_1265.png new file mode 100644 index 0000000..570451f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1265.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1266.png b/TheOtherRoles/Resources/IntroAnimation/intro_1266.png new file mode 100644 index 0000000..97bc8f2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1266.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1267.png b/TheOtherRoles/Resources/IntroAnimation/intro_1267.png new file mode 100644 index 0000000..0fa2a66 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1267.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1268.png b/TheOtherRoles/Resources/IntroAnimation/intro_1268.png new file mode 100644 index 0000000..995e9b1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1268.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1269.png b/TheOtherRoles/Resources/IntroAnimation/intro_1269.png new file mode 100644 index 0000000..1000cd7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1269.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1270.png b/TheOtherRoles/Resources/IntroAnimation/intro_1270.png new file mode 100644 index 0000000..eb129ca Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1270.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1271.png b/TheOtherRoles/Resources/IntroAnimation/intro_1271.png new file mode 100644 index 0000000..6f16661 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1271.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1272.png b/TheOtherRoles/Resources/IntroAnimation/intro_1272.png new file mode 100644 index 0000000..174efc9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1272.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1273.png b/TheOtherRoles/Resources/IntroAnimation/intro_1273.png new file mode 100644 index 0000000..e5916e9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1273.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1274.png b/TheOtherRoles/Resources/IntroAnimation/intro_1274.png new file mode 100644 index 0000000..e5916e9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1274.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1275.png b/TheOtherRoles/Resources/IntroAnimation/intro_1275.png new file mode 100644 index 0000000..e5916e9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1275.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1276.png b/TheOtherRoles/Resources/IntroAnimation/intro_1276.png new file mode 100644 index 0000000..e30e20f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1276.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1277.png b/TheOtherRoles/Resources/IntroAnimation/intro_1277.png new file mode 100644 index 0000000..7376b02 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1277.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1278.png b/TheOtherRoles/Resources/IntroAnimation/intro_1278.png new file mode 100644 index 0000000..54ab839 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1278.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1279.png b/TheOtherRoles/Resources/IntroAnimation/intro_1279.png new file mode 100644 index 0000000..cbe274b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1279.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1280.png b/TheOtherRoles/Resources/IntroAnimation/intro_1280.png new file mode 100644 index 0000000..787fbe6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1280.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1281.png b/TheOtherRoles/Resources/IntroAnimation/intro_1281.png new file mode 100644 index 0000000..dcc41d1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1281.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1282.png b/TheOtherRoles/Resources/IntroAnimation/intro_1282.png new file mode 100644 index 0000000..d1ca785 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1282.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1283.png b/TheOtherRoles/Resources/IntroAnimation/intro_1283.png new file mode 100644 index 0000000..cd3c9d0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1283.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1284.png b/TheOtherRoles/Resources/IntroAnimation/intro_1284.png new file mode 100644 index 0000000..7778c5a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1284.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1285.png b/TheOtherRoles/Resources/IntroAnimation/intro_1285.png new file mode 100644 index 0000000..2e881e0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1285.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1286.png b/TheOtherRoles/Resources/IntroAnimation/intro_1286.png new file mode 100644 index 0000000..38c0277 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1286.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1287.png b/TheOtherRoles/Resources/IntroAnimation/intro_1287.png new file mode 100644 index 0000000..6057ed6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1287.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1288.png b/TheOtherRoles/Resources/IntroAnimation/intro_1288.png new file mode 100644 index 0000000..8159c87 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1288.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1289.png b/TheOtherRoles/Resources/IntroAnimation/intro_1289.png new file mode 100644 index 0000000..32bf5e7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1289.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1290.png b/TheOtherRoles/Resources/IntroAnimation/intro_1290.png new file mode 100644 index 0000000..beec0fa Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1290.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1291.png b/TheOtherRoles/Resources/IntroAnimation/intro_1291.png new file mode 100644 index 0000000..1dd797b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1291.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1292.png b/TheOtherRoles/Resources/IntroAnimation/intro_1292.png new file mode 100644 index 0000000..6a41ac1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1292.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1293.png b/TheOtherRoles/Resources/IntroAnimation/intro_1293.png new file mode 100644 index 0000000..ca71ad4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1293.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1294.png b/TheOtherRoles/Resources/IntroAnimation/intro_1294.png new file mode 100644 index 0000000..6d381cc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1294.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1295.png b/TheOtherRoles/Resources/IntroAnimation/intro_1295.png new file mode 100644 index 0000000..c8aa850 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1295.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1296.png b/TheOtherRoles/Resources/IntroAnimation/intro_1296.png new file mode 100644 index 0000000..9e071f1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1296.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1297.png b/TheOtherRoles/Resources/IntroAnimation/intro_1297.png new file mode 100644 index 0000000..2a1acad Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1297.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1298.png b/TheOtherRoles/Resources/IntroAnimation/intro_1298.png new file mode 100644 index 0000000..ab425ba Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1298.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1299.png b/TheOtherRoles/Resources/IntroAnimation/intro_1299.png new file mode 100644 index 0000000..ab425ba Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1299.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1300.png b/TheOtherRoles/Resources/IntroAnimation/intro_1300.png new file mode 100644 index 0000000..ab425ba Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1300.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1301.png b/TheOtherRoles/Resources/IntroAnimation/intro_1301.png new file mode 100644 index 0000000..b1cf153 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1301.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1302.png b/TheOtherRoles/Resources/IntroAnimation/intro_1302.png new file mode 100644 index 0000000..7e025c5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1302.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1303.png b/TheOtherRoles/Resources/IntroAnimation/intro_1303.png new file mode 100644 index 0000000..531f376 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1303.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1304.png b/TheOtherRoles/Resources/IntroAnimation/intro_1304.png new file mode 100644 index 0000000..14dfae3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1304.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1305.png b/TheOtherRoles/Resources/IntroAnimation/intro_1305.png new file mode 100644 index 0000000..0177736 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1305.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1306.png b/TheOtherRoles/Resources/IntroAnimation/intro_1306.png new file mode 100644 index 0000000..6a1942c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1306.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1307.png b/TheOtherRoles/Resources/IntroAnimation/intro_1307.png new file mode 100644 index 0000000..22e6916 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1307.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1308.png b/TheOtherRoles/Resources/IntroAnimation/intro_1308.png new file mode 100644 index 0000000..68b38f9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1308.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1309.png b/TheOtherRoles/Resources/IntroAnimation/intro_1309.png new file mode 100644 index 0000000..1d8627a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1309.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1310.png b/TheOtherRoles/Resources/IntroAnimation/intro_1310.png new file mode 100644 index 0000000..fca7987 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1310.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1311.png b/TheOtherRoles/Resources/IntroAnimation/intro_1311.png new file mode 100644 index 0000000..9afa15a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1311.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1312.png b/TheOtherRoles/Resources/IntroAnimation/intro_1312.png new file mode 100644 index 0000000..1d526b3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1312.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1313.png b/TheOtherRoles/Resources/IntroAnimation/intro_1313.png new file mode 100644 index 0000000..5ebe211 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1313.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1314.png b/TheOtherRoles/Resources/IntroAnimation/intro_1314.png new file mode 100644 index 0000000..be831f5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1314.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1315.png b/TheOtherRoles/Resources/IntroAnimation/intro_1315.png new file mode 100644 index 0000000..42e8488 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1315.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1316.png b/TheOtherRoles/Resources/IntroAnimation/intro_1316.png new file mode 100644 index 0000000..e6f7b50 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1316.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1317.png b/TheOtherRoles/Resources/IntroAnimation/intro_1317.png new file mode 100644 index 0000000..1b1a9e4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1317.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1318.png b/TheOtherRoles/Resources/IntroAnimation/intro_1318.png new file mode 100644 index 0000000..5ea326f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1318.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1319.png b/TheOtherRoles/Resources/IntroAnimation/intro_1319.png new file mode 100644 index 0000000..11a96d5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1319.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1320.png b/TheOtherRoles/Resources/IntroAnimation/intro_1320.png new file mode 100644 index 0000000..cc66fc6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1320.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1321.png b/TheOtherRoles/Resources/IntroAnimation/intro_1321.png new file mode 100644 index 0000000..240e392 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1321.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1322.png b/TheOtherRoles/Resources/IntroAnimation/intro_1322.png new file mode 100644 index 0000000..b9396a1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1322.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1323.png b/TheOtherRoles/Resources/IntroAnimation/intro_1323.png new file mode 100644 index 0000000..830dd6f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1323.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1324.png b/TheOtherRoles/Resources/IntroAnimation/intro_1324.png new file mode 100644 index 0000000..830dd6f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1324.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1325.png b/TheOtherRoles/Resources/IntroAnimation/intro_1325.png new file mode 100644 index 0000000..830dd6f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1325.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1326.png b/TheOtherRoles/Resources/IntroAnimation/intro_1326.png new file mode 100644 index 0000000..5ffcaa2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1326.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1327.png b/TheOtherRoles/Resources/IntroAnimation/intro_1327.png new file mode 100644 index 0000000..72e3892 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1327.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1328.png b/TheOtherRoles/Resources/IntroAnimation/intro_1328.png new file mode 100644 index 0000000..385f186 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1328.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1329.png b/TheOtherRoles/Resources/IntroAnimation/intro_1329.png new file mode 100644 index 0000000..8381612 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1329.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1330.png b/TheOtherRoles/Resources/IntroAnimation/intro_1330.png new file mode 100644 index 0000000..c0b4cd8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1330.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1331.png b/TheOtherRoles/Resources/IntroAnimation/intro_1331.png new file mode 100644 index 0000000..a25ff7b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1331.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1332.png b/TheOtherRoles/Resources/IntroAnimation/intro_1332.png new file mode 100644 index 0000000..ef21e53 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1332.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1333.png b/TheOtherRoles/Resources/IntroAnimation/intro_1333.png new file mode 100644 index 0000000..17c8b69 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1333.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1334.png b/TheOtherRoles/Resources/IntroAnimation/intro_1334.png new file mode 100644 index 0000000..3f30911 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1334.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1335.png b/TheOtherRoles/Resources/IntroAnimation/intro_1335.png new file mode 100644 index 0000000..839aa95 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1335.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1336.png b/TheOtherRoles/Resources/IntroAnimation/intro_1336.png new file mode 100644 index 0000000..8b7262b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1336.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1337.png b/TheOtherRoles/Resources/IntroAnimation/intro_1337.png new file mode 100644 index 0000000..ef1f13e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1337.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1338.png b/TheOtherRoles/Resources/IntroAnimation/intro_1338.png new file mode 100644 index 0000000..8c677c7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1338.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1339.png b/TheOtherRoles/Resources/IntroAnimation/intro_1339.png new file mode 100644 index 0000000..00a49b2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1339.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1340.png b/TheOtherRoles/Resources/IntroAnimation/intro_1340.png new file mode 100644 index 0000000..257554e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1340.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1341.png b/TheOtherRoles/Resources/IntroAnimation/intro_1341.png new file mode 100644 index 0000000..2360098 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1341.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1342.png b/TheOtherRoles/Resources/IntroAnimation/intro_1342.png new file mode 100644 index 0000000..9824ebe Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1342.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1343.png b/TheOtherRoles/Resources/IntroAnimation/intro_1343.png new file mode 100644 index 0000000..c3b3d5e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1343.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1344.png b/TheOtherRoles/Resources/IntroAnimation/intro_1344.png new file mode 100644 index 0000000..a6406e1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1344.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1345.png b/TheOtherRoles/Resources/IntroAnimation/intro_1345.png new file mode 100644 index 0000000..b3038a9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1345.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1346.png b/TheOtherRoles/Resources/IntroAnimation/intro_1346.png new file mode 100644 index 0000000..c74b7ca Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1346.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1347.png b/TheOtherRoles/Resources/IntroAnimation/intro_1347.png new file mode 100644 index 0000000..618efb1 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1347.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1348.png b/TheOtherRoles/Resources/IntroAnimation/intro_1348.png new file mode 100644 index 0000000..657e43d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1348.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1349.png b/TheOtherRoles/Resources/IntroAnimation/intro_1349.png new file mode 100644 index 0000000..657e43d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1349.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1350.png b/TheOtherRoles/Resources/IntroAnimation/intro_1350.png new file mode 100644 index 0000000..657e43d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1350.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1351.png b/TheOtherRoles/Resources/IntroAnimation/intro_1351.png new file mode 100644 index 0000000..abe5525 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1351.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1352.png b/TheOtherRoles/Resources/IntroAnimation/intro_1352.png new file mode 100644 index 0000000..2422222 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1352.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1353.png b/TheOtherRoles/Resources/IntroAnimation/intro_1353.png new file mode 100644 index 0000000..f30e900 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1353.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1354.png b/TheOtherRoles/Resources/IntroAnimation/intro_1354.png new file mode 100644 index 0000000..c91854c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1354.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1355.png b/TheOtherRoles/Resources/IntroAnimation/intro_1355.png new file mode 100644 index 0000000..3b424fc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1355.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1356.png b/TheOtherRoles/Resources/IntroAnimation/intro_1356.png new file mode 100644 index 0000000..6cacff6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1356.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1357.png b/TheOtherRoles/Resources/IntroAnimation/intro_1357.png new file mode 100644 index 0000000..1c34091 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1357.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1358.png b/TheOtherRoles/Resources/IntroAnimation/intro_1358.png new file mode 100644 index 0000000..3796f73 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1358.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1359.png b/TheOtherRoles/Resources/IntroAnimation/intro_1359.png new file mode 100644 index 0000000..c0f318e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1359.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1360.png b/TheOtherRoles/Resources/IntroAnimation/intro_1360.png new file mode 100644 index 0000000..ec2edea Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1360.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1361.png b/TheOtherRoles/Resources/IntroAnimation/intro_1361.png new file mode 100644 index 0000000..0bc905c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1361.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1362.png b/TheOtherRoles/Resources/IntroAnimation/intro_1362.png new file mode 100644 index 0000000..09cfde0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1362.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1363.png b/TheOtherRoles/Resources/IntroAnimation/intro_1363.png new file mode 100644 index 0000000..de05206 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1363.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1364.png b/TheOtherRoles/Resources/IntroAnimation/intro_1364.png new file mode 100644 index 0000000..94ed729 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1364.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1365.png b/TheOtherRoles/Resources/IntroAnimation/intro_1365.png new file mode 100644 index 0000000..b2a3626 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1365.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1366.png b/TheOtherRoles/Resources/IntroAnimation/intro_1366.png new file mode 100644 index 0000000..b59f5c5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1366.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1367.png b/TheOtherRoles/Resources/IntroAnimation/intro_1367.png new file mode 100644 index 0000000..3f1398d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1367.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1368.png b/TheOtherRoles/Resources/IntroAnimation/intro_1368.png new file mode 100644 index 0000000..2507574 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1368.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1369.png b/TheOtherRoles/Resources/IntroAnimation/intro_1369.png new file mode 100644 index 0000000..d2c96dd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1369.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1370.png b/TheOtherRoles/Resources/IntroAnimation/intro_1370.png new file mode 100644 index 0000000..9d24f04 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1370.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1371.png b/TheOtherRoles/Resources/IntroAnimation/intro_1371.png new file mode 100644 index 0000000..d070362 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1371.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1372.png b/TheOtherRoles/Resources/IntroAnimation/intro_1372.png new file mode 100644 index 0000000..57748e7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1372.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1373.png b/TheOtherRoles/Resources/IntroAnimation/intro_1373.png new file mode 100644 index 0000000..997d449 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1373.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1374.png b/TheOtherRoles/Resources/IntroAnimation/intro_1374.png new file mode 100644 index 0000000..997d449 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1374.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1375.png b/TheOtherRoles/Resources/IntroAnimation/intro_1375.png new file mode 100644 index 0000000..997d449 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1375.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1376.png b/TheOtherRoles/Resources/IntroAnimation/intro_1376.png new file mode 100644 index 0000000..32add5e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1376.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1377.png b/TheOtherRoles/Resources/IntroAnimation/intro_1377.png new file mode 100644 index 0000000..ee1c7a8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1377.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1378.png b/TheOtherRoles/Resources/IntroAnimation/intro_1378.png new file mode 100644 index 0000000..cc988f4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1378.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1379.png b/TheOtherRoles/Resources/IntroAnimation/intro_1379.png new file mode 100644 index 0000000..58e3edd Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1379.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1380.png b/TheOtherRoles/Resources/IntroAnimation/intro_1380.png new file mode 100644 index 0000000..3dc1324 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1380.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1381.png b/TheOtherRoles/Resources/IntroAnimation/intro_1381.png new file mode 100644 index 0000000..23696ad Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1381.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1382.png b/TheOtherRoles/Resources/IntroAnimation/intro_1382.png new file mode 100644 index 0000000..2ad4ec2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1382.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1383.png b/TheOtherRoles/Resources/IntroAnimation/intro_1383.png new file mode 100644 index 0000000..8ebb893 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1383.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1384.png b/TheOtherRoles/Resources/IntroAnimation/intro_1384.png new file mode 100644 index 0000000..930a1ef Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1384.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1385.png b/TheOtherRoles/Resources/IntroAnimation/intro_1385.png new file mode 100644 index 0000000..d3843c6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1385.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1386.png b/TheOtherRoles/Resources/IntroAnimation/intro_1386.png new file mode 100644 index 0000000..f401678 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1386.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1387.png b/TheOtherRoles/Resources/IntroAnimation/intro_1387.png new file mode 100644 index 0000000..97cb744 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1387.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1388.png b/TheOtherRoles/Resources/IntroAnimation/intro_1388.png new file mode 100644 index 0000000..9a25aa6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1388.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1389.png b/TheOtherRoles/Resources/IntroAnimation/intro_1389.png new file mode 100644 index 0000000..79c19e9 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1389.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1390.png b/TheOtherRoles/Resources/IntroAnimation/intro_1390.png new file mode 100644 index 0000000..c7c5343 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1390.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1391.png b/TheOtherRoles/Resources/IntroAnimation/intro_1391.png new file mode 100644 index 0000000..a65f391 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1391.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1392.png b/TheOtherRoles/Resources/IntroAnimation/intro_1392.png new file mode 100644 index 0000000..f6e9f3a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1392.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1393.png b/TheOtherRoles/Resources/IntroAnimation/intro_1393.png new file mode 100644 index 0000000..e088a92 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1393.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1394.png b/TheOtherRoles/Resources/IntroAnimation/intro_1394.png new file mode 100644 index 0000000..c4d4159 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1394.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1395.png b/TheOtherRoles/Resources/IntroAnimation/intro_1395.png new file mode 100644 index 0000000..8c73adb Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1395.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1396.png b/TheOtherRoles/Resources/IntroAnimation/intro_1396.png new file mode 100644 index 0000000..290e072 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1396.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1397.png b/TheOtherRoles/Resources/IntroAnimation/intro_1397.png new file mode 100644 index 0000000..3a0734e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1397.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1398.png b/TheOtherRoles/Resources/IntroAnimation/intro_1398.png new file mode 100644 index 0000000..abe8ffa Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1398.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1399.png b/TheOtherRoles/Resources/IntroAnimation/intro_1399.png new file mode 100644 index 0000000..abe8ffa Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1399.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1400.png b/TheOtherRoles/Resources/IntroAnimation/intro_1400.png new file mode 100644 index 0000000..abe8ffa Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1400.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1401.png b/TheOtherRoles/Resources/IntroAnimation/intro_1401.png new file mode 100644 index 0000000..207bb18 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1401.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1402.png b/TheOtherRoles/Resources/IntroAnimation/intro_1402.png new file mode 100644 index 0000000..d2b873f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1402.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1403.png b/TheOtherRoles/Resources/IntroAnimation/intro_1403.png new file mode 100644 index 0000000..f8d79e7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1403.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1404.png b/TheOtherRoles/Resources/IntroAnimation/intro_1404.png new file mode 100644 index 0000000..ab54bde Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1404.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1405.png b/TheOtherRoles/Resources/IntroAnimation/intro_1405.png new file mode 100644 index 0000000..d892fb4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1405.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1406.png b/TheOtherRoles/Resources/IntroAnimation/intro_1406.png new file mode 100644 index 0000000..d34b3cc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1406.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1407.png b/TheOtherRoles/Resources/IntroAnimation/intro_1407.png new file mode 100644 index 0000000..26c615f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1407.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1408.png b/TheOtherRoles/Resources/IntroAnimation/intro_1408.png new file mode 100644 index 0000000..1bacf3d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1408.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1409.png b/TheOtherRoles/Resources/IntroAnimation/intro_1409.png new file mode 100644 index 0000000..feabe50 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1409.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1410.png b/TheOtherRoles/Resources/IntroAnimation/intro_1410.png new file mode 100644 index 0000000..6386e2f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1410.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1411.png b/TheOtherRoles/Resources/IntroAnimation/intro_1411.png new file mode 100644 index 0000000..e25a50f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1411.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1412.png b/TheOtherRoles/Resources/IntroAnimation/intro_1412.png new file mode 100644 index 0000000..810c5d2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1412.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1413.png b/TheOtherRoles/Resources/IntroAnimation/intro_1413.png new file mode 100644 index 0000000..dad8e33 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1413.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1414.png b/TheOtherRoles/Resources/IntroAnimation/intro_1414.png new file mode 100644 index 0000000..bc542ae Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1414.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1415.png b/TheOtherRoles/Resources/IntroAnimation/intro_1415.png new file mode 100644 index 0000000..7199708 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1415.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1416.png b/TheOtherRoles/Resources/IntroAnimation/intro_1416.png new file mode 100644 index 0000000..310e835 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1416.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1417.png b/TheOtherRoles/Resources/IntroAnimation/intro_1417.png new file mode 100644 index 0000000..7da23a0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1417.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1418.png b/TheOtherRoles/Resources/IntroAnimation/intro_1418.png new file mode 100644 index 0000000..7766c52 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1418.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1419.png b/TheOtherRoles/Resources/IntroAnimation/intro_1419.png new file mode 100644 index 0000000..3c9dd2e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1419.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1420.png b/TheOtherRoles/Resources/IntroAnimation/intro_1420.png new file mode 100644 index 0000000..9229dae Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1420.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1421.png b/TheOtherRoles/Resources/IntroAnimation/intro_1421.png new file mode 100644 index 0000000..bded8f4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1421.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1422.png b/TheOtherRoles/Resources/IntroAnimation/intro_1422.png new file mode 100644 index 0000000..bf401df Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1422.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1423.png b/TheOtherRoles/Resources/IntroAnimation/intro_1423.png new file mode 100644 index 0000000..8404c1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1423.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1424.png b/TheOtherRoles/Resources/IntroAnimation/intro_1424.png new file mode 100644 index 0000000..8404c1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1424.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1425.png b/TheOtherRoles/Resources/IntroAnimation/intro_1425.png new file mode 100644 index 0000000..8404c1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1425.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1426.png b/TheOtherRoles/Resources/IntroAnimation/intro_1426.png new file mode 100644 index 0000000..ed030f0 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1426.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1427.png b/TheOtherRoles/Resources/IntroAnimation/intro_1427.png new file mode 100644 index 0000000..2f17fdc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1427.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1428.png b/TheOtherRoles/Resources/IntroAnimation/intro_1428.png new file mode 100644 index 0000000..23e8c2d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1428.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1429.png b/TheOtherRoles/Resources/IntroAnimation/intro_1429.png new file mode 100644 index 0000000..e50e02b Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1429.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1430.png b/TheOtherRoles/Resources/IntroAnimation/intro_1430.png new file mode 100644 index 0000000..e0e04c5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1430.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1431.png b/TheOtherRoles/Resources/IntroAnimation/intro_1431.png new file mode 100644 index 0000000..7cdb975 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1431.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1432.png b/TheOtherRoles/Resources/IntroAnimation/intro_1432.png new file mode 100644 index 0000000..b4db382 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1432.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1433.png b/TheOtherRoles/Resources/IntroAnimation/intro_1433.png new file mode 100644 index 0000000..73a93d5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1433.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1434.png b/TheOtherRoles/Resources/IntroAnimation/intro_1434.png new file mode 100644 index 0000000..da7ecef Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1434.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1435.png b/TheOtherRoles/Resources/IntroAnimation/intro_1435.png new file mode 100644 index 0000000..483a9c4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1435.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1436.png b/TheOtherRoles/Resources/IntroAnimation/intro_1436.png new file mode 100644 index 0000000..bbbbbf5 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1436.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1437.png b/TheOtherRoles/Resources/IntroAnimation/intro_1437.png new file mode 100644 index 0000000..2127fb8 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1437.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1438.png b/TheOtherRoles/Resources/IntroAnimation/intro_1438.png new file mode 100644 index 0000000..cd441ab Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1438.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1439.png b/TheOtherRoles/Resources/IntroAnimation/intro_1439.png new file mode 100644 index 0000000..97368c7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1439.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1440.png b/TheOtherRoles/Resources/IntroAnimation/intro_1440.png new file mode 100644 index 0000000..4f6650f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1440.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1441.png b/TheOtherRoles/Resources/IntroAnimation/intro_1441.png new file mode 100644 index 0000000..bf38543 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1441.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1442.png b/TheOtherRoles/Resources/IntroAnimation/intro_1442.png new file mode 100644 index 0000000..ad37cf7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1442.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1443.png b/TheOtherRoles/Resources/IntroAnimation/intro_1443.png new file mode 100644 index 0000000..f4ff973 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1443.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1444.png b/TheOtherRoles/Resources/IntroAnimation/intro_1444.png new file mode 100644 index 0000000..83ab266 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1444.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1445.png b/TheOtherRoles/Resources/IntroAnimation/intro_1445.png new file mode 100644 index 0000000..d7522a7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1445.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1446.png b/TheOtherRoles/Resources/IntroAnimation/intro_1446.png new file mode 100644 index 0000000..343b8ac Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1446.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1447.png b/TheOtherRoles/Resources/IntroAnimation/intro_1447.png new file mode 100644 index 0000000..16823ee Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1447.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1448.png b/TheOtherRoles/Resources/IntroAnimation/intro_1448.png new file mode 100644 index 0000000..ad6a81a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1448.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1449.png b/TheOtherRoles/Resources/IntroAnimation/intro_1449.png new file mode 100644 index 0000000..ad6a81a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1449.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1450.png b/TheOtherRoles/Resources/IntroAnimation/intro_1450.png new file mode 100644 index 0000000..ad6a81a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1450.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1451.png b/TheOtherRoles/Resources/IntroAnimation/intro_1451.png new file mode 100644 index 0000000..9c50baa Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1451.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1452.png b/TheOtherRoles/Resources/IntroAnimation/intro_1452.png new file mode 100644 index 0000000..41d6160 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1452.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1453.png b/TheOtherRoles/Resources/IntroAnimation/intro_1453.png new file mode 100644 index 0000000..191c38d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1453.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1454.png b/TheOtherRoles/Resources/IntroAnimation/intro_1454.png new file mode 100644 index 0000000..25f7169 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1454.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1455.png b/TheOtherRoles/Resources/IntroAnimation/intro_1455.png new file mode 100644 index 0000000..c105617 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1455.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1456.png b/TheOtherRoles/Resources/IntroAnimation/intro_1456.png new file mode 100644 index 0000000..aa5f901 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1456.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1457.png b/TheOtherRoles/Resources/IntroAnimation/intro_1457.png new file mode 100644 index 0000000..aafb8bb Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1457.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1458.png b/TheOtherRoles/Resources/IntroAnimation/intro_1458.png new file mode 100644 index 0000000..1e696f7 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1458.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1459.png b/TheOtherRoles/Resources/IntroAnimation/intro_1459.png new file mode 100644 index 0000000..b2d445c Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1459.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1460.png b/TheOtherRoles/Resources/IntroAnimation/intro_1460.png new file mode 100644 index 0000000..d600627 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1460.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1461.png b/TheOtherRoles/Resources/IntroAnimation/intro_1461.png new file mode 100644 index 0000000..869f330 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1461.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1462.png b/TheOtherRoles/Resources/IntroAnimation/intro_1462.png new file mode 100644 index 0000000..4f499b3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1462.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1463.png b/TheOtherRoles/Resources/IntroAnimation/intro_1463.png new file mode 100644 index 0000000..78cdf56 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1463.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1464.png b/TheOtherRoles/Resources/IntroAnimation/intro_1464.png new file mode 100644 index 0000000..c2dc497 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1464.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1465.png b/TheOtherRoles/Resources/IntroAnimation/intro_1465.png new file mode 100644 index 0000000..6ee4947 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1465.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1466.png b/TheOtherRoles/Resources/IntroAnimation/intro_1466.png new file mode 100644 index 0000000..213bd31 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1466.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1467.png b/TheOtherRoles/Resources/IntroAnimation/intro_1467.png new file mode 100644 index 0000000..b8aa026 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1467.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1468.png b/TheOtherRoles/Resources/IntroAnimation/intro_1468.png new file mode 100644 index 0000000..0befa6a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1468.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1469.png b/TheOtherRoles/Resources/IntroAnimation/intro_1469.png new file mode 100644 index 0000000..2237ba6 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1469.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1470.png b/TheOtherRoles/Resources/IntroAnimation/intro_1470.png new file mode 100644 index 0000000..05af16a Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1470.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1471.png b/TheOtherRoles/Resources/IntroAnimation/intro_1471.png new file mode 100644 index 0000000..0b2c07d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1471.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1472.png b/TheOtherRoles/Resources/IntroAnimation/intro_1472.png new file mode 100644 index 0000000..6ba24c4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1472.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1473.png b/TheOtherRoles/Resources/IntroAnimation/intro_1473.png new file mode 100644 index 0000000..c6ddd88 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1473.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1474.png b/TheOtherRoles/Resources/IntroAnimation/intro_1474.png new file mode 100644 index 0000000..c6ddd88 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1474.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1475.png b/TheOtherRoles/Resources/IntroAnimation/intro_1475.png new file mode 100644 index 0000000..c6ddd88 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1475.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1476.png b/TheOtherRoles/Resources/IntroAnimation/intro_1476.png new file mode 100644 index 0000000..22cc004 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1476.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1477.png b/TheOtherRoles/Resources/IntroAnimation/intro_1477.png new file mode 100644 index 0000000..7c3ac75 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1477.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1478.png b/TheOtherRoles/Resources/IntroAnimation/intro_1478.png new file mode 100644 index 0000000..c1f4879 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1478.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1479.png b/TheOtherRoles/Resources/IntroAnimation/intro_1479.png new file mode 100644 index 0000000..5831545 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1479.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1480.png b/TheOtherRoles/Resources/IntroAnimation/intro_1480.png new file mode 100644 index 0000000..2525457 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1480.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1481.png b/TheOtherRoles/Resources/IntroAnimation/intro_1481.png new file mode 100644 index 0000000..9509d3e Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1481.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1482.png b/TheOtherRoles/Resources/IntroAnimation/intro_1482.png new file mode 100644 index 0000000..e7bf934 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1482.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1483.png b/TheOtherRoles/Resources/IntroAnimation/intro_1483.png new file mode 100644 index 0000000..b750070 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1483.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1484.png b/TheOtherRoles/Resources/IntroAnimation/intro_1484.png new file mode 100644 index 0000000..1f10879 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1484.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1485.png b/TheOtherRoles/Resources/IntroAnimation/intro_1485.png new file mode 100644 index 0000000..c56f6ae Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1485.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1486.png b/TheOtherRoles/Resources/IntroAnimation/intro_1486.png new file mode 100644 index 0000000..8123f05 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1486.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1487.png b/TheOtherRoles/Resources/IntroAnimation/intro_1487.png new file mode 100644 index 0000000..54cf195 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1487.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1488.png b/TheOtherRoles/Resources/IntroAnimation/intro_1488.png new file mode 100644 index 0000000..3d1a13f Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1488.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1489.png b/TheOtherRoles/Resources/IntroAnimation/intro_1489.png new file mode 100644 index 0000000..34322c4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1489.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1490.png b/TheOtherRoles/Resources/IntroAnimation/intro_1490.png new file mode 100644 index 0000000..74dadbc Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1490.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1491.png b/TheOtherRoles/Resources/IntroAnimation/intro_1491.png new file mode 100644 index 0000000..f7acfa3 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1491.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1492.png b/TheOtherRoles/Resources/IntroAnimation/intro_1492.png new file mode 100644 index 0000000..e8c92ab Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1492.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1493.png b/TheOtherRoles/Resources/IntroAnimation/intro_1493.png new file mode 100644 index 0000000..6e5a8a4 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1493.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1494.png b/TheOtherRoles/Resources/IntroAnimation/intro_1494.png new file mode 100644 index 0000000..9f60917 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1494.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1495.png b/TheOtherRoles/Resources/IntroAnimation/intro_1495.png new file mode 100644 index 0000000..5a1c195 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1495.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1496.png b/TheOtherRoles/Resources/IntroAnimation/intro_1496.png new file mode 100644 index 0000000..70e6fe2 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1496.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1497.png b/TheOtherRoles/Resources/IntroAnimation/intro_1497.png new file mode 100644 index 0000000..f71da96 Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1497.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1498.png b/TheOtherRoles/Resources/IntroAnimation/intro_1498.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1498.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1499.png b/TheOtherRoles/Resources/IntroAnimation/intro_1499.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1499.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1500.png b/TheOtherRoles/Resources/IntroAnimation/intro_1500.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1500.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1501.png b/TheOtherRoles/Resources/IntroAnimation/intro_1501.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1501.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1502.png b/TheOtherRoles/Resources/IntroAnimation/intro_1502.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1502.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1503.png b/TheOtherRoles/Resources/IntroAnimation/intro_1503.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1503.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1504.png b/TheOtherRoles/Resources/IntroAnimation/intro_1504.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1504.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1505.png b/TheOtherRoles/Resources/IntroAnimation/intro_1505.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1505.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1506.png b/TheOtherRoles/Resources/IntroAnimation/intro_1506.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1506.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1507.png b/TheOtherRoles/Resources/IntroAnimation/intro_1507.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1507.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1508.png b/TheOtherRoles/Resources/IntroAnimation/intro_1508.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1508.png differ diff --git a/TheOtherRoles/Resources/IntroAnimation/intro_1509.png b/TheOtherRoles/Resources/IntroAnimation/intro_1509.png new file mode 100644 index 0000000..d2dca1d Binary files /dev/null and b/TheOtherRoles/Resources/IntroAnimation/intro_1509.png differ diff --git a/TheOtherRoles/Resources/InvisButton.png b/TheOtherRoles/Resources/InvisButton.png new file mode 100644 index 0000000..8147372 Binary files /dev/null and b/TheOtherRoles/Resources/InvisButton.png differ diff --git a/TheOtherRoles/Resources/Reveal.png b/TheOtherRoles/Resources/Reveal.png new file mode 100644 index 0000000..544351e Binary files /dev/null and b/TheOtherRoles/Resources/Reveal.png differ diff --git a/TheOtherRoles/Resources/SpeedboostButton.png b/TheOtherRoles/Resources/SpeedboostButton.png new file mode 100644 index 0000000..004f4ff Binary files /dev/null and b/TheOtherRoles/Resources/SpeedboostButton.png differ diff --git a/TheOtherRoles/Resources/TabIconPropHuntSettings.png b/TheOtherRoles/Resources/TabIconPropHuntSettings.png new file mode 100644 index 0000000..357b496 Binary files /dev/null and b/TheOtherRoles/Resources/TabIconPropHuntSettings.png differ diff --git a/TheOtherRoles/Resources/Txt/Props.txt b/TheOtherRoles/Resources/Txt/Props.txt new file mode 100644 index 0000000..906cae8 --- /dev/null +++ b/TheOtherRoles/Resources/Txt/Props.txt @@ -0,0 +1,92 @@ +liprop +snowman +Door +nav_chair +onsole +comms-top +SecurityLogger +Table +divertElevStand +launch-pad-right +barrier +gun0001 +table +bridge +bigRock +rockblock +engine_railback +medBayBedHort +medBayBed +lockersBench +reactor_Border-Bottom (1) +reactor_Border-Mid (1) +reactor_Border-Top (1) +cafShelf +storage-boxes1 +storage-box2 (2) +storage-top +storage-mop +weatherPanel +BushesBottom +PlanterFern +PlanterBushTop +admin-tablelower +MapTable +Admin +Surv_Panel +transformer0001 (1) +transformer0001 (2) +transformer0001 (3) +panel_vitals +projector +EmergencyButton +panel_map +telescope +storagebox +rock3 (1) +blockrock +panel_cockpit_map +task_records_right +task_records_rightcen +task_records_left_cen +records_admin_map +lounge_bathroomdoor (1) +lounge_bathroomdoor (2) +lounge_bathroomdoor (3) +TopLeftVert +LeftDoorBottom +task_cams +task_tapes_left +panel_dummy +vault_dummie (1) +vault_dummie (2) +vault_dummie (3) +door_vault +door_gap +task_emergency +LowerCentralVent +LowerTank +NormalPipesVent +NormalElectricalVent +Shelves +NormalStorageVent +NormalLobbyVent +TankDeco +PipeDeco +NormalEnginesVent +Main Turbine +OpenEngineVent +NormalSecurityVent +NormalObservationVent +NormalCafeteriaVent +deco_labbench +NormalMedicalVent +UpperTank +UpperCentralVent +NormalCommsVent +NormalUpperLobbyVent +NormalMeetingVent +console-mr-callmeeting +deco-mr-table +console-mr-fishfeed +NormalAdminVent \ No newline at end of file diff --git a/TheOtherRoles/Resources/UnStuck.png b/TheOtherRoles/Resources/UnStuck.png new file mode 100644 index 0000000..028930e Binary files /dev/null and b/TheOtherRoles/Resources/UnStuck.png differ diff --git a/TheOtherRoles/Resources/poolablesBackground.jpg b/TheOtherRoles/Resources/poolablesBackground.jpg new file mode 100644 index 0000000..403c148 Binary files /dev/null and b/TheOtherRoles/Resources/poolablesBackground.jpg differ diff --git a/TheOtherRoles/RoleInfo.cs b/TheOtherRoles/RoleInfo.cs index d2c3c80..29ba52e 100644 --- a/TheOtherRoles/RoleInfo.cs +++ b/TheOtherRoles/RoleInfo.cs @@ -77,6 +77,8 @@ namespace TheOtherRoles public static RoleInfo hunter = new RoleInfo("Hunter", Palette.ImpostorRed, Helpers.cs(Palette.ImpostorRed, "Seek and kill everyone"), "Seek and kill everyone", RoleId.Impostor); public static RoleInfo hunted = new RoleInfo("Hunted", Color.white, "Hide", "Hide", RoleId.Crewmate); + public static RoleInfo prop = new RoleInfo("Prop", Color.white, "Disguise As An Object and Survive", "Disguise As An Object", RoleId.Crewmate); + // Modifier @@ -222,12 +224,12 @@ namespace TheOtherRoles if (p == Pursuer.pursuer) infos.Add(pursuer); if (p == Thief.thief) infos.Add(thief); - // Default roles (just impostor, just crewmate, or hunter / hunted for hide n seek + // Default roles (just impostor, just crewmate, or hunter / hunted for hide n seek, prop hunt prop ... if (infos.Count == count) { if (p.Data.Role.IsImpostor) - infos.Add(TORMapOptions.gameMode == CustomGamemodes.HideNSeek ? RoleInfo.hunter : RoleInfo.impostor); + infos.Add(TORMapOptions.gameMode == CustomGamemodes.HideNSeek || TORMapOptions.gameMode == CustomGamemodes.PropHunt ? RoleInfo.hunter : RoleInfo.impostor); else - infos.Add(TORMapOptions.gameMode == CustomGamemodes.HideNSeek ? RoleInfo.hunted : RoleInfo.crewmate); + infos.Add(TORMapOptions.gameMode == CustomGamemodes.HideNSeek ? RoleInfo.hunted : TORMapOptions.gameMode == CustomGamemodes.PropHunt ? RoleInfo.prop : RoleInfo.crewmate); } return infos; diff --git a/TheOtherRoles/SoundEffectsManager.cs b/TheOtherRoles/SoundEffectsManager.cs index 2aef9a7..ba153bb 100644 --- a/TheOtherRoles/SoundEffectsManager.cs +++ b/TheOtherRoles/SoundEffectsManager.cs @@ -38,13 +38,16 @@ namespace TheOtherRoles } - public static void play(string path, float volume=0.8f) + public static void play(string path, float volume=0.8f, bool loop = false) { if (!TORMapOptions.enableSoundEffects) return; AudioClip clipToPlay = get(path); // if (false) clipToPlay = get("exampleClip"); for april fools? stop(path); - if (Constants.ShouldPlaySfx()) SoundManager.Instance.PlaySound(clipToPlay, false, volume); + if (Constants.ShouldPlaySfx()) { + AudioSource source = SoundManager.Instance.PlaySound(clipToPlay, false, volume); + source.loop = loop; + } } public static void playAtPosition(string path, Vector2 position, float maxDuration = 15f, float range = 5f, bool loop = false) { if (!TORMapOptions.enableSoundEffects || !Constants.ShouldPlaySfx()) return; diff --git a/TheOtherRoles/TheOtherRoles.cs b/TheOtherRoles/TheOtherRoles.cs index 5891768..053206a 100644 --- a/TheOtherRoles/TheOtherRoles.cs +++ b/TheOtherRoles/TheOtherRoles.cs @@ -76,6 +76,7 @@ namespace TheOtherRoles // Gamemodes HandleGuesser.clearAndReload(); HideNSeek.clearAndReload(); + PropHunt.clearAndReload(); } @@ -1449,13 +1450,17 @@ namespace TheOtherRoles } } else { int randomNumber = rnd.Next(4); - string typeOfColor = Helpers.isLighterColor(Medium.target.killerIfExisting.Data.DefaultOutfit.ColorId) ? "lighter" : "darker"; + string typeOfColor = Helpers.isLighterColor(Medium.target.killerIfExisting) ? "lighter" : "darker"; float timeSinceDeath = ((float)(Medium.meetingStartTime - Medium.target.timeOfDeath).TotalMilliseconds); - - if (randomNumber == 0) msg = "If my role hasn't been saved, there's no " + RoleInfo.GetRolesString(Medium.target.player, false) + " in the game anymore."; - else if (randomNumber == 1) msg = "I'm not sure, but I guess a " + typeOfColor + " color killed me."; + var roleString = RoleInfo.GetRolesString(Medium.target.player, false); + if (randomNumber == 0) { + if (!roleString.Contains("Impostor") && !roleString.Contains("Crewmate")) + msg = "If my role hasn't been saved, there's no " + roleString + " in the game anymore."; + else + msg = "I am a " + roleString + " without an other role."; + } else if (randomNumber == 1) msg = "I'm not sure, but I guess a " + typeOfColor + " color killed me."; else if (randomNumber == 2) msg = "If I counted correctly, I died " + Math.Round(timeSinceDeath / 1000) + "s before the next meeting started."; - else msg = "It seems like my killer was the " + RoleInfo.GetRolesString(Medium.target.killerIfExisting, false, false, true) + "."; + else msg = "It seems like my killer is the " + RoleInfo.GetRolesString(Medium.target.killerIfExisting, false, false, true) + "."; } if (rnd.NextDouble() < chanceAdditionalInfo) { diff --git a/TheOtherRoles/TheOtherRoles.csproj b/TheOtherRoles/TheOtherRoles.csproj index ab3c7ea..88b8700 100644 --- a/TheOtherRoles/TheOtherRoles.csproj +++ b/TheOtherRoles/TheOtherRoles.csproj @@ -1,7 +1,7 @@  net6.0 - 4.3.4 + 4.4.0 TheOtherRoles Eisbison latest diff --git a/TheOtherRoles/packages.lock.json b/TheOtherRoles/packages.lock.json index 0151fd8..ae1b964 100644 --- a/TheOtherRoles/packages.lock.json +++ b/TheOtherRoles/packages.lock.json @@ -304,30 +304,30 @@ }, "Samboy063.Cpp2IL.Core": { "type": "Transitive", - "resolved": "2022.1.0-development.876", - "contentHash": "yomWiPcMGaQ2JmsP5C22taGSJ75IOGTDme1ysw5V4DLfIt1FBBpxC1XBom2RYG6MZ1SbI1yvEaYNCuAHLZ7+xw==", + "resolved": "2022.1.0-development.866", + "contentHash": "QPMuix/3jRngWBdNSLhAbm9BHYf95Ln1Ph1eCK/cDZdVibxFDFP3a6Yczyx1p7GbN7bRQwrhs2skPJSS/z3m2w==", "dependencies": { "AsmResolver.DotNet": "5.1.0", "Disarm": "2022.1.0-master.26", "Iced": "1.18.0", - "Samboy063.LibCpp2IL": "2022.1.0-development.876", - "StableNameDotNet": "0.1.0-development.876", + "Samboy063.LibCpp2IL": "2022.1.0-development.866", + "StableNameDotNet": "0.1.0-development.866", "js6pak.Gee.External.Capstone": "2.1.0" } }, "Samboy063.LibCpp2IL": { "type": "Transitive", - "resolved": "2022.1.0-development.876", - "contentHash": "KrpK5sySZHMPdeatiCqv5Pw8F7oV4fTRfVBvzKVmRlnO7Ye6Lg6n6t/PQ7VjLH6FiF2kH3YPM2uIp4xMJhGXGg==", + "resolved": "2022.1.0-development.866", + "contentHash": "EcJSWTfQko8SQozozoUT+aQJVWC8wj8C0YUiPBF4rNRId19yTKp2IXcXnI747v+8/aal222QR6WHfoBK2WlVLg==", "dependencies": { "AssetRipper.VersionUtilities": "1.3.1", - "Samboy063.WasmDisassembler": "2022.1.0-development.876" + "Samboy063.WasmDisassembler": "2022.1.0-development.866" } }, "Samboy063.WasmDisassembler": { "type": "Transitive", - "resolved": "2022.1.0-development.876", - "contentHash": "QDDrTjL/WoGP66Fc1HBtPXpmPn7F+0JYiV1xaZetkYtZ4UNMT7k6i2b6Ge4gq2xkK5NV0YpLyuQcVPeuy7u4XA==" + "resolved": "2022.1.0-development.866", + "contentHash": "2QK8F3eISkLcoW/Nt7wtxyQh31EXAqEMBVXXjEnuxyvXpBXxOIGpjmE3pWhGwxQwDCbe4zBsLF1zUiqq3/pXRA==" }, "SemanticVersioning": { "type": "Transitive", @@ -336,8 +336,8 @@ }, "StableNameDotNet": { "type": "Transitive", - "resolved": "0.1.0-development.876", - "contentHash": "e+yo57rKEJoQmTJ8scEbt6l/bqZvZu4hZUZMau/u1tyZI1I42JiXsjcH1+gE/nSQJlKPCykUrO/h+tUVm9I2nw==" + "resolved": "0.1.0-development.866", + "contentHash": "DJb8x4dV3ucDgM12sU28HxCdeqY/JudJbeJG6mgXWDJzpFZw2Jd7JF1pKFRNLzh/0gpo8bCGLQS9gOWZmBjdtg==" }, "System.Collections": { "type": "Transitive",