private static GameObject GetEffect(string effectName, string spellId = "", bool isMoveable = false) { GameObject result; if (isMoveable) { result = Instances.GetMoveableSpell(spellId, effectName); if (result == null) { Log.Error($"Moveable spell {spellId}.{effectName} not found!"); } else { Log.Warning($"Moveable spell {spellId}.{effectName} FOUND!"); return(result); } } string prefabName = Effects.GetIndividualEffectName(EffectParameters.GetEffectNameOnly(effectName)); Log.Debug($"GetEffect() - prefabName = \"{prefabName}\""); if (Prefabs.Has(prefabName)) { Log.Debug($"Cloning..."); result = Prefabs.Clone(effectName); } else { Log.Debug($"CompositeEffect.CreateKnownEffect(\"{effectName}\")"); result = CompositeEffect.CreateKnownEffect(effectName); } PrepareEffect(result); return(result); }
static void ShowHealth(string creatureId, int healthAmount, string effectName) { CreatureBoardAsset creatureAsset = GetCreatureBoardAsset(creatureId); if (creatureAsset == null) { Log.Error($"AddHitPoints - creatureId {creatureId} not found."); return; } GameObject heal = CompositeEffect.CreateKnownEffect(effectName); heal.transform.position = creatureAsset.transform.position; float scale = creatureAsset.CreatureScale / 2.0f; heal.transform.localScale = new Vector3(scale, scale, scale); Property.Modify(heal, "ParticlesHeal", "<ParticleSystem>.startSize", 0.4f * creatureAsset.CreatureScale); Property.Modify(heal, "ParticlesHealPlus", "<ParticleSystem>.startSize", 0.3f * creatureAsset.CreatureScale); float lifetimeSeconds = Math.Max(5f, Math.Min(healthAmount, 16f)); float particleFadeOutTime = Math.Max(lifetimeSeconds / 2f, 3f); Instances.AddTemporal(heal, lifetimeSeconds, particleFadeOutTime); }