/// <summary> /// Called when the player repairs a <see cref="CyclopsDamagePoint"/>. Right now it's not possible to partially repair because it would be difficult to implement. /// <see cref="CyclopsDamagePoint"/>s are coupled with <see cref="LiveMixin"/>, which is used with just about anything that has health. /// I would need to hook onto <see cref="LiveMixin.AddHealth(float)"/>, or maybe the repair gun event to catch when something repairs a damage point, which I don't /// believe is worth the effort. A <see cref="CyclopsDamagePoint"/> is already fully repaired in a little over a second. This can trigger sending /// <see cref="CyclopsDamagePointRepaired"/> and <see cref="CyclopsDamage"/> packets /// </summary> public void OnDamagePointRepaired(SubRoot subRoot, CyclopsDamagePoint damagePoint, float repairAmount) { string subGuid = GuidHelper.GetGuid(subRoot.gameObject); for (int i = 0; i < subRoot.damageManager.damagePoints.Length; i++) { if (subRoot.damageManager.damagePoints[i] == damagePoint) { CyclopsDamagePointRepaired packet = new CyclopsDamagePointRepaired(subGuid, i, repairAmount); packetSender.Send(packet); return; } } }
/// <summary> /// Called when the player repairs a <see cref="CyclopsDamagePoint"/>. Right now it's not possible to partially repair because it would be difficult to implement. /// <see cref="CyclopsDamagePoint"/>s are coupled with <see cref="LiveMixin"/>, which is used with just about anything that has health. /// I would need to hook onto <see cref="LiveMixin.AddHealth(float)"/>, or maybe the repair gun event to catch when something repairs a damage point, which I don't /// believe is worth the effort. A <see cref="CyclopsDamagePoint"/> is already fully repaired in a little over a second. This can trigger sending /// <see cref="CyclopsDamagePointRepaired"/> and <see cref="CyclopsDamage"/> packets /// </summary> public void OnDamagePointRepaired(SubRoot subRoot, CyclopsDamagePoint damagePoint, float repairAmount) { NitroxId subId = NitroxIdentifier.GetId(subRoot.gameObject); for (int i = 0; i < subRoot.damageManager.damagePoints.Length; i++) { if (subRoot.damageManager.damagePoints[i] == damagePoint) { CyclopsDamagePointRepaired packet = new CyclopsDamagePointRepaired(subId, i, repairAmount); packetSender.Send(packet); return; } } }
public static void Postfix(CyclopsDamagePoint __instance) { // If the amount is high enough, it'll heal full NitroxServiceLocator.LocateService <Cyclops>().OnDamagePointRepaired(__instance.GetComponentInParent <SubRoot>(), __instance, 999); }