Beispiel #1
0
        public override void OnExit()
        {
            if (this.goodPlacement && base.characterBody.isPlayerControlled)
            {
                Util.PlaySound(CreatePounder.fireSoundString, base.gameObject);
                if (this.areaIndicatorInstance && NetworkServer.active)
                {
                    if (editedPounder == null)
                    {
                        editedPounder = CreatePounder.projectilePrefab;
                    }

                    bool crit = Util.CheckRoll(this.critStat, base.characterBody.master);

                    int cacheNumToSpawn = base.skillLocator.special.stock;

                    for (int i = 0; i < cacheNumToSpawn; i++)
                    {
                        CharacterMaster characterMaster = new MasterSummon
                        {
                            masterPrefab          = MasterCatalog.FindMasterPrefab("MercMonsterMaster"),
                            position              = areaIndicatorInstance.transform.position,
                            rotation              = characterBody.transform.rotation,
                            summonerBodyObject    = base.gameObject,
                            ignoreTeamMemberLimit = false,
                            teamIndexOverride     = characterBody.teamComponent.teamIndex
                        }.Perform();

                        base.skillLocator.special.DeductStock(1);

                        characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 0, (uint)Random.Range(0, characterBody.skillLocator.primary.skillFamily.variants.Length));
                        characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 1, (uint)Random.Range(0, characterBody.skillLocator.secondary.skillFamily.variants.Length));
                        characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 2, (uint)Random.Range(0, characterBody.skillLocator.utility.skillFamily.variants.Length));
                        characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 3, (uint)Random.Range(0, characterBody.skillLocator.special.skillFamily.variants.Length));
                        characterMaster.loadout.bodyLoadoutManager.SetSkinIndex(characterBody.bodyIndex, (uint)Random.Range(0, SkinCatalog.GetBodySkinCount(characterBody.bodyIndex)));
                        characterMaster.inventory.CopyItemsFrom(base.characterBody.inventory);

                        characterMaster.inventory.GiveItem(ItemIndex.HealthDecay, 15);
                    }
                }
            }

            EntityState.Destroy(this.areaIndicatorInstance.gameObject);
            base.characterBody.crosshairPrefab = this.cachedCrosshairPrefab;
            base.OnExit();
            this.outer.SetNextStateToMain();
        }
Beispiel #2
0
        private RoR2.NetworkPlayerName NetworkUser_GetNetworkPlayerName(On.RoR2.NetworkUser.orig_GetNetworkPlayerName orig, RoR2.NetworkUser self)
        {
            var nameOverride = NameOverride.Value;
            var bodyName     = BodyFallbackName.Value;

            if (GetBodyName)
            {
                if (self.GetCurrentBody())
                {
                    bodyName = self.GetCurrentBody().GetDisplayName();
                }
                else
                {
                    if (BodyCatalog.GetBodyPrefab(self.bodyIndexPreference))
                    {
                        bodyName = BodyCatalog.GetBodyPrefabBodyComponent(self.bodyIndexPreference).GetDisplayName();
                    }
                }
            }

            /*if (false == true && !SteamworksLobbyManager.isInLobby)
             * {
             *  if (GetBodyName || (!GetBodyName && GetSkinName))
             *  {
             *      nameOverride = bodyName;
             *  }
             *  return new RoR2.NetworkPlayerName
             *  {
             *      nameOverride = nameOverride,
             *      steamId = self.id.steamId
             *  };
             * }*/
            var     skinName = SkinFallbackName.Value;
            SkinDef skinDef;
            bool    isDefaultSkin = false;

            if (GetSkinName)
            {
                var body = self.GetCurrentBody();
                if (body)
                {
                    skinDef = SkinCatalog.FindCurrentSkinDefForBodyInstance(body.gameObject);
                    if (skinDef)
                    {
                        var skinDefs = SkinCatalog.FindSkinsForBody(body.bodyIndex);
                        skinName      = Language.GetString(skinDef.nameToken);
                        isDefaultSkin = skinDefs[0] == skinDef;
                    }
                }
                else
                {
                    if (self.bodyIndexPreference >= 0)
                    {
                        var skinDefs = SkinCatalog.FindSkinsForBody(self.bodyIndexPreference);
                        if (skinDefs != null)
                        {
                            if (self.localUser?.userProfile?.loadout?.bodyLoadoutManager != null)
                            {
                                int skinIndex = (int)self.localUser.userProfile.loadout.bodyLoadoutManager.GetSkinIndex(self.bodyIndexPreference);

                                var userSkinDef = skinDefs[skinIndex];
                                //var sksadinIndex = SkinCatalog.FindLocalSkinIndexForBody(self.bodyIndexPreference, userSkinDef);
                                skinName      = Language.GetString(userSkinDef.nameToken);
                                isDefaultSkin = skinDefs[0] == userSkinDef;
                            }
                        }
                    }
                }
                if (isDefaultSkin && ReplaceDefaultName)
                {
                    skinName = DefaultSkinNameOverride.Value;
                }
            }
            if (GetSkinName || GetBodyName)
            {
                nameOverride = "";
                if (GetSkinName)
                {
                    nameOverride = string.Format(SkinNameFormatting.Value, bodyName, skinName);
                }
                else if (GetBodyName)
                {
                    nameOverride = bodyName;
                }
            }

            if (self && self.id.steamId != null)
            {
                GetHost();
                if (GetHostID && self.id.steamId == HostSteamID)
                {
                    nameOverride = string.Format(hostFormattingString, nameOverride);
                }

                SteamID_to_DisplayName[self.id.steamId] = nameOverride;
            }

            return(new RoR2.NetworkPlayerName
            {
                nameOverride = nameOverride,
                steamId = self.id.steamId
            });
        }
Beispiel #3
0
        public override void OnExit()
        {
            if (this.goodPlacement && base.characterBody.isPlayerControlled)
            {
                Util.PlaySound(CreatePounder.fireSoundString, base.gameObject);
                if (this.areaIndicatorInstance && NetworkServer.active)
                {
                    CharacterMaster characterMaster = new MasterSummon
                    {
                        masterPrefab          = MasterCatalog.FindMasterPrefab("MercMonsterMaster"),
                        position              = base.characterBody.transform.position,
                        rotation              = characterBody.transform.rotation,
                        summonerBodyObject    = base.gameObject,
                        ignoreTeamMemberLimit = true,
                        teamIndexOverride     = characterBody.teamComponent.teamIndex
                    }.Perform();

                    base.skillLocator.utility.DeductStock(1);

                    base.characterMotor.Motor.SetPosition(areaIndicatorInstance.transform.position);

                    EffectData effectData = new EffectData();
                    effectData.rotation = Util.QuaternionSafeLookRotation(areaIndicatorInstance.transform.position - base.characterMotor.transform.position);
                    effectData.origin   = base.characterMotor.transform.position;
                    EffectManager.SpawnEffect(EntityStates.Huntress.BlinkState.blinkPrefab, effectData, false);

                    EffectData effectData2 = new EffectData();
                    effectData.rotation = Util.QuaternionSafeLookRotation(areaIndicatorInstance.transform.position - base.characterMotor.transform.position);
                    effectData.origin   = areaIndicatorInstance.transform.position;
                    EffectManager.SpawnEffect(EntityStates.Huntress.BlinkState.blinkPrefab, effectData, false);


                    base.characterBody.AddTimedBuff(BuffIndex.Cloak, 5f);
                    base.characterBody.AddTimedBuff(BuffIndex.ElephantArmorBoost, 3f);
                    base.characterBody.AddTimedBuff(BuffIndex.Immune, 2f);

                    characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 0, (uint)Random.Range(0, characterBody.skillLocator.primary.skillFamily.variants.Length));
                    characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 1, (uint)Random.Range(0, characterBody.skillLocator.secondary.skillFamily.variants.Length));
                    characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 2, (uint)Random.Range(0, characterBody.skillLocator.utility.skillFamily.variants.Length));
                    characterMaster.loadout.bodyLoadoutManager.SetSkillVariant(characterBody.bodyIndex, 3, (uint)Random.Range(0, characterBody.skillLocator.special.skillFamily.variants.Length));
                    characterMaster.loadout.bodyLoadoutManager.SetSkinIndex(characterBody.bodyIndex, (uint)Random.Range(0, SkinCatalog.GetBodySkinCount(characterBody.bodyIndex)));
                    characterMaster.GetBody().baseDamage = 0f;

                    characterMaster.inventory.GiveItem(ItemIndex.HealthDecay, 10);
                    characterMaster.GetBody().inventory.SetEquipmentIndex(EquipmentIndex.AffixHaunted);
                }
            }

            EntityState.Destroy(this.areaIndicatorInstance.gameObject);
            base.characterBody.crosshairPrefab = this.cachedCrosshairPrefab;
            base.OnExit();
            this.outer.SetNextStateToMain();
        }