internal static void PopulateDisplays() { ItemDisplayRuleSet itemDisplayRuleSet = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponent <ModelLocator>().modelTransform.GetComponent <CharacterModel>().itemDisplayRuleSet; ItemDisplayRuleSet.KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups; for (int i = 0; i < keyAssetRuleGroups.Length; i++) { ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules; for (int j = 0; j < rules.Length; j++) { GameObject followerPrefab = rules[j].followerPrefab; bool flag = followerPrefab; if (flag) { string name = followerPrefab.name; string key = (name != null) ? name.ToLower() : null; bool flag2 = !TemplarItemDisplays.itemDisplayPrefabs.ContainsKey(key); if (flag2) { TemplarItemDisplays.itemDisplayPrefabs[key] = followerPrefab; } } } } }
void LoadInteractablePrefab() { itemDroneInteractablePrefab = TinkersSatchelPlugin.resources.LoadAsset <GameObject>("Assets/TinkersSatchel/Prefabs/Characters/ItemDrone/ItemDroneBroken.prefab"); var ppc = itemDroneInteractablePrefab.GetComponent <PickupPickerController>(); ppc.available = true; ppc.panelPrefab = itemDronePanelPrefab; var ppcf = itemDroneInteractablePrefab.GetComponent <PickupPickerControllerFilteredSelector>(); //scrap ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhite")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreen")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapYellow")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRedSuppressed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreenSuppressed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhiteSuppressed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrap")); //consumed items ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrapConsumed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeConsumed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeVoidConsumed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/FragileDamageBonusConsumed")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/HealingPotionConsumed")); //AI summons (bugged) ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/BeetleGland")); ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RoboBallBuddy")); }
internal override void SetupAttributes() { myDef = CloneSkillDef(targetVariantDef); var nametoken = "CLASSICITEMS_SCEPLOADER_CHARGEZAPFISTNAME"; newDescToken = "CLASSICITEMS_SCEPLOADER_CHARGEZAPFISTDESC"; oldDescToken = targetVariantDef.skillDescriptionToken; var namestr = "Thundercrash"; LanguageAPI.Add(nametoken, namestr); myDef.skillName = namestr; myDef.skillNameToken = nametoken; myDef.skillDescriptionToken = newDescToken; myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/loader_chargezapfisticon.png"); ContentAddition.AddSkillDef(myDef); projReplacer = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/LoaderZapCone").InstantiateClone("CIScepLoaderThundercrash", true); var proxb = projReplacer.GetComponent <ProjectileProximityBeamController>(); proxb.attackFireCount *= 3; proxb.maxAngleFilter = 180f; projReplacer.transform.Find("Effect").localScale *= 3f; ContentAddition.AddProjectile(projReplacer); }
//Adds tesla mine to projectile register list internal static void RegisterTeslaMine() { //Start with the base engi mine teslaMinePrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/engimine").InstantiateClone("TeslaMine", true); //If it exists (AKA if shit no break) if (teslaMinePrefab) { //Change the forward speed on it a bit, not sure why but it feels nice so keeping it teslaMinePrefab.GetComponent <ProjectileSimple>().desiredForwardSpeed = 40f; //Grab the arming state machine (Handler for the arming states, I think) EntityStateMachine teslaArmingStateMachine = teslaMinePrefab.GetComponentsInChildren <EntityStateMachine>().First(machine => machine.customName == "Arming"); //Replace the initial and main states of the arming state to our own, cooler states teslaArmingStateMachine.initialStateType = new SerializableEntityStateType(typeof(TeslaArmingUnarmedState)); teslaArmingStateMachine.mainStateType = new SerializableEntityStateType(typeof(TeslaArmingUnarmedState)); //Grab the main state machine (Handler for the mine after it has landed and is ready to splode) EntityStateMachine teslaMainStateMachine = teslaMinePrefab.GetComponentsInChildren <EntityStateMachine>().First(machine => machine.customName == "Main"); //Replace initial and main with our own: Initial is the waiting for target, main state is predet state //Note that the main state is also called when a mine is about to be unloaded (For ex too many mines) teslaMainStateMachine.initialStateType = new SerializableEntityStateType(typeof(TeslaWaitForStick)); teslaMainStateMachine.mainStateType = new SerializableEntityStateType(typeof(TeslaPreDetState)); //Add it to the projectile queue after modifying it projList.Add(teslaMinePrefab); } }
//Adds tracking grenade to projectile register list internal static void RegisterDebuffNade() { //Start with base engi grenade cause it has a nice grenade shape debuffGrenadePrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/engigrenadeprojectile").InstantiateClone("DebuffGrenade", true); //As long as it actually exists we can do stuff with it if (debuffGrenadePrefab) { //We want ours to go a bit faster than the shitty nade that engi uses debuffGrenadePrefab.GetComponent <ProjectileSimple>().desiredForwardSpeed *= 1.5f; //We gotta take hold of the impact explosion component ProjectileImpactExplosion debuffGrenadeExplosion = debuffGrenadePrefab.GetComponent <ProjectileImpactExplosion>(); //We want ours to explode on impact instead of bouncing around debuffGrenadeExplosion.destroyOnWorld = true; //We want hella more radius debuffGrenadeExplosion.blastRadius = Configuration.GetConfigValue <float>(Configuration.CaptainDebuffnadeRadius); //Linear falloff, idk what it normally is but this way we know for sure its linear debuffGrenadeExplosion.falloffModel = BlastAttack.FalloffModel.Linear; //Implement our own proc coefficient-to-damage-type stuff debuffGrenadeExplosion.blastProcCoefficient = BuffsLoading.ProcToDamageTypeEncoder(BuffsLoading.trackingOnHit.procIndex, 1f); //Change the explosion fx to something cooler as well debuffGrenadeExplosion.impactEffect = LegacyResourcesAPI.Load <GameObject>("prefabs/effects/omnieffect/OmniExplosionVFXScavCannonImpactExplosion"); //Nab the damage component of it ProjectileDamage debuffGrenadeDamage = debuffGrenadePrefab.GetComponent <ProjectileDamage>(); //This lets us use our own special damage type, it converts back to generic when being read off debuffGrenadeDamage.damageType = DamageType.NonLethal; //Add the projectile to the list projList.Add(debuffGrenadePrefab); } }
internal override void SetupAttributes() { myDef = CloneSkillDef(targetVariantDef); var nametoken = "CLASSICITEMS_SCEPCOMMANDO_GRENADENAME"; newDescToken = "CLASSICITEMS_SCEPCOMMANDO_GRENADEDESC"; oldDescToken = targetVariantDef.skillDescriptionToken; var namestr = "Carpet Bomb"; LanguageAPI.Add(nametoken, namestr); myDef.skillName = namestr; myDef.skillNameToken = nametoken; myDef.skillDescriptionToken = newDescToken; myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/commando_grenadeicon.png"); ContentAddition.AddSkillDef(myDef); projReplacer = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/CommandoGrenadeProjectile").InstantiateClone("CIScepCommandoGrenade", true); var pie = projReplacer.GetComponent <ProjectileImpactExplosion>(); pie.blastDamageCoefficient *= 0.5f; pie.bonusBlastForce *= 0.5f; ContentAddition.AddProjectile(projReplacer); }
public override void SetupAttributes() { base.SetupAttributes(); rewindStateType = ContentAddition.AddEntityState <RewindState>(out _); R2API.Networking.NetworkingAPI.RegisterMessageType <MsgRewind>(); blacklistedSkills = new[] { LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropHealing"), LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropHacking"), LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropShocking"), LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropEquipmentRestock"), LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CaptainSkillUsedUp"), LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CaptainCancelDummy") }; rewindBuff = ScriptableObject.CreateInstance <BuffDef>(); rewindBuff.buffColor = Color.white; rewindBuff.canStack = true; rewindBuff.isDebuff = false; rewindBuff.isCooldown = true; rewindBuff.name = "TKSATRewind"; rewindBuff.iconSprite = TinkersSatchelPlugin.resources.LoadAsset <Sprite>("Assets/TinkersSatchel/Textures/MiscIcons/rewindBuffIcon.png"); ContentAddition.AddBuffDef(rewindBuff); if (Compat_ClassicItems.enabled) { LanguageAPI.Add("TKSAT_REWIND_CI_EMBRYO_APPEND", "\n<style=cStack>Beating Embryo: 50% chance to not consume stock.</style>"); Compat_ClassicItems.RegisterEmbryoHook(equipmentDef, "TKSAT_REWIND_CI_EMBRYO_APPEND", () => "TKSAT.CausalCamera"); } }
public void Awake() { Instance = SingletonHelper.Assign(Instance, this); LogSpawnCards = Config.Bind("SpawnCards", "LogToConsole", false, "Log all available spawn cards from \"SpawnCards/CharacterSpawnCards/\""); CustomSpawnCards = Config.Bind("SpawnCards", "CustomSpawnCards", "SpawnCards/CharacterSpawnCards/cscJellyfish; SpawnCards/CharacterSpawnCards/cscRoboBallMini", "Semi-colon seperated (;) entries of Spawn Cards"); if (LogSpawnCards.Value) { List <String> allPaths = new List <string>(); LegacyResourcesAPI.GetAllPaths(allPaths); foreach (var resource in allPaths) { if (resource.StartsWith("SpawnCards/CharacterSpawnCards/")) { Debug.LogError(resource); } } } // FIXME: Get rid of this hack and just use a prefab On.RoR2.NetworkSession.BeginRun += NetworkSession_BeginRun; // This is the real way to integrate // GameModeCatalog.getAdditionalEntries += RegisterVIPRun; }
public override void OnEnter() { //this.baseDuration = base.baseDuration; this.crosshairOverridePrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/Crosshair/ToolbotGrenadeLauncherCrosshair"); this.maxBloomRadius = .1f; this.minBloomRadius = 1f; this.originalScale = this.chargeEffectPrefab.transform.localScale; base.OnEnter(); ChildLocator childLocator = base.GetModelChildLocator(); //if (VRAPI.Utils.IsUsingMotionControls(this.characterBody) == true) //{ // Transform temp = MotionControls.dominantHand.transform.Find("Muzzle"); // chargeEffect = temp.GetChild(0).gameObject; //} if (childLocator) { chargeEffect = childLocator.FindChild("chargeEffect").gameObject; chargeEffect.SetActive(false);//temp } }
internal override void SetupAttributes() { myDef = CloneSkillDef(targetVariantDef); var nametoken = "CLASSICITEMS_SCEPCAPTAIN_AIRSTRIKENAME"; newDescToken = "CLASSICITEMS_SCEPCAPTAIN_AIRSTRIKEDESC"; oldDescToken = targetVariantDef.skillDescriptionToken; var namestr = "21-Probe Salute"; LanguageAPI.Add(nametoken, namestr); myDef.skillName = namestr; myDef.skillNameToken = nametoken; myDef.skillDescriptionToken = newDescToken; myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/captain_airstrikeicon.png"); ContentAddition.AddSkillDef(myDef); var oldCallDef = LegacyResourcesAPI.Load <SkillDef>("skilldefs/captainbody/CallAirstrike"); myCallDef = CloneSkillDef(oldCallDef); myCallDef.baseMaxStock = 21; myCallDef.mustKeyPress = false; myCallDef.isCombatSkill = true; myCallDef.baseRechargeInterval = 0.07f; myCallDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/captain_airstrikeicon.png"); ContentAddition.AddSkillDef(myCallDef); }
public override bool OnUse(EquipmentSlot equipmentSlot) { MysticsRisky2UtilsEquipmentTarget targetInfo = equipmentSlot.GetComponent <MysticsRisky2UtilsEquipmentTarget>(); if (targetInfo) { if (targetInfo.obj) { PurchaseInteraction purchaseInteraction = targetInfo.obj.GetComponent <MysticsItemsDuplicatorLocator>().purchaseInteraction; purchaseInteraction.SetAvailable(false); purchaseInteraction.lockGameObject = null; ShopTerminalBehavior shopTerminalBehavior = targetInfo.obj.GetComponent <MysticsItemsDuplicatorLocator>().shopTerminalBehavior; EffectManager.SimpleEffect(LegacyResourcesAPI.Load <GameObject>("Prefabs/Effects/OmniEffect/OmniRecycleEffect"), shopTerminalBehavior.pickupDisplay.transform.position, Quaternion.identity, true); shopTerminalBehavior.SetHasBeenPurchased(true); for (var i = 0; i < amount; i++) { PickupDropletController.CreatePickupDroplet( shopTerminalBehavior.pickupIndex, (shopTerminalBehavior.dropTransform ? shopTerminalBehavior.dropTransform : shopTerminalBehavior.transform).position, shopTerminalBehavior.transform.TransformVector(shopTerminalBehavior.dropVelocity) ); } shopTerminalBehavior.SetNoPickup(); targetInfo.Invalidate(); return(true); } } return(false); }
private void MainMenuController_Start1(On.RoR2.UI.MainMenu.MainMenuController.orig_Start orig, RoR2.UI.MainMenu.MainMenuController self) { orig(self); //Dictionary<string, string> shorthand_to_Name = new Dictionary<string, string>(); foreach (var skillDef in skillDefs) { //instance.Logger.LogMessage($"Loading SkillDefs/{skillDef}"); var loadedDef = LegacyResourcesAPI.Load <SkillDef>($"SkillDefs/{skillDef}"); var slashIndex = skillDef.IndexOf('/'); var nameToken = skillDef.Substring(0, slashIndex - 4).ToUpper() + "_BODY_NAME"; var category = Language.GetString(nameToken); if (!loadedDef) { //instance.Logger.LogMessage($"This is what's left: {slashIndex} {category}"); continue; } var skillName = Language.GetString(loadedDef.skillNameToken); var defaultDesc = "mustKeyPress"; if (issueDefs.Contains(skillDef)) { defaultDesc += ". May cause irregular outcomes."; } var tempConfig = instance.Config.Bind(category, skillName, loadedDef.mustKeyPress, defaultDesc); loadedDef.mustKeyPress = tempConfig.Value; } On.RoR2.UI.MainMenu.MainMenuController.Start -= MainMenuController_Start1; }
public override void OnEnter() { speedCoefficient = 0f; duration = Rewind.instance.phaseDuration; this.beginSoundString = "Play_huntress_shift_start"; this.endSoundString = "Play_huntress_shift_end"; base.OnEnter(); cpt = outer.commonComponents.characterBody.GetComponent <RewindComponent>(); currFrame = cpt.frames.Count; if (characterModel) { characterModel.invisibilityCount--; } cpt.isRewinding = true; modelTransform = base.GetModelTransform(); if (modelTransform) { var ovl = modelTransform.gameObject.AddComponent <TemporaryOverlay>(); ovl.duration = duration; ovl.animateShaderAlpha = true; ovl.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); ovl.destroyComponentOnEnd = true; ovl.originalMaterial = LegacyResourcesAPI.Load <Material>("Materials/matHuntressFlashExpanded"); ovl.AddToCharacerModel(modelTransform.GetComponent <CharacterModel>()); } }
public override void OnEnter() { base.OnEnter(); base.characterBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/crosshair/SMGCrosshair"); this.minChargeDuration = 0.75f * (ChargeSpear.baseMinChargeDuration / this.attackSpeedStat); this.chargeDuration = 0.75f * (ChargeSpear.baseChargeDuration / this.attackSpeedStat); Util.PlaySound(MinigunSpinUp.sound, base.gameObject); base.GetModelAnimator().SetBool("WeaponIsReady", true); this.muzzleTransform = base.FindModelChild(MinigunState.muzzleName); bool flag = this.muzzleTransform && MinigunSpinUp.chargeEffectPrefab; bool flag2 = flag; if (flag2) { this.chargeInstance = UnityEngine.Object.Instantiate <GameObject>(MinigunSpinUp.chargeEffectPrefab, this.muzzleTransform.position, this.muzzleTransform.rotation); this.chargeInstance.transform.parent = this.muzzleTransform; ScaleParticleSystemDuration component = this.chargeInstance.GetComponent <ScaleParticleSystemDuration>(); bool flag3 = component; bool flag4 = flag3; if (flag4) { component.newDuration = this.minChargeDuration; } } }
internal static ItemDef DefineItem() { ItemTag[] tags = { ItemTag.Healing, ItemTag.Utility }; if (AspectWorldUnique.Value) { Array.Resize(ref tags, 3); tags[2] = ItemTag.WorldUnique; } Sprite outlineSprite; if (AspectRedTier.Value) { outlineSprite = Catalog.Sprites.OutlineRed; } else { outlineSprite = Catalog.Sprites.OutlineYellow; } ItemDef itemDef = ScriptableObject.CreateInstance <ItemDef>(); itemDef.name = identifier; itemDef.tags = tags; itemDef._itemTierDef = AspectRedTier.Value ? Catalog.RedItemTier : Catalog.BossItemTier; itemDef.pickupModelPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/PickupModels/PickupAffixWhite"); itemDef.pickupIconSprite = Catalog.CreateAspectSprite(Catalog.Sprites.AffixGold, outlineSprite); itemDef.AutoPopulateTokens(); return(itemDef); }
public override void OnExit() { base.OnExit(); base.PlayCrossfade("Gesture, Additive", "BufferEmpty", 0.2f); base.GetModelAnimator().SetBool("WeaponIsReady", false); base.characterBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/crosshair/SimpleDotCrosshair"); }
private static void PopulateFromBody(string bodyName) { ItemDisplayRuleSet itemDisplayRuleSet = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterBodies/" + bodyName + "Body").GetComponent <ModelLocator>().modelTransform.GetComponent <CharacterModel>().itemDisplayRuleSet; ItemDisplayRuleSet.KeyAssetRuleGroup[] item = itemDisplayRuleSet.keyAssetRuleGroups; for (int i = 0; i < item.Length; i++) { ItemDisplayRule[] rules = item[i].displayRuleGroup.rules; for (int j = 0; j < rules.Length; j++) { GameObject followerPrefab = rules[j].followerPrefab; if (followerPrefab) { string name = followerPrefab.name; string key = name?.ToLower(); if (!itemDisplayPrefabs.ContainsKey(key)) { itemDisplayPrefabs[key] = followerPrefab; } } } } }
protected virtual void SetupRagdoll(GameObject model) { RagdollController ragdollController = model.GetComponent <RagdollController>(); if (!ragdollController) { return; } if (ragdollMaterial == null) { ragdollMaterial = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren <RagdollController>().bones[1].GetComponent <Collider>().material; } foreach (Transform i in ragdollController.bones) { if (i) { i.gameObject.layer = LayerIndex.ragdoll.intVal; Collider j = i.GetComponent <Collider>(); if (j) { j.material = ragdollMaterial; j.sharedMaterial = ragdollMaterial; } } } }
public override void SetupAttributes() { base.SetupAttributes(); var mshPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/MushroomWard"); var bwPrefabPrefab = new GameObject("SpikestripAuraPrefabPrefab"); bwPrefabPrefab.AddComponent <NetworkIdentity>(); bwPrefabPrefab.AddComponent <TeamFilter>(); var bwPfb2ModelAdjust = new GameObject("SpikestripAuraModelAdjust"); bwPfb2ModelAdjust.transform.parent = bwPrefabPrefab.transform; bwPfb2ModelAdjust.AddComponent <MeshFilter>().mesh = mshPrefab.GetComponentInChildren <MeshFilter>().mesh; bwPfb2ModelAdjust.AddComponent <MeshRenderer>().material = UnityEngine.Object.Instantiate(mshPrefab.GetComponentInChildren <MeshRenderer>().material); bwPfb2ModelAdjust.GetComponent <MeshRenderer>().material.SetVector("_TintColor", new Vector4(0.6f, 0.06f, 0.5f, 0.3f)); bwPrefabPrefab.transform.localScale *= 2f; var bw = bwPrefabPrefab.AddComponent <BuffWard>(); bw.invertTeamFilter = true; bw.rangeIndicator = bwPfb2ModelAdjust.GetComponent <MeshRenderer>().transform; bw.expires = false; bw.Networkradius = baseRadius; bw.buffDuration = 0.5f; bw.interval = 0.5f; bw.buffDef = RoR2Content.Buffs.Slow50; spikeWardPrefab = bwPrefabPrefab.InstantiateClone("SpikestripAuraPrefab", true); UnityEngine.Object.Destroy(bwPrefabPrefab); }
internal override void SetupAttributes() { myDef = CloneSkillDef(targetVariantDef); var nametoken = "CLASSICITEMS_SCEPHUNTRESS_BALLISTANAME"; newDescToken = "CLASSICITEMS_SCEPHUNTRESS_BALLISTADESC"; oldDescToken = targetVariantDef.skillDescriptionToken; var namestr = "Rabauld"; LanguageAPI.Add(nametoken, namestr); myDef.skillName = namestr; myDef.skillNameToken = nametoken; myDef.skillDescriptionToken = newDescToken; myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/huntress_ballistaicon.png"); ContentAddition.AddSkillDef(myDef); var oldCtxDef = LegacyResourcesAPI.Load <SkillDef>("skilldefs/huntressbody/FireArrowSnipe"); myCtxDef = CloneSkillDef(oldCtxDef); myCtxDef.skillName = namestr; myCtxDef.skillNameToken = nametoken; myCtxDef.skillDescriptionToken = newDescToken; myCtxDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/huntress_ballistaicon.png"); ContentAddition.AddSkillDef(myCtxDef); }
public override void SetupBehavior() { base.SetupBehavior(); FakeInventory.blacklist.Add(itemDef); //scrap mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhite")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreen")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapYellow")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRedSuppressed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreenSuppressed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhiteSuppressed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrap")); //consumable items mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrap")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLife")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeVoid")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/FragileDamageBonus")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/HealingPotion")); //consumed items mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrapConsumed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeConsumed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeVoidConsumed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/FragileDamageBonusConsumed")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/HealingPotionConsumed")); //AI summons (bugged) mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/BeetleGland")); mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RoboBallBuddy")); }
internal override void SetupAttributes() { myDef = CloneSkillDef(targetVariantDef); var nametoken = "CLASSICITEMS_SCEPCROCO_DISEASENAME"; newDescToken = "CLASSICITEMS_SCEPCROCO_DISEASEDESC"; oldDescToken = targetVariantDef.skillDescriptionToken; var namestr = "Plague"; LanguageAPI.Add(nametoken, namestr); myDef.skillName = namestr; myDef.skillNameToken = nametoken; myDef.skillDescriptionToken = newDescToken; myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/croco_firediseaseicon.png"); ContentAddition.AddSkillDef(myDef); var mshPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/MushroomWard"); var dwPrefabPrefab = new GameObject("CIDiseaseAuraPrefabPrefab"); dwPrefabPrefab.AddComponent <TeamFilter>(); dwPrefabPrefab.AddComponent <MeshFilter>().mesh = mshPrefab.GetComponentInChildren <MeshFilter>().mesh; dwPrefabPrefab.AddComponent <MeshRenderer>().material = UnityEngine.Object.Instantiate(mshPrefab.GetComponentInChildren <MeshRenderer>().material); dwPrefabPrefab.GetComponent <MeshRenderer>().material.SetVector("_TintColor", new Vector4(1.5f, 0.3f, 1f, 0.3f)); dwPrefabPrefab.AddComponent <NetworkedBodyAttachment>().forceHostAuthority = true; var dw = dwPrefabPrefab.AddComponent <DiseaseWard>(); dw.rangeIndicator = dwPrefabPrefab.GetComponent <MeshRenderer>().transform; dw.interval = 1f; diseaseWardPrefab = dwPrefabPrefab.InstantiateClone("CIDiseaseWardAuraPrefab", true); UnityEngine.Object.Destroy(dwPrefabPrefab); }
public override void SetupAttributes() { base.SetupAttributes(); var captainSD = LegacyResourcesAPI.Load <SkillDef>("SkillDefs/CaptainBody/CaptainSkillUsedUp"); disabledSkillDef = SkillUtil.CloneSkillDef(captainSD); disabledSkillDef.skillNameToken = "TKSAT_DISABLED_SKILL_NAME"; disabledSkillDef.skillDescriptionToken = "TKSAT_DISABLED_SKILL_DESCRIPTION"; disabledSkillDef.dontAllowPastMaxStocks = false; disabledSkillDef.beginSkillCooldownOnSkillEnd = true; ContentAddition.AddSkillDef(disabledSkillDef); tauntDebuff = ScriptableObject.CreateInstance <BuffDef>(); tauntDebuff.buffColor = Color.white; tauntDebuff.canStack = false; tauntDebuff.isDebuff = true; tauntDebuff.name = "TKSATTaunt"; tauntDebuff.iconSprite = Addressables.LoadAssetAsync <Sprite>("RoR2/Base/Common/MiscIcons/texAttackIcon.png") .WaitForCompletion(); ContentAddition.AddBuffDef(tauntDebuff); R2API.Networking.NetworkingAPI.RegisterMessageType <ServerTimedSkillDisable.MsgApply>(); R2API.Networking.NetworkingAPI.RegisterMessageType <ServerTimedSkillDisable.MsgRemove>(); }
protected virtual void SetupFootstepController(GameObject model) { var footstepHandler = model.AddComponent <FootstepHandler>(); footstepHandler.enableFootstepDust = true; footstepHandler.baseFootstepString = "Play_player_footstep"; footstepHandler.footstepDustPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/GenericFootstepDust"); }
protected internal override void SetupAttributes() { base.SetupAttributes(); LanguageAPI.Add(descriptionAppendToken, "\n<style=cStack>Beating Embryo: Double duration. Cannot multiproc.</style>"); boostedScannerPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/ChestScanner").InstantiateClone("EmbryoBoostedScannerPrefab", true); boostedScannerPrefab.GetComponent <ChestRevealer>().revealDuration *= 2f; }
public override void OnEnter() { base.OnEnter(); base.characterBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/crosshair/SimpleDotCrosshair"); this.duration = MinigunSpinDown.baseDuration * 0.1f / this.attackSpeedStat; Util.PlayAttackSpeedSound(MinigunSpinDown.sound, base.gameObject, this.attackSpeedStat); base.GetModelAnimator().SetBool("WeaponIsReady", false); }
public void CreateScene() { // this creates a config option to enable the character- feel free to remove if the character is the only thing in your mod //sceneEnabled = Modules.Config.CharacterEnableConfig("TTGLIntro"); if (true)//sceneEnabled.Value) { /* * var sceneDef = ScriptableObject.CreateInstance<SceneDef>(); * ((ScriptableObject)sceneDef).name = "TTGL_intro"; * sceneDef.cachedName = "TTGL_intro"; * sceneDef.sceneAddress = new AssetReferenceScene("4fcac21c79f25cd40bb148a83606f1e0"); * sceneDef.sceneType = SceneType.Menu; * sceneDef.isOfflineScene = true; * sceneDef.loreToken = "TTGL_intro_LoreToken"; * sceneDef.shouldIncludeInLogbook = false; * TTGL_SurvivorPlugin.sceneDefs.Add(sceneDef); */ //On.RoR2.SceneCatalog.Init += SceneCatalog_Init; //Music; SceneManager.sceneLoaded += SceneManager_sceneLoaded; var d = new SoundAPI.Music.CustomMusicData(); d.BanksFolderPath = Assets.ResourcesPath; d.BepInPlugin = TTGL_SurvivorPlugin.instance.Info.Metadata; d.InitBankName = "TTGL_Init.bnk"; d.PlayMusicSystemEventName = "Play_TTGLMusic"; d.SoundBankName = "TTGLSceneMusic.bnk"; d.SceneDefToTracks = new Dictionary <SceneDef, IEnumerable <SoundAPI.Music.MainAndBossTracks> >(); var introScene = LegacyResourcesAPI.Load <SceneDef>("SceneDefs/intro"); // that following block of code create a track def for a custom music in the logbook s var TTGL_introTrackDef = ScriptableObject.CreateInstance <SoundAPI.Music.CustomMusicTrackDef>(); TTGL_introTrackDef.cachedName = "TTGL_intro"; TTGL_introTrackDef.SoundBankName = d.SoundBankName; TTGL_introTrackDef.CustomStates = new List <SoundAPI.Music.CustomMusicTrackDef.CustomState>(); var cstate1 = new SoundAPI.Music.CustomMusicTrackDef.CustomState(); cstate1.GroupId = 1598298728U; // Music_menu cstate1.StateId = 158671394U; // TTGLIntroCutscene TTGL_introTrackDef.CustomStates.Add(cstate1); var cstate2 = new SoundAPI.Music.CustomMusicTrackDef.CustomState(); cstate2.GroupId = 792781730U; // Music_system cstate2.StateId = 2607556080U; // Menu TTGL_introTrackDef.CustomStates.Add(cstate2); d.SceneDefToTracks.Add(introScene, new List <SoundAPI.Music.MainAndBossTracks>() { new SoundAPI.Music.MainAndBossTracks(TTGL_introTrackDef, null) }); SoundAPI.Music.Add(d); } }
public void RpcUnlanded() { EffectManager.SpawnEffect(LegacyResourcesAPI.Load <GameObject>("Prefabs/Effects/ImpactEffects/PodGroundImpact"), new EffectData { origin = this.gameObject.transform.position, rotation = this.gameObject.transform.rotation, scale = 0.25f }, true); Util.PlaySound("Play_UI_podImpact", this.gameObject); shkm.enabled = true; }
private static void ReplaceLoaderSmokeRampTextures() { Texture2D smokeRamp = VRMod.VRAssetBundle.LoadAsset <Texture2D>("SmokeRamp");; EntityStateConfiguration state = LegacyResourcesAPI.Load <EntityStateConfiguration>("entitystateconfigurations/EntityStates.Loader.BaseChargeFist"); if (state) { HG.GeneralSerializer.SerializedField effectField = state.serializedFieldsCollection.serializedFields.First(x => x.fieldName == "chargeVfxPrefab"); GameObject effectPrefab = effectField.fieldValue.objectValue as GameObject; Transform dustObject = effectPrefab.transform.Find("Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } } state = LegacyResourcesAPI.Load <EntityStateConfiguration>("entitystateconfigurations/EntityStates.Loader.BaseSwingChargedFist"); if (state) { HG.GeneralSerializer.SerializedField effectField = state.serializedFieldsCollection.serializedFields.First(x => x.fieldName == "swingEffectPrefab"); GameObject effectPrefab = effectField.fieldValue.objectValue as GameObject; Transform dustObject = effectPrefab.transform.Find("Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } } GameObject hookPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/LoaderHook"); if (hookPrefab) { Transform dustObject = hookPrefab.transform.Find("FistMesh/RopeFront/Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } dustObject = hookPrefab.transform.Find("RopeEnd/Dust"); if (dustObject) { ReplaceSmokeRampTexture(dustObject, smokeRamp); } } }
protected virtual void SetupCharacterBody(string bodyName, GameObject newPrefab, Transform modelBaseTransform) { CharacterBody bodyComponent = newPrefab.GetComponent <CharacterBody>(); bodyComponent.bodyIndex = BodyIndex.None; bodyComponent.name = bodyName; bodyComponent.bodyColor = new Color(0.25f, 0.65f, 0.25f); bodyComponent.baseNameToken = TTGL_SurvivorPlugin.developerPrefix + "_LAGANN_BODY_NAME"; bodyComponent.subtitleNameToken = TTGL_SurvivorPlugin.developerPrefix + "_LAGANN_BODY_SUBTITLE"; bodyComponent.portraitIcon = Modules.Assets.LoadAsset <Texture>("LagannIcon"); bodyComponent.bodyFlags = CharacterBody.BodyFlags.ImmuneToExecutes; bodyComponent.rootMotionInMainState = false; bodyComponent.baseMaxHealth = 110f; bodyComponent.levelMaxHealth = 33f; bodyComponent.baseRegen = 1.5f; bodyComponent.levelRegen = 0.3f; bodyComponent.baseMaxShield = 0f; bodyComponent.levelMaxShield = 0f; bodyComponent.baseMoveSpeed = 7f; bodyComponent.levelMoveSpeed = 0f; bodyComponent.baseAcceleration = 80f; bodyComponent.baseJumpPower = 15f; bodyComponent.levelJumpPower = 0f; bodyComponent.baseDamage = 12f; bodyComponent.levelDamage = 2.4f; bodyComponent.baseAttackSpeed = 1f; bodyComponent.levelAttackSpeed = 0f; bodyComponent.baseArmor = 20f; bodyComponent.levelArmor = 0f; bodyComponent.baseCrit = 0f; bodyComponent.levelCrit = 0f; bodyComponent.baseJumpCount = 1; bodyComponent.sprintingSpeedMultiplier = 1.45f; bodyComponent.hideCrosshair = false; bodyComponent.aimOriginTransform = modelBaseTransform.Find("AimOrigin"); bodyComponent.hullClassification = HullClassification.Human; bodyComponent.preferredPodPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/SurvivorPod"); bodyComponent.isChampion = false; }