public static void ShowDamage(string creatureId, int damageAmount, string bloodColor, float rotationOffset = 0) { CreatureBoardAsset creatureAsset = GetCreatureBoardAsset(creatureId); if (creatureAsset == null) { Log.Error($"ShowDamage - creatureId {creatureId} not found."); return; } if (damageAmount > 30) { ShowDamage(creatureId, damageAmount - 30, bloodColor, random.NextInt(60) - 30); damageAmount = 30; } float scale = 0.65f * creatureAsset.CreatureScale; // 0.5, 1, 2, 3, 4 string prefabName; float scaleMultiplier; if (damageAmount < 15) { prefabName = GetRandomSmallBloodPrefab(); scaleMultiplier = 1; } else { prefabName = GetRandomLargeBloodPrefab(); scaleMultiplier = 1 + damageAmount / 70f; } Log.Debug($"prefabName = \"{prefabName}\""); GameObject bloodPrefab = Prefabs.Get(prefabName); if (bloodPrefab == null) { Log.Error($"Prefab \"{prefabName}\" not found!"); bloodPrefab = Prefabs.Get("Blood4"); } // TODO: Change the blood color... bloodColor scale *= scaleMultiplier; float groundHeight = creatureAsset.GetGroundHeight(); //Log.Debug($"groundHeight = {groundHeight}"); GameObject bloodEffect = UnityEngine.Object.Instantiate(bloodPrefab, creatureAsset.HookHitTarget.position, creatureAsset.HookHitTarget.rotation); Property.ModifyFloat(bloodEffect, null, "<BFX_BloodSettings>.GroundHeight", groundHeight); ChangeBloodEffectColor(bloodEffect, bloodColor); bloodEffect.transform.Rotate(Vector3.up, 180 + rotationOffset); bloodEffect.transform.localScale = new Vector3(scale, scale, scale); Instances.AddTemporal(bloodEffect, 16); }