Exemple #1
0
 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;
     }
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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();
 }