private Color OnPlayerHair_GetHairColor(On.Celeste.PlayerHair.orig_GetHairColor orig, Celeste.PlayerHair self, int index) { if (Settings.Enabled && (self.Entity is Celeste.Player)) { Celeste.Player player = self.Entity as Celeste.Player; if (player.StateMachine.State != 19 && (player.Sprite.Mode == PlayerSpriteMode.Madeline || player.Sprite.Mode == PlayerSpriteMode.MadelineNoBackpack)) { int colorIndex = 1; if (player.Inventory.Dashes > 0) { colorIndex = player.Dashes; } switch (colorIndex) { case 0: return(new Color(134, 135, 138)); case 1: return(new Color(78, 60, 42)); case 2: return(new Color(237, 194, 18)); } } } return(orig(self, index)); }
public static Color GetHairColor(On.Celeste.PlayerHair.orig_GetHairColor orig, PlayerHair self, int index) { Color colorOrig = orig(self, index); if (!(self.Entity is Player) || !Settings.Enabled) { return(colorOrig); } Player player = self.Entity as Player; if (player.Dashes >= MAX_DASH_COUNT || player.Dashes < 0 || (!Settings.DoFeatherColor && player.StateMachine.State == 19)) { return(colorOrig); } Color ReturnC = GetCurrentColor(colorOrig, ((Player)self.Entity).Dashes, index, self); if (index == 0) { Instance.UpdateMaddyCrown(self.Entity as Player); Instance.lastColor = ReturnC; Instance.lastHairLength = Instance.triggerManager.GetHairLength(((Player)self.Entity).Dashes); } if (IHairType.IsFlash() && Settings.DoDashFlash) { return(Player.FlashHairColor); } return(ReturnC); }
public static Color GetHairColor(On.Celeste.PlayerHair.orig_GetHairColor orig, PlayerHair self, int index) { Color colorOrig = orig(self, index); if (!(self.Entity is Player) || self.GetSprite().Mode == PlayerSpriteMode.Badeline) { return(colorOrig); } Color color = colorOrig; if (Settings.FoxEnabled) { Color colorFox; if (index % 2 == 0) { colorFox = Settings.FoxColorLight; color = new Color( (color.R / 255f) * 0.1f + (colorFox.R / 255f) * 0.9f, (color.G / 255f) * 0.05f + (colorFox.G / 255f) * 0.95f, (color.B / 255f) * 0.2f + (colorFox.B / 255f) * 0.8f, color.A ); } else { colorFox = Settings.FoxColorDark; color = new Color( (color.R / 255f) * 0.1f + (colorFox.R / 255f) * 0.7f, (color.G / 255f) * 0.1f + (colorFox.G / 255f) * 0.7f, (color.B / 255f) * 0.1f + (colorFox.B / 255f) * 0.7f, color.A ); } } if (Settings.RainbowEnabled) { float wave = self.GetWave() * 60f; wave *= Settings.RainbowSpeedFactor; Color colorRainbow = ColorFromHSV((index / (float)self.GetSprite().HairCount) * 180f + wave, 0.6f, 1.0f); color = new Color( (color.R / 255f) * 0.3f + (colorRainbow.R / 255f) * 0.7f, (color.G / 255f) * 0.3f + (colorRainbow.G / 255f) * 0.7f, (color.B / 255f) * 0.3f + (colorRainbow.B / 255f) * 0.7f, color.A ); } color.A = colorOrig.A; return(color); }
private static Color hookHairColor(On.Celeste.PlayerHair.orig_GetHairColor orig, PlayerHair self, int index) { if (MaxHelpingHandModule.Instance.Session.MadelineHasPonytail && self.Entity is Player p) { if (index == 1) { // "hair tie" near the top of the hair. return(hairTieColor * self.Alpha); } if (index != 5 || p.Dashes == 1) { // we want the hair, except the tip, to have our custom hair color. We also want to recolor the 1-dash color entirely. return(mainHairColor * self.Alpha); } } return(orig(self, index)); }
public static Color GetHairColor(On.Celeste.PlayerHair.orig_GetHairColor orig, PlayerHair self, int index) { Color colorOrig = orig(self, index); Ghost ghost = self.Entity as Ghost; GhostNetClient client = GhostNetModule.Instance.Client; uint playerID; GhostNetFrame frame; ChunkUUpdate update; if (ghost == null || client == null || !client.GhostPlayerIDs.TryGetValue(ghost, out playerID) || !client.UpdateMap.TryGetValue(playerID, out frame) || (update = frame) == null) { return(colorOrig); } if (index < 0 || update.HairColors.Length <= index) { return(Color.Transparent); } return(update.HairColors[index]); }
public static Color GetHairColor(On.Celeste.PlayerHair.orig_GetHairColor orig, PlayerHair self, int index) { Color colorOrig = orig(self, index); if (!(self.Entity is Player) || !Settings.Enabled) { return(colorOrig); } Player player = self.Entity as Player; if (player.Dashes >= MAX_DASH_COUNT || player.Dashes < 0) { return(colorOrig); } Color ReturnC = GetCurrentColor(((Player)self.Entity).Dashes, index, self); if (index == 0) { Instance.UpdateMaddyCrown(self.Entity as Player); Instance.LastColor = ReturnC; Hyperline.Instance.LastHairLength = Settings.HairLengthList[((Player)self.Entity).Dashes]; } return(ReturnC); }