// Token: 0x060012AA RID: 4778 RVA: 0x00050500 File Offset: 0x0004E700 public void SetState(SceneExitController.ExitState newState) { if (newState == this.exitState) { return; } this.exitState = newState; switch (this.exitState) { case SceneExitController.ExitState.Idle: break; case SceneExitController.ExitState.ExtractExp: SceneExitController.isRunning = true; this.experienceCollector = base.gameObject.AddComponent <ConvertPlayerMoneyToExperience>(); return; case SceneExitController.ExitState.TeleportOut: { ReadOnlyCollection <CharacterMaster> readOnlyInstancesList = CharacterMaster.readOnlyInstancesList; for (int i = 0; i < readOnlyInstancesList.Count; i++) { CharacterMaster component = readOnlyInstancesList[i].GetComponent <CharacterMaster>(); if (component.GetComponent <SetDontDestroyOnLoad>()) { GameObject bodyObject = component.GetBodyObject(); if (bodyObject) { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/NetworkedObjects/TeleportOutController"), bodyObject.transform.position, Quaternion.identity); gameObject.GetComponent <TeleportOutController>().Networktarget = bodyObject; NetworkServer.Spawn(gameObject); } } } this.teleportOutTimer = 4f; return; } case SceneExitController.ExitState.Finished: if (Run.instance && Run.instance.isGameOverServer) { return; } if (this.useRunNextStageScene) { Stage.instance.BeginAdvanceStage(Run.instance.nextStageScene); return; } if (this.destinationScene) { Stage.instance.BeginAdvanceStage(this.destinationScene); return; } Debug.Log("SceneExitController: destinationScene not set!"); break; default: return; } }
// Token: 0x06001C47 RID: 7239 RVA: 0x00084580 File Offset: 0x00082780 public static string GetBestBodyNameColored(GameObject bodyObject) { if (bodyObject) { CharacterBody component = bodyObject.GetComponent <CharacterBody>(); if (component) { CharacterMaster master = component.master; if (master) { PlayerCharacterMasterController component2 = master.GetComponent <PlayerCharacterMasterController>(); if (component2) { GameObject networkUserObject = component2.networkUserObject; if (networkUserObject) { NetworkUser component3 = networkUserObject.GetComponent <NetworkUser>(); if (component3) { return(Util.GenerateColoredString(component3.userName, component3.userColor)); } } } } } IDisplayNameProvider component4 = bodyObject.GetComponent <IDisplayNameProvider>(); if (component4 != null) { return(component4.GetDisplayName()); } } return("???"); }
// try and setup our character, if we hit an error we set it to false //TODO: Find a way to stop it from checking whilst in main menu/lobby menu private static void GetCharacter() { try { LocalNetworkUser = null; foreach (NetworkUser readOnlyInstance in NetworkUser.readOnlyInstancesList) { //localplayer == you! if (readOnlyInstance.isLocalPlayer) { LocalNetworkUser = readOnlyInstance; LocalPlayer = LocalNetworkUser.master; LocalPlayerInv = LocalPlayer.GetComponent <Inventory>(); LocalHealth = LocalPlayer.GetBody().GetComponent <HealthComponent>(); LocalSkills = LocalPlayer.GetBody().GetComponent <SkillLocator>(); if (LocalHealth.alive) { _CharacterCollected = true; } else { _CharacterCollected = false; } } } } catch (Exception e) { _CharacterCollected = false; } }
private void CharacterMaster_TransformBody(On.RoR2.CharacterMaster.orig_TransformBody orig, RoR2.CharacterMaster self, string bodyName) { var baseAI = self.GetComponent <BaseAI>(); if (baseAI) { //Chat.AddMessage($"baseAI found"); var masterPrefab = MasterCatalog.FindMasterPrefab(bodyName); if (masterPrefab) { //Chat.AddMessage($"1"); ReplaceSkillDrivers(self, baseAI, masterPrefab); } if (!masterPrefab) { var bodyPrefab = BodyCatalog.FindBodyPrefab(bodyName); if (bodyPrefab) { var masterIndex = MasterCatalog.FindAiMasterIndexForBody(bodyPrefab.GetComponent <CharacterBody>().bodyIndex); masterPrefab = MasterCatalog.GetMasterPrefab(masterIndex); if (masterPrefab) { //Chat.AddMessage($"2"); ReplaceSkillDrivers(self, baseAI, masterPrefab); } } } } orig(self, bodyName); }
public void RespawnCharacter(CharacterMaster characterMaster) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void RoR2.Stage::RespawnCharacter(RoR2.CharacterMaster)' called on client"); return; } if (!characterMaster) { return; } Transform playerSpawnTransform = this.GetPlayerSpawnTransform(); Vector3 vector = Vector3.zero; Quaternion quaternion = Quaternion.identity; if (playerSpawnTransform) { vector = playerSpawnTransform.position; quaternion = playerSpawnTransform.rotation; } characterMaster.Respawn(vector, quaternion); if (characterMaster.GetComponent <PlayerCharacterMasterController>()) { this.spawnedAnyPlayer = true; } if (this.usePod) { Run.instance.HandlePlayerFirstEntryAnimation(characterMaster.GetBody(), vector, quaternion); } }
private void CharacterMaster_TransformBody(On.RoR2.CharacterMaster.orig_TransformBody orig, RoR2.CharacterMaster self, string bodyName) { if (bodyName == "HereticBody" && self.GetComponent <BaseAI>()) { CopyFromHeretic(self); } orig(self, bodyName); }
private static void AddMinionOwnershipComponent(AssetCheckArgs args) { CharacterMaster characterMaster = args.asset as CharacterMaster; if (!characterMaster.GetComponent <MinionOwnership>()) { characterMaster.gameObject.AddComponent <MinionOwnership>(); args.UpdatePrefab(); } }
// Token: 0x06001C20 RID: 7200 RVA: 0x00083300 File Offset: 0x00081500 public static CharacterBody TryToCreateGhost(CharacterBody targetBody, CharacterBody ownerBody, int duration) { if (!targetBody || !NetworkServer.active) { return(null); } if (TeamComponent.GetTeamMembers(ownerBody.teamComponent.teamIndex).Count >= 40) { return(null); } int num = BodyCatalog.FindBodyIndex(targetBody.gameObject); if (num < 0) { return(null); } GameObject bodyPrefab = BodyCatalog.GetBodyPrefab(num); if (!bodyPrefab) { return(null); } CharacterMaster characterMaster = MasterCatalog.allAiMasters.FirstOrDefault((CharacterMaster master) => master.bodyPrefab == bodyPrefab); if (!characterMaster) { return(null); } GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(characterMaster.gameObject); CharacterMaster component = gameObject.GetComponent <CharacterMaster>(); component.teamIndex = ownerBody.teamComponent.teamIndex; component.GetComponent <BaseAI>().leader.gameObject = ownerBody.gameObject; Inventory inventory = targetBody.inventory; if (inventory) { component.inventory.CopyItemsFrom(inventory); component.inventory.CopyEquipmentFrom(inventory); } component.inventory.GiveItem(ItemIndex.Ghost, 1); component.inventory.GiveItem(ItemIndex.HealthDecay, duration); component.inventory.GiveItem(ItemIndex.BoostDamage, 30); NetworkServer.Spawn(gameObject); CharacterBody characterBody = component.Respawn(targetBody.footPosition, targetBody.transform.rotation); if (characterBody) { foreach (EntityStateMachine entityStateMachine in characterBody.GetComponents <EntityStateMachine>()) { entityStateMachine.initialStateType = entityStateMachine.mainStateType; } } return(characterBody); }
// Token: 0x06001517 RID: 5399 RVA: 0x0005A198 File Offset: 0x00058398 public virtual void SetFromMaster(CharacterMaster master) { if (master) { PlayerCharacterMasterController component = master.GetComponent <PlayerCharacterMasterController>(); if (component) { NetworkUser networkUser = component.networkUser; this.SetFromSteamId(networkUser.id.value); return; } } this.userSteamId = 0UL; this.sourceType = SocialUserIcon.SourceType.None; this.Refresh(); }
// Token: 0x060015D5 RID: 5589 RVA: 0x0006897C File Offset: 0x00066B7C private void Start() { this.sceneDef = SceneCatalog.GetSceneDefForCurrentScene(); if (NetworkServer.active) { this.NetworkstartRunTime = Run.instance.fixedTime; this.stageSpawnPosition = this.SampleNodeGraphForSpawnPosition(); ReadOnlyCollection <CharacterMaster> readOnlyInstancesList = CharacterMaster.readOnlyInstancesList; Transform playerSpawnTransform = this.GetPlayerSpawnTransform(); for (int i = 0; i < readOnlyInstancesList.Count; i++) { CharacterMaster characterMaster = readOnlyInstancesList[i]; if (characterMaster && !characterMaster.GetComponent <PlayerCharacterMasterController>() && !characterMaster.GetBodyObject() && characterMaster.gameObject.scene.buildIndex == -1) { Vector3 vector = Vector3.zero; Quaternion rotation = Quaternion.identity; if (playerSpawnTransform) { vector = playerSpawnTransform.position; rotation = playerSpawnTransform.rotation; BaseAI component = readOnlyInstancesList[i].GetComponent <BaseAI>(); CharacterBody component2 = readOnlyInstancesList[i].bodyPrefab.GetComponent <CharacterBody>(); if (component && component2) { NodeGraph nodeGraph = component.GetNodeGraph(); if (nodeGraph) { List <NodeGraph.NodeIndex> list = nodeGraph.FindNodesInRange(vector, 10f, 100f, (HullMask)(1 << (int)component2.hullClassification)); if ((float)list.Count > 0f) { nodeGraph.GetNodePosition(list[UnityEngine.Random.Range(0, list.Count)], out vector); } } } } readOnlyInstancesList[i].Respawn(vector, rotation); } } this.BeginServer(); } if (NetworkClient.active) { this.RespawnLocalPlayers(); } }
public void ModifySpawnedMasters(GameObject targetGameObject) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void RoR2.ArenaMissionController::ModifySpawnedMasters(UnityEngine.GameObject)' called on client"); return; } ArenaMissionController.< > c__DisplayClass62_0 CS$ < > 8__locals1 = new ArenaMissionController.< > c__DisplayClass62_0(); CharacterMaster component = targetGameObject.GetComponent <CharacterMaster>(); CS$ < > 8__locals1.ai = component.GetComponent <BaseAI>(); if (CS$ < > 8__locals1.ai) { CS$ < > 8__locals1.ai.onBodyDiscovered += CS$ < > 8__locals1.< ModifySpawnedMasters > g__OnBodyDiscovered | 0; } CharacterBody body = component.GetBody(); if (body) { foreach (EntityStateMachine entityStateMachine in body.GetComponents <EntityStateMachine>()) { entityStateMachine.initialStateType = entityStateMachine.mainStateType; } } for (int j = 0; j < this.syncActivePickups.Count; j++) { int count = 0; ItemIndex itemIndex = PickupCatalog.GetPickupDef(new PickupIndex(this.syncActivePickups[j])).itemIndex; switch (ItemCatalog.GetItemDef(itemIndex).tier) { case ItemTier.Tier1: count = this.stackCountPerTier1; break; case ItemTier.Tier2: count = this.stackCountPerTier2; break; case ItemTier.Tier3: count = this.stackCountPerTier3; break; } component.inventory.GiveItem(itemIndex, count); } }
private static void Init() { GlobalEventManager.onCharacterDeathGlobal += delegate(DamageReport damageReport) { CharacterMaster characterMaster = damageReport.attackerMaster; if (characterMaster) { if (characterMaster.minionOwnership.ownerMaster) { characterMaster = characterMaster.minionOwnership.ownerMaster; } PlayerCharacterMasterController component = characterMaster.GetComponent <PlayerCharacterMasterController>(); if (component && Util.CheckRoll(1f * component.lunarCoinChanceMultiplier, 0f, null)) { PickupDropletController.CreatePickupDroplet(PickupIndex.Find("LunarCoin.Coin0"), damageReport.victim.transform.position, Vector3.up * 10f); component.lunarCoinChanceMultiplier *= 0.5f; } } }; }
// Token: 0x06001C48 RID: 7240 RVA: 0x00084610 File Offset: 0x00082810 public static string GetBestMasterName(CharacterMaster characterMaster) { if (characterMaster) { PlayerCharacterMasterController component = characterMaster.GetComponent <PlayerCharacterMasterController>(); if (component) { GameObject networkUserObject = component.networkUserObject; if (networkUserObject) { NetworkUser component2 = networkUserObject.GetComponent <NetworkUser>(); if (component2) { return(component2.userName); } } } return(characterMaster.name); } return("Null Master"); }
// Token: 0x060013CA RID: 5066 RVA: 0x00054964 File Offset: 0x00052B64 private void RespawnAllNPCs() { if (this.sceneDef.suppressNpcEntry) { return; } ReadOnlyCollection <CharacterMaster> readOnlyInstancesList = CharacterMaster.readOnlyInstancesList; Transform playerSpawnTransform = this.GetPlayerSpawnTransform(); for (int i = 0; i < readOnlyInstancesList.Count; i++) { CharacterMaster characterMaster = readOnlyInstancesList[i]; if (characterMaster && !characterMaster.GetComponent <PlayerCharacterMasterController>() && !characterMaster.GetBodyObject() && characterMaster.gameObject.scene.buildIndex == -1) { Vector3 vector = Vector3.zero; Quaternion rotation = Quaternion.identity; if (playerSpawnTransform) { vector = playerSpawnTransform.position; rotation = playerSpawnTransform.rotation; BaseAI component = readOnlyInstancesList[i].GetComponent <BaseAI>(); CharacterBody component2 = readOnlyInstancesList[i].bodyPrefab.GetComponent <CharacterBody>(); if (component && component2) { NodeGraph desiredSpawnNodeGraph = component.GetDesiredSpawnNodeGraph(); if (desiredSpawnNodeGraph) { List <NodeGraph.NodeIndex> list = desiredSpawnNodeGraph.FindNodesInRange(vector, 10f, 100f, (HullMask)(1 << (int)component2.hullClassification)); if ((float)list.Count > 0f) { desiredSpawnNodeGraph.GetNodePosition(list[UnityEngine.Random.Range(0, list.Count)], out vector); } } } } readOnlyInstancesList[i].Respawn(vector, rotation, false); } } }
// Token: 0x06000F9C RID: 3996 RVA: 0x000446C4 File Offset: 0x000428C4 private void OnTriggerEnter(Collider other) { if ((this.serverOnly && !NetworkServer.active) || this.calledAction) { return; } CharacterBody component = other.GetComponent <CharacterBody>(); if (component) { CharacterMaster master = component.master; if (master && master.GetComponent <PlayerCharacterMasterController>()) { this.calledAction = true; UnityEvent unityEvent = this.action; if (unityEvent == null) { return; } unityEvent.Invoke(); } } }
// Token: 0x06001C4A RID: 7242 RVA: 0x0008467C File Offset: 0x0008287C public static NetworkUser LookUpBodyNetworkUser(CharacterBody characterBody) { if (characterBody) { CharacterMaster master = characterBody.master; if (master) { PlayerCharacterMasterController component = master.GetComponent <PlayerCharacterMasterController>(); if (component) { GameObject networkUserObject = component.networkUserObject; if (networkUserObject) { NetworkUser component2 = networkUserObject.GetComponent <NetworkUser>(); if (component2) { return(component2); } } } } } return(null); }
// Token: 0x0600162E RID: 5678 RVA: 0x0006A288 File Offset: 0x00068488 private void SetupIndicator() { if (this.indicator) { return; } CharacterBody component = base.GetComponent <CharacterBody>(); if (component) { TeamComponent component2 = component.GetComponent <TeamComponent>(); if (component2) { CharacterMaster master = component.master; bool flag = master && master.isBoss; GameObject gameObject = null; if (master && component2.teamIndex == TeamIndex.Player) { bool flag2 = false; PlayerCharacterMasterController component3 = master.GetComponent <PlayerCharacterMasterController>(); if (component3) { flag2 = true; GameObject networkUserObject = component3.networkUserObject; if (networkUserObject) { NetworkIdentity component4 = networkUserObject.GetComponent <NetworkIdentity>(); if (component4) { bool isLocalPlayer = component4.isLocalPlayer; } } } Vector3 position = component.transform.position; component.GetComponent <Collider>(); if (flag2) { gameObject = Resources.Load <GameObject>("Prefabs/PositionIndicators/PlayerPositionIndicator"); } else { gameObject = Resources.Load <GameObject>("Prefabs/PositionIndicators/NPCPositionIndicator"); } this.indicator = UnityEngine.Object.Instantiate <GameObject>(gameObject, position, Quaternion.identity, component.transform); } else if (flag) { gameObject = Resources.Load <GameObject>("Prefabs/PositionIndicators/BossPositionIndicator"); } if (this.indicator) { UnityEngine.Object.Destroy(this.indicator); this.indicator = null; } if (gameObject) { this.indicator = UnityEngine.Object.Instantiate <GameObject>(gameObject, base.transform); this.indicator.GetComponent <PositionIndicator>().targetTransform = component.coreTransform; Nameplate component5 = this.indicator.GetComponent <Nameplate>(); if (component5) { component5.SetBody(component); } } } } }
private static void HandlePickupMessage(NetworkMessage netMsg) { Debug.Log("GenericPickupController.HandlePickupMessage: Received pickup message."); ReadOnlyCollection <NotificationQueue> readOnlyInstancesList = NotificationQueue.readOnlyInstancesList; GenericPickupController.PickupMessage pickupMessage = GenericPickupController.pickupMessageInstance; netMsg.ReadMessage <GenericPickupController.PickupMessage>(pickupMessage); GameObject masterGameObject = pickupMessage.masterGameObject; PickupIndex pickupIndex = pickupMessage.pickupIndex; uint pickupQuantity = pickupMessage.pickupQuantity; pickupMessage.Reset(); if (!masterGameObject) { Debug.Log("GenericPickupController.HandlePickupMessage: failed! masterObject is not valid."); return; } CharacterMaster component = masterGameObject.GetComponent <CharacterMaster>(); if (!component) { Debug.Log("GenericPickupController.HandlePickupMessage: failed! master component is not valid."); return; } PlayerCharacterMasterController component2 = component.GetComponent <PlayerCharacterMasterController>(); if (component2) { NetworkUser networkUser = component2.networkUser; if (networkUser) { LocalUser localUser = networkUser.localUser; if (localUser != null) { localUser.userProfile.DiscoverPickup(pickupIndex); } } } for (int i = 0; i < readOnlyInstancesList.Count; i++) { readOnlyInstancesList[i].OnPickup(component, pickupIndex); } CharacterBody body = component.GetBody(); if (!body) { Debug.Log("GenericPickupController.HandlePickupMessage: failed! characterBody is not valid."); } ItemDef itemDef = ItemCatalog.GetItemDef(pickupIndex.itemIndex); if (itemDef != null && itemDef.hidden) { Debug.LogFormat("GenericPickupController.HandlePickupMessage: skipped item {0}, marked hidden.", new object[] { itemDef.nameToken }); return; } Chat.AddPickupMessage(body, pickupIndex.GetPickupNameToken(), pickupIndex.GetPickupColor(), pickupQuantity); if (body) { Util.PlaySound("Play_UI_item_pickup", body.gameObject); } }