public void SetDamage(HitData.DamageTypes damage, Player player) { _player = player; var aoeDamagePercent = player.GetTotalActiveMagicEffectValue(MagicEffectType.FrostDamageAOE, 0.01f); _frostDamage = damage.GetTotalDamage() * aoeDamagePercent; }
public DamageContainer(ItemDrop.ItemData weapon) { var shared = weapon.m_shared; damage = new HitData.DamageTypes { m_blunt = shared.m_damages.m_blunt, m_pierce = shared.m_damages.m_pierce, m_slash = shared.m_damages.m_slash, m_chop = shared.m_damages.m_chop, m_pickaxe = shared.m_damages.m_pickaxe, m_fire = shared.m_damages.m_fire, m_frost = shared.m_damages.m_frost, m_lightning = shared.m_damages.m_lightning, m_poison = shared.m_damages.m_poison, m_spirit = shared.m_damages.m_spirit }; damagePerLevel = new HitData.DamageTypes { m_blunt = shared.m_damagesPerLevel.m_blunt, m_pierce = shared.m_damagesPerLevel.m_pierce, m_slash = shared.m_damagesPerLevel.m_slash, m_chop = shared.m_damagesPerLevel.m_chop, m_pickaxe = shared.m_damagesPerLevel.m_pickaxe, m_fire = shared.m_damagesPerLevel.m_fire, m_frost = shared.m_damagesPerLevel.m_frost, m_lightning = shared.m_damagesPerLevel.m_lightning, m_poison = shared.m_damagesPerLevel.m_poison, m_spirit = shared.m_damagesPerLevel.m_spirit }; }
// Token: 0x06001141 RID: 4417 RVA: 0x00077DA8 File Offset: 0x00075FA8 public HitData.DamageTypes GetDamage(int quality) { HitData.DamageTypes damages = this.m_shared.m_damages; if (quality > 1) { damages.Add(this.m_shared.m_damagesPerLevel, quality - 1); } return(damages); }
// Token: 0x060002D6 RID: 726 RVA: 0x00016F50 File Offset: 0x00015150 public HitData.DamageTypes GetDamage(int itemQuality) { if (itemQuality <= 1) { return(this.m_damage); } HitData.DamageTypes damage = this.m_damage; damage.Add(this.m_damagePerLevel, itemQuality - 1); return(damage); }
private void GetDamagePerLevelValues(HitData.DamageTypes damageList) { DamageBluntPerLevel = damageList.m_blunt; DamageSlashPerLevel = damageList.m_slash; DamagePiercePerLevel = damageList.m_pierce; DamageChopPerLevel = damageList.m_chop; DamagePickaxePerLevel = damageList.m_pickaxe; DamageFirePerLevel = damageList.m_fire; DamageFrostPerLevel = damageList.m_frost; DamageLightningPerLevel = damageList.m_lightning; DamagePoisonPerLevel = damageList.m_poison; DamageSpiritPerLevel = damageList.m_spirit; }
private void GetDamageValues(HitData.DamageTypes damageList) { DamageBlunt = damageList.m_blunt; DamageSlash = damageList.m_slash; DamagePierce = damageList.m_pierce; DamageChop = damageList.m_chop; DamagePickaxe = damageList.m_pickaxe; DamageFire = damageList.m_fire; DamageFrost = damageList.m_frost; DamageLightning = damageList.m_lightning; DamagePoison = damageList.m_poison; DamageSpirit = damageList.m_spirit; }
// Token: 0x060011AE RID: 4526 RVA: 0x00079868 File Offset: 0x00077A68 public void Add(HitData.DamageTypes other, int multiplier = 1) { this.m_damage += other.m_damage * (float)multiplier; this.m_blunt += other.m_blunt * (float)multiplier; this.m_slash += other.m_slash * (float)multiplier; this.m_pierce += other.m_pierce * (float)multiplier; this.m_chop += other.m_chop * (float)multiplier; this.m_pickaxe += other.m_pickaxe * (float)multiplier; this.m_fire += other.m_fire * (float)multiplier; this.m_frost += other.m_frost * (float)multiplier; this.m_lightning += other.m_lightning * (float)multiplier; this.m_poison += other.m_poison * (float)multiplier; this.m_spirit += other.m_spirit * (float)multiplier; }
private HitData.DamageTypes SetDamagePerLevelValues() { HitData.DamageTypes newDamage = new HitData.DamageTypes(); newDamage.m_blunt = DamageBluntPerLevel; newDamage.m_slash = DamageSlashPerLevel; newDamage.m_pierce = DamagePiercePerLevel; newDamage.m_chop = DamageChopPerLevel; newDamage.m_pickaxe = DamagePickaxePerLevel; newDamage.m_fire = DamageFirePerLevel; newDamage.m_frost = DamageFrostPerLevel; newDamage.m_lightning = DamageLightningPerLevel; newDamage.m_poison = DamagePoisonPerLevel; newDamage.m_spirit = DamageSpiritPerLevel; return(newDamage); }
private HitData.DamageTypes SetDamageValues() { HitData.DamageTypes newDamage = new HitData.DamageTypes(); newDamage.m_blunt = DamageBlunt; newDamage.m_slash = DamageSlash; newDamage.m_pierce = DamagePierce; newDamage.m_chop = DamageChop; newDamage.m_pickaxe = DamagePickaxe; newDamage.m_fire = DamageFire; newDamage.m_frost = DamageFrost; newDamage.m_lightning = DamageLightning; newDamage.m_poison = DamagePoison; newDamage.m_spirit = DamageSpirit; return(newDamage); }
public static void Postfix(ItemDrop.ItemData __instance, ref HitData.DamageTypes __result) { if (!__instance.IsMagic()) { return; } var magicItem = __instance.GetMagicItem(); // Add damages first __result.m_blunt += GetAddedDamageType(magicItem, MagicEffectType.AddBluntDamage); __result.m_slash += GetAddedDamageType(magicItem, MagicEffectType.AddSlashingDamage); __result.m_pierce += GetAddedDamageType(magicItem, MagicEffectType.AddPiercingDamage); __result.m_fire += GetAddedDamageType(magicItem, MagicEffectType.AddFireDamage); __result.m_frost += GetAddedDamageType(magicItem, MagicEffectType.AddFrostDamage); __result.m_lightning += GetAddedDamageType(magicItem, MagicEffectType.AddLightningDamage); __result.m_poison += GetAddedDamageType(magicItem, MagicEffectType.AddPoisonDamage); __result.m_spirit += GetAddedDamageType(magicItem, MagicEffectType.AddSpiritDamage); // Then modify if (magicItem.HasEffect(MagicEffectType.ModifyPhysicalDamage)) { var totalDamageMod = magicItem.GetTotalEffectValue(MagicEffectType.ModifyPhysicalDamage, 0.01f); var modifier = 1.0f + totalDamageMod; __result.m_blunt *= modifier; __result.m_slash *= modifier; __result.m_pierce *= modifier; } if (magicItem.HasEffect(MagicEffectType.ModifyElementalDamage)) { var totalDamageMod = magicItem.GetTotalEffectValue(MagicEffectType.ModifyElementalDamage, 0.01f); var modifier = 1.0f + totalDamageMod; __result.m_fire *= modifier; __result.m_frost *= modifier; __result.m_lightning *= modifier; } if (magicItem.HasEffect(MagicEffectType.ModifyDamage)) { var totalDamageMod = magicItem.GetTotalEffectValue(MagicEffectType.ModifyDamage, 0.01f); __result.Modify(1.0f + totalDamageMod); } }
private static void CustomDamageCalculations(int newLvl, int oldLvl) { HitData.DamageTypes oldItem = _item.GetDamage(oldLvl); HitData.DamageTypes newItem = _item.GetDamage(newLvl); if (newItem.m_damage > oldItem.m_damage) { _sb.AppendFormat("\n$inventory_damage: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_damage, arrow, newItem.m_damage); } if (newItem.m_blunt > oldItem.m_blunt) { _sb.AppendFormat("\n$inventory_blunt: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_blunt, arrow, newItem.m_blunt); } if (newItem.m_slash > oldItem.m_slash) { _sb.AppendFormat("\n$inventory_slash: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_slash, arrow, newItem.m_slash); } if (newItem.m_pierce > oldItem.m_pierce) { _sb.AppendFormat("\n$inventory_pierce: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_pierce, arrow, newItem.m_pierce); } if (newItem.m_fire > oldItem.m_fire) { _sb.AppendFormat("\n$inventory_fire: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_fire, arrow, newItem.m_fire); } if (newItem.m_frost > oldItem.m_frost) { _sb.AppendFormat("\n$inventory_frost: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_frost, arrow, newItem.m_frost); } if (newItem.m_lightning > oldItem.m_lightning) { _sb.AppendFormat("\n$inventory_lightning: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_lightning, arrow, newItem.m_lightning); } if (newItem.m_poison > oldItem.m_poison) { _sb.AppendFormat("\n$inventory_poison: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_poison, arrow, newItem.m_poison); } if (newItem.m_spirit > oldItem.m_spirit) { _sb.AppendFormat("\n$inventory_spirit: <color=silver>{0}</color> {1} <color=orange>{2}</color>", oldItem.m_spirit, arrow, newItem.m_spirit); } }
private static void WeaponStats(Player player, StringBuilder sb) { ItemDrop.ItemData leftHand = GetHand(player, true); // Shield, Torch, 2H ItemDrop.ItemData rightHand = GetHand(player, false); // 1H ItemDrop.ItemData ammoItem = player.GetAmmoItem(); // 1H at right hand, shield left // 2H at left hand if (leftHand != null) { if (leftHand.m_shared.m_itemType == ItemDrop.ItemData.ItemType.Shield) { // Has shield, weapon in right hand. } else { HitData.DamageTypes hd = leftHand.GetDamage(leftHand.m_quality); if (leftHand.m_shared.m_skillType == Skills.SkillType.Bows && ammoItem != null) { hd.Add(ammoItem.GetDamage()); // Add current ammo to damage calculations. } sb.AppendFormat("{0}", hd.GetTooltipString(leftHand.m_shared.m_skillType)); sb.AppendFormat("\n\n$item_knockback: <color=orange>{0}</color>", leftHand.m_shared.m_attackForce); sb.AppendFormat("\n$item_backstab: <color=orange>{0}x</color>", leftHand.m_shared.m_backstabBonus); } } if (rightHand != null) { HitData.DamageTypes hd = rightHand.GetDamage(rightHand.m_quality); // Show Item Damage sb.AppendFormat("{0}", hd.GetTooltipString(rightHand.m_shared.m_skillType)); sb.AppendFormat("\n\n$item_knockback: <color=orange>{0}</color>", rightHand.m_shared.m_attackForce); sb.AppendFormat("\n$item_backstab: <color=orange>{0}x</color>", rightHand.m_shared.m_backstabBonus); } }
public static string GetDamageTooltipString(MagicItem item, HitData.DamageTypes instance, Skills.SkillType skillType, string magicColor) { if (Player.m_localPlayer == null) { return(""); } var allMagic = item.HasEffect(MagicEffectType.ModifyDamage); var physMagic = item.HasEffect(MagicEffectType.ModifyPhysicalDamage); var elemMagic = item.HasEffect(MagicEffectType.ModifyElementalDamage); var bluntMagic = item.HasEffect(MagicEffectType.AddBluntDamage); var slashMagic = item.HasEffect(MagicEffectType.AddSlashingDamage); var pierceMagic = item.HasEffect(MagicEffectType.AddPiercingDamage); var fireMagic = item.HasEffect(MagicEffectType.AddFireDamage); var frostMagic = item.HasEffect(MagicEffectType.AddFrostDamage); var lightningMagic = item.HasEffect(MagicEffectType.AddLightningDamage); var poisonMagic = item.HasEffect(MagicEffectType.AddPoisonDamage); var spiritMagic = item.HasEffect(MagicEffectType.AddSpiritDamage); Player.m_localPlayer.GetSkills().GetRandomSkillRange(out var min, out var max, skillType); var str = ""; if (instance.m_damage != 0.0) { str = str + "\n$inventory_damage: " + DamageRange(instance.m_damage, min, max, allMagic, magicColor); } if (instance.m_blunt != 0.0) { var magic = allMagic || physMagic || bluntMagic; str = str + "\n$inventory_blunt: " + DamageRange(instance.m_blunt, min, max, magic, magicColor); } if (instance.m_slash != 0.0) { var magic = allMagic || physMagic || slashMagic; str = str + "\n$inventory_slash: " + DamageRange(instance.m_slash, min, max, magic, magicColor); } if (instance.m_pierce != 0.0) { var magic = allMagic || physMagic || pierceMagic; str = str + "\n$inventory_pierce: " + DamageRange(instance.m_pierce, min, max, magic, magicColor); } if (instance.m_fire != 0.0) { var magic = allMagic || elemMagic || fireMagic; str = str + "\n$inventory_fire: " + DamageRange(instance.m_fire, min, max, magic, magicColor); } if (instance.m_frost != 0.0) { var magic = allMagic || elemMagic || frostMagic; str = str + "\n$inventory_frost: " + DamageRange(instance.m_frost, min, max, magic, magicColor); } if (instance.m_lightning != 0.0) { var magic = allMagic || elemMagic || lightningMagic; str = str + "\n$inventory_lightning: " + DamageRange(instance.m_lightning, min, max, magic, magicColor); } if (instance.m_poison != 0.0) { var magic = allMagic || elemMagic || poisonMagic; str = str + "\n$inventory_poison: " + DamageRange(instance.m_poison, min, max, magic, magicColor); } if (instance.m_spirit != 0.0) { var magic = allMagic || elemMagic || spiritMagic; str = str + "\n$inventory_spirit: " + DamageRange(instance.m_spirit, min, max, magic, magicColor); } return(str); }
public static void SetItemDropDataFromJItemData(ref ItemDrop.ItemData itemData, JItemData data) { if (data.m_damages != null) { HitData.DamageTypes damages = new HitData.DamageTypes(); damages.m_blunt = data.m_damages.m_blunt; damages.m_chop = data.m_damages.m_chop; damages.m_damage = data.m_damages.m_damage; damages.m_fire = data.m_damages.m_fire; damages.m_frost = data.m_damages.m_frost; damages.m_lightning = data.m_damages.m_lightning; damages.m_pickaxe = data.m_damages.m_pickaxe; damages.m_pierce = data.m_damages.m_pierce; damages.m_poison = data.m_damages.m_poison; damages.m_slash = data.m_damages.m_slash; damages.m_spirit = data.m_damages.m_spirit; itemData.m_shared.m_damages = damages; } if (data.m_damagesPerLevel != null) { HitData.DamageTypes damagesPerLevel = new HitData.DamageTypes(); damagesPerLevel.m_blunt = data.m_damagesPerLevel.m_blunt; damagesPerLevel.m_chop = data.m_damagesPerLevel.m_chop; damagesPerLevel.m_damage = data.m_damagesPerLevel.m_damage; damagesPerLevel.m_fire = data.m_damagesPerLevel.m_fire; damagesPerLevel.m_frost = data.m_damagesPerLevel.m_frost; damagesPerLevel.m_lightning = data.m_damagesPerLevel.m_lightning; damagesPerLevel.m_pickaxe = data.m_damagesPerLevel.m_pickaxe; damagesPerLevel.m_pierce = data.m_damagesPerLevel.m_pierce; damagesPerLevel.m_poison = data.m_damagesPerLevel.m_poison; damagesPerLevel.m_slash = data.m_damagesPerLevel.m_slash; damagesPerLevel.m_spirit = data.m_damagesPerLevel.m_spirit; itemData.m_shared.m_damagesPerLevel = damagesPerLevel; } itemData.m_shared.m_name = data.m_name; itemData.m_shared.m_description = data.m_description; itemData.m_shared.m_weight = data.m_weight; itemData.m_shared.m_maxStackSize = data.m_maxStackSize; itemData.m_shared.m_food = data.m_food; itemData.m_shared.m_foodStamina = data.m_foodStamina; itemData.m_shared.m_foodRegen = data.m_foodRegen; itemData.m_shared.m_foodBurnTime = data.m_foodBurnTime; if (data.m_foodColor != null && data.m_foodColor != "" && data.m_foodColor.StartsWith("#")) { itemData.m_shared.m_foodColor = ColorUtil.GetColorFromHex(data.m_foodColor); } itemData.m_shared.m_armor = data.m_armor; itemData.m_shared.m_armorPerLevel = data.m_armorPerLevel; itemData.m_shared.m_blockPower = data.m_blockPower; itemData.m_shared.m_blockPowerPerLevel = data.m_blockPowerPerLevel; itemData.m_shared.m_canBeReparied = data.m_canBeReparied; itemData.m_shared.m_timedBlockBonus = data.m_timedBlockBonus; itemData.m_shared.m_deflectionForce = data.m_deflectionForce; itemData.m_shared.m_deflectionForcePerLevel = data.m_deflectionForcePerLevel; itemData.m_shared.m_destroyBroken = data.m_destroyBroken; itemData.m_shared.m_dodgeable = data.m_dodgeable; itemData.m_shared.m_maxDurability = data.m_maxDurability; itemData.m_shared.m_durabilityDrain = data.m_durabilityDrain; itemData.m_shared.m_durabilityPerLevel = data.m_durabilityPerLevel; itemData.m_shared.m_equipDuration = data.m_equipDuration; itemData.m_shared.m_holdDurationMin = data.m_holdDurationMin; itemData.m_shared.m_holdStaminaDrain = data.m_holdStaminaDrain; itemData.m_shared.m_maxQuality = data.m_maxQuality; itemData.m_shared.m_useDurability = data.m_useDurability; itemData.m_shared.m_useDurabilityDrain = data.m_useDurabilityDrain; itemData.m_shared.m_questItem = data.m_questItem; itemData.m_shared.m_teleportable = data.m_teleportable; itemData.m_shared.m_toolTier = data.m_toolTier; itemData.m_shared.m_value = data.m_value; }
public static void Postfix(ItemDrop.ItemData __instance, ref HitData.DamageTypes __result) { if (!__instance.IsMagic()) { return; } var magicItem = __instance.GetMagicItem(); var magicItemskillType = __instance.m_shared.m_skillType; var player = PlayerExtensions.GetPlayerWithEquippedItem(__instance); // Add damages first __result.m_blunt += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddBluntDamage); __result.m_slash += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddSlashingDamage); __result.m_pierce += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddPiercingDamage); __result.m_fire += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddFireDamage); __result.m_frost += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddFrostDamage); __result.m_lightning += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddLightningDamage); __result.m_poison += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddPoisonDamage); __result.m_spirit += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddSpiritDamage); if (magicItemskillType == Skills.SkillType.Axes) { __result.m_chop += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddSlashingDamage); } else if (magicItemskillType == Skills.SkillType.Pickaxes) { __result.m_pickaxe += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddPiercingDamage); } // Then modify if (MagicEffectsHelper.HasActiveMagicEffect(player, magicItem, MagicEffectType.ModifyPhysicalDamage)) { var totalDamageMod = MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.ModifyPhysicalDamage, 0.01f); var modifier = 1.0f + totalDamageMod; __result.m_blunt *= modifier; __result.m_slash *= modifier; __result.m_pierce *= modifier; __result.m_chop *= modifier; __result.m_pickaxe *= modifier; } if (MagicEffectsHelper.HasActiveMagicEffect(player, magicItem, MagicEffectType.ModifyElementalDamage)) { var totalDamageMod = MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.ModifyElementalDamage, 0.01f); var modifier = 1.0f + totalDamageMod; __result.m_fire *= modifier; __result.m_frost *= modifier; __result.m_lightning *= modifier; __result.m_poison *= modifier; __result.m_spirit *= modifier; } var damageMod = 0f; ModifyWithLowHealth.Apply(player, MagicEffectType.ModifyDamage, effect => { if (MagicEffectsHelper.HasActiveMagicEffect(player, magicItem, effect)) { damageMod += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, effect, 0.01f); } }); __result.Modify(1.0f + damageMod); if (player != null && player.GetSEMan().HaveStatusEffect("BerserkerStatusEffect")) { var percentLife = player.GetHealthPercentage(); var berserkerMod = Mathf.Lerp(2.0f, 0.5f, percentLife); __result.Modify(1.0f + berserkerMod); } }
private static void Postfix(Player __instance, ref Attack ___m_currentAttack, ref float ___m_lastCombatTimer, Rigidbody ___m_body, ZSyncAnimation ___m_zanim, CharacterAnimEvent ___m_animEvent, VisEquipment ___m_visEquipment, Attack ___m_previousAttack, float ___m_timeSinceLastAttack) { _hitEffectCooldown -= Time.deltaTime; var helm = __instance.GetInventory().GetAllItems(). FirstOrDefault(v => v.m_shared.m_name == "$custom_item_laserhelm"); if (_cam == null) { _cam = Camera.main; } if (helm != null && helm.m_equiped) { var firing = false; var firePressed = Input.GetKey(SurtlingHelm.SurtlingFireKey); if (firePressed && (!SurtlingHelm.ConsumeCoresAsFuel.Value || _laserTimeRemaining > 0f)) { firing = true; _laserTimeRemaining -= Time.deltaTime; } else if (firePressed) { //Look for surtling core in inventory and consume if have, otherwise show error message var cores = __instance.GetInventory().GetAllItems().FirstOrDefault(i => i.m_shared.m_name == "$item_surtlingcore"); if (cores == null || cores.m_stack == 0) { MessageHud.instance.ShowMessage(MessageHud.MessageType.Center, Language.LanguageData.NeedResourcesErrorValue); } else { __instance.GetInventory().RemoveOneItem(cores); _laserTimeRemaining = SurtlingHelm.SecondsOfUsageGrantedPerCore.Value; firing = true; } } if (firing) { if (!_wasFiring || _leftEyeBeam == null) { _wasFiring = true; var leftGO = GameObject.Instantiate(AssetHelper.EyeBeamPrefab); _leftEyeBeam = leftGO.transform; var rightGO = GameObject.Instantiate(AssetHelper.EyeBeamPrefab); _rightEyeBeam = rightGO.transform; _shaker = _cam.gameObject.AddComponent <CamShaker>(); _shaker.m_continous = true; _shaker.m_continousDuration = 0.75f; _shaker.m_strength = 1f; } if (__instance.IsPlayer() && helm != null && helm.m_equiped) { var head = __instance.m_head; var position = head.position + head.up * 0.18f; var forward = head.right; var right = head.forward; var dir = _cam.transform.forward; var startPoint = position + forward * 0.4f; var endPoint = dir * 60 + _cam.transform.position; _leftEyeBeam.position = position + right * 0.06f; _rightEyeBeam.position = position - right * 0.06f; _leftEyeBeam.forward = _rightEyeBeam.forward = dir; bool hasDoneFlash = false; bool didDamage = false; var distToPlayer = Vector3.Distance(_cam.transform.position, __instance.transform.position); foreach (var hit in Physics.RaycastAll(_cam.transform.position + dir * distToPlayer, dir, 50f)) { var newEndpoint = hit.point; var newDir = (newEndpoint - position).normalized; _leftEyeBeam.forward = _rightEyeBeam.forward = newDir; if (!hasDoneFlash) { var goOne = GameObject.Instantiate(AssetHelper.EyeHitPrefab, hit.point + right * 0.06f - dir * 0.07f, Quaternion.identity); var goTwo = GameObject.Instantiate(AssetHelper.EyeHitPrefab, hit.point - right * 0.06f - dir * 0.07f, Quaternion.identity); goOne.SetActive(true); goTwo.SetActive(true); hasDoneFlash = true; } if (_hitEffectCooldown <= 0f) { var damageType = new HitData.DamageTypes { m_damage = SurtlingHelm.BasePhysicalDamage.Value, m_fire = SurtlingHelm.BaseLaserDamage.Value, m_chop = SurtlingHelm.ChopDamage.Value, m_pickaxe = SurtlingHelm.BasePhysicalDamage.Value, }; var hitData = new HitData { m_hitCollider = hit.collider, m_attacker = __instance.GetZDOID(), m_dir = dir, m_point = hit.point, m_skill = Skills.SkillType.FireMagic, m_pushForce = SurtlingHelm.KnockbackForce.Value, m_blockable = true, m_dodgeable = false, m_damage = damageType }; var damagable = hit.collider.gameObject.GetComponent <IDestructible>(); if (damagable == null) { damagable = hit.collider.GetComponentInParent <IDestructible>(); } if (damagable == null) { damagable = hit.collider.gameObject.GetComponentInChildren <IDestructible>(); } if (damagable != null) { damagable.Damage(hitData); didDamage = true; } } } if (didDamage) { _hitEffectCooldown = SurtlingHelm.LaserHitInterval.Value; } } } else if (_wasFiring || _leftEyeBeam != null) { _wasFiring = false; ZNetScene.instance.m_instances.Remove(_leftEyeBeam.GetComponent <ZNetView>().GetZDO()); ZNetScene.instance.m_instances.Remove(_rightEyeBeam.GetComponent <ZNetView>().GetZDO()); _leftEyeBeam.GetComponent <ZNetView>().Destroy(); _rightEyeBeam.GetComponent <ZNetView>().Destroy(); _leftEyeBeam = null; _rightEyeBeam = null; Object.Destroy(_shaker); _shaker = null; } } }