thank you very frogge

This commit is contained in:
ThePurpleAnon 2024-04-28 18:31:05 -05:00
parent 1632065a83
commit 1abd7c391b
2 changed files with 394 additions and 40 deletions

View file

@ -173,6 +173,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 2
m_SpriteSortPoint: 0
--- !u!1 &3311129963093537471
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5184237192129329593}
- component: {fileID: 8827201684015420044}
m_Layer: 0
m_Name: SpotlightsBackColor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5184237192129329593
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3311129963093537471}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3672416108430647415}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &8827201684015420044
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3311129963093537471}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 1
m_Sprite: {fileID: 1119035408, guid: 3c49c0fa809689d448ee90b3c1143d9f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 0.5019608}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 16.9, y: 20.04}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &3446676100132537491
GameObject:
m_ObjectHideFlags: 0
@ -359,6 +443,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &4233280143836799923
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5600193726614857350}
- component: {fileID: 3731523235594691501}
m_Layer: 0
m_Name: SpotlightsFrontColor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5600193726614857350
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4233280143836799923}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 665267706566016202}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &3731523235594691501
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4233280143836799923}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 14
m_Sprite: {fileID: 1188383036, guid: 3c49c0fa809689d448ee90b3c1143d9f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 0.5019608}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 11.88, y: 16.82}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &6247206099220596406
GameObject:
m_ObjectHideFlags: 0
@ -471,7 +639,8 @@ Transform:
m_LocalPosition: {x: 0, y: 4.33, z: 0}
m_LocalScale: {x: 0.48, y: 0.48, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 5184237192129329593}
m_Father: {fileID: 6749747454758802588}
m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -517,7 +686,7 @@ SpriteMask:
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 1119035408, guid: 3c49c0fa809689d448ee90b3c1143d9f, type: 3}
m_MaskAlphaCutoff: 0.106
m_MaskAlphaCutoff: 0.5
m_FrontSortingLayerID: 0
m_BackSortingLayerID: 0
m_FrontSortingLayer: 0
@ -638,7 +807,8 @@ Transform:
m_LocalPosition: {x: 0, y: 1.34, z: 0}
m_LocalScale: {x: 0.5, y: 0.5, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 5600193726614857350}
m_Father: {fileID: 6749747454758802588}
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -684,7 +854,7 @@ SpriteMask:
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 1188383036, guid: 3c49c0fa809689d448ee90b3c1143d9f, type: 3}
m_MaskAlphaCutoff: 0.106
m_MaskAlphaCutoff: 0.5
m_FrontSortingLayerID: 0
m_BackSortingLayerID: 0
m_FrontSortingLayer: 0

View file

@ -36,12 +36,17 @@ namespace HeavenStudio.Games.Loaders
},
new GameAction("count", "Count In")
{
preFunction = delegate {
function = delegate {
var e = eventCaller.currentEntity;
if (eventCaller.gameManager.minigameObj.TryGetComponent(out FrogHop instance)) {
instance.Count(e.beat, e["start"]);
}
},
preFunction = delegate {
var e = eventCaller.currentEntity;
FrogHop.CountVox(e.beat);
},
preFunctionLength = 0,
parameters = new List<Param>()
{
new Param("start", true, "Start Shaking", "Start shaking after the count in."),
@ -75,8 +80,14 @@ namespace HeavenStudio.Games.Loaders
instance.TwoHop(e.beat, e["spotlights"], e["jazz"]);
}
},
preFunction = delegate {
var e = eventCaller.currentEntity;
FrogHop.TwoHopVox(e.beat, e["enabled"]);
},
preFunctionLength = 0,
parameters = new List<Param>()
{
new Param("enabled", true, "Cue Sound", "Choose whether to play the cue sound for this event."),
new Param("spotlights", true, "Automatic Spotlights", "Handles spotlight switching automatically."),
new Param("jazz", false, "Jumpin' Jazz", "Mouth animations will be based on Frog Hop 2."),
},
@ -90,8 +101,14 @@ namespace HeavenStudio.Games.Loaders
instance.ThreeHop(e.beat, e["spotlights"], e["jazz"]);
}
},
preFunction = delegate {
var e = eventCaller.currentEntity;
FrogHop.ThreeHopVox(e.beat, e["enabled"]);
},
preFunctionLength = 0,
parameters = new List<Param>()
{
new Param("enabled", true, "Cue Sound", "Choose whether to play the cue sound for this event."),
new Param("spotlights", true, "Automatic Spotlights", "Handles spotlight switching automatically."),
new Param("jazz", false, "Jumpin' Jazz", "Mouth animations will be based on Frog Hop 2."),
},
@ -105,13 +122,33 @@ namespace HeavenStudio.Games.Loaders
instance.SpinItBoys(e.beat, e["spotlights"], e["jazz"]);
}
},
preFunction = delegate {
var e = eventCaller.currentEntity;
FrogHop.SpinItBoysVox(e.beat, e["enabled"]);
},
preFunctionLength = 0,
parameters = new List<Param>()
{
new Param("enabled", true, "Cue Sound", "Choose whether to play the cue sound for this event."),
new Param("spotlights", true, "Automatic Spotlights", "Handles spotlight switching automatically."),
new Param("jazz", false, "Jumpin' Jazz", "Mouth animations will be based on Frog Hop 2."),
},
defaultLength = 4.0f,
},
new GameAction("thankyou", "Thank you... verrry much-a!")
{
preFunction = delegate {
var e = eventCaller.currentEntity;
if (eventCaller.gameManager.minigameObj.TryGetComponent(out FrogHop instance)) {
instance.ThankYou(e.beat, e["pitched"]);
}
},
parameters = new List<Param>()
{
new Param("pitched", false, "Enable Pitching", "Makes the frog voices pitch up and down based on the song's tempo."),
},
defaultLength = 6.0f,
},
new GameAction("mouthwide", "Open Mouth (Wide)")
{
function = delegate {
@ -213,7 +250,7 @@ namespace HeavenStudio.Games
double startNoHop = double.MinValue;
double startRegularHop = double.MinValue;
float globalPitch = 1;
static float globalPitch = 1;
bool usesGlobalePitch = false; //oops i spelled global wrong lmao
const int IAAltDownCat = IAMAXCAT;
@ -254,6 +291,10 @@ namespace HeavenStudio.Games
public void Awake()
{
globalPitch = (float)Conductor.instance.GetBpmAtBeat(Conductor.instance.songPositionInBeatsAsDouble) / 156;
PersistThings(Conductor.instance.songPositionInBeatsAsDouble);
AllFrogs.Add(PlayerFrog);
AllFrogs.AddRange(OtherFrogs);
AllFrogs.Add(LeaderFrog);
@ -268,6 +309,52 @@ namespace HeavenStudio.Games
whoToInputKTB = AllFrogs;
}
public override void OnGameSwitch(double beat)
{
foreach (var entity in GameManager.instance.Beatmap.Entities)
{
if (entity.beat >= beat && entity.beat <= beat + 1)
{
if (entity.datamodel == "frogHop/hop")
Hop(entity.beat);
continue;
}
if (entity.beat >= beat || entity.beat < beat - 4) continue;
if (entity.datamodel == "frogHop/count")
{
var e = entity;
Count(e.beat, e["start"]);
continue;
}
if (entity.beat < beat - 2) continue;
switch (entity.datamodel)
{
case "frogHop/twoshake":
{
var e = entity;
TwoHop(e.beat, e["spotlights"], e["jazz"], beat - e.beat);
continue;
}
case "frogHop/threeshake":
{
var e = entity;
ThreeHop(e.beat, e["spotlights"], e["jazz"], beat - e.beat);
continue;
}
case "frogHop/spinitboys":
{
var e = entity;
SpinItBoys(e.beat, e["spotlights"], e["jazz"], beat - e.beat);
continue;
}
}
}
}
public void Update()
{
//voice pitch stuff below
@ -369,26 +456,32 @@ namespace HeavenStudio.Games
public void Count(double beat, bool start)
{
var actions = new List<BeatAction.Action>();
var sounds = new List<MultiSound.Sound>();
actions.Add(new(beat + 0.0, delegate { Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT1", beat + 0.0, usesGlobalePitch ? globalPitch : 1));
actions.Add(new(beat + 1.0, delegate { Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT2", beat + 1.0, usesGlobalePitch ? globalPitch : 1));
actions.Add(new(beat + 2.0, delegate { Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT3", beat + 2.0, usesGlobalePitch ? globalPitch : 1));
actions.Add(new(beat + 3.0, delegate { Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT4", beat + 3.0, usesGlobalePitch ? globalPitch : 1));
BeatAction.New(this, actions);
MultiSound.Play(sounds);
if (start) Hop(beat + 4.0);
}
public static void CountVox(double beat)
{
globalPitch = (float)Conductor.instance.GetBpmAtBeat(Conductor.instance.songPositionInBeatsAsDouble) / 156;
bool usesGlobalePitch = GetPitched(Conductor.instance.songPositionInBeatsAsDouble);
var sounds = new List<MultiSound.Sound>();
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT1", beat + 0.0, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT2", beat + 1.0, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT3", beat + 2.0, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_COUNT4", beat + 3.0, usesGlobalePitch ? globalPitch : 1));
MultiSound.Play(sounds, forcePlay: true);
}
public void Hop (double beat)
{
wantHop = beat - 1;
@ -404,7 +497,7 @@ namespace HeavenStudio.Games
usesGlobalePitch = enabled;
}
public void TwoHop (double beat, bool spotlights, bool jumpinJazz)
public void TwoHop (double beat, bool spotlights, bool jumpinJazz, double start = 0)
{
CueCommon(beat, spotlights);
@ -412,12 +505,8 @@ namespace HeavenStudio.Games
var sounds = new List<MultiSound.Sound>();
//call
actions.Add(new(beat + 0.0, delegate { NPCHop(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
actions.Add(new(beat + 0.5, delegate { NPCHop(FrontFrogs, true); Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", jumpinJazz ? beat + 2.5 : beat + 1.5); }));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HA", beat, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAAI", beat + 0.5, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_HAAI", beat + 0.5));
if (start <= 0.0) actions.Add(new(beat + 0.0, delegate { NPCHop(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
if (start <= 0.5) actions.Add(new(beat + 0.5, delegate { NPCHop(FrontFrogs, true); Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", jumpinJazz ? beat + 2.5 : beat + 1.5); }));
//response
actions.Add(new(beat + 2.0, delegate { NPCHop(BackFrogs); Talk(BackFrogs, "Wide", beat); }));
@ -433,7 +522,23 @@ namespace HeavenStudio.Games
MultiSound.Play(sounds);
}
public void ThreeHop (double beat, bool spotlights, bool jumpinJazz)
public static void TwoHopVox(double beat, bool enabled)
{
if (!enabled) return;
globalPitch = (float)Conductor.instance.GetBpmAtBeat(Conductor.instance.songPositionInBeatsAsDouble) / 156;
bool usesGlobalePitch = GetPitched(Conductor.instance.songPositionInBeatsAsDouble);
var sounds = new List<MultiSound.Sound>();
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HA", beat, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAAI", beat + 0.5, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_HAAI", beat + 0.5));
MultiSound.Play(sounds, forcePlay: true);
}
public void ThreeHop (double beat, bool spotlights, bool jumpinJazz, double start = 0)
{
CueCommon(beat, spotlights);
@ -441,15 +546,9 @@ namespace HeavenStudio.Games
var sounds = new List<MultiSound.Sound>();
//call
actions.Add(new(beat + 0.0, delegate { NPCHop(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", jumpinJazz ? beat + 2.5 : beat); }));
actions.Add(new(beat + 0.5, delegate { NPCHop(FrontFrogs); if (!jumpinJazz) Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", beat); }));
actions.Add(new(beat + 1.0, delegate { NPCHop(FrontFrogs, true); if (!jumpinJazz) Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", beat); }));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAI", beat, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAI", beat + 0.5, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat + 0.5));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAI", beat + 1.0, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat + 1.0));
if (start <= 0.0) actions.Add(new(beat + 0.0, delegate { NPCHop(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", jumpinJazz ? beat + 2.5 : beat); }));
if (start <= 0.5) actions.Add(new(beat + 0.5, delegate { NPCHop(FrontFrogs); if (!jumpinJazz) Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", beat); }));
if (start <= 1.0) actions.Add(new(beat + 1.0, delegate { NPCHop(FrontFrogs, true); if (!jumpinJazz) Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", beat); }));
//response
actions.Add(new(beat + 2.0, delegate { NPCHop(BackFrogs); Talk(BackFrogs, "Narrow", jumpinJazz ? beat + 4.5 : beat); }));
@ -468,7 +567,25 @@ namespace HeavenStudio.Games
MultiSound.Play(sounds);
}
public void SpinItBoys (double beat, bool spotlights, bool jumpinJazz)
public static void ThreeHopVox(double beat, bool enabled)
{
if (!enabled) return;
globalPitch = (float)Conductor.instance.GetBpmAtBeat(Conductor.instance.songPositionInBeatsAsDouble) / 156;
bool usesGlobalePitch = GetPitched(Conductor.instance.songPositionInBeatsAsDouble);
var sounds = new List<MultiSound.Sound>();
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAI", beat, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAI", beat + 0.5, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat + 0.5));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_HAI", beat + 1.0, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_POP_DEFAULT", beat + 1.0));
MultiSound.Play(sounds, forcePlay: true);
}
public void SpinItBoys (double beat, bool spotlights, bool jumpinJazz, double start = 0)
{
CueCommon(beat, spotlights);
@ -476,12 +593,8 @@ namespace HeavenStudio.Games
var sounds = new List<MultiSound.Sound>();
//call
actions.Add(new(beat + 0.0, delegate { NPCCharge(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", beat); }));
actions.Add(new(beat + 1.0, delegate { NPCSpin(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_KURU_1", beat, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_KURU_2", beat + 0.5, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_LIN", beat + 1.0, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_SPIN", beat + 1.0));
if (start <= 0.0) actions.Add(new(beat + 0.0, delegate { NPCCharge(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Narrow", beat); }));
if (start <= 1.0) actions.Add(new(beat + 1.0, delegate { NPCSpin(FrontFrogs); Talk(new List<ntrFrog>() { LeaderFrog }, "Wide", beat); }));
//response
actions.Add(new(beat + 2.0, delegate { NPCCharge(BackFrogs); Talk(BackFrogs, "Narrow", jumpinJazz ? beat + 3.0 : beat); }));
@ -499,6 +612,22 @@ namespace HeavenStudio.Games
MultiSound.Play(sounds);
}
public static void SpinItBoysVox(double beat, bool enabled)
{
if (!enabled) return;
globalPitch = (float)Conductor.instance.GetBpmAtBeat(Conductor.instance.songPositionInBeatsAsDouble) / 156;
bool usesGlobalePitch = GetPitched(Conductor.instance.songPositionInBeatsAsDouble);
var sounds = new List<MultiSound.Sound>();
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_KURU_1", beat, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_KURU_2", beat + 0.5, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_LIN", beat + 1.0, usesGlobalePitch ? globalPitch : 1));
sounds.Add(new MultiSound.Sound("frogHop/SE_NTR_FROG_EN_T_SPIN", beat + 1.0));
MultiSound.Play(sounds, forcePlay: true);
}
public void CueCommon(double beat, bool spotlights = true)
{
startBackHop = beat;
@ -527,6 +656,31 @@ namespace HeavenStudio.Games
SpotlightBack.SetActive(back);
}
public void ThankYou(double beat, bool stretchToTempo)
{
float pitch = stretchToTempo ? globalPitch * Conductor.instance.TimelinePitch : 1;
double offset = stretchToTempo ? (0.17 / (Conductor.instance.GetBpmAtBeat(beat) / 98)) : 0.17;
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("frogHop/thankYou", beat, pitch: pitch, offset: offset),
});
var actions = new List<BeatAction.Action>();
var BlueFrog = new List<ntrFrog>() { SingerFrog };
double stretch = stretchToTempo ? 1 : 1 / (globalPitch * Conductor.instance.TimelinePitch);
actions.Add(new(beat, delegate { BopAnimation(BlueFrog); }));
actions.Add(new(beat + (0.00 / stretch), delegate { Talk(BlueFrog, "Narrow", beat); })); //"thank"
actions.Add(new(beat + (0.50 / stretch), delegate { Talk(BlueFrog, "Narrow", beat); })); //"you"
actions.Add(new(beat + (2.00 / stretch), delegate { Talk(BlueFrog, "Wide", beat + (3.75 / stretch)); })); //"verrry"
actions.Add(new(beat + (4.25 / stretch), delegate { Talk(BlueFrog, "Narrow", beat); })); //"much"
actions.Add(new(beat + (5.00 / stretch), delegate { Talk(BlueFrog, "Narrow", beat); })); //"-a!"
BeatAction.New(this, actions);
}
public void Talk(List<ntrFrog> FrogsToTalk, string syllable, double animEnd)
{
foreach (var a in FrogsToTalk) { a.Talk(syllable, animEnd); }
@ -643,11 +797,41 @@ namespace HeavenStudio.Games
{
if (whiff) ScoreMiss(0.5f);
if (sweat) PlayerFrog.Sweat();
foreach (var a in OtherFrogs) { a.Glare(); }
else { foreach (var a in OtherFrogs) { a.Glare(); } }
}
public void Nothing(PlayerActionEvent caller) { }
private void PersistThings(double beat)
{
var allEvents = GameManager.instance.Beatmap.Entities.FindAll(e => e.datamodel.Split('/')[0] is "frogHop");
var eventsBefore = allEvents.FindAll(e => e.beat < beat);
var lastPersistEvent = eventsBefore.FindLast(e => e.datamodel == "frogHop/pitching");
if (lastPersistEvent != null)
{
var e = lastPersistEvent;
Pitching(e["enabled"]);
}
}
public static bool GetPitched(double beat)
{
var allEvents = GameManager.instance.Beatmap.Entities.FindAll(e => e.datamodel.Split('/')[0] is "frogHop");
var eventsBefore = allEvents.FindAll(e => e.beat < beat);
bool isPitched = false;
var lastPersistEvent = eventsBefore.FindLast(e => e.datamodel == "frogHop/pitching");
if (lastPersistEvent != null)
{
var e = lastPersistEvent;
isPitched = e["enabled"];
}
return isPitched;
}
#endregion
}
}