private void GlobalEventManager_OnPlayerCharacterDeath(On.RoR2.GlobalEventManager.orig_OnPlayerCharacterDeath orig, GlobalEventManager self, DamageReport damageReport, NetworkUser victimNetworkUser) { if (!victimNetworkUser) { return; } if (damageReport.damageInfo.inflictor == goombaGameObject) { string text = "PLAYER_DEATH_QUOTE_GOOMBADEATH"; if (victimNetworkUser.masterController) { victimNetworkUser.masterController.finalMessageTokenServer = text; } Chat.SendBroadcastChat(new Chat.PlayerDeathChatMessage { subjectAsNetworkUser = victimNetworkUser, baseToken = text }); } else { orig(self, damageReport, victimNetworkUser); return; } }
private void UserDied(On.RoR2.GlobalEventManager.orig_OnPlayerCharacterDeath orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim, NetworkUser victimNetworkUser) { var killer = damageInfo.attacker.GetComponent <CharacterBody>(); if (killer != null && teams.ContainsKey(killer.master)) { teams[killer.master].kills++; } var char_master = victimNetworkUser.master; if (!teams.ContainsKey(char_master)) { return; } teams[char_master].time_to_revive = Run.TimeStamp.now.t + respawn_delay; teams[char_master].deaths++; // Give the user something nice :) var availableItems = selection.Evaluate(Run.instance.treasureRng.nextNormalizedFloat); var item = availableItems[Run.instance.treasureRng.RangeInt(0, availableItems.Count)]; char_master.inventory.GiveItem(item); Chat.SendBroadcastChat(new Chat.UserChatMessage { sender = victimNetworkUser.gameObject, text = String.Format("{0} murdered me. Grabbing [{1}] for a boost.", killer.master.GetComponent <PlayerCharacterMasterController>().networkUser.userName, ItemCatalog.GetItemDef(item).unlockableName) }); orig(self, damageInfo, victim, victimNetworkUser); }
private void GlobalEventManager_OnPlayerCharacterDeath(On.RoR2.GlobalEventManager.orig_OnPlayerCharacterDeath orig, GlobalEventManager self, DamageInfo damageInfo, UnityEngine.GameObject victim, NetworkUser victimNetworkUser) { orig(self, damageInfo, victim, victimNetworkUser); CharacterBody component = victim.GetComponent <CharacterBody>(); NetworkUser networkUser = Util.LookUpBodyNetworkUser(component); string deathMessage = $"Killed by <color=#FF8000>{damageInfo.attacker.GetComponent<CharacterBody>().GetDisplayName()}</color> with ({damageInfo.inflictor.GetComponent<GenericSkill>().skillName})"; if (!networkUser) { return; } Chat.SendBroadcastChat(new Chat.SimpleChatMessage { baseToken = deathMessage }); }
private void GlobalEventManager_OnPlayerCharacterDeath(On.RoR2.GlobalEventManager.orig_OnPlayerCharacterDeath orig, GlobalEventManager self, DamageReport damageReport, NetworkUser netUser) { orig(self, damageReport, netUser); if (!netUser) { return; } var attackerBody = damageReport.attackerBody; var damageTaken = damageReport.damageInfo.damage; var healthLeft = damageReport.combinedHealthBeforeDamage; bool wasCrit = damageReport.damageInfo.crit; var dotType = damageReport.dotType; bool wasDot = dotType != DotIndex.None; string prefixStr = string.Empty; if (wasCrit || wasDot) { prefixStr = "<style=cDeath>"; if (wasCrit) { Color critColor = DamageColor.FindColor(DamageColorIndex.WeakPoint); string critStr = Util.GenerateColoredString("Crit ", critColor); prefixStr += critStr; } if (wasDot) { string dotStr = DotIndexToString(dotType); if (!string.IsNullOrWhiteSpace(dotStr)) { Color dotColor = DamageColor.FindColor(damageReport.damageInfo.damageColorIndex); dotStr = Util.GenerateColoredString($"{dotStr} ", dotColor); prefixStr += dotStr; } } prefixStr += "from </style>"; } string text = $"<style=cDeath>Killed by: <style=cIsDamage>{prefixStr}{(attackerBody ? attackerBody.GetDisplayName() : "Unknown causes")}</style> <style=cIsUtility>({damageTaken:F2} damage dealt to '{netUser.userName}' with {healthLeft:F2} health left)</style></style>"; Chat.SendBroadcastChat(new Chat.SimpleChatMessage { baseToken = text }); }
private static void GlobalEventManager_OnPlayerCharacterDeath(On.RoR2.GlobalEventManager.orig_OnPlayerCharacterDeath orig, GlobalEventManager self, DamageReport damageReport, NetworkUser victimNetworkUser) { if (!victimNetworkUser) { return; } CharacterBody victimBody = damageReport.victimBody; string text; if (damageReport.damageInfo.inflictor && damageReport.damageInfo.inflictor.name == goombaGameObject.name && RunArtifactManager.instance.IsArtifactEnabled(GoombaArtifactDef.artifactIndex)) { text = "PLAYER_DEATH_QUOTE_GOOMBADEATH"; } else if ((damageReport.damageInfo.damageType & DamageType.VoidDeath) != DamageType.Generic) { text = "PLAYER_DEATH_QUOTE_VOIDDEATH"; } else if (damageReport.isFallDamage) { text = GlobalEventManager.fallDamageDeathQuoteTokens[UnityEngine.Random.Range(0, GlobalEventManager.fallDamageDeathQuoteTokens.Length)]; } else if (victimBody && victimBody.inventory && victimBody.inventory.GetItemCount(ItemIndex.LunarDagger) > 0) { text = "PLAYER_DEATH_QUOTE_BRITTLEDEATH"; } else { text = GlobalEventManager.standardDeathQuoteTokens[UnityEngine.Random.Range(0, GlobalEventManager.standardDeathQuoteTokens.Length)]; } if (victimNetworkUser.masterController) { victimNetworkUser.masterController.finalMessageTokenServer = text; } Chat.SendBroadcastChat(new Chat.PlayerDeathChatMessage { subjectAsNetworkUser = victimNetworkUser, baseToken = text }); }
private void GlobalEventManager_OnPlayerCharacterDeath(On.RoR2.GlobalEventManager.orig_OnPlayerCharacterDeath orig, GlobalEventManager self, DamageReport damageReport, NetworkUser victimNetworkUser) { orig(self, damageReport, victimNetworkUser); UpdateComponentForEveryone(); }