70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
|
namespace RoR2.Achievements;
|
||
|
|
||
|
[RegisterAchievement("CarryLunarItems", "Items.Meteor", null, 2u, null)]
|
||
|
public class CarryLunarItemsAchievement : BaseAchievement
|
||
|
{
|
||
|
public const int requirement = 5;
|
||
|
|
||
|
private PlayerCharacterMasterController currentMasterController;
|
||
|
|
||
|
private Inventory currentInventory;
|
||
|
|
||
|
public override void OnInstall()
|
||
|
{
|
||
|
base.OnInstall();
|
||
|
base.localUser.onMasterChanged += OnMasterChanged;
|
||
|
SetMasterController(base.localUser.cachedMasterController);
|
||
|
}
|
||
|
|
||
|
public override void OnUninstall()
|
||
|
{
|
||
|
SetMasterController(null);
|
||
|
base.localUser.onMasterChanged -= OnMasterChanged;
|
||
|
base.OnUninstall();
|
||
|
}
|
||
|
|
||
|
private void SetMasterController(PlayerCharacterMasterController newMasterController)
|
||
|
{
|
||
|
if ((object)currentMasterController != newMasterController)
|
||
|
{
|
||
|
if ((object)currentInventory != null)
|
||
|
{
|
||
|
currentInventory.onInventoryChanged -= OnInventoryChanged;
|
||
|
}
|
||
|
currentMasterController = newMasterController;
|
||
|
currentInventory = currentMasterController?.master?.inventory;
|
||
|
if ((object)currentInventory != null)
|
||
|
{
|
||
|
currentInventory.onInventoryChanged += OnInventoryChanged;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnInventoryChanged()
|
||
|
{
|
||
|
if ((bool)currentInventory)
|
||
|
{
|
||
|
int num = 5;
|
||
|
EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(currentInventory.currentEquipmentIndex);
|
||
|
if (equipmentDef != null && equipmentDef.isLunar)
|
||
|
{
|
||
|
num--;
|
||
|
}
|
||
|
EquipmentDef equipmentDef2 = EquipmentCatalog.GetEquipmentDef(currentInventory.alternateEquipmentIndex);
|
||
|
if (equipmentDef2 != null && equipmentDef2.isLunar)
|
||
|
{
|
||
|
num--;
|
||
|
}
|
||
|
if (currentInventory.HasAtLeastXTotalItemsOfTier(ItemTier.Lunar, num))
|
||
|
{
|
||
|
Grant();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnMasterChanged()
|
||
|
{
|
||
|
SetMasterController(base.localUser.cachedMasterController);
|
||
|
}
|
||
|
}
|