private void PostProcessProjectile(Projectile sourceProjectile, float effectChanceScalar) { try { sourceProjectile.OnDestruction += this.Removinator; ActiveProjectiles.Add(sourceProjectile); ComplexProjectileModifier complexProjectileModifier = PickupObjectDatabase.GetById(298) as ComplexProjectileModifier; chainGlitchPreventinator = complexProjectileModifier.ChainLightningMaxLinkDistance; } catch (Exception ex) { global::ETGModConsole.Log(ex.Message, false); } }
private void SpawnProjectile() { //If no spawn transform has been set, use the default owner transform if (!ownerMoveset.ProjectileSpawnTransform) { SpawnTransform = owner.transform; } else { SpawnTransform = ownerMoveset.ProjectileSpawnTransform; } //Log if a projectile couldn't be found if (!_projectile) { Debug.LogError("Projectile for " + abilityData.abilityName + " could not be found."); return; } //Create object to spawn laser from GameObject spawnerObject = new GameObject(); spawnerObject.transform.parent = SpawnTransform; spawnerObject.transform.localPosition = Vector3.zero; spawnerObject.transform.position = new Vector3(spawnerObject.transform.position.x + owner.transform.forward.x, spawnerObject.transform.position.y, owner.transform.position.z); spawnerObject.transform.forward = owner.transform.forward; //Initialize and attach spawn script ProjectileSpawnerBehaviour spawnScript = spawnerObject.AddComponent <ProjectileSpawnerBehaviour>(); spawnScript.projectile = _projectile; //Fire laser GameObject newProjectile = spawnScript.FireProjectile(spawnerObject.transform.forward * abilityData.GetCustomStatValue("Speed"), _projectileCollider); ActiveProjectiles.Add(newProjectile); MonoBehaviour.Destroy(spawnerObject); }
private void Removinator(Projectile projectile) { ActiveProjectiles.Remove(projectile); }