private static GameObject CreateModel(GameObject main, string modelName) { PaladinPlugin.DestroyImmediate(main.transform.Find("ModelBase").gameObject); PaladinPlugin.DestroyImmediate(main.transform.Find("CameraPivot").gameObject); PaladinPlugin.DestroyImmediate(main.transform.Find("AimOrigin").gameObject); return(Modules.Assets.mainAssetBundle.LoadAsset <GameObject>(modelName)); }
public static void SetupSkills(GameObject bodyPrefab) { foreach (GenericSkill obj in bodyPrefab.GetComponentsInChildren <GenericSkill>()) { PaladinPlugin.DestroyImmediate(obj); } skillLocator = bodyPrefab.GetComponent <SkillLocator>(); PassiveSetup(); PrimarySetup(bodyPrefab); SecondarySetup(bodyPrefab); UtilitySetup(bodyPrefab); SpecialSetup(bodyPrefab); }
public static void RegisterProjectiles() { //would like to simplify this all eventually.... #region SpinningSlashShockwave shockwave = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/BrotherSunderWave"), "PaladinShockwave", true); shockwave.transform.GetChild(0).transform.localScale = new Vector3(10, 1.5f, 1); shockwave.GetComponent <ProjectileCharacterController>().lifetime = 0.5f; shockwave.GetComponent <ProjectileDamage>().damageType = DamageType.Stun1s; GameObject shockwaveGhost = PrefabAPI.InstantiateClone(shockwave.GetComponent <ProjectileController>().ghostPrefab, "PaladinShockwaveGhost", false); shockwaveGhost.transform.GetChild(0).transform.localScale = new Vector3(10, 1, 1); shockwaveGhost.transform.GetChild(1).transform.localScale = new Vector3(10, 1.5f, 1); PaladinPlugin.Destroy(shockwaveGhost.transform.GetChild(0).Find("Infection, World").gameObject); PaladinPlugin.Destroy(shockwaveGhost.transform.GetChild(0).Find("Water").gameObject); //Material shockwaveMat = Resources.Load<GameObject>("Prefabs/Projectiles/LunarWispTrackingBomb").GetComponent<ProjectileController>().ghostPrefab.transform.GetChild(0).GetComponent<ParticleSystemRenderer>().material; shockwaveGhost.transform.GetChild(1).GetComponent <MeshRenderer>().material = Modules.Assets.matMeteorIndicator; shockwave.GetComponent <ProjectileController>().ghostPrefab = shockwaveGhost; #endregion #region LunarShard lunarShard = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/LunarShardProjectile"), "PaladinLunarShard", true); PaladinPlugin.Destroy(lunarShard.GetComponent <ProjectileSteerTowardTarget>()); lunarShard.GetComponent <ProjectileImpactExplosion>().blastDamageCoefficient = 1f; #endregion #region SunlightSpear lightningSpear = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/MageLightningBombProjectile"), "LightningSpear", true); lightningSpear.AddComponent <Misc.ProjectileOverchargeOnImpact>(); GameObject spearGhost = Assets.lightningSpear.InstantiateClone("LightningSpearGhost", false); spearGhost.AddComponent <ProjectileGhostController>(); //vfx foreach (ParticleSystemRenderer i in spearGhost.GetComponentsInChildren <ParticleSystemRenderer>()) { if (i) { i.trailMaterial = Modules.Assets.matYellowLightningLong; } } Light light = spearGhost.GetComponentInChildren <Light>(); light.range = 16f; light.intensity = 32f; spearGhost.GetComponentInChildren <TrailRenderer>().material = Modules.Assets.matYellowLightningLong; lightningSpear.transform.localScale *= 2f; lightningSpear.GetComponent <ProjectileController>().ghostPrefab = spearGhost; //lightningSpear.GetComponent<ProjectileOverlapAttack>().impactEffect = Assets.lightningImpactFX; lightningSpear.GetComponent <ProjectileDamage>().damageType = DamageType.Shock5s; lightningSpear.GetComponent <ProjectileImpactExplosion>().impactEffect = Assets.altLightningImpactFX; lightningSpear.GetComponent <Rigidbody>().useGravity = false; PaladinPlugin.Destroy(lightningSpear.GetComponent <AntiGravityForce>()); PaladinPlugin.Destroy(lightningSpear.GetComponent <ProjectileProximityBeamController>()); #endregion #region SwordBeam swordBeamProjectile = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/FMJ"), "PaladinSwordBeam", true); swordBeamProjectile.transform.localScale = new Vector3(6, 3, 2); //GameObject beamGhost = Assets.swordBeam.InstantiateClone("SwordBeamGhost", false); //beamGhost.AddComponent<ProjectileGhostController>(); //swordBeam.GetComponent<ProjectileController>().ghostPrefab = Assets.swordBeamGhost; GameObject MercEvisProjectileGhost = Resources.Load <GameObject>("Prefabs/Projectiles/EvisProjectile").GetComponent <ProjectileController>().ghostPrefab; swordBeamProjectile.GetComponent <ProjectileController>().ghostPrefab = MercEvisProjectileGhost; swordBeamProjectile.GetComponent <ProjectileDamage>().damageType = DamageType.Generic; PaladinPlugin.Destroy(swordBeamProjectile.transform.Find("SweetSpotBehavior").gameObject); //run this in case moffein's phase round lightning is installed if (swordBeamProjectile.GetComponent <ProjectileProximityBeamController>()) { PaladinPlugin.Destroy(swordBeamProjectile.GetComponent <ProjectileProximityBeamController>()); } swordBeamProjectile.AddComponent <DestroyOnTimer>().duration = 0.3f; #endregion #region Replenish heal = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "PaladinHeal", true); heal.transform.localScale = Vector3.one; PaladinMod.PaladinPlugin.Destroy(heal.GetComponent <ProjectileDotZone>()); heal.AddComponent <DestroyOnTimer>().duration = 5f; Misc.PaladinHealController healController = heal.AddComponent <Misc.PaladinHealController>(); healController.radius = StaticValues.healRadius; healController.healAmount = StaticValues.healAmount; healController.barrierAmount = StaticValues.healBarrier; PaladinMod.PaladinPlugin.Destroy(heal.transform.GetChild(0).gameObject); GameObject healFX = Assets.healEffectPrefab.InstantiateClone("HealEffect", false); healFX.transform.parent = heal.transform; healFX.transform.localPosition = Vector3.zero; healFX.transform.localScale = Vector3.one * StaticValues.healRadius * 2f; #endregion #region SacredSunlight healZone = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "PaladinHealZone", true); healZone.transform.localScale = Vector3.one; PaladinMod.PaladinPlugin.Destroy(healZone.GetComponent <ProjectileDotZone>()); healZone.AddComponent <DestroyOnTimer>().duration = StaticValues.healZoneDuration + 2f; Misc.PaladinHealZoneController healZoneController = healZone.AddComponent <Misc.PaladinHealZoneController>(); healZoneController.radius = StaticValues.healZoneRadius; healZoneController.interval = 0.25f; healZoneController.rangeIndicator = null; healZoneController.buffDuration = 0f; healZoneController.floorWard = false; healZoneController.expires = true; healZoneController.invertTeamFilter = false; healZoneController.expireDuration = StaticValues.healZoneDuration; healZoneController.animateRadius = false; healZoneController.healAmount = StaticValues.healZoneAmount; healZoneController.barrierAmount = StaticValues.healZoneBarrier; healZoneController.freezeProjectiles = false; PaladinMod.PaladinPlugin.Destroy(healZone.transform.GetChild(0).gameObject); GameObject healZoneFX = Assets.healZoneEffectPrefab.InstantiateClone("HealZoneEffect", false); healZoneFX.transform.parent = healZone.transform; healZoneFX.transform.localPosition = Vector3.zero; InitSpellEffect(healZoneFX, StaticValues.healZoneRadius, StaticValues.healZoneDuration); #endregion #region ScepterSacredSunlight scepterHealZone = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "PaladinScepterHealZone", true); scepterHealZone.transform.localScale = Vector3.one; PaladinMod.PaladinPlugin.Destroy(scepterHealZone.GetComponent <ProjectileDotZone>()); scepterHealZone.AddComponent <DestroyOnTimer>().duration = StaticValues.scepterHealZoneDuration + 2f; Misc.PaladinHealZoneController scepterHealZoneController = scepterHealZone.AddComponent <Misc.PaladinHealZoneController>(); scepterHealZoneController.radius = StaticValues.scepterHealZoneRadius; scepterHealZoneController.interval = 0.25f; scepterHealZoneController.rangeIndicator = null; scepterHealZoneController.buffDuration = 0f; scepterHealZoneController.floorWard = false; scepterHealZoneController.expires = true; scepterHealZoneController.invertTeamFilter = false; scepterHealZoneController.expireDuration = StaticValues.scepterHealZoneDuration; scepterHealZoneController.animateRadius = false; scepterHealZoneController.healAmount = StaticValues.scepterHealZoneAmount; scepterHealZoneController.barrierAmount = StaticValues.scepterHealZoneBarrier; scepterHealZoneController.freezeProjectiles = false; scepterHealZoneController.cleanseDebuffs = true; PaladinMod.PaladinPlugin.Destroy(scepterHealZone.transform.GetChild(0).gameObject); GameObject scepterHealZoneFX = Assets.healZoneEffectPrefab.InstantiateClone("ScepterHealZoneEffect", false); scepterHealZoneFX.transform.parent = scepterHealZone.transform; scepterHealZoneFX.transform.localPosition = Vector3.zero; InitSpellEffect(scepterHealZoneFX, StaticValues.scepterHealZoneRadius, StaticValues.scepterHealZoneDuration); #endregion #region VowOfSilence torpor = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "PaladinTorpor", true); torpor.transform.localScale = Vector3.one; PaladinMod.PaladinPlugin.Destroy(torpor.GetComponent <ProjectileDotZone>()); torpor.AddComponent <DestroyOnTimer>().duration = StaticValues.torporDuration + 2f; Misc.PaladinHealZoneController torporController = torpor.AddComponent <Misc.PaladinHealZoneController>(); torporController.radius = StaticValues.torporRadius; torporController.interval = 1f; torporController.rangeIndicator = null; torporController.buffDef = Buffs.torporDebuff; torporController.buffDuration = 1f; torporController.floorWard = false; torporController.expires = true; torporController.invertTeamFilter = true; torporController.expireDuration = StaticValues.torporDuration; torporController.animateRadius = false; torporController.healAmount = 0f; torporController.freezeProjectiles = false; torporController.grounding = true; PaladinMod.PaladinPlugin.Destroy(torpor.transform.GetChild(0).gameObject); GameObject torporFX = Assets.torporEffectPrefab.InstantiateClone("TorporEffect", false); torporFX.transform.parent = torpor.transform; torporFX.transform.localPosition = Vector3.zero; InitSpellEffect(torporFX, StaticValues.torporRadius, StaticValues.torporDuration); #endregion #region ScepterVowOfSilence scepterTorpor = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "PaladinScepterTorpor", true); scepterTorpor.transform.localScale = Vector3.one; PaladinMod.PaladinPlugin.Destroy(scepterTorpor.GetComponent <ProjectileDotZone>()); scepterTorpor.AddComponent <DestroyOnTimer>().duration = StaticValues.scepterTorporDuration + 2f; Misc.PaladinHealZoneController scepterTorporController = scepterTorpor.AddComponent <Misc.PaladinHealZoneController>(); scepterTorporController.radius = StaticValues.scepterTorporRadius; scepterTorporController.interval = 1f; scepterTorporController.rangeIndicator = null; scepterTorporController.buffDef = Buffs.scepterTorporDebuff; scepterTorporController.buffDuration = 1f; scepterTorporController.floorWard = false; scepterTorporController.expires = true; scepterTorporController.invertTeamFilter = true; scepterTorporController.expireDuration = StaticValues.scepterTorporDuration; scepterTorporController.animateRadius = false; scepterTorporController.healAmount = 0f; scepterTorporController.freezeProjectiles = true; scepterTorporController.grounding = true; PaladinMod.PaladinPlugin.Destroy(scepterTorpor.transform.GetChild(0).gameObject); GameObject scepterTorporFX = Assets.torporEffectPrefab.InstantiateClone("ScepterTorporEffect", false); scepterTorporFX.transform.parent = scepterTorpor.transform; scepterTorporFX.transform.localPosition = Vector3.zero; InitSpellEffect(scepterTorporFX, StaticValues.scepterTorporRadius, StaticValues.scepterTorporDuration); #endregion #region SacredOath warcry = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "PaladinWarcry", true); warcry.transform.localScale = Vector3.one; PaladinMod.PaladinPlugin.Destroy(warcry.GetComponent <ProjectileDotZone>()); warcry.AddComponent <DestroyOnTimer>().duration = StaticValues.warcryDuration + 2f; BuffWard warcryController = warcry.AddComponent <BuffWard>(); warcryController.radius = StaticValues.warcryRadius; warcryController.interval = 0.25f; warcryController.rangeIndicator = null; warcryController.buffDef = Buffs.warcryBuff; warcryController.buffDuration = 2f; warcryController.floorWard = false; warcryController.expires = true; warcryController.invertTeamFilter = false; warcryController.expireDuration = StaticValues.warcryDuration; warcryController.animateRadius = false; PaladinMod.PaladinPlugin.Destroy(warcry.transform.GetChild(0).gameObject); GameObject warcryFX = Assets.warcryEffectPrefab.InstantiateClone("WarcryEffect", false); warcryFX.transform.parent = warcry.transform; warcryFX.transform.localPosition = Vector3.zero; InitSpellEffect(warcryFX, StaticValues.warcryRadius, StaticValues.warcryDuration); #endregion #region ScepterSacredOath scepterWarcry = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/SporeGrenadeProjectileDotZone"), "PaladinScepterWarcry", true); scepterWarcry.transform.localScale = Vector3.one; PaladinMod.PaladinPlugin.Destroy(scepterWarcry.GetComponent <ProjectileDotZone>()); scepterWarcry.AddComponent <DestroyOnTimer>().duration = StaticValues.scepterWarcryDuration + 2f; BuffWard scepterWarcryController = scepterWarcry.AddComponent <BuffWard>(); scepterWarcryController.radius = StaticValues.scepterWarcryRadius; scepterWarcryController.interval = 0.25f; scepterWarcryController.rangeIndicator = null; scepterWarcryController.buffDef = Buffs.scepterWarcryBuff; scepterWarcryController.buffDuration = 1f; scepterWarcryController.floorWard = false; scepterWarcryController.expires = true; scepterWarcryController.invertTeamFilter = false; scepterWarcryController.expireDuration = StaticValues.scepterWarcryDuration; scepterWarcryController.animateRadius = false; PaladinMod.PaladinPlugin.Destroy(scepterWarcry.transform.GetChild(0).gameObject); GameObject scepterWarcryFX = Assets.warcryEffectPrefab.InstantiateClone("ScepterWarcryEffect", false); scepterWarcryFX.transform.parent = scepterWarcry.transform; scepterWarcryFX.transform.localPosition = Vector3.zero; InitSpellEffect(scepterWarcryFX, StaticValues.scepterWarcryRadius, StaticValues.scepterWarcryDuration); #endregion Modules.Prefabs.projectilePrefabs = new List <GameObject> { swordBeamProjectile, shockwave, lightningSpear, lunarShard, heal, healZone, scepterHealZone, torpor, scepterTorpor, warcry, scepterWarcry }; }
public static void PopulateAssets() { if (mainAssetBundle == null) { using (var assetStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("PaladinMod.paladin")) { mainAssetBundle = AssetBundle.LoadFromStream(assetStream); var provider = new AssetBundleResourcesProvider("@Paladin", mainAssetBundle); ResourcesAPI.AddProvider(provider); } } using (Stream manifestResourceStream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("PaladinMod.PaladinBank.bnk")) { byte[] array = new byte[manifestResourceStream2.Length]; manifestResourceStream2.Read(array, 0, array.Length); SoundAPI.SoundBanks.Add(array); } #region Icons charPortrait = mainAssetBundle.LoadAsset <Sprite>("texPaladinIcon").texture; iconP = mainAssetBundle.LoadAsset <Sprite>("PassiveIcon"); icon1 = mainAssetBundle.LoadAsset <Sprite>("SlashIcon"); icon2 = mainAssetBundle.LoadAsset <Sprite>("SpinSlashIcon"); icon2b = mainAssetBundle.LoadAsset <Sprite>("LightningSpearIcon"); icon2c = mainAssetBundle.LoadAsset <Sprite>("LunarShardIcon"); icon3 = mainAssetBundle.LoadAsset <Sprite>("DashIcon"); icon3b = mainAssetBundle.LoadAsset <Sprite>("HealIcon"); icon4 = mainAssetBundle.LoadAsset <Sprite>("HealZoneIcon"); icon4b = mainAssetBundle.LoadAsset <Sprite>("TorporIcon"); icon4c = mainAssetBundle.LoadAsset <Sprite>("WarcryIcon"); icon4S = mainAssetBundle.LoadAsset <Sprite>("ScepterHealZoneIcon"); icon4bS = mainAssetBundle.LoadAsset <Sprite>("ScepterTorporIcon"); icon4cS = mainAssetBundle.LoadAsset <Sprite>("ScepterWarcryIcon"); #endregion #region ProjectileGhosts lightningSpear = mainAssetBundle.LoadAsset <GameObject>("LightningSpear"); swordBeam = mainAssetBundle.LoadAsset <GameObject>("SwordBeam"); swordBeamGhost = mainAssetBundle.LoadAsset <GameObject>("SwordBeamGhost"); swordBeamGhost.AddComponent <ProjectileGhostController>(); tornadoEffect = mainAssetBundle.LoadAsset <GameObject>("PaladinTornadoEffect"); tornadoEffect.AddComponent <ProjectileGhostController>(); #endregion #region SpellEffects healEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("HealEffect"); healZoneEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("HealZoneEffect"); torporEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("TorporEffect"); warcryEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("HealZoneEffect").InstantiateClone("WarcryEffect", false); GameObject engiShieldObj = Resources.Load <GameObject>("Prefabs/Projectiles/EngiBubbleShield"); Material shieldFillMat = UnityEngine.Object.Instantiate <Material>(engiShieldObj.transform.Find("Collision").Find("ActiveVisual").GetComponent <MeshRenderer>().material); Material shieldOuterMat = UnityEngine.Object.Instantiate <Material>(engiShieldObj.transform.Find("Collision").Find("ActiveVisual").Find("Edge").GetComponent <MeshRenderer>().material); GameObject voidExplosionObj = Resources.Load <GameObject>("Prefabs/Effects/NullifierDeathExplosion");//DeathExplosion Material voidMat = voidExplosionObj.transform.Find("AreaIndicator (1)").GetComponent <ParticleSystemRenderer>().material; torporMat = voidMat; GameObject healNovaObj = Resources.Load <GameObject>("Prefabs/Effects/TPHealNovaEffect"); Material healMat = healNovaObj.transform.Find("AreaIndicator").GetComponent <ParticleSystemRenderer>().material; healZoneEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material = shieldOuterMat; healZoneEffectPrefab.transform.GetChild(0).GetChild(0).GetComponent <ParticleSystemRenderer>().material = healMat; torporEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material = voidMat; warcryEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material = shieldOuterMat; warcryEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material.SetColor("_TintColor", Color.red); warcryEffectPrefab.transform.GetChild(0).GetChild(0).GetComponent <ParticleSystemRenderer>().material = Resources.Load <Material>("materials/matFullCrit"); // //GameObject warbannerEffect = Resources.Load<GameObject>("Prefabs/NetworkedObjects/WarbannerWard").InstantiateClone("x", true); #endregion #region SwordEffects swordSwing = Assets.LoadEffect("PaladinSwing", ""); spinningSlashFX = Assets.LoadEffect("SpinSlashEffect", ""); spinningSlashEmpoweredFX = Assets.LoadEffect("EmpSpinSlashEffect", ""); hitFX = Assets.LoadEffect("ImpactPaladinSwing", ""); swordSwingGreen = Assets.LoadEffect("PaladinSwingGreen", ""); spinningSlashFXGreen = Assets.LoadEffect("SpinSlashEffectGreen", ""); spinningSlashEmpoweredFXGreen = Assets.LoadEffect("EmpSpinSlashEffectGreen", ""); hitFXGreen = Assets.LoadEffect("ImpactPaladinSwingGreen", ""); swordSwingYellow = Assets.LoadEffect("PaladinSwingYellow", ""); spinningSlashFXYellow = Assets.LoadEffect("SpinSlashEffectYellow", ""); spinningSlashEmpoweredFXYellow = Assets.LoadEffect("EmpSpinSlashEffectYellow", ""); hitFXYellow = Assets.LoadEffect("ImpactPaladinSwingYellow", ""); swordSwingWhite = Assets.LoadEffect("PaladinSwingWhite", ""); hitFXBlunt = Assets.LoadEffect("ImpactPaladinSwingBlunt", ""); swordSwingBat = Assets.LoadEffect("PaladinSwingBat", ""); swordSwingRed = Assets.LoadEffect("PaladinSwingRed", ""); spinningSlashFXRed = Assets.LoadEffect("SpinSlashEffectRed", ""); spinningSlashEmpoweredFXRed = Assets.LoadEffect("EmpSpinSlashEffectRed", ""); hitFXRed = Assets.LoadEffect("ImpactPaladinSwingRed", ""); swordSwingClay = Assets.LoadEffect("PaladinSwingClay", ""); spinningSlashFXClay = Assets.LoadEffect("SpinSlashEffectClay", ""); spinningSlashEmpoweredFXClay = Assets.LoadEffect("EmpSpinSlashEffectClay", ""); hitFXClay = Assets.LoadEffect("ImpactPaladinSwingClay", ""); swordSwingPurple = Assets.LoadEffect("PaladinSwingPurple", ""); spinningSlashFXPurple = Assets.LoadEffect("SpinSlashEffectPurple", ""); spinningSlashEmpoweredFXPurple = Assets.LoadEffect("EmpSpinSlashEffectPurple", ""); hitFXPurple = Assets.LoadEffect("ImpactPaladinSwingPurple", ""); swordSwingFlame = Assets.LoadEffect("PaladinSwingFlame", ""); spinningSlashFXFlame = Assets.LoadEffect("SpinSlashEffectFlame", ""); spinningSlashEmpoweredFXFlame = Assets.LoadEffect("EmpSpinSlashEffectFlame", ""); swordSwingBlack = Assets.LoadEffect("PaladinSwingBlack", ""); spinningSlashFXBlack = Assets.LoadEffect("SpinSlashEffectBlack", ""); spinningSlashEmpoweredFXBlack = Assets.LoadEffect("EmpSpinSlashEffectBlack", ""); hitFXBlack = Assets.LoadEffect("ImpactPaladinSwingBlack", ""); #endregion #region MiscEffects lightningHitFX = Assets.LoadEffect("LightningHitFX", ""); lightningImpactFX = Assets.LoadEffect("LightningImpact", "Play_mage_R_lightningBlast"); torporVoidFX = Assets.LoadEffect("TorporVoidFX", "RoR2_nullifier_attack1_explode_02"); #endregion #region Meshes defaultMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladin"); defaultSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSword"); lunarMesh = mainAssetBundle.LoadAsset <Mesh>("meshLunarPaladin"); lunarSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshLunarSword"); poisonMesh = mainAssetBundle.LoadAsset <Mesh>("meshNkuhanaPaladin"); poisonSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshNkuhanaSword"); //hunterMesh = mainAssetBundle.LoadAsset<Mesh>("HunterMesh"); dripMesh = mainAssetBundle.LoadAsset <Mesh>("meshDripPaladin"); batMesh = mainAssetBundle.LoadAsset <Mesh>("meshBat"); clayMesh = mainAssetBundle.LoadAsset <Mesh>("meshClayPaladin"); claySwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshClaySword"); minecraftMesh = mainAssetBundle.LoadAsset <Mesh>("meshMinecraftPaladin"); minecraftSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshMinecraftSword"); #endregion //weird shit to get the lightning effect looking how i want it altLightningImpactFX = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Effects/ImpactEffects/LightningStrikeImpact"), "PaladinLightningStrikeImpact", true); PaladinPlugin.Destroy(altLightningImpactFX.transform.Find("LightningRibbon").gameObject); foreach (ParticleSystemRenderer i in altLightningImpactFX.GetComponentsInChildren <ParticleSystemRenderer>()) { if (i) { i.material.SetColor("_TintColor", Color.yellow); } } altLightningImpactFX.AddComponent <NetworkIdentity>(); EffectAPI.AddEffect(altLightningImpactFX); //clone mithrix's dash effect and resize it for my dash dashFX = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Effects/BrotherDashEffect"), "PaladinDashEffect", true); dashFX.AddComponent <NetworkIdentity>(); dashFX.transform.localScale *= 0.3f; EffectAPI.AddEffect(dashFX); InitCustomItems(); }
public static void PopulateAssets() { if (mainAssetBundle == null) { using (var assetStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("PaladinMod.paladin")) { mainAssetBundle = AssetBundle.LoadFromStream(assetStream); } } using (Stream manifestResourceStream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("PaladinMod.PaladinBank.bnk")) { byte[] array = new byte[manifestResourceStream2.Length]; manifestResourceStream2.Read(array, 0, array.Length); SoundAPI.SoundBanks.Add(array); } GatherMaterials(); #region Icons charPortrait = mainAssetBundle.LoadAsset <Sprite>("texPaladinIcon").texture; iconP = mainAssetBundle.LoadAsset <Sprite>("PassiveIcon"); icon1 = mainAssetBundle.LoadAsset <Sprite>("SlashIcon"); icon2 = mainAssetBundle.LoadAsset <Sprite>("SpinSlashIcon"); icon2b = mainAssetBundle.LoadAsset <Sprite>("LightningSpearIcon"); icon2c = mainAssetBundle.LoadAsset <Sprite>("LunarShardIcon"); icon3 = mainAssetBundle.LoadAsset <Sprite>("DashIcon"); icon3b = mainAssetBundle.LoadAsset <Sprite>("HealIcon"); icon4 = mainAssetBundle.LoadAsset <Sprite>("HealZoneIcon"); icon4b = mainAssetBundle.LoadAsset <Sprite>("TorporIcon"); icon4c = mainAssetBundle.LoadAsset <Sprite>("WarcryIcon"); icon4S = mainAssetBundle.LoadAsset <Sprite>("ScepterHealZoneIcon"); icon4bS = mainAssetBundle.LoadAsset <Sprite>("ScepterTorporIcon"); icon4cS = mainAssetBundle.LoadAsset <Sprite>("ScepterWarcryIcon"); icon4d = mainAssetBundle.LoadAsset <Sprite>("CruelSunIcon"); icon4dS = mainAssetBundle.LoadAsset <Sprite>("ScepterCruelSunIcon"); #endregion #region ProjectileGhosts lightningSpear = mainAssetBundle.LoadAsset <GameObject>("LightningSpear"); swordBeam = mainAssetBundle.LoadAsset <GameObject>("SwordBeam"); swordBeamGhost = mainAssetBundle.LoadAsset <GameObject>("SwordBeamGhost"); swordBeamGhost.AddComponent <ProjectileGhostController>(); tornadoEffect = mainAssetBundle.LoadAsset <GameObject>("PaladinTornadoEffect"); tornadoEffect.AddComponent <ProjectileGhostController>(); #endregion #region SpellEffects healEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("HealEffect"); healZoneEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("HealZoneEffect"); torporEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("TorporEffect"); warcryEffectPrefab = mainAssetBundle.LoadAsset <GameObject>("HealZoneEffect").InstantiateClone("WarcryEffect", false); GameObject engiShieldObj = Resources.Load <GameObject>("Prefabs/Projectiles/EngiBubbleShield"); Material shieldFillMat = UnityEngine.Object.Instantiate <Material>(engiShieldObj.transform.Find("Collision").Find("ActiveVisual").GetComponent <MeshRenderer>().material); Material shieldOuterMat = UnityEngine.Object.Instantiate <Material>(engiShieldObj.transform.Find("Collision").Find("ActiveVisual").Find("Edge").GetComponent <MeshRenderer>().material); GameObject voidExplosionObj = Resources.Load <GameObject>("Prefabs/Effects/NullifierDeathExplosion");//DeathExplosion Material voidMat = voidExplosionObj.transform.Find("AreaIndicator (1)").GetComponent <ParticleSystemRenderer>().material; torporMat = voidMat; GameObject healNovaObj = Resources.Load <GameObject>("Prefabs/Effects/TPHealNovaEffect"); Material healMat = healNovaObj.transform.Find("AreaIndicator").GetComponent <ParticleSystemRenderer>().material; healEffectPrefab.GetComponentInChildren <ParticleSystemRenderer>().material = healMat; healZoneEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material = shieldOuterMat; healZoneEffectPrefab.transform.GetChild(0).GetChild(0).GetComponent <ParticleSystemRenderer>().material = healMat; torporEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material = voidMat; warcryEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material = shieldOuterMat; warcryEffectPrefab.transform.GetChild(0).GetComponent <ParticleSystemRenderer>().material.SetColor("_TintColor", Color.red); warcryEffectPrefab.transform.GetChild(0).GetChild(0).GetComponent <ParticleSystemRenderer>().material = Resources.Load <Material>("materials/matFullCrit"); // //GameObject warbannerEffect = Resources.Load<GameObject>("Prefabs/NetworkedObjects/WarbannerWard").InstantiateClone("x", true); #endregion #region SwordEffects swordSwing = Assets.LoadEffect("PaladinSwing", ""); swordSwing.transform.Find("SwingTrail").Find("SwingTrail2").GetComponent <ParticleSystemRenderer>().material = matDistortion; spinningSlashFX = Assets.LoadEffect("SpinSlashEffect", ""); spinningSlashEmpoweredFX = Assets.LoadEffect("EmpSpinSlashEffect", ""); spinningSlashEmpoweredFX.transform.Find("pog").GetComponent <ParticleSystemRenderer>().material = matJellyfishLightning; spinningSlashEmpoweredFX.transform.Find("pog").Find("champ").GetComponent <ParticleSystemRenderer>().material = matJellyfishLightning; spinningSlashEmpoweredFX.transform.Find("pog").Find("Distortion").GetComponent <ParticleSystemRenderer>().material = matDistortion; hitFX = Assets.LoadEffect("ImpactPaladinSwing", ""); swordSwingGreen = Assets.LoadEffect("PaladinSwingGreen", ""); spinningSlashFXGreen = Assets.LoadEffect("SpinSlashEffectGreen", ""); spinningSlashEmpoweredFXGreen = Assets.LoadEffect("EmpSpinSlashEffectGreen", ""); hitFXGreen = Assets.LoadEffect("ImpactPaladinSwingGreen", ""); swordSwingYellow = Assets.LoadEffect("PaladinSwingYellow", ""); spinningSlashFXYellow = Assets.LoadEffect("SpinSlashEffectYellow", ""); spinningSlashEmpoweredFXYellow = Assets.LoadEffect("EmpSpinSlashEffectYellow", ""); hitFXYellow = Assets.LoadEffect("ImpactPaladinSwingYellow", ""); swordSwingWhite = Assets.LoadEffect("PaladinSwingWhite", ""); hitFXBlunt = Assets.LoadEffect("ImpactPaladinSwingBlunt", ""); swordSwingBat = Assets.LoadEffect("PaladinSwingBat", ""); swordSwingRed = Assets.LoadEffect("PaladinSwingRed", ""); spinningSlashFXRed = Assets.LoadEffect("SpinSlashEffectRed", ""); spinningSlashEmpoweredFXRed = Assets.LoadEffect("EmpSpinSlashEffectRed", ""); hitFXRed = Assets.LoadEffect("ImpactPaladinSwingRed", ""); swordSwingClay = Assets.LoadEffect("PaladinSwingClay", ""); spinningSlashFXClay = Assets.LoadEffect("SpinSlashEffectClay", ""); spinningSlashEmpoweredFXClay = Assets.LoadEffect("EmpSpinSlashEffectClay", ""); hitFXClay = Assets.LoadEffect("ImpactPaladinSwingClay", ""); swordSwingPurple = Assets.LoadEffect("PaladinSwingPurple", ""); spinningSlashFXPurple = Assets.LoadEffect("SpinSlashEffectPurple", ""); spinningSlashEmpoweredFXPurple = Assets.LoadEffect("EmpSpinSlashEffectPurple", ""); hitFXPurple = Assets.LoadEffect("ImpactPaladinSwingPurple", ""); swordSwingFlame = Assets.LoadEffect("PaladinSwingFlame", ""); spinningSlashFXFlame = Assets.LoadEffect("SpinSlashEffectFlame", ""); spinningSlashEmpoweredFXFlame = Assets.LoadEffect("EmpSpinSlashEffectFlame", ""); swordSwingBlack = Assets.LoadEffect("PaladinSwingBlack", ""); spinningSlashFXBlack = Assets.LoadEffect("SpinSlashEffectBlack", ""); spinningSlashEmpoweredFXBlack = Assets.LoadEffect("EmpSpinSlashEffectBlack", ""); hitFXBlack = Assets.LoadEffect("ImpactPaladinSwingBlack", ""); #endregion #region MiscEffects lightningHitFX = Assets.LoadEffect("LightningHitFX", ""); lightningImpactFX = Assets.LoadEffect("LightningImpact", "Play_mage_R_lightningBlast"); torporVoidFX = Assets.LoadEffect("TorporVoidFX", "RoR2_nullifier_attack1_explode_02"); #endregion #region Meshes defaultMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladin"); defaultSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSword"); defaultCapeMesh = mainAssetBundle.LoadAsset <Mesh>("meshCape"); lunarMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinLunar"); lunarSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordLunar"); lunarKnightMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinLunarKnight"); lunarKnightSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshLunarKnightMace"); gmMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinGM"); gmSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordGM"); gmLegacyMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinGMOld"); gmLegacySwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordGMOld"); gmCapeMesh = mainAssetBundle.LoadAsset <Mesh>("meshCapeGM"); poisonMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinNkuhana"); poisonSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordNkuhana"); poisonLegacyMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinNkuhanaLegacy"); poisonLegacySwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordNkuhanaLegacy"); specterMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinSpecter"); specterSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordSpecter"); //hunterMesh = mainAssetBundle.LoadAsset<Mesh>("HunterMesh"); dripMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinDrip"); batMesh = mainAssetBundle.LoadAsset <Mesh>("meshBat"); clayMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinClay"); claySwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordClay"); minecraftMesh = mainAssetBundle.LoadAsset <Mesh>("meshPaladinMinecraft"); minecraftSwordMesh = mainAssetBundle.LoadAsset <Mesh>("meshSwordMinecraft"); #endregion //capeMat = Skins.CreateMaterial("matPaladinGMOld", 1, Color.white); //was this being used anywhere? altLightningImpactFX = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Effects/ImpactEffects/LightningStrikeImpact"), "PaladinLightningStrikeImpact", true); PaladinPlugin.Destroy(altLightningImpactFX.transform.Find("LightningRibbon").gameObject); PaladinPlugin.Destroy(altLightningImpactFX.transform.Find("Ring").gameObject); altLightningImpactFX.transform.Find("PostProcess").GetComponent <PostProcessVolume>().sharedProfile = grandParentPP; altLightningImpactFX.transform.Find("Sphere").GetComponent <ParticleSystemRenderer>().material = matLoaderLightningSphere; Light light = altLightningImpactFX.GetComponentInChildren <Light>(); light.intensity = 80f; light.color = Color.yellow; altLightningImpactFX.AddComponent <NetworkIdentity>(); AddEffect(altLightningImpactFX, altLightningImpactFX.GetComponent <EffectComponent>().soundName); //clone mithrix's dash effect and resize it for my dash dashFX = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Effects/BrotherDashEffect"), "PaladinDashEffect", true); dashFX.AddComponent <NetworkIdentity>(); dashFX.GetComponent <EffectComponent>().applyScale = true; dashFX.transform.localScale *= 0.5f; AddEffect(dashFX); //InitCustomItems(); swordHitSoundEventS = CreateNetworkSoundEventDef(Modules.Sounds.HitS); swordHitSoundEventM = CreateNetworkSoundEventDef(Modules.Sounds.HitM); swordHitSoundEventL = CreateNetworkSoundEventDef(Modules.Sounds.HitL); batHitSoundEventS = CreateNetworkSoundEventDef(Modules.Sounds.HitBluntS); batHitSoundEventM = CreateNetworkSoundEventDef(Modules.Sounds.HitBluntM); batHitSoundEventL = CreateNetworkSoundEventDef(Modules.Sounds.HitBluntL); }