Added options for audience sounds and added practice crowd sounds.
Fixed Kasuke's pitching and split the "donaiyanen" voice line.
Added spritesheet for the crowd (it's not even split yet i literally just remembered i never pushed last night and i wanted to do that first)
This commit is contained in:
ThePurpleAnon 2024-02-05 21:57:33 -06:00
parent e414773f5d
commit b6967c2c84
28 changed files with 623 additions and 293 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 75f537929676698408499c37667c8b2d
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 6b820ea5a915451468e04ef1da6311db
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: a50674d5eaca8ce438f444e41f53800d
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: bd2595a8bd0c56e409b21df437b05f85
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 4d6a9b0b61dc17849960332aed681081
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: f4b912fa1e7cf2247ac98be9d70595bd
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: f6363660c6dbf364688e5f21b65c52e2
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: f492605be1573c44aac03e0126ccfa0c
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 89fe8fe474b34f249b9dbe54666d0315
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View file

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 4af629500693f38468cf49eb092d94dd
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View file

@ -0,0 +1,123 @@
fileFormatVersion: 2
guid: a7e2f6ba068969b42b53497f4d384f4e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -0,0 +1,123 @@
fileFormatVersion: 2
guid: 0ed8cad8576882f4ca340c8271682b09
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -33,7 +33,7 @@ namespace HeavenStudio.Games.Loaders
{
preFunction = delegate {
var e = eventCaller.currentEntity;
Manzai.PunSFX(e.beat, e["pun"], e["pitch"], 0); },
Manzai.PunSFX(e.beat, e["pun"], e["pitch"], 0, e["crowd"]); },
/*function = delegate {
var e = eventCaller.currentEntity;
@ -51,13 +51,14 @@ namespace HeavenStudio.Games.Loaders
new Param("pun", Manzai.Puns.FutongaFuttonda, "Which Pun?", "Which pun will Kosuke say?"),
//new Param("unused", false, "Include Unused", "Will unused puns be picked?"),
new Param("pitch", true, "Pitch Voiceline", "Will the pun pitch with the tempo?"),
new Param("crowd", Manzai.Crowd.Default, "Crowd Sounds", "How the crowd will sound during the input."),
}
},
new GameAction("boing", "Pun (Boing)")
{
preFunction = delegate {
var e = eventCaller.currentEntity;
Manzai.PunSFX(e.beat, e["pun"], e["pitch"], 1); },
Manzai.PunSFX(e.beat, e["pun"], e["pitch"], 1, e["crowd"]); },
/*function = delegate {
var e = eventCaller.currentEntity;
@ -75,6 +76,7 @@ namespace HeavenStudio.Games.Loaders
new Param("pun", Manzai.Puns.FutongaFuttonda, "Which Pun?", "Which pun will Kosuke say?"),
//new Param("unused", false, "Include Unused", "Will unused puns be picked?"),
new Param("pitch", true, "Pitch Voiceline", "Will the pun pitch with the tempo?"),
new Param("crowd", Manzai.Crowd.Default, "Crowd Sounds", "How the crowd will sound during the input."),
}
},
/* new GameAction("customBoing", "Custom Boing")
@ -188,6 +190,8 @@ namespace HeavenStudio.Games
bool easterEgg1 = false;
bool easterEgg2 = false;
bool boingHasCrowdSounds = true;
public enum WhoBops
{
@ -261,6 +265,13 @@ namespace HeavenStudio.Games
Outside,
}
public enum Crowd
{
Default,
Practice,
Silent,
}
const int IAAltDownCat = IAMAXCAT;
protected static bool IA_TouchAltPress(out double dt)
@ -332,7 +343,7 @@ namespace HeavenStudio.Games
VultureAnim.DoScaledAnimationAsync("Bop", 0.5f);
}
public void DoPun(double beat, int isBoing, int whichPun)
public void DoPun(double beat, int isBoing, int whichPun, bool isPitched, int crowdSounds)
{
int punOrBoing = isBoing;
@ -343,17 +354,17 @@ namespace HeavenStudio.Games
if (punOrBoing == (int)Manzai.BoingType.Normal)
{
DoPunHai(beat, whichPun);
DoPunHai(beat, whichPun, isPitched, crowdSounds);
}
if (punOrBoing == (int)Manzai.BoingType.Boing)
{
DoPunBoing(beat, whichPun);
DoPunBoing(beat, whichPun, isPitched, crowdSounds);
}
//Debug.Log(punOrBoing);
}
public static void PunSFX(double beat, int whichPun, bool isPitched, int isBoing)
public static void PunSFX(double beat, int whichPun, bool isPitched, int isBoing, int crowdSounds)
{
var punName= Enum.GetName(typeof(Puns), whichPun);
float pitch = isPitched ? (Conductor.instance.GetBpmAtBeat(beat)/98)*Conductor.instance.TimelinePitch : 1;
@ -365,7 +376,7 @@ namespace HeavenStudio.Games
BeatAction.New(instance, new List<BeatAction.Action>()
{
new BeatAction.Action(beat, delegate { Manzai.instance.DoPun(beat, isBoing, whichPun); }),
new BeatAction.Action(beat, delegate { Manzai.instance.DoPun(beat, isBoing, whichPun, isPitched, crowdSounds); }),
});
for (int i = 0; i < syllables; i++) {
@ -381,15 +392,33 @@ namespace HeavenStudio.Games
MultiSound.Play(sounds.ToArray(), forcePlay: true);
}
public void DoPunHai(double beat, int whichPun)
public void DoPunHai(double beat, int whichPun, bool isPitched, int crowdSounds)
{
vultureCanBop = false;
canDodge = false;
int bubbleAnimation = UnityEngine.Random.Range(0, 2);
var punName= Enum.GetName(typeof(Puns), whichPun);
if (isPitched)
{
ScheduleInput(beat, 2.5f, InputAction_BasicPress, bubbleAnimation == 0 ? HaiJustLP : HaiJustRP, crowdSounds == 0 ? HaiMiss : Nothing, Nothing);
ScheduleInput(beat, 3.0f, InputAction_BasicPress, bubbleAnimation == 0 ? HaiJustRP : HaiJustLP, crowdSounds == 0 ? HaiMiss : Nothing, Nothing);
}
else
{
ScheduleInput(beat, 2.5f, InputAction_BasicPress, bubbleAnimation == 0 ? HaiJustL : HaiJustR, crowdSounds == 0 ? HaiMiss : Nothing, Nothing);
ScheduleInput(beat, 3.0f, InputAction_BasicPress, bubbleAnimation == 0 ? HaiJustR : HaiJustL, crowdSounds == 0 ? HaiMiss : Nothing, Nothing);
}
ScheduleInput(beat, 2.5f, InputAction_BasicPress, bubbleAnimation == 0 ? HaiJustL : HaiJustR, HaiMiss, Nothing);
ScheduleInput(beat, 3.0f, InputAction_BasicPress, bubbleAnimation == 0 ? HaiJustR : HaiJustL, HaiMiss, Nothing);
if (crowdSounds == 1)
{
float pitch = isPitched ? (Conductor.instance.GetBpmAtBeat(beat)/98)*Conductor.instance.TimelinePitch : 1;
double offset = isPitched ? (0.03/(Conductor.instance.GetBpmAtBeat(beat)/98)) : 0.03;
var sounds = new List<MultiSound.Sound>();
sounds.Add(new MultiSound.Sound("manzai/crowdHai1", beat + 2.50, pitch, offset: offset));
sounds.Add(new MultiSound.Sound("manzai/crowdHai2", beat + 3.00, pitch, offset: offset));
MultiSound.Play(sounds.ToArray(), forcePlay: true);
}
if ((punName == "DenwariDenwa") || (punName == "IkugawaIkura") || (punName == "KusagaKusai") || (punName == "SarugaSaru"))
{
@ -399,7 +428,7 @@ namespace HeavenStudio.Games
new BeatAction.Action(beat + 0.50f, delegate { VultureAnim.DoScaledAnimationAsync("Talk", 0.5f); }),
new BeatAction.Action(beat + 2.25f, delegate { ravenCanBop = false; canDodge = true; bubbleRandom(); }),
new BeatAction.Action(beat + 3.25f, delegate { vultureCanBop = true; ravenCanBop = true; }),
new BeatAction.Action(beat + 3.25f, delegate { audienceRespond(beat); }),
new BeatAction.Action(beat + 3.25f, delegate { audienceRespond(beat, crowdSounds); }),
});
}
else
@ -412,7 +441,7 @@ namespace HeavenStudio.Games
new BeatAction.Action(beat + 1.50f, delegate { VultureAnim.DoScaledAnimationAsync("Talk", 0.5f); }),
new BeatAction.Action(beat + 2.25f, delegate { ravenCanBop = false; canDodge = true; bubbleRandom(); }),
new BeatAction.Action(beat + 3.25f, delegate { vultureCanBop = true; ravenCanBop = true; }),
new BeatAction.Action(beat + 3.25f, delegate { audienceRespond(beat); }),
new BeatAction.Action(beat + 3.25f, delegate { audienceRespond(beat, crowdSounds); }),
});
}
}
@ -422,11 +451,11 @@ namespace HeavenStudio.Games
randomBubbleBoth = UnityEngine.Random.Range(-100, 101) / 1000.0f;
}
public void HaiJustFull(float state, int side, PlayerActionEvent caller)
public void HaiJustFull(float state, int side, PlayerActionEvent caller, bool isPitched)
{
double beat = caller.startBeat + caller.timer;
SoundByte.PlayOneShotGame("manzai/hai", pitch: (Conductor.instance.GetBpmAtBeat(beat)/98)*Conductor.instance.TimelinePitch);
SoundByte.PlayOneShotGame("manzai/hai", pitch: isPitched ? (Conductor.instance.GetBpmAtBeat(beat)/98)*Conductor.instance.TimelinePitch : 1);
if (state >= 1f || state <= -1f)
{
SoundByte.PlayOneShotGame("manzai/miss1");
@ -437,10 +466,22 @@ namespace HeavenStudio.Games
SoundByte.PlayOneShotGame("manzai/HaiAccent");
if (side == 0)
{
float randomL = UnityEngine.Random.Range(-40, 41) / 1000.0f;
Quaternion rotL = new Quaternion();
rotL.Set(0, 0, randomBubbleBoth + randomL, 1);
PivotL.rotation = rotL;
HaiBubbleL.DoScaledAnimationAsync("HaiL", 0.5f);
hitHaiL = true;
}
if (side == 1)
{
float randomR = UnityEngine.Random.Range(-40, 41) / 1000.0f;
Quaternion rotR = new Quaternion();
rotR.Set(0, 0, randomBubbleBoth + randomR, 1);
PivotR.rotation = rotR;
HaiBubbleR.DoScaledAnimationAsync("HaiR", 0.5f);
hitHaiR = true;
}
}
@ -462,30 +503,23 @@ namespace HeavenStudio.Games
public void HaiJustL(PlayerActionEvent caller, float state)
{
// var euler = PivotL.eulerAngles;
// euler.z = UnityEngine.Random.Range(0, 100);
int side = 0;
float randomL = UnityEngine.Random.Range(-40, 41) / 1000.0f;
Quaternion rotL = new Quaternion();
rotL.Set(0, 0, randomBubbleBoth + randomL, 1);
PivotL.rotation = rotL;
HaiBubbleL.DoScaledAnimationAsync("HaiL", 0.5f);
HaiJustFull(state, side, caller);
HaiJustFull(state, 0, caller, false);
}
public void HaiJustR(PlayerActionEvent caller, float state)
{
int side = 1;
float randomR = UnityEngine.Random.Range(-40, 41) / 1000.0f;
Quaternion rotR = new Quaternion();
rotR.Set(0, 0, randomBubbleBoth + randomR, 1);
PivotR.rotation = rotR;
HaiBubbleR.DoScaledAnimationAsync("HaiR", 0.5f);
HaiJustFull(state, side, caller);
HaiJustFull(state, 1, caller, false);
}
public void HaiJustLP(PlayerActionEvent caller, float state)
{
HaiJustFull(state, 0, caller, true);
}
public void HaiJustRP(PlayerActionEvent caller, float state)
{
HaiJustFull(state, 1, caller, true);
}
public void HaiMiss(PlayerActionEvent caller)
{
@ -515,7 +549,7 @@ namespace HeavenStudio.Games
}
}
public void DoPunBoing(double beat, int whichPun)
public void DoPunBoing(double beat, int whichPun, bool isPitched, int crowdSounds)
{
vultureCanBop = false;
canDodge = false;
@ -524,7 +558,20 @@ namespace HeavenStudio.Games
int length = boingLengths.GetValueOrDefault(punName);
int syllables = length != 0 ? length : 4;
ScheduleInput(beat, 2.5f, InputAction_Alt, BoingJust, BoingMiss, Nothing);
ScheduleInput(beat, 2.5f, InputAction_Alt, isPitched ? BoingJustP : BoingJustNP , crowdSounds == 0 ? BoingMiss : Nothing, Nothing);
if (crowdSounds == 1)
{
float pitch = isPitched ? (Conductor.instance.GetBpmAtBeat(beat)/98)*Conductor.instance.TimelinePitch : 1;
double offset = isPitched ? (0.03/(Conductor.instance.GetBpmAtBeat(beat)/98)) : 0.03;
var sounds = new List<MultiSound.Sound>();
sounds.Add(new MultiSound.Sound("manzai/crowdDon1", beat + 0.00 + 2.50, pitch, offset: offset));
sounds.Add(new MultiSound.Sound("manzai/crowdDon2", beat + 0.25 + 2.50, pitch));
sounds.Add(new MultiSound.Sound("manzai/crowdDon3", beat + 0.75 + 2.50, pitch));
sounds.Add(new MultiSound.Sound("manzai/crowdDon4", beat + 1.00 + 2.50, pitch));
MultiSound.Play(sounds.ToArray(), forcePlay: true);
}
if ((punName == "DenwariDenwa") || (punName == "IkugawaIkura") || (punName == "KusagaKusai") || (punName == "SarugaSaru"))
{
@ -537,7 +584,8 @@ namespace HeavenStudio.Games
new BeatAction.Action(syllables == 6 ? beat + 1.75 : beat + 1.50, delegate { canDodge = true; }),
new BeatAction.Action(beat + 2.00f, delegate { ravenCanBop = false; }),
new BeatAction.Action(beat + 2.00f, delegate { SlapReady(); }),
new BeatAction.Action(beat + 3.00f, delegate { audienceRespond(beat); }),
new BeatAction.Action(beat + 2.25f, delegate { boingHasCrowdSounds = (crowdSounds == 0); }),
new BeatAction.Action(beat + 3.00f, delegate { audienceRespond(beat, crowdSounds); }),
new BeatAction.Action(beat + 3.20f, delegate { isPreparingForBoing = false; }),
new BeatAction.Action(beat + 3.25f, delegate { vultureCanBop = true; ravenCanBop = true; }),
});
@ -554,39 +602,60 @@ namespace HeavenStudio.Games
new BeatAction.Action(syllables == 6 ? beat + 1.75 : beat + 1.50, delegate { canDodge = true; }),
new BeatAction.Action(beat + 2.00f, delegate { ravenCanBop = false; }),
new BeatAction.Action(beat + 2.00f, delegate { SlapReady(); }),
new BeatAction.Action(beat + 3.00f, delegate { audienceRespond(beat); }),
new BeatAction.Action(beat + 2.25f, delegate { boingHasCrowdSounds = (crowdSounds == 0); }),
new BeatAction.Action(beat + 3.00f, delegate { audienceRespond(beat, crowdSounds); }),
new BeatAction.Action(beat + 3.20f, delegate { isPreparingForBoing = false; }),
new BeatAction.Action(beat + 3.25f, delegate { vultureCanBop = true; ravenCanBop = true; }),
});
}
}
public void audienceRespond(double beat)
public void audienceRespond(double beat, int crowdSounds)
{
if (hitHaiL && hitHaiR)
if (crowdSounds == 0)
{
BeatAction.New(instance, new List<BeatAction.Action>()
if (hitHaiL && hitHaiR)
{
new BeatAction.Action(beat + 3.50f, delegate { crowdSound = SoundByte.PlayOneShotGame("manzai/haiClap"); }),
});
}
if (hitDonaiyanen)
{
BeatAction.New(instance, new List<BeatAction.Action>()
BeatAction.New(instance, new List<BeatAction.Action>()
{
new BeatAction.Action(beat + 3.50f, delegate { crowdSound = SoundByte.PlayOneShotGame("manzai/haiClap"); }),
});
}
if (hitDonaiyanen)
{
new BeatAction.Action(beat + 3.00f, delegate { crowdSound = SoundByte.PlayOneShotGame("manzai/donaiyanenLaugh"); }),
});
BeatAction.New(instance, new List<BeatAction.Action>()
{
new BeatAction.Action(beat + 3.00f, delegate { crowdSound = SoundByte.PlayOneShotGame("manzai/donaiyanenLaugh"); }),
});
}
}
hitHaiL = false;
hitHaiR = false;
hitDonaiyanen = false;
}
public void BoingJust(PlayerActionEvent caller, float state)
public void BoingJustP(PlayerActionEvent caller, float state)
{
BoingJust(caller, state, true);
}
public void BoingJustNP(PlayerActionEvent caller, float state)
{
BoingJust(caller, state, false);
}
public void BoingJust(PlayerActionEvent caller, float state, bool isPitched)
{
double beat = caller.startBeat + caller.timer;
float pitch = isPitched ? (Conductor.instance.GetBpmAtBeat(beat)/98)*Conductor.instance.TimelinePitch : 1;
var sounds = new List<MultiSound.Sound>();
sounds.Add(new MultiSound.Sound("manzai/donaiyanen1", beat + 0.00, pitch));
sounds.Add(new MultiSound.Sound("manzai/donaiyanen2", beat + 0.25, pitch));
sounds.Add(new MultiSound.Sound("manzai/donaiyanen3", beat + 0.75, pitch));
sounds.Add(new MultiSound.Sound("manzai/donaiyanen4", beat + 1.00, pitch));
MultiSound.Play(sounds.ToArray(), forcePlay: true);
SoundByte.PlayOneShotGame("manzai/donaiyanen", pitch: (Conductor.instance.GetBpmAtBeat(beat)/98)*Conductor.instance.TimelinePitch);
if (state >= 1f || state <= -1f)
{
SoundByte.PlayOneShotGame("manzai/miss1");
@ -631,8 +700,8 @@ namespace HeavenStudio.Games
if (!missedWithWrongButton)
{
crowdSound = SoundByte.PlayOneShotGame("manzai/disappointed");
missedWithWrongButton = false;
}
missedWithWrongButton = false;
}
public void CustomBoing(double beat)
@ -754,7 +823,14 @@ namespace HeavenStudio.Games
if (PlayerInput.GetIsAction(InputAction_BasicPress) && IsExpectingInputNow(InputAction_Alt) && PlayerInput.CurrentControlStyle != InputController.ControlStyles.Touch)
{
crowdSound = SoundByte.PlayOneShotGame("manzai/missWrongButton");
if (boingHasCrowdSounds)
{
crowdSound = SoundByte.PlayOneShotGame("manzai/missWrongButton");
}
else
{
crowdSound = SoundByte.PlayOneShotGame("manzai/missClick");
}
kasukeHaiAnimFull();
missedWithWrongButton = true;
}
@ -826,8 +902,8 @@ namespace HeavenStudio.Games
continue;
}
bool isOnGameSwitchBeat = entity.beat == beat;
if(entity.datamodel == "manzai/pun") {DoPun(entity.beat, 0, entity["pun"]);}
if(entity.datamodel == "manzai/boing") {DoPun(entity.beat, 1, entity["pun"]);}
if(entity.datamodel == "manzai/pun") {DoPun(entity.beat, 0, entity["pun"], entity["pitch"], entity["crowd"]);}
if(entity.datamodel == "manzai/boing") {DoPun(entity.beat, 1, entity["pun"], entity["pitch"], entity["crowd"]);}
}
}
}