Skip to content

Commit 6835546

Browse files
committed
Bug fixes for Overload, possibly fixed ghostRenderer color
1 parent 6a993de commit 6835546

5 files changed

Lines changed: 77 additions & 79 deletions

File tree

NewMod/Buttons/Revenant/DoomAwakening.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ public System.Collections.IEnumerator StartDoomAwakening(PlayerControl player)
7575
ghostRenderer.flipX = playerRenderer.flipX;
7676
ghostRenderer.flipY = playerRenderer.flipY;
7777
ghostRenderer.material = new Material(playerRenderer.material);
78-
var color = player.cosmetics.currentBodySprite.BodySprite.color;
79-
ghostRenderer.material.SetColor(ShaderID.BodyColor, color);
78+
PlayerMaterial.SetColors(player.Data.DefaultOutfit.ColorId, ghostRenderer);
8079
ghostRenderer.sortingLayerID = playerRenderer.sortingLayerID;
8180
ghostRenderer.sortingOrder = playerRenderer.sortingOrder + 1;
8281
ghost.transform.position = player.transform.position;

NewMod/Buttons/SpecialAgent/AssignButton.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class AssignButton : CustomActionButton
1717
public override int MaxUses => (int)OptionGroupSingleton<SpecialAgentOptions>.Instance.AssignMaxUses;
1818
public override ButtonLocation Location => ButtonLocation.BottomLeft;
1919
public override float EffectDuration => 0f;
20-
public override LoadableAsset<Sprite> Sprite => MiraAssets.SpecialAgentButton;
20+
public override LoadableAsset<Sprite> Sprite => NewModAsset.SpecialAgentButton;
2121
public override bool Enabled(RoleBehaviour role)
2222
{
2323
return role is SA;

NewMod/NewModEventHandler.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ public static void RegisterAllEvents()
1818
MiraEventManager.RegisterEventHandler<GameEndEvent>(EndGamePatch.OnGameEnd, 1);
1919
registrations.Add($"{nameof(GameEndEvent)}: {nameof(EndGamePatch.OnGameEnd)}");
2020

21-
registrations.Add($"{nameof(EjectionEvent)}: {nameof(OverloadRole.OnPlayerExiled)}");
22-
2321
MiraEventManager.RegisterEventHandler<EnterVentEvent>(VisionaryVentPatch.OnEnterVent);
2422
registrations.Add($"{nameof(EnterVentEvent)}: {nameof(VisionaryVentPatch.OnEnterVent)}");
2523

NewMod/Patches/Roles/MeetingHudPatch.cs

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1+
using System;
2+
using UnityEngine;
3+
using Object = UnityEngine.Object;
4+
using UnityEngine.Events;
15
using System.Collections.Generic;
26
using HarmonyLib;
37
using NewMod.Utilities;
8+
using MiraAPI.Roles;
9+
using MiraAPI.Hud;
10+
using Reactor.Utilities;
411
using System.Linq;
512
using Il2CppInterop.Runtime.InteropTypes.Arrays;
613
using AmongUs.GameOptions;
14+
using NewMod.Roles.NeutralRoles;
715

816
namespace NewMod.Patches.Roles
917
{
@@ -58,10 +66,76 @@ public static bool Prefix(MeetingHud __instance, byte reporter)
5866
__instance.playerStates[i] = voteArea;
5967
}
6068
__instance.SortButtons();
61-
69+
6270
return false;
6371
}
6472
}
73+
[HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.VotingComplete))]
74+
public static class MeetingHud_VotingComplete_Patch
75+
{
76+
public static void Postfix(MeetingHud __instance, MeetingHud.VoterState[] states, NetworkedPlayerInfo exiled, bool tie)
77+
{
78+
if (tie || exiled == null) return;
79+
80+
var exiledPlayer = Utils.PlayerById(exiled.PlayerId);
81+
foreach (var overload in PlayerControl.AllPlayerControls.ToArray().Where(p => p.AmOwner && p.Data.Role is OverloadRole))
82+
{
83+
if (!(exiledPlayer.Data.Role is ICustomRole))
84+
{
85+
if (exiledPlayer.Data.Role.Ability == null)
86+
{
87+
Coroutines.Start(CoroutinesHelper.CoNotify("<color=orange>No ability to absorb from this player.</color>"));
88+
continue;
89+
}
90+
if (OverloadRole.AbsorbedAbilityCount >= 3)
91+
{
92+
Coroutines.Start(CoroutinesHelper.CoNotify("<color=red>Maximum abilities absorbed.</color>"));
93+
continue;
94+
}
95+
OverloadRole.AbsorbedAbilityCount++;
96+
var role = exiledPlayer.Data.Role;
97+
98+
var absorbedButton = Object.Instantiate(HudManager.Instance.AbilityButton, HudManager.Instance.AbilityButton.transform.parent);
99+
absorbedButton.SetFromSettings(role.Ability);
100+
101+
var pb = absorbedButton.GetComponent<PassiveButton>();
102+
pb.OnClick.RemoveAllListeners();
103+
pb.OnClick.AddListener((UnityAction)role.UseAbility);
104+
105+
Coroutines.Start(CoroutinesHelper.CoNotify(
106+
$"<color=green>Ability absorbed from {exiledPlayer.Data.PlayerName}. Total absorbed: {OverloadRole.AbsorbedAbilityCount}</color>"));
107+
}
108+
else
109+
{
110+
if (OverloadRole.AbsorbedAbilityCount >= 3)
111+
{
112+
Coroutines.Start(CoroutinesHelper.CoNotify("<color=red>Maximum abilities absorbed.</color>"));
113+
continue;
114+
}
115+
OverloadRole.AbsorbedAbilityCount++;
116+
var customRole = (ICustomRole)exiledPlayer.Data.Role;
117+
var parentMod = customRole.ParentMod;
118+
Debug.Log(parentMod == null);
119+
120+
var buttons = parentMod.GetButtons();
121+
Debug.Log(buttons.Count);
122+
123+
var exiledButton = buttons.First();
124+
var newButton = Activator.CreateInstance(exiledButton.GetType()) as CustomActionButton;
125+
newButton.CreateButton(HudManager.Instance.AbilityButton.transform.parent);
126+
newButton.OverrideName(exiledButton.Name);
127+
newButton.OverrideSprite(exiledButton.Sprite.LoadAsset());
128+
129+
var passive = newButton.Button.GetComponent<PassiveButton>();
130+
passive.OnClick.RemoveAllListeners();
131+
passive.OnClick.AddListener((UnityAction)newButton.ClickHandler);
132+
133+
Coroutines.Start(CoroutinesHelper.CoNotify(
134+
$"<color=green>Custom ability absorbed from {exiledPlayer.Data.PlayerName}. Total absorbed: {OverloadRole.AbsorbedAbilityCount}</color>"));
135+
}
136+
}
137+
}
138+
}
65139
}
66140
}
67141
}

NewMod/Roles/NeutralRoles/Overload.cs

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -33,77 +33,4 @@ public class OverloadRole : ImpostorRole, ICustomRole
3333
OptionsScreenshot = null,
3434
Icon = null,
3535
};
36-
37-
[RegisterEvent]
38-
public static void OnPlayerExiled(EjectionEvent evt)
39-
{
40-
ExileController exileController = @evt.ExileController;
41-
42-
var exiled = exileController.initData.networkedPlayer;
43-
var exiledPlayer = Utils.PlayerById(exiled.PlayerId);
44-
var player = PlayerControl.LocalPlayer;
45-
46-
if (exiledPlayer == null)
47-
return;
48-
49-
if (exiledPlayer.Data.Role is not ICustomRole)
50-
{
51-
if (!player.AmOwner) return;
52-
53-
if (player.Data.Role is OverloadRole overload)
54-
{
55-
if (exiledPlayer.Data.Role.Ability == null)
56-
{
57-
Coroutines.Start(CoroutinesHelper.CoNotify("<color=orange>No ability to absorb from this player.</color>"));
58-
}
59-
if (AbsorbedAbilityCount >= 3)
60-
{
61-
Coroutines.Start(CoroutinesHelper.CoNotify("<color=red>Maximum abilities absorbed.</color>"));
62-
return;
63-
}
64-
AbsorbedAbilityCount++;
65-
66-
var abilityButton = HudManager.Instance.AbilityButton;
67-
var absorbedButton = Instantiate(abilityButton, abilityButton.transform.parent);
68-
absorbedButton.SetFromSettings(exiledPlayer.Data.Role.Ability);
69-
70-
var pb = absorbedButton.GetComponent<PassiveButton>();
71-
pb.OnClick.RemoveAllListeners();
72-
pb.OnClick.AddListener((UnityAction)exiledPlayer.Data.Role.UseAbility);
73-
74-
Coroutines.Start(CoroutinesHelper.CoNotify(
75-
$"<color=green>Ability absorbed from {exiledPlayer.Data.PlayerName}. Total absorbed: {OverloadRole.AbsorbedAbilityCount}</color>"));
76-
}
77-
}
78-
else
79-
{
80-
if (player.Data.Role is OverloadRole)
81-
{
82-
if (AbsorbedAbilityCount >= 3)
83-
{
84-
Coroutines.Start(CoroutinesHelper.CoNotify("<color=red>Maximum abilities absorbed.</color>"));
85-
return;
86-
}
87-
88-
var customRole = (ICustomRole)exiledPlayer.Data.Role;
89-
var parentMod = customRole.ParentMod;
90-
var buttons = parentMod?.GetButtons();
91-
92-
if (buttons.Count == 0)
93-
{
94-
return;
95-
}
96-
var exiledButton = buttons.FirstOrDefault();
97-
var newButton = Activator.CreateInstance(exiledButton.GetType()) as CustomActionButton;
98-
99-
newButton.CreateButton(HudManager.Instance.AbilityButton.transform.parent);
100-
newButton.OverrideName(exiledButton.Name);
101-
newButton.OverrideSprite(exiledButton.Sprite.LoadAsset());
102-
103-
var passive = newButton.Button.GetComponent<PassiveButton>();
104-
passive.OnClick.RemoveAllListeners();
105-
passive.OnClick.AddListener((UnityAction)newButton.ClickHandler);
106-
}
107-
}
108-
}
10936
}

0 commit comments

Comments
 (0)