private static void Createprojectile() { ProjectileImpactExplosion projectileImpactExplosion = projectile.GetComponent <ProjectileImpactExplosion>(); ProjectileDotZone projectileDotZone = dotZone.GetComponent <ProjectileDotZone>(); projectileImpactExplosion.offsetForLifetimeExpiredSound = 0; projectileImpactExplosion.destroyOnWorld = true; projectileImpactExplosion.timerAfterImpact = true; projectileImpactExplosion.falloffModel = BlastAttack.FalloffModel.None; projectileImpactExplosion.lifetime = 10; projectileImpactExplosion.lifetimeAfterImpact = 0; projectileImpactExplosion.lifetimeRandomOffset = 0; projectileImpactExplosion.blastRadius = 10; projectileImpactExplosion.blastDamageCoefficient = 6; projectileImpactExplosion.blastProcCoefficient = 2; projectileImpactExplosion.blastAttackerFiltering = default; projectileImpactExplosion.bonusBlastForce = new Vector3(0.0f, 600.0f, 0.0f); projectileImpactExplosion.fireChildren = true; projectileImpactExplosion.childrenProjectilePrefab = dotZone; projectileImpactExplosion.childrenCount = 1; projectileImpactExplosion.childrenDamageCoefficient = 1; projectileDotZone.overlapProcCoefficient = 0.5F; projectileDotZone.fireFrequency = 15; projectileDotZone.resetFrequency = 60; projectileDotZone.lifetime = 14; dotZone.transform.localScale = dotZone.transform.localScale * 3; }
public void CreateProjectiles() { //needs to be declared first GameObject sporeGrenadeDotZonePrefab = Resources.Load <GameObject>("prefabs/projectiles/SporeGrenadeProjectileDotZone"); MolotovDotZonePrefab = sporeGrenadeDotZonePrefab.InstantiateClone("Bulletstorm_MolotovDotZone", true); MolotovDotZonePrefab.GetComponent <ProjectileDamage>().damageType = DamageType.IgniteOnHit; ProjectileDotZone projectileDotZone = MolotovDotZonePrefab.GetComponent <ProjectileDotZone>(); projectileDotZone.damageCoefficient = PercentDamagePerTick; projectileDotZone.resetFrequency = Mathf.Clamp(FrequencyOfTicks, 0f, 60f); projectileDotZone.lifetime = DurationAoE; //projectileDotZone.impactEffect = GlassBreakEffect; GameObject sporeGrenadePrefab = Resources.Load <GameObject>("prefabs/projectiles/SporeGrenadeProjectile"); MolotovPrefab = sporeGrenadePrefab.InstantiateClone("Bulletstorm_Molotov", true); MolotovPrefab.GetComponent <ProjectileDamage>().damageColorIndex = DamageColorIndex.Item; var PIE = MolotovPrefab.GetComponent <ProjectileImpactExplosion>(); if (DurationAoE > 0) { PIE.childrenProjectilePrefab = MolotovDotZonePrefab; } else { Object.Destroy(PIE); } MolotovPrefab.GetComponent <ProjectileSimple>().desiredForwardSpeed = 35; //50 ApplyTorqueOnStart applyTorque = MolotovPrefab.AddComponent <ApplyTorqueOnStart>(); applyTorque.randomize = true; applyTorque.localTorque = new Vector3(400f, 10f, 400f); GameObject model = MainAssets.LoadAsset <GameObject>(ProjectileModelPath); model.AddComponent <NetworkIdentity>(); model.AddComponent <ProjectileGhostController>(); model.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f); var controller = MolotovPrefab.GetComponent <ProjectileController>(); controller.ghostPrefab = model; ProjectileAPI.Add(MolotovPrefab); ProjectileAPI.Add(MolotovDotZonePrefab); if (MolotovPrefab) { PrefabAPI.RegisterNetworkPrefab(MolotovPrefab); } if (MolotovDotZonePrefab) { PrefabAPI.RegisterNetworkPrefab(MolotovDotZonePrefab); } }
public override void SetupBehavior() { base.SetupBehavior(); GameObject sporeGrenadeDotZonePrefab = Resources.Load <GameObject>("prefabs/projectiles/SporeGrenadeProjectileDotZone"); WaterPoolPrefab = sporeGrenadeDotZonePrefab.InstantiateClone("Bulletstorm_WaterPool"); ProjectileDotZone projectileDotZone = WaterPoolPrefab.GetComponent <ProjectileDotZone>(); projectileDotZone.attackerFiltering = AttackerFiltering.Default; projectileDotZone.lifetime = CoolantLeak_Duration; ProjectileDamage projectileDamage = WaterPoolPrefab.GetComponent <ProjectileDamage>(); projectileDamage.damageType = DamageType.Shock5s; projectileDamage.enabled = false; GameObject sporeGrenadePrefab = Resources.Load <GameObject>("prefabs/projectiles/SporeGrenadeProjectile"); WaterPoolPlacerPrefab = sporeGrenadePrefab.InstantiateClone("Bulletstorm_WaterPoolPlacer"); WaterPoolPlacerPrefab.GetComponent <ProjectileDamage>().damageColorIndex = DamageColorIndex.Item; ProjectileImpactExplosion projectileImpactExplosion = WaterPoolPlacerPrefab.GetComponent <ProjectileImpactExplosion>(); projectileImpactExplosion.impactEffect = null; projectileImpactExplosion.childrenProjectilePrefab = WaterPoolPrefab; ProjectileCatalog.getAdditionalEntries += list => list.Add(WaterPoolPlacerPrefab); ProjectileCatalog.getAdditionalEntries += list => list.Add(WaterPoolPrefab); if (WaterPoolPlacerPrefab) { PrefabAPI.RegisterNetworkPrefab(WaterPoolPlacerPrefab); } if (WaterPoolPrefab) { PrefabAPI.RegisterNetworkPrefab(WaterPoolPrefab); } }
private static void SetupProjectiles() { SetupAcidPool(); SetupAcidPoolDrop(); void SetupAcidPool() { acidPool = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/projectiles/CrocoLeapAcid"), "CrocoSpeedAcid"); acidPool.transform.localScale *= acidPoolScale; var buffWard = acidPool.AddComponent <BuffWard>(); buffWard.buffDef = RoR2Content.Buffs.CloakSpeed; buffWard.buffDuration = CausticSludgeBuffDuration; buffWard.expires = false; buffWard.floorWard = true; buffWard.radius = CausticSludgeActualScale; buffWard.requireGrounded = true; buffWard.interval *= 0.5f; var enemyBuffWard = acidPool.AddComponent <BuffWard>(); enemyBuffWard.buffDef = RoR2Content.Buffs.Slow60; enemyBuffWard.buffDuration = CausticSludgeBuffDuration; enemyBuffWard.expires = false; enemyBuffWard.floorWard = true; enemyBuffWard.radius = CausticSludgeActualScale; enemyBuffWard.requireGrounded = true; enemyBuffWard.invertTeamFilter = true; ProjectileDotZone projectileDotZone = acidPool.GetComponent <ProjectileDotZone>(); projectileDotZone.damageCoefficient = CausticSludgeDamageCoefficient; projectileDotZone.lifetime = CausticSludgeLifetime; projectileDotZone.overlapProcCoefficient = 0f; PoisonSplatController poisonSplatController = acidPool.AddComponent <PoisonSplatController>(); poisonSplatController.destroyOnTimer = acidPool.GetComponent <DestroyOnTimer>(); poisonSplatController.projectileDotZone = projectileDotZone; poisonSplatController.projectileController = acidPool.GetComponent <ProjectileController>(); ProjectileAPI.Add(acidPool); LeapDropAcid.groundedAcid = acidPool; } void SetupAcidPoolDrop() { Debug.Log("Setting up AcidPoolDrop"); acidPoolDrop = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/projectiles/SporeGrenadeProjectile"), "CrocoSpeedAcidDrop"); acidPoolDrop.GetComponent <ProjectileSimple>().desiredForwardSpeed = 0; var atos = acidPoolDrop.AddComponent <ApplyTorqueOnStart>(); atos.localTorque = Vector3.down * 3f; atos.randomize = false; var projectileImpactExplosion = acidPoolDrop.GetComponent <ProjectileImpactExplosion>(); projectileImpactExplosion.blastDamageCoefficient = 0f; projectileImpactExplosion.childrenProjectilePrefab = acidPool; projectileImpactExplosion.impactEffect = null; projectileImpactExplosion.destroyOnEnemy = false; acidPoolDrop.AddComponent <PoisonFallController>(); ProjectileAPI.Add(acidPoolDrop); } LeapDropAcid.projectilePrefab = acidPoolDrop; }