r2mods/ilspy_dump/ror2_csproj/RoR2/CaptainDefenseMatrixControl...

77 lines
1.9 KiB
C#

using RoR2.Stats;
using UnityEngine;
using UnityEngine.Networking;
namespace RoR2;
public class CaptainDefenseMatrixController : MonoBehaviour
{
public int defenseMatrixToGrantPlayer = 1;
public int defenseMatrixToGrantMechanicalAllies = 1;
private CharacterBody characterBody;
private void Awake()
{
characterBody = GetComponent<CharacterBody>();
}
private void Start()
{
if (NetworkServer.active)
{
TryGrantItem();
}
}
private void OnEnable()
{
if (NetworkServer.active)
{
MasterSummon.onServerMasterSummonGlobal += OnServerMasterSummonGlobal;
}
}
private void OnDisable()
{
if (NetworkServer.active)
{
MasterSummon.onServerMasterSummonGlobal -= OnServerMasterSummonGlobal;
}
}
private void TryGrantItem()
{
if ((bool)characterBody.master)
{
bool flag = false;
if ((bool)characterBody.master.playerStatsComponent)
{
flag = characterBody.master.playerStatsComponent.currentStats.GetStatValueDouble(PerBodyStatDef.totalTimeAlive, BodyCatalog.GetBodyName(characterBody.bodyIndex)) > 0.0;
}
if (!flag && characterBody.master.inventory.GetItemCount(RoR2Content.Items.CaptainDefenseMatrix) <= 0)
{
characterBody.master.inventory.GiveItem(RoR2Content.Items.CaptainDefenseMatrix, defenseMatrixToGrantPlayer);
}
}
}
private void OnServerMasterSummonGlobal(MasterSummon.MasterSummonReport summonReport)
{
if (!characterBody.master || !(characterBody.master == summonReport.leaderMasterInstance))
{
return;
}
CharacterMaster summonMasterInstance = summonReport.summonMasterInstance;
if ((bool)summonMasterInstance)
{
CharacterBody body = summonMasterInstance.GetBody();
if ((bool)body && (body.bodyFlags & CharacterBody.BodyFlags.Mechanical) != 0)
{
summonMasterInstance.inventory.GiveItem(RoR2Content.Items.CaptainDefenseMatrix, defenseMatrixToGrantMechanicalAllies);
}
}
}
}