summaryrefslogtreecommitdiff
path: root/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/MineRock.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Valheim_r202102_v0.141.2/Valheim/assembly_valheim/MineRock.cs')
-rw-r--r--Valheim_r202102_v0.141.2/Valheim/assembly_valheim/MineRock.cs233
1 files changed, 0 insertions, 233 deletions
diff --git a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/MineRock.cs b/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/MineRock.cs
deleted file mode 100644
index e177734..0000000
--- a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/MineRock.cs
+++ /dev/null
@@ -1,233 +0,0 @@
-using System;
-using UnityEngine;
-
-public class MineRock : MonoBehaviour, IDestructible, Hoverable
-{
- public string m_name = "";
-
- public float m_health = 2f;
-
- public bool m_removeWhenDestroyed = true;
-
- public HitData.DamageModifiers m_damageModifiers;
-
- public int m_minToolTier;
-
- public GameObject m_areaRoot;
-
- public GameObject m_baseModel;
-
- public EffectList m_destroyedEffect = new EffectList();
-
- public EffectList m_hitEffect = new EffectList();
-
- public DropTable m_dropItems;
-
- public Action m_onHit;
-
- private Collider[] m_hitAreas;
-
- private MeshRenderer[][] m_areaMeshes;
-
- private ZNetView m_nview;
-
- private void Start()
- {
- m_hitAreas = ((m_areaRoot != null) ? m_areaRoot.GetComponentsInChildren<Collider>() : base.gameObject.GetComponentsInChildren<Collider>());
- if ((bool)m_baseModel)
- {
- m_areaMeshes = new MeshRenderer[m_hitAreas.Length][];
- for (int i = 0; i < m_hitAreas.Length; i++)
- {
- m_areaMeshes[i] = m_hitAreas[i].GetComponents<MeshRenderer>();
- }
- }
- m_nview = GetComponent<ZNetView>();
- if ((bool)m_nview && m_nview.GetZDO() != null)
- {
- m_nview.Register<HitData, int>("Hit", RPC_Hit);
- m_nview.Register<int>("Hide", RPC_Hide);
- }
- InvokeRepeating("UpdateVisability", UnityEngine.Random.Range(1f, 2f), 10f);
- }
-
- public string GetHoverText()
- {
- return Localization.instance.Localize(m_name);
- }
-
- public string GetHoverName()
- {
- return m_name;
- }
-
- private void UpdateVisability()
- {
- bool flag = false;
- for (int i = 0; i < m_hitAreas.Length; i++)
- {
- Collider collider = m_hitAreas[i];
- if ((bool)collider)
- {
- string text = "Health" + i;
- bool flag2 = m_nview.GetZDO().GetFloat(text, m_health) > 0f;
- collider.gameObject.SetActive(flag2);
- if (!flag2)
- {
- flag = true;
- }
- }
- }
- if (!m_baseModel)
- {
- return;
- }
- m_baseModel.SetActive(!flag);
- MeshRenderer[][] areaMeshes = m_areaMeshes;
- foreach (MeshRenderer[] array in areaMeshes)
- {
- for (int k = 0; k < array.Length; k++)
- {
- array[k].enabled = flag;
- }
- }
- }
-
- public DestructibleType GetDestructibleType()
- {
- return DestructibleType.Default;
- }
-
- public void Damage(HitData hit)
- {
- if (hit.m_hitCollider == null)
- {
- ZLog.Log("Minerock hit has no collider");
- return;
- }
- int areaIndex = GetAreaIndex(hit.m_hitCollider);
- if (areaIndex == -1)
- {
- ZLog.Log("Invalid hit area on " + base.gameObject.name);
- return;
- }
- ZLog.Log("Hit mine rock area " + areaIndex);
- m_nview.InvokeRPC("Hit", hit, areaIndex);
- }
-
- private void RPC_Hit(long sender, HitData hit, int hitAreaIndex)
- {
- if (!m_nview.IsOwner())
- {
- return;
- }
- Collider hitArea = GetHitArea(hitAreaIndex);
- if (hitArea == null)
- {
- ZLog.Log("Missing hit area " + hitAreaIndex);
- return;
- }
- string text = "Health" + hitAreaIndex;
- float @float = m_nview.GetZDO().GetFloat(text, m_health);
- if (@float <= 0f)
- {
- ZLog.Log("Already destroyed");
- return;
- }
- hit.ApplyResistance(m_damageModifiers, out var significantModifier);
- float totalDamage = hit.GetTotalDamage();
- if (hit.m_toolTier < m_minToolTier)
- {
- DamageText.instance.ShowText(DamageText.TextType.TooHard, hit.m_point, 0f);
- return;
- }
- DamageText.instance.ShowText(significantModifier, hit.m_point, totalDamage);
- if (totalDamage <= 0f)
- {
- return;
- }
- @float -= totalDamage;
- m_nview.GetZDO().Set(text, @float);
- m_hitEffect.Create(hit.m_point, Quaternion.identity);
- Player closestPlayer = Player.GetClosestPlayer(base.transform.position, 10f);
- if ((bool)closestPlayer)
- {
- closestPlayer.AddNoise(100f);
- }
- if (m_onHit != null)
- {
- m_onHit();
- }
- if (!(@float <= 0f))
- {
- return;
- }
- m_destroyedEffect.Create(hitArea.bounds.center, Quaternion.identity);
- m_nview.InvokeRPC(ZNetView.Everybody, "Hide", hitAreaIndex);
- foreach (GameObject drop in m_dropItems.GetDropList())
- {
- Vector3 position = hit.m_point - hit.m_dir * 0.2f + UnityEngine.Random.insideUnitSphere * 0.3f;
- UnityEngine.Object.Instantiate(drop, position, Quaternion.identity);
- }
- if (m_removeWhenDestroyed && AllDestroyed())
- {
- m_nview.Destroy();
- }
- }
-
- private bool AllDestroyed()
- {
- for (int i = 0; i < m_hitAreas.Length; i++)
- {
- string text = "Health" + i;
- if (m_nview.GetZDO().GetFloat(text, m_health) > 0f)
- {
- return false;
- }
- }
- return true;
- }
-
- private void RPC_Hide(long sender, int index)
- {
- Collider hitArea = GetHitArea(index);
- if ((bool)hitArea)
- {
- hitArea.gameObject.SetActive(value: false);
- }
- if (!m_baseModel || !m_baseModel.activeSelf)
- {
- return;
- }
- m_baseModel.SetActive(value: false);
- MeshRenderer[][] areaMeshes = m_areaMeshes;
- foreach (MeshRenderer[] array in areaMeshes)
- {
- for (int j = 0; j < array.Length; j++)
- {
- array[j].enabled = true;
- }
- }
- }
-
- private int GetAreaIndex(Collider area)
- {
- for (int i = 0; i < m_hitAreas.Length; i++)
- {
- if (m_hitAreas[i] == area)
- {
- return i;
- }
- }
- return -1;
- }
-
- private Collider GetHitArea(int index)
- {
- if (index < 0 || index >= m_hitAreas.Length)
- {
- return null;
- }
- return m_hitAreas[index];
- }
-}