mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-12 08:37:37 +02:00
start flow bar
This commit is contained in:
@ -40,6 +40,11 @@ namespace HeavenStudio.Games.Loaders
|
||||
new Param("toggle", true, "Return Camera", "Camera zooms back in?"),
|
||||
}),
|
||||
new GameAction("prepare", delegate { var e = eventCaller.currentEntity; KarateMan.instance.Prepare(e.beat, e.length);}, 1f, true),
|
||||
new GameAction("set gameplay modifiers", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetGameplayMods(e.type, e.toggle); }, 0.5f, false, new List<Param>()
|
||||
{
|
||||
new Param("type", KarateMan.NoriMode.None, "Flow Bar type", "The type of Flow bar to use"),
|
||||
new Param("toggle", true, "Enable Combos", "Allow the player to combo? (Contextual combos will still be allowed even when off)"),
|
||||
}),
|
||||
new GameAction("set background effects", delegate { var e = eventCaller.currentEntity; KarateMan.instance.SetBgAndShadowCol(e.beat, e.length, e.type, e.type2, e.colorA, e.colorB, e.type3); }, 0.5f, true, new List<Param>()
|
||||
{
|
||||
new Param("type", KarateMan.BackgroundType.Yellow, "Background Type", "The preset background type"),
|
||||
@ -206,6 +211,16 @@ namespace HeavenStudio.Games
|
||||
Blush
|
||||
}
|
||||
|
||||
public enum NoriMode
|
||||
{
|
||||
None,
|
||||
Tengoku,
|
||||
Mania,
|
||||
}
|
||||
public bool IsComboEnable = true; //only stops Out combo inputs, this basically makes combo contextual
|
||||
public bool IsNoriActive { get { return Nori.MaxNori > 0; } }
|
||||
public float NoriPerformance { get { if (IsNoriActive) return Nori.Nori / Nori.MaxNori; else return 1f; } }
|
||||
|
||||
public Color[] LightBulbColors;
|
||||
public Color[] BackgroundColors;
|
||||
public Color[] ShadowColors;
|
||||
@ -224,6 +239,8 @@ namespace HeavenStudio.Games
|
||||
public Transform ItemHolder;
|
||||
public GameObject Item;
|
||||
public KarateManJoe Joe;
|
||||
public GameObject NoriGO;
|
||||
public KarateManNoriController Nori;
|
||||
|
||||
[Header("Colour Map")]
|
||||
public Material MappingMaterial;
|
||||
@ -381,7 +398,7 @@ namespace HeavenStudio.Games
|
||||
startCamSpecial = beat;
|
||||
cameraAngle = CameraAngle.Special;
|
||||
}
|
||||
wantsReturn = returns ? beat + length : Single.MaxValue;
|
||||
wantsReturn = returns ? beat + length - 0.001f : Single.MaxValue;
|
||||
cameraReturnLength = Mathf.Min(2f, length*0.5f);
|
||||
}
|
||||
|
||||
@ -665,6 +682,13 @@ namespace HeavenStudio.Games
|
||||
UpdateFilterColour(bgColour, filterColour);
|
||||
}
|
||||
|
||||
public void SetGameplayMods(int mode, bool combo)
|
||||
{
|
||||
NoriGO.SetActive(true);
|
||||
Nori.SetNoriMode(mode);
|
||||
IsComboEnable = combo;
|
||||
}
|
||||
|
||||
void UpdateFilterColour(Color bgColor, Color filterColor)
|
||||
{
|
||||
Color col;
|
||||
|
@ -32,10 +32,13 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
public bool inKick = false;
|
||||
float lastChargeTime = Single.MinValue;
|
||||
float unPrepareTime = Single.MinValue;
|
||||
float noNuriJabTime = Single.MinValue;
|
||||
bool canEmote = false;
|
||||
public int wantFace = 0;
|
||||
|
||||
bool inSpecial { get { return inCombo || lockedInCombo || Conductor.instance.GetPositionFromBeat(lastChargeTime, 2.75f) <= 0.25f; } }
|
||||
public bool inSpecial { get { return inCombo || lockedInCombo ||
|
||||
Conductor.instance.GetPositionFromBeat(lastChargeTime, 2.75f) <= 0.25f || inNuriLock; } }
|
||||
public bool inNuriLock { get { return (Conductor.instance.songPositionInBeats >= noNuriJabTime && Conductor.instance.songPositionInBeats < noNuriJabTime + 1f); } }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
@ -45,6 +48,25 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
{
|
||||
var cond = Conductor.instance;
|
||||
|
||||
UpdateShadowColour();
|
||||
|
||||
if (canEmote && wantFace >= 0)
|
||||
{
|
||||
SetFaceExpressionForced(wantFace);
|
||||
if (wantFace == (int) KarateMan.KarateManFaces.Surprise) wantFace = -1;
|
||||
}
|
||||
|
||||
if (cond.songPositionInBeats >= noNuriJabTime && cond.songPositionInBeats < noNuriJabTime + 1f)
|
||||
{
|
||||
anim.DoScaledAnimation("JabNoNuri", noNuriJabTime, 1f);
|
||||
bop.startBeat = noNuriJabTime + 1f;
|
||||
}
|
||||
else if (cond.songPositionInBeats >= noNuriJabTime + 1f && noNuriJabTime != Single.MinValue)
|
||||
{
|
||||
bop.startBeat = noNuriJabTime + 1f;
|
||||
noNuriJabTime = Single.MinValue;
|
||||
}
|
||||
|
||||
if (unPrepareTime != Single.MinValue && cond.songPositionInBeats >= unPrepareTime)
|
||||
{
|
||||
unPrepareTime = Single.MinValue;
|
||||
@ -103,7 +125,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
Jukebox.PlayOneShotGame("karateman/swingNoHit", forcePlay: true);
|
||||
}
|
||||
}
|
||||
else if (PlayerInput.AltPressed() && !inSpecial)
|
||||
else if (PlayerInput.AltPressed() && KarateMan.instance.IsComboEnable && !inSpecial)
|
||||
{
|
||||
if (!KarateMan.instance.IsExpectingInputNow())
|
||||
{
|
||||
@ -136,13 +158,6 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
}
|
||||
}
|
||||
|
||||
UpdateShadowColour();
|
||||
|
||||
if (canEmote && wantFace >= 0)
|
||||
{
|
||||
SetFaceExpressionForced(wantFace);
|
||||
if (wantFace == (int) KarateMan.KarateManFaces.Surprise) wantFace = -1;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Punch(int forceHand = 0)
|
||||
@ -178,6 +193,11 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
anim.DoScaledAnimationAsync("Straight", 0.5f);
|
||||
straight = true;
|
||||
break;
|
||||
case 3:
|
||||
lastPunchTime = Single.MinValue;
|
||||
anim.DoNormalizedAnimation("JabNoNuri");
|
||||
noNuriJabTime = cond.songPositionInBeats;
|
||||
break;
|
||||
}
|
||||
bop.startBeat = cond.songPositionInBeats + 0.5f;
|
||||
return straight; //returns what hand was used to punch the object
|
||||
|
135
Assets/Scripts/Games/KarateMan/KarateManNoriController.cs
Normal file
135
Assets/Scripts/Games/KarateMan/KarateManNoriController.cs
Normal file
@ -0,0 +1,135 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
using HeavenStudio.Util;
|
||||
|
||||
namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
{
|
||||
public class KarateManNoriController : MonoBehaviour
|
||||
{
|
||||
public GameObject NoriController;
|
||||
public GameObject NoriHeart;
|
||||
public Transform NoriHolder;
|
||||
public Material NoriMaterial;
|
||||
|
||||
public float Nori;
|
||||
public int MaxNori;
|
||||
Animator[] NoriHeartAnimators;
|
||||
Material[] NoriHeartMaterials;
|
||||
|
||||
static Vector2 HeartScale = new Vector2(60, 52);
|
||||
static float ScaleFactorTengoku = 1/46f;
|
||||
static float ScaleFactorMania = 1/72f;
|
||||
|
||||
static float CameraOffset = 10;
|
||||
static float PeriodLow = 24/60f;
|
||||
static float PeriodHigh = 15/60f;
|
||||
|
||||
int noriMode = (int) KarateMan.NoriMode.None;
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void SetNoriMode(int mode, int startingNori = 0)
|
||||
{
|
||||
float scaleFactor = 0f;
|
||||
//clear all children of the holder
|
||||
foreach (Transform child in NoriHolder)
|
||||
{
|
||||
Destroy(child.gameObject);
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case (int) KarateMan.NoriMode.Tengoku:
|
||||
MaxNori = 5;
|
||||
Nori = Mathf.Clamp(startingNori, 0, MaxNori);
|
||||
scaleFactor = ScaleFactorTengoku;
|
||||
break;
|
||||
case (int) KarateMan.NoriMode.Mania:
|
||||
MaxNori = 10;
|
||||
Nori = Mathf.Clamp(startingNori, 0, MaxNori);
|
||||
scaleFactor = ScaleFactorMania;
|
||||
break;
|
||||
default:
|
||||
MaxNori = 0;
|
||||
Nori = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
NoriHeartAnimators = new Animator[MaxNori];
|
||||
NoriHeartMaterials = new Material[MaxNori];
|
||||
noriMode = mode;
|
||||
|
||||
if (mode == (int) KarateMan.NoriMode.None) return;
|
||||
|
||||
//add the label?
|
||||
|
||||
for (int i = 0; i < MaxNori; i++)
|
||||
{
|
||||
GameObject h = GameObject.Instantiate(NoriHeart, NoriHolder);
|
||||
h.SetActive(true);
|
||||
|
||||
Material m_Material = Instantiate(NoriMaterial);
|
||||
NoriHeartMaterials[i] = m_Material;
|
||||
h.GetComponent<Image>().material = m_Material;
|
||||
|
||||
RectTransform hrect = h.GetComponent<RectTransform>();
|
||||
hrect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, HeartScale.x * scaleFactor);
|
||||
hrect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, HeartScale.y * scaleFactor);
|
||||
|
||||
NoriHeartAnimators[i] = h.GetComponent<Animator>();
|
||||
NoriHeartAnimators[i].Play(i <= (int) (startingNori - 1) ? "NoriFull" : "NoriNone", -1, (Time.time * PeriodLow) % 1f);
|
||||
}
|
||||
}
|
||||
|
||||
public void DoHit()
|
||||
{
|
||||
if (noriMode == (int) KarateMan.NoriMode.None) return;
|
||||
if (noriMode == (int) KarateMan.NoriMode.Tengoku)
|
||||
{
|
||||
if (Nori >= MaxNori) return;
|
||||
Nori += 1;
|
||||
NoriHeartAnimators[(int) Nori - 1].Play("NoriFull", -1, (Time.time * PeriodHigh) % 1f);
|
||||
}
|
||||
}
|
||||
|
||||
public void DoNG()
|
||||
{
|
||||
if (noriMode == (int) KarateMan.NoriMode.None) return;
|
||||
if (noriMode == (int) KarateMan.NoriMode.Tengoku)
|
||||
{
|
||||
if (Nori <= 0) return;
|
||||
Nori -= 1;
|
||||
NoriHeartAnimators[(int) Nori].Play("NoriNone", -1, (Time.time * PeriodLow) % 1f);
|
||||
}
|
||||
}
|
||||
|
||||
public void DoThrough()
|
||||
{
|
||||
if (noriMode == (int) KarateMan.NoriMode.None) return;
|
||||
if (noriMode == (int) KarateMan.NoriMode.Tengoku)
|
||||
{
|
||||
Nori = 0;
|
||||
foreach (Animator anim in NoriHeartAnimators)
|
||||
{
|
||||
anim.Play("NoriNone", -1, (Time.time * PeriodLow) % 1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
Transform target = GameCamera.instance.transform;
|
||||
|
||||
Vector3 displacement = target.forward * CameraOffset;
|
||||
transform.position = target.position + displacement;
|
||||
transform.rotation = target.rotation;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f1678e3fe1b7c94f9a1558cfd247853
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -335,6 +335,19 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
}
|
||||
break;
|
||||
case FlyStatus.HitWeak:
|
||||
prog = cond.GetPositionFromBeat(startBeat, 1f);
|
||||
if (cond.songPositionInBeats >= startBeat + 3f)
|
||||
{
|
||||
GameObject.Destroy(ShadowInstance.gameObject);
|
||||
GameObject.Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
Vector3 pos = new Vector3(HitPosition[1].position.x + 0.25f, HitPosition[0].position.y, HitPosition[1].position.z);
|
||||
if (prog <= 1f)
|
||||
{
|
||||
pos.y = EasingFunction.EaseInCubic(HitPosition[1].position.y, HitPosition[0].position.y, prog);
|
||||
}
|
||||
transform.position = pos;
|
||||
break;
|
||||
}
|
||||
ShadowInstance.transform.position = new Vector3(transform.position.x, floorHeight - 0.5f, transform.position.z);
|
||||
@ -561,9 +574,9 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
{
|
||||
if (GameManager.instance.currentGame != "karateman") return;
|
||||
var joe = KarateMan.instance.Joe;
|
||||
if (status == FlyStatus.Fly && !joe.inCombo) {
|
||||
bool straight = joe.Punch(ItemPunchHand());
|
||||
if (status == FlyStatus.Fly && !(joe.inCombo || joe.inNuriLock)) {
|
||||
if (state <= -1f || state >= 1f) {
|
||||
bool straight = joe.Punch(ItemPunchHand());
|
||||
startBeat = Conductor.instance.songPositionInBeats;
|
||||
CurrentCurve = ItemCurves[6];
|
||||
curveTargetBeat = 1f;
|
||||
@ -577,10 +590,29 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
|
||||
KarateMan.instance.Nori.DoNG();
|
||||
}
|
||||
else {
|
||||
if (KarateMan.instance.IsNoriActive)
|
||||
{
|
||||
if ((type == ItemType.Rock || type == ItemType.Cooking || type == ItemType.Alien || type == ItemType.TacoBell)
|
||||
&& KarateMan.instance.NoriPerformance < 0.6f)
|
||||
{
|
||||
CreateHitMark(false);
|
||||
startBeat = Conductor.instance.songPositionInBeats;
|
||||
status = FlyStatus.HitWeak;
|
||||
Jukebox.PlayOneShotGame("karateman/hitNoNori", forcePlay: true);
|
||||
joe.Punch(3);
|
||||
transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z - 30f);
|
||||
KarateMan.instance.Nori.DoNG();
|
||||
return;
|
||||
}
|
||||
}
|
||||
bool straight = joe.Punch(ItemPunchHand());
|
||||
ItemHitEffect(straight);
|
||||
status = FlyStatus.Hit;
|
||||
KarateMan.instance.Nori.DoHit();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -588,10 +620,11 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
public void ItemWrongAction(PlayerActionEvent caller, float state)
|
||||
{
|
||||
if (GameManager.instance.currentGame != "karateman") return;
|
||||
if (!KarateMan.instance.IsComboEnable) return;
|
||||
//hitting a normal object with the alt input
|
||||
//WHEN SCORING THIS IS A MISS
|
||||
var joe = KarateMan.instance.Joe;
|
||||
if (status == FlyStatus.Fly && !joe.inCombo) {
|
||||
if (status == FlyStatus.Fly && !(joe.inCombo || joe.inNuriLock)) {
|
||||
joe.ForceFailCombo(Conductor.instance.songPositionInBeats);
|
||||
if (state <= -1f || state >= 1f) {
|
||||
startBeat = Conductor.instance.songPositionInBeats;
|
||||
@ -613,6 +646,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
KarateMan.instance.Nori.DoThrough();
|
||||
}
|
||||
}
|
||||
|
||||
@ -626,22 +660,22 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
BeatAction.New(joe.gameObject, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(startBeat + 2f, delegate {
|
||||
//TODO: play miss sound
|
||||
//deduct flow if applicable
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Surprise);
|
||||
Jukebox.PlayOneShotGame("karateman/karate_through", forcePlay: true);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 6f, delegate {
|
||||
if (joe.wantFace == -1)
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
KarateMan.instance.Nori.DoThrough();
|
||||
}
|
||||
|
||||
public void ComboStartJustOrNg(PlayerActionEvent caller, float state)
|
||||
{
|
||||
if (GameManager.instance.currentGame != "karateman") return;
|
||||
var joe = KarateMan.instance.Joe;
|
||||
if (status == FlyStatus.Fly && !(joe.inKick || joe.wantKick || joe.inCombo)) {
|
||||
if (status == FlyStatus.Fly && !(joe.inKick || joe.wantKick || joe.inCombo || joe.inNuriLock)) {
|
||||
joe.inCombo = true;
|
||||
joe.Punch(1);
|
||||
joe.SetComboId(comboId);
|
||||
@ -652,9 +686,12 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
curveTargetBeat = 1f;
|
||||
Jukebox.PlayOneShot("miss");
|
||||
status = FlyStatus.NG;
|
||||
|
||||
KarateMan.instance.Nori.DoNG();
|
||||
}
|
||||
else {
|
||||
ItemHitEffect();
|
||||
KarateMan.instance.Nori.DoHit();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -667,16 +704,16 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
if (status != FlyStatus.Fly || gameObject == null) return;
|
||||
BeatAction.New(joe.gameObject, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(startBeat + 2f, delegate {
|
||||
//TODO: play miss sound
|
||||
//deduct flow if applicable
|
||||
new BeatAction.Action(startBeat + 2f, delegate {
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Surprise);
|
||||
Jukebox.PlayOneShotGame("karateman/karate_through", forcePlay: true);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 6f, delegate {
|
||||
if (joe.wantFace == -1)
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
KarateMan.instance.Nori.DoThrough();
|
||||
}
|
||||
|
||||
public void ComboStartWrongAction(PlayerActionEvent caller, float state)
|
||||
@ -685,7 +722,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
//hitting a combo start with the normal input
|
||||
//WHEN SCORING THIS IS A MISS
|
||||
var joe = KarateMan.instance.Joe;
|
||||
if (status == FlyStatus.Fly && !joe.inCombo) {
|
||||
if (status == FlyStatus.Fly && !(joe.inCombo || joe.inNuriLock)) {
|
||||
bool straight = joe.Punch(ItemPunchHand());
|
||||
if (state <= -1f || state >= 1f) {
|
||||
startBeat = Conductor.instance.songPositionInBeats;
|
||||
@ -697,6 +734,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
else {
|
||||
ItemHitEffect(straight);
|
||||
}
|
||||
KarateMan.instance.Nori.DoThrough();
|
||||
}
|
||||
}
|
||||
|
||||
@ -725,6 +763,8 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
|
||||
KarateMan.instance.Nori.DoNG();
|
||||
}
|
||||
else {
|
||||
ItemHitEffect();
|
||||
@ -737,6 +777,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
})
|
||||
});
|
||||
KarateMan.instance.Nori.DoHit();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -764,8 +805,6 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
BeatAction.New(joe.gameObject, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(startBeat + 2f, delegate {
|
||||
//TODO: play miss sound
|
||||
//deduct flow if applicable
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Surprise);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 6f, delegate {
|
||||
@ -793,25 +832,28 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
})
|
||||
});
|
||||
}
|
||||
KarateMan.instance.Nori.DoThrough();
|
||||
}
|
||||
|
||||
public void ComboEndWrongAction(PlayerActionEvent caller, float state)
|
||||
{
|
||||
if (GameManager.instance.currentGame != "karateman") return;
|
||||
KarateMan.instance.Joe.Punch(1);
|
||||
if (!(KarateMan.instance.Joe.inCombo || KarateMan.instance.Joe.inNuriLock))
|
||||
KarateMan.instance.Joe.Punch(1);
|
||||
}
|
||||
|
||||
public void ComboEndWrongActionAlt(PlayerActionEvent caller, float state)
|
||||
{
|
||||
if (GameManager.instance.currentGame != "karateman") return;
|
||||
KarateMan.instance.Joe.ForceFailCombo(Conductor.instance.songPositionInBeats);
|
||||
if (KarateMan.instance.IsComboEnable && !(KarateMan.instance.Joe.inCombo || KarateMan.instance.Joe.inNuriLock))
|
||||
KarateMan.instance.Joe.ForceFailCombo(Conductor.instance.songPositionInBeats);
|
||||
}
|
||||
|
||||
public void KickChargeJustOrNg(PlayerActionEvent caller, float state)
|
||||
{
|
||||
if (GameManager.instance.currentGame != "karateman") return;
|
||||
var joe = KarateMan.instance.Joe;
|
||||
if (status == FlyStatus.Fly && !(joe.inKick || joe.wantKick || joe.inCombo)) {
|
||||
if (status == FlyStatus.Fly && !(joe.inKick || joe.wantKick || joe.inCombo || joe.inNuriLock)) {
|
||||
joe.Punch(ItemPunchHand());
|
||||
if (state <= -1f || state >= 1f) {
|
||||
startBeat = Conductor.instance.songPositionInBeats;
|
||||
@ -827,11 +869,13 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
KarateMan.instance.Nori.DoNG();
|
||||
}
|
||||
else {
|
||||
joe.StartKickCharge(startBeat + 1.25f);
|
||||
ItemHitEffect();
|
||||
status = FlyStatus.Hit;
|
||||
KarateMan.instance.Nori.DoHit();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -845,16 +889,16 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
if (status != FlyStatus.Fly || gameObject == null) return;
|
||||
BeatAction.New(joe.gameObject, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(startBeat + 2f, delegate {
|
||||
//TODO: play miss sound
|
||||
//deduct flow if applicable
|
||||
new BeatAction.Action(startBeat + 2f, delegate {
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Surprise);
|
||||
Jukebox.PlayOneShotGame("karateman/karate_through", forcePlay: true);
|
||||
}),
|
||||
new BeatAction.Action(startBeat + 6f, delegate {
|
||||
if (joe.wantFace == -1)
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
KarateMan.instance.Nori.DoThrough();
|
||||
}
|
||||
|
||||
public void KickJustOrNg(PlayerActionEvent caller, float state)
|
||||
@ -879,6 +923,8 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
}),
|
||||
});
|
||||
|
||||
KarateMan.instance.Nori.DoNG();
|
||||
}
|
||||
else {
|
||||
ItemHitEffect();
|
||||
@ -897,6 +943,8 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
joe.SetFaceExpression((int) KarateMan.KarateManFaces.Normal);
|
||||
})
|
||||
});
|
||||
|
||||
KarateMan.instance.Nori.DoHit();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -915,6 +963,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
|
||||
KarateMan.instance.Joe.SetFaceExpression((int) KarateMan.KarateManFaces.VerySad);
|
||||
})
|
||||
});
|
||||
KarateMan.instance.Nori.DoThrough();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user