56 lines
1.4 KiB
C#
56 lines
1.4 KiB
C#
|
using Assets.RoR2.Scripts.Platform;
|
||
|
using EntityStates.Railgunner.Weapon;
|
||
|
|
||
|
namespace RoR2.Achievements.Railgunner;
|
||
|
|
||
|
[RegisterAchievement("RailgunnerConsecutiveWeakPoints", "Skills.Railgunner.SecondaryAlt1", null, 3u, null)]
|
||
|
public class RailgunnerConsecutiveWeakPointsAchievement : BaseAchievement
|
||
|
{
|
||
|
private const int requirement = 30;
|
||
|
|
||
|
private int consecutiveCount;
|
||
|
|
||
|
protected override BodyIndex LookUpRequiredBodyIndex()
|
||
|
{
|
||
|
return BodyCatalog.FindBodyIndex("RailgunnerBody");
|
||
|
}
|
||
|
|
||
|
protected override void OnBodyRequirementMet()
|
||
|
{
|
||
|
BaseFireSnipe.onWeakPointHit += OnWeakPointHit;
|
||
|
BaseFireSnipe.onWeakPointMissed += OnWeakPointMissed;
|
||
|
}
|
||
|
|
||
|
protected override void OnBodyRequirementBroken()
|
||
|
{
|
||
|
BaseFireSnipe.onWeakPointHit -= OnWeakPointHit;
|
||
|
BaseFireSnipe.onWeakPointMissed -= OnWeakPointMissed;
|
||
|
consecutiveCount = 0;
|
||
|
}
|
||
|
|
||
|
private void OnWeakPointMissed()
|
||
|
{
|
||
|
consecutiveCount = 0;
|
||
|
}
|
||
|
|
||
|
private void OnWeakPointHit(DamageInfo damageInfo)
|
||
|
{
|
||
|
consecutiveCount++;
|
||
|
if (consecutiveCount >= 30)
|
||
|
{
|
||
|
Grant();
|
||
|
TryToCompleteActivity();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override void TryToCompleteActivity()
|
||
|
{
|
||
|
if (base.localUser.id == LocalUserManager.GetFirstLocalUser().id && shouldGrant)
|
||
|
{
|
||
|
BaseActivitySelector baseActivitySelector = new BaseActivitySelector();
|
||
|
baseActivitySelector.activityAchievementID = "RailgunnerConsecutiveWeakPoints";
|
||
|
PlatformSystems.activityManager.TryToCompleteActivity(baseActivitySelector);
|
||
|
}
|
||
|
}
|
||
|
}
|