public void UpdateCopiedPrefab(GameObject Prefab) { this.Prefab = Prefab; Piece piece = Prefab.GetComponent <Piece>(); piece.m_name = "$piece_seed_totem_name"; piece.m_description = "$piece_seed_totem_description"; piece.m_clipGround = true; piece.m_groundPiece = true; piece.m_groundOnly = true; piece.m_noInWater = true; foreach (GuidePoint guidePoint in Prefab.GetComponentsInChildren <GuidePoint>()) { guidePoint.m_text.m_key = localizationName; guidePoint.m_text.m_topic = ravenTopic; guidePoint.m_text.m_text = ravenText; guidePoint.m_text.m_label = ravenLabel; } prefabSeedTotem = Prefab.AddComponent <SeedTotem>(); PrivateArea privateArea = Prefab.GetComponent <PrivateArea>(); if (privateArea != null) { logger.LogDebug("Converting PrivateArea to SeedTotem"); SeedTotem.CopyPrivateArea(prefabSeedTotem, privateArea); logger.LogDebug("Destroying redundant PrivateArea: " + privateArea); Object.DestroyImmediate(privateArea); } RegisterPiece(); }
internal static void CopyPrivateArea(SeedTotem seedTotem, PrivateArea privateArea) { seedTotem.m_areaMarker = privateArea.m_areaMarker; seedTotem.m_enabledEffect = privateArea.m_enabledEffect; seedTotem.m_model = privateArea.m_model; seedTotem.m_areaMarker.gameObject.SetActive(value: false); seedTotem.m_areaMarker.m_radius = configRadius.Value; seedTotem.m_areaMarker.m_nrOfSegments = 10; UpdateGlowColor(seedTotem); }
static bool Prefix(WearNTear __instance, HitData hit) { if (hit.GetTotalDamage() > 0) { SeedTotem seedTotem = __instance.GetComponent <SeedTotem>(); if (seedTotem) { seedTotem.OnDamaged(hit.GetAttacker() as Player); return(false); } } return(true); }
public static void UpdateGlowColor(SeedTotem seedTotem) { logger.LogDebug("Updating color of SeedTotem at " + seedTotem.transform.position); Material[] materials = seedTotem.m_model.materials; Color color = configGlowColor.Value; foreach (Material material in materials) { string lookFor = "Guardstone_OdenGlow_mat"; if (material.name.StartsWith(lookFor)) { logger.LogInfo("Updating color"); material.SetColor("_EmissionColor", color); } } foreach (EffectList.EffectData effectData in m_disperseEffects.m_effectPrefabs) { ParticleSystem particleSystem = effectData.m_prefab.GetComponent <ParticleSystem>(); ParticleSystem.MainModule psMain = particleSystem.main; ParticleSystem.ColorOverLifetimeModule colorOverLifetime = particleSystem.colorOverLifetime; Gradient gradient = new Gradient(); gradient.SetKeys( new GradientColorKey[] { new GradientColorKey(color, 0f), new GradientColorKey(Color.clear, 0.6f) }, new GradientAlphaKey[] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(0f, 0.6f) }); colorOverLifetime.color = gradient; } GameObject wayEffectGameObject = seedTotem.transform.Find("WayEffect").gameObject; GameObject sparcsGameObject = wayEffectGameObject.transform.Find("sparcs").gameObject; ParticleSystem sparcs = sparcsGameObject.GetComponent <ParticleSystem>(); ParticleSystem.ShapeModule sparcsShape = sparcs.shape; Vector3 sparcsScale = sparcsShape.scale; sparcsScale.x = configRadius.Value; sparcsScale.z = configRadius.Value; sparcsScale.y = 0.5f; ParticleSystem.MainModule sparcsMain = sparcs.main; sparcsMain.startColor = new ParticleSystem.MinMaxGradient(color, color * 0.2f); GameObject pointLightObject = wayEffectGameObject.transform.Find("Point light").gameObject; Light light = pointLightObject.GetComponent <Light>(); light.color = configLightColor.Value; light.intensity = configLightIntensity.Value; light.range = configRadius.Value; GameObject flareGameObject = wayEffectGameObject.transform.Find("flare").gameObject; ParticleSystem flare = flareGameObject.GetComponent <ParticleSystem>(); ParticleSystem.MainModule flareMain = flare.main; flareMain.startColor = new ParticleSystem.MinMaxGradient(configFlareColor.Value); flareMain.startSize = new ParticleSystem.MinMaxCurve(configFlareSize.Value); }
private void SettingsChanged(object sender, EventArgs e) { SeedTotem.SettingsUpdated(); }