mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 10:42:54 +08:00
Add a velocity multiplier to taiko hit objects.
This will be usable from the editor moving forward also - where every hit object can have its own velocity multiplier on top of the control point one.
This commit is contained in:
parent
aad8851460
commit
d7ed392f27
@ -26,8 +26,6 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
||||
|
||||
public Beatmap<TaikoHitObject> Convert(Beatmap original)
|
||||
{
|
||||
if (original is LegacyBeatmap)
|
||||
original.TimingInfo.ControlPoints.ForEach(c => c.VelocityAdjustment /= legacy_velocity_scale);
|
||||
|
||||
return new Beatmap<TaikoHitObject>(original)
|
||||
{
|
||||
@ -73,7 +71,8 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
||||
{
|
||||
StartTime = obj.StartTime,
|
||||
Sample = obj.Sample,
|
||||
IsStrong = strong
|
||||
IsStrong = strong,
|
||||
VelocityMultiplier = legacy_velocity_scale
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -85,7 +84,8 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
||||
Sample = obj.Sample,
|
||||
IsStrong = strong,
|
||||
Distance = distanceData.Distance * (repeatsData?.RepeatCount ?? 1) * legacy_velocity_scale,
|
||||
TickRate = beatmap.BeatmapInfo.Difficulty.SliderTickRate == 3 ? 3 : 4
|
||||
TickRate = beatmap.BeatmapInfo.Difficulty.SliderTickRate == 3 ? 3 : 4,
|
||||
VelocityMultiplier = legacy_velocity_scale
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -98,9 +98,9 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
||||
StartTime = obj.StartTime,
|
||||
Sample = obj.Sample,
|
||||
IsStrong = strong,
|
||||
|
||||
EndTime = endTimeData.EndTime,
|
||||
RequiredHits = (int)Math.Max(1, endTimeData.Duration / 1000 * hitMultiplier)
|
||||
RequiredHits = (int)Math.Max(1, endTimeData.Duration / 1000 * hitMultiplier),
|
||||
VelocityMultiplier = legacy_velocity_scale
|
||||
};
|
||||
}
|
||||
else
|
||||
@ -113,7 +113,8 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
||||
{
|
||||
StartTime = obj.StartTime,
|
||||
Sample = obj.Sample,
|
||||
IsStrong = strong
|
||||
IsStrong = strong,
|
||||
VelocityMultiplier = legacy_velocity_scale
|
||||
};
|
||||
}
|
||||
else
|
||||
@ -123,6 +124,7 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
||||
StartTime = obj.StartTime,
|
||||
Sample = obj.Sample,
|
||||
IsStrong = strong,
|
||||
VelocityMultiplier = legacy_velocity_scale
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ namespace osu.Game.Modes.Taiko.Objects
|
||||
{
|
||||
base.ApplyDefaults(timing, difficulty);
|
||||
|
||||
Velocity = base_distance * difficulty.SliderMultiplier * difficulty.SliderTickRate * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime);
|
||||
Velocity = base_distance * difficulty.SliderMultiplier * VelocityMultiplier / timing.BeatLengthAt(StartTime);
|
||||
tickSpacing = timing.BeatLengthAt(StartTime) / TickRate;
|
||||
|
||||
RequiredGoodHits = TotalTicks * Math.Min(0.15, 0.05 + 0.10 / 6 * difficulty.OverallDifficulty);
|
||||
|
@ -19,6 +19,11 @@ namespace osu.Game.Modes.Taiko.Objects
|
||||
/// </summary>
|
||||
private const double base_scroll_time = 6000;
|
||||
|
||||
/// <summary>
|
||||
/// The velocity multiplier applied to this hit object.
|
||||
/// </summary>
|
||||
public float VelocityMultiplier = 1;
|
||||
|
||||
/// <summary>
|
||||
/// The time to scroll in the HitObject.
|
||||
/// </summary>
|
||||
@ -39,7 +44,7 @@ namespace osu.Game.Modes.Taiko.Objects
|
||||
{
|
||||
base.ApplyDefaults(timing, difficulty);
|
||||
|
||||
PreEmpt = base_scroll_time / difficulty.SliderMultiplier * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime) / 1000;
|
||||
PreEmpt = base_scroll_time / difficulty.SliderMultiplier * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime) / VelocityMultiplier / 1000;
|
||||
|
||||
ControlPoint overridePoint;
|
||||
Kiai = timing.TimingPointAt(StartTime, out overridePoint).KiaiMode;
|
||||
|
Loading…
Reference in New Issue
Block a user