public void OnPlayerHurt(PlayerHurtEvent ev) { if (ev.Player.TeamRole.Role == Role.SCP_173) { ev.Player.Kill(); } }
public void OnPlayerHurt(PlayerHurtEvent ev) { int damageAmount = plugin.GetConfigInt(SCP939.swingDamage939); int ChanceToBleed = plugin.GetConfigInt(SCP939.infectChance); //Sets damage to config amount if above 0 if ((ev.Attacker.TeamRole.Role == Role.SCP_939_89 || ev.Attacker.TeamRole.Role == Role.SCP_939_53) && damageAmount > 0) { ev.Damage = damageAmount; } //When SCP939 damages a player, adds them to list of bleeding players to damage if ((SCP939.isEnabled && ev.Attacker.TeamRole.Role == Role.SCP_939_89 || SCP939.isEnabled && ev.Attacker.TeamRole.Role == Role.SCP_939_53) && !SCP939.playersToDamage.Contains(ev.Player.SteamId) && ChanceToBleed > 0 && new Random().Next(1, 100) <= ChanceToBleed) { if (rolesCanBleed == null || rolesCanBleed.Count == 0 || rolesCanBleed.First() == -1) { SCP939.playersToDamage.Add(ev.Player.SteamId); } else if (rolesCanBleed.Count > 0 && rolesCanBleed.Contains((int)ev.Player.TeamRole.Role)) { SCP939.playersToDamage.Add(ev.Player.SteamId); } } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (plugin.Active && ev.DamageType == DamageType.NUKE && ev.Player.TeamRole.Team == Smod2.API.Team.SCP) { ev.Damage = 0; } }
public void OnHurt(PlayerHurtEvent ev) { if (Dump.InstantKill.Contains(ev.Attacker.UserId)) { ev.Player.Kill(); } }
public void OnPlayerHurt(ref PlayerHurtEvent ev) { if (zhunbeiyes == true) { ev.Amount = 0; } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (ev.DamageType == Smod2.API.DamageType.TESLA) { ev.Damage = 0; } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (!RoundSummary.RoundInProgress() || ev.Attacker == null || ev.Attacker.gameObject.GetComponent <CharacterClassManager>().SpawnProtected || ev.Player.Teamclass().role == RoleType.Spectator) { return; } if (ev.Attacker.userId == ev.Player.userId) { DiscordLab.bot.NewMessage($"{ev.Player.name} self-harmed for {Math.Round(ev.Damage)} with {ev.DamageType.name}"); } else if (ev.Attacker.Teamclass().cleanTeam == ev.Player.Teamclass().cleanTeam) { DiscordLab.bot.NewMessage($"**{ev.Attacker.Teamclass().role} {ev.Attacker.ToString()} attacked {ev.Player.Teamclass().role} {ev.Player.ToString()} for {Math.Round(ev.Damage)} with {ev.DamageType.name}**"); } else if (ev.Player.Disarmed() > 0 && !ev.Attacker.gameObject.GetComponent <CharacterClassManager>().IsAnyScp()) { DiscordLab.bot.NewMessage($"__{ev.Attacker.Teamclass().role} {ev.Attacker.ToString()} attacked {ev.Player.Teamclass().role} {ev.Player.ToString()} for {Math.Round(ev.Damage)} with {ev.DamageType.name}__"); } else { DiscordLab.bot.NewMessage($"{ev.Attacker.name} -> {ev.Player.name} -> {Math.Round(ev.Damage)} ({ev.DamageType.name})"); } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (GamemodeManager.GamemodeManager.CurrentMode == plugin) { if (ev.DamageType != DamageType.FALLDOWN && ev.DamageType != DamageType.SCP_106 && (!scp_list.Contains(ev.Player.PlayerId) || ev.Player.TeamRole.Team == Team.CLASSD)) { if (allowkill) { ev.Damage = 20000.0F; } else { ev.Damage = 0.0F; } } if (scp_list.Contains(ev.Player.PlayerId) && scp_list.Contains(ev.Attacker.PlayerId) && ev.Player.PlayerId != ev.Attacker.PlayerId) { ev.Damage = 0.0F; } if ((ev.Attacker.TeamRole.Role == Role.SCP_049 && ev.Player.TeamRole.Role != Role.SCP_049) || (ev.Attacker.TeamRole.Role == Role.SCP_106 && ev.Player.TeamRole.Role != Role.SCP_106)) { ev.Damage = 0.0F; } } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (!allowFemurBreaker && ev.DamageType == DamageType.LURE) { ev.Damage = 0; } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (ev.DamageType == DamageTypes.Flying) { ev.Damage = 0; } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (!RoundSummary.RoundInProgress() || ev.Player.roleType == RoleType.Spectator) { return; } if (ev.Attacker == null || ev.Attacker.isEmpty) { return; } else if (ev.Attacker.userId == ev.Player.userId) { DiscordLab.bot.NewMessage($"{ev.Player.nameClean} self-harmed for {Math.Round(ev.Damage)} with {ev.DamageType.name}"); } else if (IsTeamDamage(ev.Player.team, ev.Attacker.team)) { DiscordLab.bot.NewMessage($"**{ev.Attacker.roleType} {ev.Attacker} attacked {ev.Player.roleType} {ev.Player} for {Math.Round(ev.Damage)} with {ev.DamageType.name}**"); } else if (ev.Player.disarmed > -1 && !ev.Attacker.refHub.characterClassManager.IsAnyScp()) { DiscordLab.bot.NewMessage($"__{ev.Attacker.roleType} {ev.Attacker} attacked {ev.Player.roleType} {ev.Player} for {Math.Round(ev.Damage)} with {ev.DamageType.name}__"); } else { DiscordLab.bot.NewMessage($"{ev.Attacker.nameClean} -> {ev.Player.nameClean} -> {Math.Round(ev.Damage)} ({ev.DamageType.name})"); } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (this.plugin.enable) { if (ev.Player.PlayerId == ev.Attacker.PlayerId && ev.DamageType == DamageType.FRAG) { if (this.plugin.bomber == 2) { int damage = (int)ev.Damage; ev.Damage = 0; Timer t = new Timer { Interval = 1000, Enabled = true }; t.Elapsed += delegate { ev.Attacker.Damage(damage, DamageType.FALLDOWN); t.Dispose(); }; } else if (this.plugin.bomber == 1) { ev.Damage = 0; } } else if (this.plugin.mirror > 0f) { if (this.plugin.isTeamkill(ev.Attacker, ev.Player)) { ev.Attacker.Damage((int)(ev.Damage * this.plugin.mirror)); } } } }
internal void PlayerHurt(ref PlayerHurtEvent ev) { if (ev.Attacker == null) { return; // no player } if (ev.Attacker == ev.Player) { return; // same player } //if (ev.Player.GetHealth() - ev.Amount > 0f) return; if ((ev.DamageType.name == DamageTypes.Grenade.name || ev.Info.GetDamageType().name == DamageTypes.Grenade.name)) { if (grenades == null) { SetAmountZero(ref ev); return; } var team = grenades.team; var target = ev.Player.GetTeam(); Log.Debug("Grenade Team: " + team.ToString() + " Player Team: " + target.ToString()); CheckKill(ref ev, team, target, Player.GetPlayer(grenades.Userid), ev.Player); } else { var team = ev.Attacker.GetTeam(); var target = ev.Player.GetTeam(); CheckKill(ref ev, team, target, ev.Attacker, ev.Player); } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (HealingPlayers.ContainsPlayer(ev.Player)) { HealingPlayers[ev.Player.PlayerId].finished = true; } }
public void OnPlayerHurt(ref PlayerHurtEvent ev) { if (!playerTable.ContainsKey(ev.Attacker) || !playerTable.ContainsKey(ev.Player)) { Plugin.Error("Player hurt event failed, maybe they just joined?"); return; } if (ev.Attacker == null || ev.Player == null) { return; } if (!ev.Player.characterClassManager.isClient || !ev.Attacker.characterClassManager.isClient) { return; } Team attackerT = Plugin.GetTeam(ev.Attacker.characterClassManager.CurClass); Team attackedT = Plugin.GetTeam(ev.Player.characterClassManager.CurClass); if (attackedT == attackerT && ev.Attacker != ev.Player) { if (playerTable[ev.Attacker] >= damageThreshold) { GameCore.Console.singleton.TypeCommand($"/ban " + ev.Attacker.queryProcessor.PlayerId + " " + banMins, new FFABSender()); } else { playerTable[ev.Attacker] += (int)ev.Info.Amount; } } }
private void HandlePlayerHurt(object sender, PlayerHurtEventArgs e) { Weapon weapon = new Weapon() { Equipment = (Models.EquipmentElement)((int)e.Weapon.Weapon), OriginalString = e.Weapon.OriginalString, AmmoInMagazine = (short)e.Weapon.AmmoInMagazine, AmmoType = (short)e.Weapon.AmmoType, }; PlayerHurtEvent newEvent = new PlayerHurtEvent() { PlayerSteamID = e.Player.SteamID, AttackerSteamID = e.Attacker?.SteamID, Health = e.Health, Armor = e.Armor, Weapon = weapon, WeaponString = e.WeaponString, HealthDamage = e.HealthDamage, ArmorDamage = e.ArmorDamage, Hitgroup = (Models.Hitgroup)((int)e.Hitgroup) }; CurrentTick.Events.Add(newEvent); }
internal void SetAmountZero(ref PlayerHurtEvent ev) { ev.Amount = 0f; var info = ev.Info; info.Amount = 0f; ev.Info = info; }
public void OnPlayerHurt(PlayerHurtEvent ev) { /// <summary> /// This is called before the player is going to take damage. /// In case the attacker can't be passed, attacker will be null (fall damage etc) /// This may be broken into two events in the future /// </summary> plugin.SendMessageAsync(plugin.GetConfigString("discord_channel_onplayerhurt"), ev.Player.Name + " (" + ev.Player.SteamId + plugin.MultiLanguage(24) + ev.Attacker.Name + " (" + ev.Attacker.SteamId + plugin.MultiLanguage(25) + ev.DamageType + "."); }
public void OnPlayerHurt(PlayerHurtEvent ev) { // por si se produce algun fall en la asignación de variables. if ((!Scp173.ContainsKey(ev.Player.SteamId)) && (ev.Player.TeamRole.Role == Role.SCP_173)) { Scp173deads.Add(ev.Player.SteamId, true); Scp173.Add(ev.Player.SteamId, true); } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (Zombie.ContainsKey(ev.Player.SteamId)) { if (ev.Player.TeamRole.Role == Role.SCP_049_2) { if ((Zombie[ev.Player.SteamId] == 7) || (Zombie[ev.Player.SteamId] == 3)) { ev.Damage /= 2; } if ((Zombie[ev.Player.SteamId] == 7) || (Zombie[ev.Player.SteamId] == 2)) { ev.Attacker.SetHealth(ev.Attacker.GetHealth() - 1); } } if ((ev.Attacker.TeamRole.Role == Role.SPECTATOR) && (Zombie[ev.Player.SteamId] == -1)) { if (ev.DamageType == DamageType.FRAG) { if (ev.Player.TeamRole.Team == Smod2.API.Team.SCP) { ev.Damage = 0; } else { ev.Damage = 90; } } } if (ev.Attacker.TeamRole.Role == Role.SCP_049_2) { if (ev.DamageType == DamageType.FRAG) { if (ev.Player.TeamRole.Team == Smod2.API.Team.SCP) { ev.Damage = 0; } else { ev.Damage = 90; } } if (Zombie.ContainsKey(ev.Attacker.SteamId)) { if ((Zombie[ev.Attacker.SteamId] == 5) || (Zombie[ev.Attacker.SteamId] == 7)) { ev.Damage += ev.Player.GetHealth(); } if ((Zombie[ev.Attacker.SteamId] == 6) || (Zombie[ev.Attacker.SteamId] == 7)) { ev.Attacker.AddHealth(700); } } } } }
void IEventHandlerPlayerHurt.OnPlayerHurt(PlayerHurtEvent ev) { // 判断有木有SCP-181 if (GlobalVar.scp181 == null) { return; } // 判断玩家是不是SCP-181 不是则退出本次事件 if (ev.Player.Name.Equals(GlobalVar.scp181.Name) == false) { return; } if (ev.Player.PlayerId != GlobalVar.scp181.PlayerId) { return; } // 判断如果SCP-181在口袋空间的话退出保护 | Future: 跳过这个事件 交个口袋空间事件接管 if (ev.DamageType == DamageType.SCP_106) { return; } /* * 几率判断 */ // 随机数~ 1-100 百分比 Random random = new Random(); int number = random.Next(1, 100); // 获取设置的概率 int luckyNumber = this.plugin.GetConfigInt("scp181_dodge_chance"); // 如果随机数<=设置的概率 就免伤害 | 只有SCP的攻击可以免伤 if (number <= luckyNumber && (Team)ev.Attacker.TeamRole.Team == Team.SCP) { GlobalVar.scp181.PersonalBroadcast(8, "<color=orange>[SCP-181]</color> <color=green>SCP-181免除本次伤害~</color>", false); ev.Damage = 0; } // 如果debug模式开启了 if (plugin.GetConfigBool("scp181_debug") == true) { plugin.Info("======================SCP-181 HurtEvent [Debug]======================"); plugin.Info("SCP-181: " + ev.Player.Name + "(" + ev.Player.PlayerId + ") | Hp: " + ev.Player.GetHealth()); plugin.Info("LuckyNumber: " + luckyNumber + " | RandomNumber: " + number); plugin.Info("Damage: " + ev.Damage + " | Attacker: " + ev.Attacker.TeamRole.Name); } return; }
public void OnPlayerHurt(PlayerHurtEvent ev) { /// <summary> /// This is called before the player is going to take damage. /// In case the attacker can't be passed, attacker will be null (fall damage etc) /// This may be broken into two events in the future /// </summary> if (ev.Player == null || ev.Player.TeamRole.Role == Smod2.API.Role.UNASSIGNED) { return; } if (ev.Attacker == null || ev.Player.PlayerId == ev.Attacker.PlayerId) { Dictionary <string, string> noAttackerVar = new Dictionary <string, string> { { "damage", ev.Damage.ToString() }, { "damagetype", ev.DamageType.ToString() }, { "playeripaddress", ev.Player.IpAddress }, { "playername", ev.Player.Name }, { "playerplayerid", ev.Player.PlayerId.ToString() }, { "playersteamid", ev.Player.SteamId }, { "playerclass", ev.Player.TeamRole.Role.ToString() }, { "playerteam", ev.Player.TeamRole.Team.ToString() } }; plugin.SendMessage(Config.GetArray("channels.onplayerhurt.noattacker"), "player.onplayerhurt.noattacker", noAttackerVar); return; } Dictionary <string, string> variables = new Dictionary <string, string> { { "damage", ev.Damage.ToString() }, { "damagetype", ev.DamageType.ToString() }, { "attackeripaddress", ev.Attacker.IpAddress }, { "attackername", ev.Attacker.Name }, { "attackerplayerid", ev.Attacker.PlayerId.ToString() }, { "attackersteamid", ev.Attacker.SteamId }, { "attackerclass", ev.Attacker.TeamRole.Role.ToString() }, { "attackerteam", ev.Attacker.TeamRole.Team.ToString() }, { "playeripaddress", ev.Player.IpAddress }, { "playername", ev.Player.Name }, { "playerplayerid", ev.Player.PlayerId.ToString() }, { "playersteamid", ev.Player.SteamId }, { "playerclass", ev.Player.TeamRole.Role.ToString() }, { "playerteam", ev.Player.TeamRole.Team.ToString() } }; if (IsTeamDamage((int)ev.Attacker.TeamRole.Team, (int)ev.Player.TeamRole.Team)) { plugin.SendMessage(Config.GetArray("channels.onplayerhurt.friendlyfire"), "player.onplayerhurt.friendlyfire", variables); return; } plugin.SendMessage(Config.GetArray("channels.onplayerhurt.default"), "player.onplayerhurt.default", variables); }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (((SerpentsHand.shPlayers.Contains(ev.Player.SteamId) && (ev.Attacker.TeamRole.Team == Team.SCP || ev.DamageType == DamageType.POCKET)) || (SerpentsHand.shPlayers.Contains(ev.Attacker.SteamId) && ev.Player.TeamRole.Team == Team.SCP) || (SerpentsHand.shPlayers.Contains(ev.Player.SteamId) && SerpentsHand.shPlayers.Contains(ev.Attacker.SteamId) && ev.Player.SteamId != ev.Attacker.SteamId)) && !plugin.GetConfigBool("sh_friendly_fire")) { ev.Damage = 0; } }
public void On_PlayerHurt(PlayerHurtEvent phe) { if (!phe.Attacker.IsPlayer()) { if (phe.Attacker.baseEntity.creatorEntity.ToPlayer().userID == phe.Victim.GameID) { phe.DamageAmounts = null; } } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (ev.Attacker.TeamRole.Role == Role.TUTORIAL) { if (!allowGhostToDamage) { ev.Damage = 0f; } } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (this.plugin.enable) { if (this.plugin.mirror > 0f && ev.DamageType != DamageType.FRAG) { if (this.plugin.isTeamkill(ev.Attacker, ev.Player) && !this.plugin.isImmune(ev.Attacker) && !this.plugin.banWhitelist.Contains(ev.Attacker.UserId)) { if (this.plugin.invert > 0) { if (this.plugin.Teamkillers.ContainsKey(ev.Attacker.UserId) && this.plugin.Teamkillers[ev.Attacker.UserId].Teamkills.Count >= this.plugin.invert) { //if (this.plugin.outall) //{ // this.plugin.Info("Dealing damage to " + ev.Attacker.Name + ": " + (ev.Damage * this.plugin.mirror)); //} ev.Attacker.Damage((int)(ev.Damage * this.plugin.mirror)); } // else do nothing } else { //if (this.plugin.outall) //{ // this.plugin.Info("Dealing damage to " + ev.Attacker.Name + ": " + (ev.Damage * this.plugin.mirror)); //} ev.Attacker.Damage((int)(ev.Damage * this.plugin.mirror)); } } } else if (ev.Player.PlayerId == ev.Attacker.PlayerId && ev.DamageType == DamageType.FRAG) { if (this.plugin.bomber == 2) { int damage = (int)ev.Damage; ev.Damage = 0; Timer t = new Timer { Interval = 1000, Enabled = true }; t.Elapsed += delegate { ev.Attacker.Damage(damage, DamageType.FALLDOWN); t.Dispose(); }; } else if (this.plugin.bomber == 1) { ev.Damage = 0; } } } }
void IEventHandlerPlayerHurt.OnPlayerHurt(PlayerHurtEvent ev) { send(ev, new IdMapping() .appendId(Lib.PLAYER_ID, ev.Player) .appendId(Lib.PLAYER_EVENT_SCPDATA_ID, ev.Player.Scp079Data) .appendId(Lib.PLAYER_EVENT_TEAM_ROLE_ID, ev.Player.TeamRole) .appendId(Lib.ATTACKER_ID, ev.Attacker) .appendId(Lib.EVENT_ATTACKE_SCPDATA_ID, ev.Attacker.Scp079Data) .appendId(Lib.EVENT_ATTACKER_TEAMROLE_ID, ev.Attacker.TeamRole) ); }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (GamemodeManager.GamemodeManager.GetCurrentMode().Equals(plugin) && !plugin.pluginManager.Server.Map.WarheadDetonated) { if (ev.Attacker != null && ev.Attacker.TeamRole.Role == Role.SCP_049_2) { ev.Damage = 0.0f; ev.Player.ChangeRole(Role.SCP_049_2); } } }
// Los clases d roban munición si su rival tiene munición, ganan salud = al daño que hacen cuando estan a poca vida el cual se duplica si estan a muy poca vida // tienen la habilidad de hacerse invisible por 35 de salud durante 10 segundos , disparar desactiva la habilidad public void OnPlayerHurt(PlayerHurtEvent ev) { //Class D - [Astucia] // if (ev.Attacker.TeamRole.Role == Role.CHAOS_INSURGENCY) { if ((Classdh.ContainsKey(ev.Attacker.SteamId))) { cooldownn[ev.Attacker.SteamId] += 12; } } if (ev.Attacker.TeamRole.Role == Role.CLASSD) { // detecta si la habilidad del clase d esta en cooldown y suma 3 segundos al diccionario restandole asi tiempo a la habilidad. if (Classdh[ev.Attacker.SteamId] == false) { cooldownn[ev.Attacker.SteamId] += 3; } if (ev.Attacker.GetGhostMode() == true) { ev.Attacker.SetGhostMode(false); } if (ev.Player.GetGhostMode() == true) { ev.Player.SetGhostMode(false); } if (ev.Player.GetAmmo(AmmoType.DROPPED_5) >= 3) { ev.Attacker.SetAmmo(AmmoType.DROPPED_5, ev.Attacker.GetAmmo(AmmoType.DROPPED_5) + 3); ev.Player.SetAmmo(AmmoType.DROPPED_5, ev.Player.GetAmmo(AmmoType.DROPPED_5) - 3); } if (ev.Player.GetAmmo(AmmoType.DROPPED_7) >= 3) { ev.Attacker.SetAmmo(AmmoType.DROPPED_7, ev.Attacker.GetAmmo(AmmoType.DROPPED_7) + 3); ev.Player.SetAmmo(AmmoType.DROPPED_7, ev.Player.GetAmmo(AmmoType.DROPPED_7) - 3); } if (ev.Player.GetAmmo(AmmoType.DROPPED_9) >= 3) { ev.Attacker.SetAmmo(AmmoType.DROPPED_9, ev.Attacker.GetAmmo(AmmoType.DROPPED_9) + 3); ev.Player.SetAmmo(AmmoType.DROPPED_9, ev.Player.GetAmmo(AmmoType.DROPPED_9) - 3); } // [Dboys rules] // if ((ev.Attacker.GetHealth() <= 45) && (ev.DamageType != DamageType.FRAG) && (ev.DamageType != DamageType.TESLA) && (ev.DamageType != DamageType.FALLDOWN) && (ev.DamageType != DamageType.POCKET)) { ev.Attacker.SetHealth(ev.Attacker.GetHealth() + Convert.ToInt32(ev.Damage)); if (ev.Attacker.GetHealth() <= 25) { ev.Attacker.SetHealth(ev.Attacker.GetHealth() + Convert.ToInt32(ev.Damage)); } } } }
public void OnPlayerHurt(PlayerHurtEvent ev) { if (ev.Player.TeamRole.Role == Role.SCP_096) { if (!Jugadores.ContainsKey(ev.Attacker.SteamId)) { Jugadores.Add(ev.Attacker.SteamId, 0); } Jugadores[ev.Attacker.SteamId] = (Jugadores[ev.Attacker.SteamId] + ev.Damage); } }
/// <summary> /// Called from <c>BaseCombatEntity.Hurt(HitInfo)</c> . /// </summary> public static void On_CombatEntityHurt(BaseCombatEntity combatEntity, HitInfo info) { try { Assert.Test(combatEntity.isServer, "This should be called serverside only"); if (combatEntity.IsDead()) return; using (TimeWarning.New("Hurt", 50)) { BaseNPC baseNPC = combatEntity.GetComponent<BaseNPC>(); BaseCorpse baseCorpse = combatEntity.GetComponent<BaseCorpse>(); BasePlayer basePlayer = combatEntity.GetComponent<BasePlayer>(); combatEntity.ScaleDamage(info); if (basePlayer != null) { Player player = Server.GetPlayer(basePlayer); if (player.Teleporting) { for (int i = 0; i < info.damageTypes.types.Length; i++) { info.damageTypes.types[i] = 0f; } } HurtEvent he = new PlayerHurtEvent(player, info); OnNext("On_PlayerHurt", he); } else if (baseNPC != null) { HurtEvent he = new NPCHurtEvent(new NPC(baseNPC), info); OnNext("On_NPCHurt", he); } else if (baseCorpse != null) { HurtEvent he = new CorpseHurtEvent(baseCorpse, info); OnNext("On_CorpseHurt", he); } else { HurtEvent he = new CombatEntityHurtEvent(combatEntity, info); OnNext("On_CombatEntityHurt", he); } if (info.PointStart != Vector3.zero) { DirectionProperties[] directionProperties = (DirectionProperties[])combatEntity.GetFieldValue("propDirection"); for (int i = 0; i < directionProperties.Length; i++) { if (!(directionProperties[i].extraProtection == null)) { if (directionProperties[i].IsWeakspot(combatEntity.transform, info)) { directionProperties[i].extraProtection.Scale(info.damageTypes); } } } } // the DebugHurt() method if (ConVar.Vis.attack) { if (info.PointStart != info.PointEnd) { ConsoleNetwork.BroadcastToAllClients("ddraw.arrow", new object[] { 60, UnityEngine.Color.cyan, info.PointStart, info.PointEnd, 0.1 }); ConsoleNetwork.BroadcastToAllClients("ddraw.sphere", new object[] { 60, UnityEngine.Color.cyan, info.HitPositionWorld, 0.05 }); } string text = String.Empty; for (int i = 0; i < info.damageTypes.types.Length; i++) { float num = info.damageTypes.types[i]; if (num != 0) { string text2 = text; text = String.Concat(new string[] { text2, " ", ((global::Rust.DamageType)i).ToString().PadRight(10), num.ToString("0.00"), "\r\n" }); } } string text3 = String.Concat(new object[] { "<color=lightblue>Damage:</color>".PadRight(10), info.damageTypes.Total().ToString("0.00"), "\r\n<color=lightblue>Health:</color>".PadRight(10), combatEntity.health.ToString("0.00"), " / ", (combatEntity.health - info.damageTypes.Total() > 0) ? "<color=green>" : "<color=red>", (combatEntity.health - info.damageTypes.Total()).ToString("0.00"), "</color>", "\r\n<color=lightblue>Hit Ent:</color>".PadRight(10), combatEntity, "\r\n<color=lightblue>Attacker:</color>".PadRight(10), info.Initiator, "\r\n<color=lightblue>Weapon:</color>".PadRight(10), info.Weapon, "\r\n<color=lightblue>Damages:</color>\r\n", text }); ConsoleNetwork.BroadcastToAllClients("ddraw.text", new object[] { 60, UnityEngine.Color.white, info.HitPositionWorld, text3 }); } combatEntity.health -= info.damageTypes.Total(); combatEntity.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); if (ConVar.Global.developer > 1) { Debug.Log(string.Concat(new object[] { "[Combat]".PadRight(10), combatEntity.gameObject.name, " hurt ", info.damageTypes.GetMajorityDamageType(), "/", info.damageTypes.Total(), " - ", combatEntity.health.ToString("0"), " health left" })); } combatEntity.lastDamage = info.damageTypes.GetMajorityDamageType(); combatEntity.lastAttacker = info.Initiator; BaseCombatEntity baseCombatEntity = combatEntity.lastAttacker as BaseCombatEntity; if (baseCombatEntity != null) baseCombatEntity.MarkHostileTime(); combatEntity.SetFieldValue("_lastAttackedTime", Time.time); if (combatEntity.health <= 0f) { combatEntity.Die(info); BuildingBlock bb = combatEntity.GetComponent<BuildingBlock>(); if (bb != null) { OnNext("On_BuildingPartDestroyed", new BuildingPartDestroyedEvent(bb, info)); } } } } catch (Exception ex) { Logger.LogError("[Hooks] Error in CombatEntityHurt hook."); Logger.LogException(ex); } }