private static void HandleTriggerDamageEvent(VRC_EventHandler.VrcEvent triggerEvent, GameObject obj) { if (obj == null) { VRCSDK2.VRC_CombatSystem combatSystem = VRCSDK2.VRC_CombatSystem.GetInstance(); if (combatSystem != null) { obj = combatSystem.gameObject; } } if (obj != null) { IVRC_Destructible destructable = obj.GetComponent <IVRC_Destructible>(); if (destructable != null) { if (triggerEvent.EventType == VRC_EventHandler.VrcEventType.AddDamage) { destructable.ApplyDamage(triggerEvent.ParameterFloat); } else if (triggerEvent.EventType == VRC_EventHandler.VrcEventType.AddHealth) { destructable.ApplyHealing(triggerEvent.ParameterFloat); } } } }
public static void SetupCombat() { VRCSDK2.VRC_CombatSystem combatSystem = FindObjectOfType <VRCSDK2.VRC_CombatSystem>(); if (combatSystem != null) { combatSystem.gameObject.AddComponent <CyanEmuCombatSystemHelper>(); CyanEmuCombatSystemHelper.CombatSetMaxHitpoints(null, combatSystem.maxPlayerHealth); CyanEmuCombatSystemHelper.CombatSetRespawn(null, combatSystem.respawnOnDeath, combatSystem.respawnTime, combatSystem.respawnPoint); CyanEmuCombatSystemHelper.CombatSetDamageGraphic(null, combatSystem.visualDamagePrefab); CyanEmuCombatSystemHelper.CombatSetActions( () => VRC_Trigger.TriggerCustom(combatSystem.onPlayerDamagedTrigger), () => VRC_Trigger.TriggerCustom(combatSystem.onPlayerKilledTrigger), () => VRC_Trigger.TriggerCustom(combatSystem.onPlayerHealedTrigger) ); } }