public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("Bullatterer", "bullatterer"); Game.Items.Rename("outdated_gun_mods:bullatterer", "nn:bullatterer"); gun.gameObject.AddComponent <Bullatterer>(); gun.SetShortDescription("Fly, my pretties!"); gun.SetLongDescription("Releases angry Bullats to fight for you." + "\n\nCreated by an ancient vampire in order to fight the most intimidating monster of all... his own loneliness."); gun.SetupSprite(null, "bullatterer_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 13); gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(56) as Gun, true, false); gun.muzzleFlashEffects.type = VFXPoolType.None; //GUN STATS gun.DefaultModule.ammoCost = 1; gun.DefaultModule.shootStyle = ProjectileModule.ShootStyle.Automatic; gun.DefaultModule.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; gun.reloadTime = 1.5f; gun.DefaultModule.cooldownTime = 0.35f; gun.DefaultModule.numberOfShotsInClip = 30; gun.barrelOffset.transform.localPosition = new Vector3(1.75f, 1.12f, 0f); gun.SetBaseMaxAmmo(400); gun.ammo = 400; gun.gunClass = GunClass.CHARM; //BULLET STATS Projectile projectile = UnityEngine.Object.Instantiate <Projectile>(gun.DefaultModule.projectiles[0]); projectile.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(projectile.gameObject); UnityEngine.Object.DontDestroyOnLoad(projectile); gun.DefaultModule.projectiles[0] = projectile; projectile.baseData.damage *= 0f; projectile.sprite.renderer.enabled = false; projectile.pierceMinorBreakables = true; SpawnEnemyOnBulletSpawn orAddComponent = projectile.gameObject.GetOrAddComponent <SpawnEnemyOnBulletSpawn>(); orAddComponent.companioniseEnemy = true; orAddComponent.deleteProjAfterSpawn = true; orAddComponent.enemyBulletDamage = 15f; orAddComponent.guidToSpawn = EnemyGuidDatabase.Entries["bullat"]; orAddComponent.ignoreSpawnedEnemyForGoodMimic = true; orAddComponent.killSpawnedEnemyOnRoomClear = true; orAddComponent.procChance = 1f; orAddComponent.scaleEnemyDamage = true; orAddComponent.knockbackAmountAwayFromOwner = 20; orAddComponent.scaleEnemyProjSize = true; orAddComponent.scaleEnemyProjSpeed = true; orAddComponent.doPostProcessOnEnemyBullets = false; gun.quality = PickupObject.ItemQuality.C; ETGMod.Databases.Items.Add(gun, null, "ANY"); BullattererID = gun.PickupObjectId; }
public override void PostProcessProjectile(Projectile projectile) { PlayerController player = projectile.Owner as PlayerController; if (player != null && projectile.gameObject.GetComponent <SpawnEnemyOnBulletSpawn>()) { int bullatType = UnityEngine.Random.Range(1, 5); if (bullatType == 1 && player.PlayerHasActiveSynergy("Shotgatterer")) { SpawnEnemyOnBulletSpawn orAddComponent = projectile.gameObject.GetOrAddComponent <SpawnEnemyOnBulletSpawn>(); orAddComponent.companioniseEnemy = true; orAddComponent.deleteProjAfterSpawn = true; orAddComponent.enemyBulletDamage = 30f; orAddComponent.guidToSpawn = EnemyGuidDatabase.Entries["shotgat"]; orAddComponent.ignoreSpawnedEnemyForGoodMimic = true; orAddComponent.killSpawnedEnemyOnRoomClear = true; orAddComponent.procChance = 1f; orAddComponent.scaleEnemyDamage = true; orAddComponent.scaleEnemyProjSize = true; orAddComponent.scaleEnemyProjSpeed = true; orAddComponent.doPostProcessOnEnemyBullets = false; } else if (bullatType == 2 && player.PlayerHasActiveSynergy("Grenatterer")) { SpawnEnemyOnBulletSpawn orAddComponent = projectile.gameObject.GetOrAddComponent <SpawnEnemyOnBulletSpawn>(); orAddComponent.companioniseEnemy = true; orAddComponent.deleteProjAfterSpawn = true; orAddComponent.enemyBulletDamage = 10f; orAddComponent.guidToSpawn = EnemyGuidDatabase.Entries["grenat"]; orAddComponent.ignoreSpawnedEnemyForGoodMimic = true; orAddComponent.killSpawnedEnemyOnRoomClear = true; orAddComponent.procChance = 1f; orAddComponent.scaleEnemyDamage = true; orAddComponent.scaleEnemyProjSize = true; orAddComponent.scaleEnemyProjSpeed = true; orAddComponent.doPostProcessOnEnemyBullets = false; } else if (bullatType == 3 && player.PlayerHasActiveSynergy("Spiratterer")) { SpawnEnemyOnBulletSpawn orAddComponent = projectile.gameObject.GetOrAddComponent <SpawnEnemyOnBulletSpawn>(); orAddComponent.companioniseEnemy = true; orAddComponent.deleteProjAfterSpawn = true; orAddComponent.enemyBulletDamage = 10f; orAddComponent.guidToSpawn = EnemyGuidDatabase.Entries["spirat"]; orAddComponent.ignoreSpawnedEnemyForGoodMimic = true; orAddComponent.killSpawnedEnemyOnRoomClear = true; orAddComponent.procChance = 1f; orAddComponent.scaleEnemyDamage = true; orAddComponent.scaleEnemyProjSize = true; orAddComponent.scaleEnemyProjSpeed = true; orAddComponent.doPostProcessOnEnemyBullets = false; } } base.PostProcessProjectile(projectile); }
public override void PostProcessProjectile(Projectile projectile) { PlayerController player = projectile.Owner as PlayerController; if (player != null && player.PlayerHasActiveSynergy("Nobel Effort")) { SpawnEnemyOnBulletSpawn nitraSpawning = projectile.gameObject.GetOrAddComponent <SpawnEnemyOnBulletSpawn>(); nitraSpawning.companioniseEnemy = true; nitraSpawning.deleteProjAfterSpawn = false; nitraSpawning.enemyBulletDamage = 30f; nitraSpawning.guidToSpawn = EnemyGuidDatabase.Entries["dynamite_kin"]; nitraSpawning.ignoreSpawnedEnemyForGoodMimic = true; nitraSpawning.killSpawnedEnemyOnRoomClear = true; nitraSpawning.procChance = 1f; nitraSpawning.scaleEnemyDamage = true; nitraSpawning.scaleEnemyProjSize = true; nitraSpawning.scaleEnemyProjSpeed = true; nitraSpawning.doPostProcessOnEnemyBullets = false; base.PostProcessProjectile(projectile); } }
public static void Add() { Gun gun = ETGMod.Databases.Items.NewGun("King Bullatterer", "kingbullatterer"); Game.Items.Rename("outdated_gun_mods:king_bullatterer", "nn:bullatterer+king_bullatterer"); gun.gameObject.AddComponent <Bullatterer>(); gun.SetShortDescription("djahksdhkssdfdfssdf"); gun.SetLongDescription("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); gun.SetupSprite(null, "kingbullatterer_idle_001", 8); gun.SetAnimationFPS(gun.shootAnimation, 13); gun.SetAnimationFPS(gun.idleAnimation, 13); for (int i = 0; i < 13; i++) { gun.AddProjectileModuleFrom(PickupObjectDatabase.GetById(86) as Gun, true, false); } gun.muzzleFlashEffects.type = VFXPoolType.None; //GUN STATS gun.reloadTime = 1.5f; gun.barrelOffset.transform.localPosition = new Vector3(1.25f, 0.43f, 0f); gun.SetBaseMaxAmmo(400); gun.ammo = 400; Projectile bouncerProj = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); bouncerProj.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(bouncerProj.gameObject); UnityEngine.Object.DontDestroyOnLoad(bouncerProj); bouncerProj.baseData.damage *= 1.2f; bouncerProj.baseData.speed *= 0.65f; bouncerProj.SetProjectileSpriteRight("yellow_enemystyle_projectile", 10, 10, true, tk2dBaseSprite.Anchor.MiddleCenter, 8, 8); BounceProjModifier bouncing = bouncerProj.gameObject.GetOrAddComponent <BounceProjModifier>(); bouncing.numberOfBounces = 1; Projectile bullatSpawnerProj = UnityEngine.Object.Instantiate <Projectile>((PickupObjectDatabase.GetById(86) as Gun).DefaultModule.projectiles[0]); bullatSpawnerProj.gameObject.SetActive(false); FakePrefab.MarkAsFakePrefab(bullatSpawnerProj.gameObject); UnityEngine.Object.DontDestroyOnLoad(bullatSpawnerProj); bullatSpawnerProj.baseData.damage *= 0f; bullatSpawnerProj.sprite.renderer.enabled = false; bullatSpawnerProj.pierceMinorBreakables = true; SpawnEnemyOnBulletSpawn orAddComponent = bullatSpawnerProj.gameObject.GetOrAddComponent <SpawnEnemyOnBulletSpawn>(); orAddComponent.companioniseEnemy = true; orAddComponent.deleteProjAfterSpawn = true; orAddComponent.enemyBulletDamage = 15f; orAddComponent.guidToSpawn = EnemyGuidDatabase.Entries["bullat"]; orAddComponent.ignoreSpawnedEnemyForGoodMimic = true; orAddComponent.killSpawnedEnemyOnRoomClear = true; orAddComponent.procChance = 1f; orAddComponent.scaleEnemyDamage = true; orAddComponent.scaleEnemyProjSize = true; orAddComponent.scaleEnemyProjSpeed = true; orAddComponent.doPostProcessOnEnemyBullets = false; int i2 = 0; foreach (ProjectileModule mod in gun.Volley.projectiles) { mod.numberOfShotsInClip = 15; mod.cooldownTime = 0.55f; mod.sequenceStyle = ProjectileModule.ProjectileSequenceStyle.Random; mod.shootStyle = ProjectileModule.ShootStyle.Automatic; if (i2 <= 0) //bullatProj { mod.ammoCost = 1; mod.angleVariance = 0.01f; mod.angleFromAim = 0f; mod.projectiles[0] = bullatSpawnerProj; i2++; } else if (i2 == 1) //0 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = 0f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 2) //30 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = 30f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 3) //60 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = 60f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 4) //90 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = 90f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 5) //120 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = 120f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 6) //150 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = 150f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 7) //180 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = 180f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 8) //-30 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = -30f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 9) //-60 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = -60f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 10) //-90 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = -90f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 == 11) //-120 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = -120f; mod.projectiles[0] = bouncerProj; i2++; } else if (i2 >= 12) //-150 degrees { mod.ammoCost = 0; mod.angleVariance = 7f; mod.angleFromAim = -150f; mod.projectiles[0] = bouncerProj; i2++; } } gun.quality = PickupObject.ItemQuality.EXCLUDED; ETGMod.Databases.Items.Add(gun, null, "ANY"); KingBullattererID = gun.PickupObjectId; }