Adjusted how pot breaking worked to now use the beats, instead of item curve. Attempt to implement pot break delay slider
This commit is contained in:
Amy54Desu 2022-12-23 12:12:33 -05:00
parent 9b5af8d6d6
commit b624b54b93
2 changed files with 39 additions and 33 deletions

View file

@ -120,7 +120,7 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("set gameplay modifiers", "Gameplay Modifiers")
{
function = delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetGameplayMods(e.beat, e["type"], e["type2"], e["toggle"], e["toggle2"], e["toggle3"], e["type3"]); },
function = delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetGameplayMods(e.beat, e["type"], e["type2"], e["toggle"], e["toggle2"], e["toggle3"], e["type3"], e["valA"]); },
defaultLength = 0.5f,
parameters = new List<Param>()
{
@ -129,7 +129,8 @@ namespace HeavenStudio.Games.Loaders
new Param("toggle", true, "Enable Combos", "Allow the player to combo? (Contextual combos will still be allowed even when off)"),
new Param("toggle2", false, "Pot Break Sound", "Should there be a breaking sound when punching an object with high flow?"),
new Param("toggle3", false, "High Flow Punch", "Determines if Joe punches with the right hand when having high flow"),
new Param("type3", KarateMan.SoundEffectTypes.Megamix3DS, "Sound Effect Ver", "The version of sounds that will play")
new Param("type3", KarateMan.SoundEffectTypes.Megamix3DS, "Sound Effect Ver", "The version of sounds that will play"),
new Param("valA", new EntityTypes.Float(0, 5), "Pot Break Delay", "Sets the pot break delay, used in Tengoku Arcade")
}
},
new GameAction("set background effects", "Background Appearance")
@ -564,6 +565,7 @@ namespace HeavenStudio.Games
public static float WantBgChangeStart = Single.MinValue;
public static float WantBgChangeLength = 0f;
public static float BopLength = 1f;
public static float PotBreakDelay = 0f;
private void Awake()
{
@ -1253,7 +1255,7 @@ namespace HeavenStudio.Games
UpdateFilterColour(bgColour, filterColour);
}
public void SetGameplayMods(float beat, int mode, int bg, bool combo, bool noriBreak, bool highFlow, int soundVer)
public void SetGameplayMods(float beat, int mode, int bg, bool combo, bool noriBreak, bool highFlow, int soundVer, float breakDelay)
{
NoriGO.SetActive(true);
Nori.SetNoriMode(beat, mode);
@ -1261,6 +1263,7 @@ namespace HeavenStudio.Games
NoriBreakSound = noriBreak;
HighFlowPunch = highFlow;
SoundEffectsVersion = soundVer;
PotBreakDelay = breakDelay;
IsComboEnable = combo;
}

View file

@ -333,35 +333,6 @@ namespace HeavenStudio.Games.Scripts_KarateMan
Jukebox.PlayOneShotGame("karateman/bombBreak", volume: 0.25f);
return;
}
else if ((KarateMan.instance.IsNoriActive && KarateMan.instance.NoriPerformance >= 0.6f || KarateMan.HonkiMode) && KarateMan.NoriBreakSound && ItemBreakable() && cond.songPositionInBeats >= startBeat + curveTargetBeat && CurrentCurve.GetApproximateLength() > 16)
{
ParticleSystem p = Instantiate(HitParticles[2], CurrentCurve.GetPoint(1f), Quaternion.identity, KarateMan.instance.ItemHolder);
p.Play();
GameObject.Destroy(ShadowInstance.gameObject);
GameObject.Destroy(gameObject);
if (cond.songPositionInBeats >= startBeat)
{
switch (type)
{
case ItemType.Pot:
Jukebox.PlayOneShotGame("karateman/potBreak", volume: 0.60f);
break;
case ItemType.Bulb:
Jukebox.PlayOneShotGame("karateman/lightbulbBreak", volume: 0.65f);
break;
case ItemType.Rock:
case ItemType.TacoBell:
Jukebox.PlayOneShotGame("karateman/rockBreak", volume: 0.75f);
break;
case ItemType.Ball:
Jukebox.PlayOneShotGame("karateman/soccerBreak", volume: 0.75f);
break;
}
}
return;
}
else if (cond.songPositionInBeats >= startBeat + Mathf.Max(2f, curveTargetBeat) || CurrentCurve == null)
{
@ -471,6 +442,32 @@ namespace HeavenStudio.Games.Scripts_KarateMan
hitMark.SetActive(true);
}
void DestoryPot()
{
ParticleSystem p = Instantiate(HitParticles[2], CurrentCurve.GetPoint(1f), Quaternion.identity, KarateMan.instance.ItemHolder);
p.Play();
GameObject.Destroy(ShadowInstance.gameObject);
GameObject.Destroy(gameObject);
switch (type)
{
case ItemType.Pot:
Jukebox.PlayOneShotGame("karateman/potBreak", volume: 0.60f);
break;
case ItemType.Bulb:
Jukebox.PlayOneShotGame("karateman/lightbulbBreak", volume: 0.65f);
break;
case ItemType.Rock:
case ItemType.TacoBell:
Jukebox.PlayOneShotGame("karateman/rockBreak", volume: 0.75f);
break;
case ItemType.Ball:
Jukebox.PlayOneShotGame("karateman/soccerBreak", volume: 0.75f);
break;
}
}
//handles hitsound and particles
void ItemHitEffect(bool straight = false)
{
@ -662,10 +659,16 @@ namespace HeavenStudio.Games.Scripts_KarateMan
break;
}
if (KarateMan.instance.IsNoriActive && KarateMan.instance.NoriPerformance >= 0.6f)
ItemHitNori = Conductor.instance.songPositionInBeats + curveTargetBeat + 1f;
startBeat = Conductor.instance.songPositionInBeats;
if ((KarateMan.instance.IsNoriActive && KarateMan.instance.NoriPerformance >= 0.6f || KarateMan.HonkiMode) && KarateMan.NoriBreakSound && ItemBreakable())
{
BeatAction.New(gameObject, new List<BeatAction.Action>()
{
new BeatAction.Action(startBeat + 1f + KarateMan.PotBreakDelay, delegate { DestoryPot(); })
});
}
status = FlyStatus.Hit;
}