//----------------------------------------------- public void Awake() { frame = 0; isImp = false; count = false; master = gameObject.GetComponent <CharacterMaster>(); origBodyPrefab = BodyCatalog.FindBodyPrefab(master.GetBodyObject()); //origBody is where the user's original bodyprefab is stored }
public static void DropEquipment(CharacterMaster master, EquipmentIndex equipmentIndex) { var transform = master.GetBodyObject().transform; var dropVector = UnityEngine.Random.insideUnitCircle; PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(equipmentIndex), transform.position, new Vector3(dropVector.x, 0, dropVector.y) * 5f); master.inventory.SetEquipmentIndex(EquipmentIndex.None); DropperChat.EquipmentDropMessage(master.GetBody().GetUserName(), equipmentIndex); }
public CharacterMaster SummonHeretic(GameObject summonerBodyObject, Vector3 spawnPosition) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'SummonHeretic(UnityEngine.GameObject)' called on client"); return(null); } MasterSummon masterSummon = new MasterSummon { masterPrefab = MasterCatalog.FindMasterPrefab("HereticMonsterMaster"), position = spawnPosition, rotation = Quaternion.identity, summonerBodyObject = summonerBodyObject, ignoreTeamMemberLimit = true, useAmbientLevel = new bool?(true), }; CharacterMaster characterMaster = masterSummon.Perform(); if (characterMaster) { GameObject bodyObject = characterMaster.GetBodyObject(); if (bodyObject) { ModelLocator component = bodyObject.GetComponent <ModelLocator>(); if (component && component.modelTransform) { TemporaryOverlay temporaryOverlay = component.modelTransform.gameObject.AddComponent <TemporaryOverlay>(); temporaryOverlay.duration = 0.5f; temporaryOverlay.animateShaderAlpha = true; temporaryOverlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); temporaryOverlay.destroyComponentOnEnd = true; temporaryOverlay.originalMaterial = Resources.Load <Material>("Materials/matSummonDrone"); temporaryOverlay.AddToCharacerModel(component.modelTransform.GetComponent <CharacterModel>()); } var inventory = characterMaster.inventory; if (inventory) { inventory.CopyItemsFrom(summonerBodyObject.GetComponent <CharacterBody>().inventory); } } } if (characterMaster && characterMaster.bodyInstanceObject) { characterMaster.GetBody().AddTimedBuff(RoR2Content.Buffs.Immune, 3f); GameObject gameObject = Resources.Load <GameObject>("Prefabs/Effects/HippoRezEffect"); if (gameObject) { EffectManager.SpawnEffect(gameObject, new EffectData { origin = spawnPosition, rotation = characterMaster.bodyInstanceObject.transform.rotation }, true); } } return(characterMaster); }
private static void OnSpawned(CharacterMaster master) { master.inventory.GiveItem(ItemIndex.ChainLightning); var bodyObj = master.GetBodyObject(); var decor = UnityEngine.Object.Instantiate(HailstormAssets.TwisterVisualPrefab, bodyObj.transform); decor.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f); var launcher = bodyObj.AddComponent <TornadoLauncher>(); launcher.enabled = true; }
public static void DropItem(CharacterMaster master, ItemIndex itemIndex) { var transform = master.GetBodyObject().transform; var dropVector = UnityEngine.Random.insideUnitCircle; PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(itemIndex), transform.position, new Vector3(dropVector.x, 0, dropVector.y) * 5f); master.inventory.RemoveItem(itemIndex); DropperChat.ItemDropMessage(master.GetBody().GetUserName(), itemIndex); var limits = master.GetComponent <InventoryLimits>(); DropperChat.ItemCountMessage(master.GetBody().GetUserName(), limits.amount, limits.limit); }
// Token: 0x060021E3 RID: 8675 RVA: 0x000A072C File Offset: 0x0009E92C private static HealthComponent GetCharacterHealthComponent(CharacterMaster master) { if (master) { GameObject bodyObject = master.GetBodyObject(); if (bodyObject) { return(bodyObject.GetComponent <HealthComponent>()); } } return(null); }
private void GenericPickupController_GrantLunarCoin(On.RoR2.GenericPickupController.orig_GrantLunarCoin orig, GenericPickupController self, CharacterBody body, uint count) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void RoR2.GenericPickupController::GrantLunarCoin(RoR2.CharacterBody,System.UInt32)' called on client"); return; } if (!ArtifactEnabled) { orig(self, body, count); return; } CharacterMaster master = body.master; NetworkUser networkUser = Util.LookUpBodyNetworkUser(body); if (networkUser) { if (master) { GenericPickupController.SendPickupMessage(master, self.pickupIndex); } networkUser.AwardLunarCoins(count); UnityEngine.Object.Destroy(self.gameObject); } else { if (master && master.teamIndex != TeamIndex.Player) { var component = master.GetBodyObject().GetComponent <DropInventoryOnDeath>(); if (!component) { component = master.GetBodyObject().AddComponent <DropInventoryOnDeath>(); } component.incrementCoins(); GenericPickupController.SendPickupMessage(master, self.pickupIndex); UnityEngine.Object.Destroy(self.gameObject); } } }
private void CharacterMaster_OnBodyDamaged(On.RoR2.CharacterMaster.orig_OnBodyDamaged orig, CharacterMaster self, DamageReport damageReport) { if (self) { if (self.GetBody().baseNameToken == "DG_SAMUS_NAME") { //Debug.Log("worked"); Util.PlaySound(SamusMod.Modules.Sounds.hurtSound, self.GetBodyObject()); } orig(self, damageReport); } }
private void TaseTarget() { FindTarget(); this.targetFinder.maxDistanceFilter = cfgWolfRadius.Value; this.targetFinder.RefreshCandidates(); this.targetFinder.FilterOutGameObject(base.gameObject); var result = targetFinder.GetResults().FirstOrDefault <HurtBox>(); if (result) { result.healthComponent.TakeDamage( new DamageInfo() { attacker = characterMaster.GetBodyObject(), crit = false, damage = 1f, damageColorIndex = DamageColorIndex.Item, damageType = DamageType.Shock5s, force = Vector3.zero, position = result.healthComponent.body.corePosition, inflictor = gameObject, procCoefficient = 0 }); Vector3 position = result.healthComponent.body.corePosition; Vector3 start = characterMaster.GetBody().corePosition; if (EntityStates.CaptainDefenseMatrixItem.DefenseMatrixOn.tracerEffectPrefab) { EffectData effectData = new EffectData { origin = position, start = start }; EffectManager.SpawnEffect(EntityStates.CaptainDefenseMatrixItem.DefenseMatrixOn.tracerEffectPrefab, effectData, true); } /* * FireProjectileInfo fireProjectileInfo = new FireProjectileInfo * { * projectilePrefab = EntityStates.Captain.Weapon.FireTazer.projectilePrefab, * position = characterMaster.GetBody().corePosition, * owner = characterMaster.GetBodyObject(), * damage = 0f, * force = FireTazer.force, * }; * var lookAtRot = fireProjectileInfo.position - result.healthComponent.body.corePosition; * fireProjectileInfo.rotation = Util.QuaternionSafeLookRotation(lookAtRot); * //fireProjectileInfo.crit = Util.CheckRoll(this.critStat, base.characterBody.master); * ProjectileManager.instance.FireProjectile(fireProjectileInfo);*/ } }
public void OnReceived() { if (NetworkServer.active) { return; } GameObject ownerObject = Util.FindNetworkObject(ownerId); if (!ownerObject) { Log.Warning("SyncOptionTargetForClients: ownerObject is null."); return; } GameObject targetObject = Util.FindNetworkObject(targetId); if (!targetObject) { Log.Warning("SyncOptionTargetForClients: targetObject is null."); return; } OptionTracker tracker = null; switch (bodyOrMaster) { case GameObjectType.Body: tracker = ownerObject.GetComponent <OptionTracker>(); break; case GameObjectType.Master: CharacterMaster ownerMaster = ownerObject.GetComponent <CharacterMaster>(); if (!ownerMaster) { Log.Warning("SpawnOptionsForClients: ownerMaster is null."); return; } GameObject bodyObject = ownerMaster.GetBodyObject(); if (!bodyObject) { Log.Warning("SpawnOptionsForClients: bodyObject is null."); return; } tracker = bodyObject.GetComponent <OptionTracker>(); break; } if (!tracker) { return; } SetTarget(tracker, targetObject); }
private void markImp(CharacterMaster imp) { GameObject gameObject = Instantiate(Resources.Load <GameObject>("Prefabs/PositionIndicators/PoiPositionIndicator"), imp.GetBodyObject().transform.position, imp.GetBodyObject().transform.rotation); var positionIndicator = gameObject.GetComponent <PositionIndicator>(); //positionIndicator.alwaysVisibleObject = true; positionIndicator.insideViewObject.GetComponent <SpriteRenderer>().color = impColor; Destroy(positionIndicator.insideViewObject.GetComponent <ObjectScaleCurve>()); positionIndicator.insideViewObject.transform.localScale = positionIndicator.insideViewObject.transform.localScale / 2f; positionIndicator.insideViewObject.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("textures/miscicons/texAttackIcon"); positionIndicator.outsideViewObject.transform.Find("Sprite").GetComponent <SpriteRenderer>().color = impColor; positionIndicator.targetTransform = imp.GetBodyObject().transform; gameObject.AddComponent <ImpMarkerKiller>(); }
private static ROBConsoleCommand HasComponent(CharacterMaster characterMaster) { var bodyObject = characterMaster.GetBodyObject(); if (bodyObject) { var component = bodyObject.GetComponent <ROBConsoleCommand>(); if (!component) { Debug.LogError("Player is missing component. Do ROB_target_component, and try again."); return(null); } return(component); } Debug.LogError("Player's body object is missing."); return(null); }
public CharacterMaster SummonMage(GameObject summonerBody, Vector3 spawnPosition) { if (!NetworkServer.active) { return(null); } Inventory summonerInventory = summonerBody.GetComponent <CharacterBody>()?.inventory ? summonerBody.GetComponent <CharacterBody>().inventory : null; MasterSummon masterSummon = new MasterSummon { masterPrefab = MageMasterPrefab, position = spawnPosition, rotation = Quaternion.identity, summonerBodyObject = summonerBody ?? null, ignoreTeamMemberLimit = true, useAmbientLevel = new bool?(true), inventoryToCopy = cfgCopyInventory.Value ? summonerInventory : null, }; CharacterMaster characterMaster = masterSummon.Perform(); if (characterMaster) { DontDestroyOnLoad(characterMaster); if (characterMaster.inventory) { characterMaster.inventory.GiveItem(RoR2Content.Items.ExtraLife, cfgLives.Value); } GameObject bodyObject = characterMaster.GetBodyObject(); if (bodyObject) { ModelLocator component = bodyObject.GetComponent <ModelLocator>(); if (component && component.modelTransform) { TemporaryOverlay temporaryOverlay = component.modelTransform.gameObject.AddComponent <TemporaryOverlay>(); temporaryOverlay.duration = 0.5f; temporaryOverlay.animateShaderAlpha = true; temporaryOverlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); temporaryOverlay.destroyComponentOnEnd = true; temporaryOverlay.originalMaterial = Resources.Load <Material>("Materials/matSummonDrone"); temporaryOverlay.AddToCharacerModel(component.modelTransform.GetComponent <CharacterModel>()); } } } return(characterMaster); }
private void GiveExpToPlayers() { var instances = PlayerCharacterMasterController.instances; for (int i = 0; i < instances.Count; i++) { GameObject gameObject = instances[i].gameObject; CharacterMaster component = gameObject.GetComponent <CharacterMaster>(); uint num = component.money; component.money -= num; GameObject bodyObject = component.GetBodyObject(); ulong num2 = (ulong)(num / 2f / (float)instances.Count); if (bodyObject) { ExperienceManager.instance.AwardExperience(base.transform.position, bodyObject.GetComponent <CharacterBody>(), num2); } } }
private GameObject FindBodyOnClient(uint masterID) { if (masterID == __ownerMasterNetID) { return(ownerBodyObject); } GameObject find = ClientScene.FindLocalObject(new NetworkInstanceId(masterID)); if (find) { CharacterMaster cm = find.GetComponent <CharacterMaster>(); if (cm) { return(cm.GetBodyObject()); } } return(null); }
public CharacterMaster SummonDrone(GameObject bodyPrefab, Vector3 spawnPosition, EquipmentIndex equipmentIndex = EquipmentIndex.None) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'RoR2.CharacterMaster RoR2.MithrixSpawnsDronesActivator::SummonMaster(UnityEngine.GameObject)' called on client"); return(null); } MasterSummon masterSummon = new MasterSummon { masterPrefab = masterPrefab, position = spawnPosition, rotation = Quaternion.identity, summonerBodyObject = bodyPrefab, ignoreTeamMemberLimit = true, useAmbientLevel = new bool?(true), }; CharacterMaster characterMaster = masterSummon.Perform(); if (characterMaster) { GameObject bodyObject = characterMaster.GetBodyObject(); if (bodyObject) { ModelLocator component = bodyObject.GetComponent <ModelLocator>(); if (component && component.modelTransform) { TemporaryOverlay temporaryOverlay = component.modelTransform.gameObject.AddComponent <TemporaryOverlay>(); temporaryOverlay.duration = 0.5f; temporaryOverlay.animateShaderAlpha = true; temporaryOverlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); temporaryOverlay.destroyComponentOnEnd = true; temporaryOverlay.originalMaterial = Resources.Load <Material>("Materials/matSummonDrone"); temporaryOverlay.AddToCharacerModel(component.modelTransform.GetComponent <CharacterModel>()); } var inventory = characterMaster.inventory; if (inventory) { inventory.SetEquipmentIndex(equipmentIndex); } } } return(characterMaster); }
private void UnlockingMage_onOpened(Interactor obj) { GameObject mageMasterPrefab = MasterCatalog.FindMasterPrefab("MageMonsterMaster"); GameObject mageBodyPrefab = mageMasterPrefab.GetComponent <CharacterMaster>().bodyPrefab; GameObject mageMasterGameObject = UnityEngine.Object.Instantiate(mageMasterPrefab, gameObject.transform.position, Quaternion.identity); GameObject mageBodyGameObject = UnityEngine.Object.Instantiate(mageBodyPrefab, gameObject.transform.position, Quaternion.identity); CharacterMaster mageCharacterMaster = mageBodyGameObject.GetComponent <CharacterMaster>(); mageCharacterMaster.bodyPrefab = mageBodyGameObject; AIOwnership mageAIOwnership = mageBodyGameObject.GetComponent <AIOwnership>(); CharacterMaster playerMaster = obj.gameObject.GetComponent <CharacterBody>().master; BaseAI mageBaseAI = gameObject.GetComponent <BaseAI>(); if (mageCharacterMaster) { mageCharacterMaster.inventory.GiveItem(ItemIndex.BoostDamage, 10); mageCharacterMaster.inventory.GiveItem(ItemIndex.BoostHp, 10); GameObject bodyObject = playerMaster.GetBodyObject(); if (bodyObject) { Deployable component4 = mageBodyGameObject.GetComponent <Deployable>(); if (!component4) { component4 = mageBodyGameObject.AddComponent <Deployable>(); } playerMaster.AddDeployable(component4, DeployableSlot.ParentAlly); } } if (mageAIOwnership) { mageAIOwnership.ownerMaster = obj.gameObject.GetComponent <CharacterBody>().master; } if (mageBaseAI) { mageBaseAI.leader.gameObject = base.gameObject; } NetworkServer.Spawn(mageBodyGameObject); mageCharacterMaster.SpawnBody(mageBodyGameObject, gameObject.transform.position, Quaternion.identity); }
void FixedUpdate() { if (!NetworkServer.active || !master || index == ItemIndex.None) { return; } var body = master.GetBodyObject(); if (!body) { return; } var ward = body.GetComponent <ItemWard>(); if (!ward) { return; } if (ward.radius != 100f) { ward.radius = 100f; } ward.itemcounts.TryGetValue(index, out int oldCount); var ctc = Mathf.Abs(oldCount - count); if (oldCount < count) { for (var i = 0; i < ctc; i++) { ward.ServerAddItem(index); } } else if (oldCount > count) { for (var i = 0; i < ctc; i++) { ward.ServerRemoveItem(index); } } }
private void ForceNameplateUpdate() { Debug.LogWarning($"Forcing ally {master.GetBody()?.GetDisplayName()} to have player nameplate."); TeamComponent team = master.GetBodyObject().GetComponent <TeamComponent>(); if (!team) { Debug.LogError("Could not find TeamComponent!"); return; } FieldInfo indicatorField = typeof(TeamComponent) .GetField("indicator", BindingFlags.Instance | BindingFlags.NonPublic); GameObject indicator = (GameObject)indicatorField.GetValue(team); if (indicator) { Destroy(indicator); indicatorField.SetValue(team, null); } typeof(TeamComponent) .GetMethod("SetupIndicator", BindingFlags.Instance | BindingFlags.NonPublic) .Invoke(team, new object[0]); }
public static void SimulatePickup(CharacterMaster characterMaster, ItemIndex itemIndex, int amount = 1) { var self = characterMaster.inventory; //var list = NotificationQueue.instancesList; var pickupIndex = PickupCatalog.FindPickupIndex(itemIndex); //var pickupDef = PickupCatalog.GetPickupDef(pickupIndex); //var nameToken = pickupDef.nameToken; //var color = pickupDef.baseColor; //var body = characterMaster.GetBody(); //Chat.AddPickupMessage(body, nameToken, color, (uint)amount); Util.PlaySound("Play_UI_item_pickup", characterMaster.GetBodyObject()); self.GiveItem(itemIndex, amount); GenericPickupController.SendPickupMessage(characterMaster, pickupIndex); /* * for (int i = 0; i < list.Count; i++) * { * list[i].OnPickup(characterMaster, pickupIndex); * }*/ }
private void SpawnVIPSelections(CharacterMaster master) { Shuffle(characterAllies); int numSpawns = characterAllies.Count; float radius = Mathf.Max(30f, (numSpawns + 1) * 3f); Vector3 center = getTransform(master.GetBody()).position; // Disable Swarm if enabled, as that spawns multiple enemies, which we don't want bool swarmsWasEnabled = false; if (RunArtifactManager.instance.IsArtifactEnabled(RoR2Content.Artifacts.swarmsArtifactDef)) { RunArtifactManager.instance.SetArtifactEnabledServer(RoR2Content.Artifacts.swarmsArtifactDef, false); swarmsWasEnabled = true; } try { for (int i = 0; i < numSpawns; ++i) { // Add one more to make a slot for skipping Ally selection float angle = i * (360f / (numSpawns + 1)); GameObject barrel = SpawnBarrel(center, angle, radius).spawnedInstance; BarrelInteraction interaction = barrel.GetComponent <BarrelInteraction>(); interaction.goldReward = 0; interaction.expReward = 0; GameObject allyDummy = SpawnAllyDummy(characterAllies[i], center, angle, radius + 5f).spawnedInstance; ApplyDummyAI(allyDummy.GetComponent <BaseAI>(), master.GetBodyObject()); SetGodMode(allyDummy.GetComponent <CharacterMaster>(), true); ApplyPurchaseLogic(barrel, allyDummy); } // Add barrel to skip ally interaction float noAllyAngle = numSpawns * (360f / (numSpawns + 1)); GameObject noAllybarrel = SpawnBarrel(center, noAllyAngle, radius).spawnedInstance; BarrelInteraction noAllyInteraction = noAllybarrel.GetComponent <BarrelInteraction>(); noAllyInteraction.goldReward = 0; noAllyInteraction.expReward = 0; GameObject portal = SpawnPortal(center, noAllyAngle, radius + 5f).spawnedInstance; GenericInteraction portalInteraction = portal.GetComponent <GenericInteraction>(); portalInteraction.SetInteractabilityDisabled(); portalInteraction.onActivation.RemoveAllListeners(); //portalInteraction.onActivation.AddListener((interactor) => //{ // portalInteraction.SetInteractabilityDisabled(); // Chat.SendBroadcastChat(new Chat.SimpleChatMessage() // { // baseToken = $"<color=#{ColorUtility.ToHtmlStringRGB(Color.green)}>Protect the VIP:</color> " + // $"<color=#{ColorUtility.ToHtmlStringRGB(Color.gray)}>Starting run with no ally.</color>" // }); // GoToNextLevel(); //}); ApplyPurchaseLogic(noAllybarrel, null); } finally { if (swarmsWasEnabled) { RunArtifactManager.instance.SetArtifactEnabledServer(RoR2Content.Artifacts.swarmsArtifactDef, true); } } }
private void BarrelInteraction_OnInteractionBegin(On.RoR2.BarrelInteraction.orig_OnInteractionBegin orig, BarrelInteraction self, Interactor activator) { if (!NetworkServer.active) { orig(self, activator); return; } if (IsOnVIPSelectionStage) { if (self.Networkopened) { orig(self, activator); return; } foreach (var barrel in spawnedBarrels) { BarrelInteraction interaction = barrel.GetComponent <BarrelInteraction>(); if (self != interaction) { interaction.Networkopened = true; } } AllyDetails details = self.GetComponent <AllyDetails>(); if (details && details.ally) { CharacterMaster summonCharacterMaster = activator.GetComponent <CharacterBody>().master; CharacterMaster allyCharacterMaster = details.ally.GetComponent <CharacterMaster>(); AllyMaster allyMaster = allyCharacterMaster.gameObject.AddComponent <AllyMaster>(); allyMaster.NameToken = "VIP"; GiveHelpingHand(allyCharacterMaster); ApplyNormalAI( details.ally.GetComponent <BaseAI>(), summonCharacterMaster.GetBodyObject()); allies.Add(allyCharacterMaster); allySquad.AddMember(allyCharacterMaster); Chat.SendBroadcastChat(new Chat.SimpleChatMessage() { baseToken = $"<color=#{ColorUtility.ToHtmlStringRGB(Color.green)}>Protect the VIP:</color> " + $"<color=#{ColorUtility.ToHtmlStringRGB(Color.gray)}>Protect the ally at all costs.</color> " + $"<color=#{ColorUtility.ToHtmlStringRGB(Color.red)}>If it dies, you die.</color>" }); } else if (details && !details.ally) { Chat.SendBroadcastChat(new Chat.SimpleChatMessage() { baseToken = $"<color=#{ColorUtility.ToHtmlStringRGB(Color.green)}>Protect the VIP:</color> " + $"<color=#{ColorUtility.ToHtmlStringRGB(Color.gray)}>Starting run with no ally.</color>" }); } else { Debug.LogError("No details attached to barrel :( Starting normal run..."); } GoToNextLevel(); Debug.Log("Unhooking from RoR2.BarrelInteraction.OnInteractionBegin"); On.RoR2.BarrelInteraction.OnInteractionBegin -= BarrelInteraction_OnInteractionBegin; } orig(self, activator); }
private static void OnSpawned(CharacterMaster master) { var bodyObj = master.GetBodyObject(); }