public static void BuildPrefab() { // source = EnemyDatabase.GetOrLoadByGuid("c50a862d19fc4d30baeba54795e8cb93"); bool flag = prefab != null || BossBuilder.Dictionary.ContainsKey(guid); bool flag2 = flag; if (!flag2) { prefab = BossBuilder.BuildPrefab("Flame Chamber", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false, true); var companion = prefab.AddComponent <EnemyBehavior2>(); companion.aiActor.knockbackDoer.weight = 200; companion.aiActor.MovementSpeed = 6f; companion.aiActor.healthHaver.PreventAllDamage = false; companion.aiActor.CollisionDamage = 1f; companion.aiActor.HasShadow = true; companion.aiActor.IgnoreForRoomClear = false; companion.aiActor.aiAnimator.HitReactChance = 0.05f; companion.aiActor.specRigidbody.CollideWithOthers = true; companion.aiActor.specRigidbody.CollideWithTileMap = true; companion.aiActor.PreventFallingInPitsEver = true; companion.aiActor.healthHaver.ForceSetCurrentHealth(500f); companion.aiActor.healthHaver.SetHealthMaximum(500f); companion.aiActor.CollisionKnockbackStrength = 5f; companion.aiActor.procedurallyOutlined = true; companion.aiActor.CanTargetPlayers = true; ItemsMod.Strings.Enemies.Set("#FLAMECHAMBER", "Killinder"); ItemsMod.Strings.Enemies.Set("#????", "???"); ItemsMod.Strings.Enemies.Set("#SUBTITLE", "FLAME CHAMBER"); ItemsMod.Strings.Enemies.Set("#QUOTE", "THE 36 CHAMBERS"); companion.aiActor.healthHaver.overrideBossName = "#FLAMECHAMBER"; companion.aiActor.OverrideDisplayName = "#FLAMECHAMBER"; companion.aiActor.ActorName = "#FLAMECHAMBER"; companion.aiActor.name = "#FLAMECHAMBER"; companion.aiActor.SetIsFlying(true, "Flying Enemy", true, true); prefab.name = companion.aiActor.OverrideDisplayName; GenericIntroDoer miniBossIntroDoer = prefab.AddComponent <GenericIntroDoer>(); miniBossIntroDoer.triggerType = GenericIntroDoer.TriggerType.PlayerEnteredRoom; miniBossIntroDoer.initialDelay = 0.15f; miniBossIntroDoer.cameraMoveSpeed = 14; miniBossIntroDoer.specifyIntroAiAnimator = null; miniBossIntroDoer.BossMusicEvent = "Play_MUS_Boss_Theme_Beholster"; companion.aiActor.ShadowObject = EnemyDatabase.GetOrLoadByGuid("c00390483f394a849c36143eb878998f").ShadowObject; companion.aiActor.HasShadow = true; miniBossIntroDoer.PreventBossMusic = false; miniBossIntroDoer.InvisibleBeforeIntroAnim = false; miniBossIntroDoer.preIntroAnim = string.Empty; miniBossIntroDoer.preIntroDirectionalAnim = string.Empty; miniBossIntroDoer.introAnim = "intro"; miniBossIntroDoer.introDirectionalAnim = string.Empty; miniBossIntroDoer.continueAnimDuringOutro = false; miniBossIntroDoer.cameraFocus = null; miniBossIntroDoer.roomPositionCameraFocus = Vector2.zero; miniBossIntroDoer.restrictPlayerMotionToRoom = false; miniBossIntroDoer.fusebombLock = false; miniBossIntroDoer.AdditionalHeightOffset = 0; miniBossIntroDoer.portraitSlideSettings = new PortraitSlideSettings() { bossNameString = "#FLAMECHAMBER", bossSubtitleString = "#SUBTITLE", bossQuoteString = "#QUOTE", bossSpritePxOffset = IntVector2.Zero, topLeftTextPxOffset = IntVector2.Zero, bottomRightTextPxOffset = IntVector2.Zero, bgColor = ExtendedColours.orange }; miniBossIntroDoer.SkipBossCard = false; miniBossIntroDoer.portraitSlideSettings.bossArtSprite = BossCardTexture; companion.aiActor.healthHaver.bossHealthBar = HealthHaver.BossBarType.MainBar; miniBossIntroDoer.SkipFinalizeAnimation = true; miniBossIntroDoer.RegenerateCache(); //BehaviorSpeculator aIActor = EnemyDatabase.GetOrLoadByGuid("465da2bb086a4a88a803f79fe3a27677").behaviorSpeculator; //Tools.DebugInformation(aIActor); ///// companion.aiActor.healthHaver.SetHealthMaximum(500f, null, false); companion.aiActor.specRigidbody.PixelColliders.Clear(); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyCollider, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 10, ManualWidth = 50, ManualHeight = 50, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0 }); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyHitBox, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 10, ManualWidth = 50, ManualHeight = 50, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0, }); companion.aiActor.CorpseObject = EnemyDatabase.GetOrLoadByGuid("c0ff3744760c4a2eb0bb52ac162056e6").CorpseObject; companion.aiActor.PreventBlackPhantom = false; AIAnimator aiAnimator = companion.aiAnimator; aiAnimator.IdleAnimation = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "idle", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; DirectionalAnimation almostdone = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "intro", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "intro", anim = almostdone } }; DirectionalAnimation done2 = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "bigeyes", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "bigeyes", anim = done2 } }; DirectionalAnimation done32 = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "eyes", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "eyes", anim = done32 } }; bool flag3 = BishopCollection == null; if (flag3) { BishopCollection = SpriteBuilder.ConstructCollection(prefab, "FlameChamber_Collection"); UnityEngine.Object.DontDestroyOnLoad(BishopCollection); for (int i = 0; i < spritePaths.Length; i++) { SpriteBuilder.AddSpriteToCollection(spritePaths[i], BishopCollection); } SpriteBuilder.AddAnimation(companion.spriteAnimator, BishopCollection, new List <int> { 0, 1, 2, 3 }, "idle", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 7f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BishopCollection, new List <int> { 4, 5, 6, 7, 8, 9, 34 }, "intro", tk2dSpriteAnimationClip.WrapMode.Once).fps = 7f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BishopCollection, new List <int> { 31 }, "bigeyes", tk2dSpriteAnimationClip.WrapMode.Once).fps = 6f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BishopCollection, new List <int> { 32 }, "eyes", tk2dSpriteAnimationClip.WrapMode.Once).fps = 6f; } var bs = prefab.GetComponent <BehaviorSpeculator>(); BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator; bs.OverrideBehaviors = behaviorSpeculator.OverrideBehaviors; bs.OtherBehaviors = behaviorSpeculator.OtherBehaviors; shootpoint = new GameObject("attach"); shootpoint.transform.parent = companion.transform; shootpoint.transform.position = companion.sprite.WorldCenter; GameObject m_CachedGunAttachPoint = companion.transform.Find("attach").gameObject; bs.TargetBehaviors = new List <TargetBehaviorBase> { new TargetPlayerBehavior { Radius = 35f, LineOfSight = false, ObjectPermanence = true, SearchInterval = 0.25f, PauseOnTargetSwitch = false, PauseTime = 0.25f } }; float[] angles = { 45, 135, 225, 135 }; bs.MovementBehaviors = new List <MovementBehaviorBase> { new PingPongAroundBehavior2 { startingAngles = angles } }; bs.AttackBehaviorGroup.AttackBehaviors = new List <AttackBehaviorGroup.AttackGroupItem> { new AttackBehaviorGroup.AttackGroupItem() { Probability = 1, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new CustomBulletScriptSelector(typeof(ChamberShot)), LeadAmount = 0f, AttackCooldown = 4.5f, TellAnimation = "bigeyes", RequiresLineOfSight = false, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true }, NickName = "Lucky Sixes" }, new AttackBehaviorGroup.AttackGroupItem() { Probability = 1, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new CustomBulletScriptSelector(typeof(FireLine)), LeadAmount = 0f, AttackCooldown = 4.5f, TellAnimation = "bigeyes", RequiresLineOfSight = false, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true }, NickName = "Fire In Da Hole" }, new AttackBehaviorGroup.AttackGroupItem() { Probability = 1.5f, Behavior = new TeleportBehavior() { AttackableDuringAnimation = true, AllowCrossRoomTeleportation = false, teleportRequiresTransparency = false, hasOutlinesDuringAnim = true, ManuallyDefineRoom = false, StayOnScreen = true, AvoidWalls = true, GoneTime = 0.7f, OnlyTeleportIfPlayerUnreachable = false, MinDistanceFromPlayer = 7f, MaxDistanceFromPlayer = -1f, teleportInBulletScript = new CustomBulletScriptSelector(typeof(PoofScript)), teleportOutBulletScript = new CustomBulletScriptSelector(typeof(PoofScript)), AttackCooldown = 5f, InitialCooldown = 0f, RequiresLineOfSight = false, roomMax = new Vector2(0, 0), roomMin = new Vector2(0, 0), GlobalCooldown = 0.5f, Cooldown = 1f, InitialCooldownVariance = 0f, goneAttackBehavior = null, IsBlackPhantom = false, GroupName = null, GroupCooldown = 0f, MinRange = 3, Range = 10, MinHealthThreshold = 0, AccumulateHealthThresholds = true, targetAreaStyle = null, HealthThresholds = new float[0], MinWallDistance = 1, }, NickName = "Flameport" }, new AttackBehaviorGroup.AttackGroupItem() { Probability = 0.5f, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new CustomBulletScriptSelector(typeof(ShotgunBall)), LeadAmount = 0f, TellAnimation = "eyes", AttackCooldown = 4.5f, RequiresLineOfSight = false, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true }, NickName = "Large Shotgunball" }, }; bs.InstantFirstTick = behaviorSpeculator.InstantFirstTick; bs.TickInterval = behaviorSpeculator.TickInterval; bs.PostAwakenDelay = behaviorSpeculator.PostAwakenDelay; bs.RemoveDelayOnReinforce = behaviorSpeculator.RemoveDelayOnReinforce; bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection; bs.StartingFacingDirection = behaviorSpeculator.StartingFacingDirection; bs.SkipTimingDifferentiator = behaviorSpeculator.SkipTimingDifferentiator; companion.aiActor.CollisionSetsPlayerOnFire = true; companion.aiActor.EffectResistances = new ActorEffectResistance[] { new ActorEffectResistance() { resistAmount = 1, resistType = EffectResistanceType.Fire }, }; Game.Enemies.Add("cak:flamechamber", companion.aiActor); } }
// Token: 0x0600001B RID: 27 RVA: 0x000028E8 File Offset: 0x00000AE8 public override void Start() { ItemAPI.Tools.Init(); StaticReferences.Init(); ShrineFakePrefabHooks.Init(); ShrineFactory.Init(); BreachShopTool.DoSetup(); BossBuilder.Init() ; MultiActiveReloadManager.SetupHooks(); ItemBuilder.Init(); HookYeah.Init(); //FakePrefabHooks.Init(); GungeonAPI.Tools.Init(); //GungeonAP.Init(); //FakePrefabHooks.Init(); //ShrineFactory.Init(); //ShrineFactory.PlaceBnyBreachShrines(); //TestActiveItem.Init(); //VengeanceVlone.Init(); //ShatterEffect.Initialise(); ShrineOfTheLeadLord.Add(); ChaosCorruptionShrine.Add(); PleaseForgiveMe.Add(); BunnyModule.Strings = new AdvancedStringDB(); //SpecialDungeon.Init(); EnemyBuilder.Init(); HooksEnemy.Init(); ToolsEnemy.Init(); ArtifactOfRevenge.Init(); ArtifactOfAttraction.Init(); ArtifactOfGlass.Init(); ArtifactOfAvarice.Init(); ArtifactOfDaze.Init(); ArtifactOfPrey.Init(); ArtifactOfMegalomania.Init(); ArtifactOfFodder.Init(); ArtifactOfBolster.Init(); ArtifactOfEnigma.Init(); ArtifactOfSacrifice.Init(); ArtifactOfFraility.Init(); //ArtifactOfParanoia.Init(); /* * ModuleCannon.Add(); * ModuleChip.Init(); * ModuleAmmoEater.Init(); * ModuleDamage.Init(); * ModuleClipSize.Init(); * ModuleFireRate.Init(); * ModuleReload.Init(); * T2ModuleYV.Init(); * T2ModuleCloak.Init(); * T2ModulePierce.Init(); * T2ModuleBounce.Init(); * T2ModuleEjector.Init(); * T2ModuleHoming.Init(); * T3ModuleRocket.Init(); * T3ModuleInaccurate.Init(); * T3ModuleColossus.Init(); * T3ModuleOverload.Init(); * T3ModuleReactive.Init(); * CorruptModuleSensor.Init(); * CorruptModuleAccuracy.Init(); * CorruptModuleLoose.Init(); * CorruptModuleCoolant.Init(); * CorruptModuleDamage.Init(); */ //Gimmick Heavy Guns TrainGun.Add(); LastStand.Add(); SoulStealer.Add(); Commiter.Add(); Pickshot.Add(); AerialBombardment.Add(); WarningShot.Add(); //Mimic Guns Casemimic.Add(); ChambemimicGun.Add(); ABlasphemimic.Add(); Gunthemimic.Add(); Mimikey47.Add(); //Mechanical Guns MatterTranslocator.Add(); ThunderStorm.Add(); CaptainsShotgun.Add(); EnforcersLaw.Add(); TimeZoner.Add(); ArtemissileRocket.Add(); BigNukeGun.Add(); BoxGun.Add(); REXNeedler.Add(); FlakCannon.Add(); GunslayerShotgun.Add(); RogueLegendary.Add(); //Otherworldly Guns HarvestersShotgun.Add(); PrismaticShot.Add(); Starbounder.Add(); ReaverClaw.Add(); ReaverHeart.Add(); ChaosRevolver.Add(); ChaosRevolverSynergyForme.Add(); ChaosHand.Add(); NuclearTentacle.Add(); SteveStaff.Add(); //Outright Wacky weaponry Valkyrie.Add(); OppressorsCrossbow.Add(); GunslayerGauntlets.Add(); SuperFlakCannon.Add(); MithrixHammer.Add(); TungstenCube.Add(); CoolStaff.Add(); ASwordGun.Add(); AGunSword.Add(); Microwave.Add(); //Dumb Guns StickGun.Add(); //BulletCaster.Add(); SausageRevolver.Add(); BloatedRevolver.Add(); PocketPistol.Add(); BrokenGunParts.Add(); IDPDFreakGun.Add(); FakeShotgun.Add(); Bugun.Add(); //Life Living PersonalGuard.Init(); GlockOfTheDead.Init(); LizardBloodTransfusion.Init(); AbsoluteZeroPotion.Init(); MatrixPotion.Init(); GreandeParasite.Init(); //Joke Items SpeckOfDust.Init(); LastResort.Init(); JokeBook.Init(); //Mechanical Items OnPlayerItemUsedItem.Init(); StaticCharger.Init(); //Bullet Type Items ResurrectionBullets.Init(); GuillotineRounds.Init(); LunarGlassRounds.Init(); ReaverRounds.Init(); SimpBullets.Init(); //Cursed Items Risk Reward Items LeadHand.Init(); JammedGuillotine.Init(); GestureOfTheJammed.Init(); CrownOfBlood.Init(); RTG.Init(); DGrenade.Init(); MalachiteCrown.Init(); AncientWhisper.Init(); AncientEnigma.Init(); LunarGlassSyringe.Init(); SlayerKey.Init(); DamocleanClip.Init(); DeathMark.Init(); TheMonolith.Init(); LoopMarker.Init(); BulletRelic.Init(); GodLifesGift.Init(); BloodGoldRing.Init(); //Defense Items SuperShield.Init(); GunslayerHelmet.Init(); FreezeLighter.Init(); //Stats Up Microscope.Init(); EmpoweringCore.Init(); BookOfEconomics.Init(); CounterChamber.Init(); Infusion.Init(); MinigunRounds.Init(); //Otherworldly AstralCounterweight.Init(); SpiritOfStagnation.Init(); SoulInAJar.Init(); AmmoRepurposer.Init(); ZenithDesign.Init(); ChaosGodsWrath.Init(); SkyGrass.Init(); ChaosChamber.Init(); ChaosHammer.Init(); BloodyTrigger.Init(); Coolrobes.Init(); //Companion Items/CompanionAI //Claycord.Init(); Blastcore.Init(); //ClayCordStatue.ClayBuildPrefab(); GunSoulBox.Init(); GunSoulBlue.BlueBuildPrefab(); GunSoulGreen.GreenBuildPrefab(); GunSoulRed.RedBuildPrefab(); GunSoulYellow.YellowBuildPrefab(); GunSoulPink.PinkBuildPrefab(); GunSoulPurple.PurpleBuildPrefab(); PointZero.Init(); //BabyGoodModular.Init(); //Guon Stones GuonPebble.Init(); ChaosGuonStone.Init(); BulluonStone.Init(); DynamiteGuon.Init(); GuonGeon.Init(); //Ammolets LunarGlassAmmolet.Init(); ReaverAmmolet.Init(); //TableTechs TableTechReload.Init(); TableTechBomb.Init(); TableTechSoul.Init(); TableTechKnife.Init(); //OP??? BunnysFoot.Init(); //Random Weird Shit that just kinda exists GungeonInvestment.Init(); BrokenLockpicker.Init(); Dejammer.Init(); Keylocator.Init(); Keyceipt.Init(); FrequentFlyer.Init(); Death.Add(); Taxes.Add(); Lacon1Scrap.Init(); Lacon1.Add(); Lacon2.Add(); Lacon3.Add(); Lacon4.Add(); Lacon5.Add(); Lacon6.Add(); //Vengeance.Init(); TestItemBNY.Init(); DragunHeartThing.Init(); MasteryReplacementRNG.InitDungeonHook(); SynergyFormInitialiser.AddSynergyForms(); InitialiseSynergies.DoInitialisation(); //BunnyEnemies.InitPrefabs(); //AbyssKinPlease.Init(); //AbyssShotgunner.Init(); ChaosBeing.Init(); ChaosBeingLarge.Init(); //DopplegamnerClone.Init(); // AncientWhisperInfinite.Init(); CursedPearl.Init(); RewardCrown.Init(); ChaosMalice.Add(); ChaosEmblem.Init(); //Curse2Emblem.Init(); DeathsDebt.Init(); SteadyShotSniper.Add(); TheStranger.Init(); //TheStranger.Init(); //AdrenalineAmmolet.Init(); //Game.Items["bny:matter_translocator"].SetupUnlockOnCustomFlag(CustomDungeonFlags.EXAMPLE_BLUEPRINTTRUCK, true); //setups rolling eye's unlock //Game.Items["bny:matter_translocator"].AddItemToTrorcMetaShop(1123); //adds rolling eye to trorc's breach shop as the last item BunnyModule.Log(BunnyModule.MOD_NAME + " v" + BunnyModule.VERSION + " started successfully.", BunnyModule.TEXT_COLOR); }
public static void BuildPrefab() { // source = EnemyDatabase.GetOrLoadByGuid("c50a862d19fc4d30baeba54795e8cb93"); bool flag = fuckyouprefab != null || BossBuilder.Dictionary.ContainsKey(guid); bool flag2 = flag; if (!flag2) { fuckyouprefab = BossBuilder.BuildPrefab("TheStranger", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false, true); var companion = fuckyouprefab.AddComponent <EnemyBehavior>(); companion.aiActor.knockbackDoer.weight = 200; companion.aiActor.MovementSpeed = 1.33f; companion.aiActor.healthHaver.PreventAllDamage = false; companion.aiActor.CollisionDamage = 1f; companion.aiActor.HasShadow = false; companion.aiActor.IgnoreForRoomClear = false; companion.aiActor.aiAnimator.HitReactChance = 0.05f; companion.aiActor.specRigidbody.CollideWithOthers = true; companion.aiActor.specRigidbody.CollideWithTileMap = true; companion.aiActor.PreventFallingInPitsEver = true; companion.aiActor.healthHaver.ForceSetCurrentHealth(600f); companion.aiActor.healthHaver.SetHealthMaximum(600f); companion.aiActor.CollisionKnockbackStrength = 2f; companion.aiActor.procedurallyOutlined = false; companion.aiActor.CanTargetPlayers = true; /// BunnyModule.Strings.Enemies.Set("#THE_STRANGER", "Stranger"); BunnyModule.Strings.Enemies.Set("#????", "???"); BunnyModule.Strings.Enemies.Set("#SUBTITLE", "Glocked And Loaded"); BunnyModule.Strings.Enemies.Set("#QUOTE", ""); companion.aiActor.healthHaver.overrideBossName = "#THE_STRANGER"; companion.aiActor.OverrideDisplayName = "#THE_STRANGER"; companion.aiActor.ActorName = "#THE_STRANGER"; companion.aiActor.name = "#THE_STRANGER"; fuckyouprefab.name = companion.aiActor.OverrideDisplayName; GenericIntroDoer miniBossIntroDoer = fuckyouprefab.AddComponent <GenericIntroDoer>(); fuckyouprefab.AddComponent <TheStrangerIntro>(); miniBossIntroDoer.triggerType = GenericIntroDoer.TriggerType.PlayerEnteredRoom; miniBossIntroDoer.initialDelay = 0.15f; miniBossIntroDoer.cameraMoveSpeed = 14; miniBossIntroDoer.specifyIntroAiAnimator = null; miniBossIntroDoer.BossMusicEvent = "Play_MUS_Boss_Theme_Beholster"; miniBossIntroDoer.PreventBossMusic = false; miniBossIntroDoer.InvisibleBeforeIntroAnim = true; miniBossIntroDoer.preIntroAnim = string.Empty; miniBossIntroDoer.preIntroDirectionalAnim = string.Empty; miniBossIntroDoer.introAnim = "intro"; miniBossIntroDoer.introDirectionalAnim = string.Empty; miniBossIntroDoer.continueAnimDuringOutro = false; miniBossIntroDoer.cameraFocus = null; miniBossIntroDoer.roomPositionCameraFocus = Vector2.zero; miniBossIntroDoer.restrictPlayerMotionToRoom = false; miniBossIntroDoer.fusebombLock = false; miniBossIntroDoer.AdditionalHeightOffset = 0; miniBossIntroDoer.portraitSlideSettings = new PortraitSlideSettings() { bossNameString = "#THE_STRANGER", bossSubtitleString = "#SUBTITLE", bossQuoteString = "#QUOTE", bossSpritePxOffset = IntVector2.Zero, topLeftTextPxOffset = IntVector2.Zero, bottomRightTextPxOffset = IntVector2.Zero, bgColor = Color.yellow }; if (BossCardTexture) { miniBossIntroDoer.portraitSlideSettings.bossArtSprite = BossCardTexture; miniBossIntroDoer.SkipBossCard = false; companion.aiActor.healthHaver.bossHealthBar = HealthHaver.BossBarType.MainBar; } else { miniBossIntroDoer.SkipBossCard = true; companion.aiActor.healthHaver.bossHealthBar = HealthHaver.BossBarType.SubbossBar; } miniBossIntroDoer.SkipFinalizeAnimation = true; miniBossIntroDoer.RegenerateCache(); //BehaviorSpeculator aIActor = EnemyDatabase.GetOrLoadByGuid("465da2bb086a4a88a803f79fe3a27677").behaviorSpeculator; //Tools.DebugInformation(aIActor); ///// companion.aiActor.healthHaver.SetHealthMaximum(600f, null, false); companion.aiActor.specRigidbody.PixelColliders.Clear(); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyCollider, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 10, ManualWidth = 16, ManualHeight = 17, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0 }); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyHitBox, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 10, ManualWidth = 16, ManualHeight = 17, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0, }); companion.aiActor.CorpseObject = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").CorpseObject; companion.aiActor.PreventBlackPhantom = false; AIAnimator aiAnimator = companion.aiAnimator; aiAnimator.IdleAnimation = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "idle", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; DirectionalAnimation anim = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.TwoWayHorizontal, AnimNames = new string[] { "flare", }, Flipped = new DirectionalAnimation.FlipType[2] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "flare", anim = anim } }; DirectionalAnimation anim2 = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.TwoWayHorizontal, AnimNames = new string[] { "brrap", }, Flipped = new DirectionalAnimation.FlipType[2] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "brrap", anim = anim2 } }; DirectionalAnimation anim3 = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, AnimNames = new string[] { "tell", }, Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "tell", anim = anim3 } }; DirectionalAnimation Hurray = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "fire1", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "fire1", anim = Hurray } }; DirectionalAnimation almostdone = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "intro", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "intro", anim = almostdone } }; DirectionalAnimation done = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "death", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "death", anim = done } }; bool flag3 = StagngerCollection == null; if (flag3) { StagngerCollection = SpriteBuilder.ConstructCollection(fuckyouprefab, "The_Stranger_Collection"); UnityEngine.Object.DontDestroyOnLoad(StagngerCollection); for (int i = 0; i < spritePaths.Length; i++) { SpriteBuilder.AddSpriteToCollection(spritePaths[i], StagngerCollection); } SpriteBuilder.AddAnimation(companion.spriteAnimator, StagngerCollection, new List <int> { 0, 1, 2, 3 }, "idle", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 3f; SpriteBuilder.AddAnimation(companion.spriteAnimator, StagngerCollection, new List <int> { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, }, "flare", tk2dSpriteAnimationClip.WrapMode.Once).fps = 12f; SpriteBuilder.AddAnimation(companion.spriteAnimator, StagngerCollection, new List <int> { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, }, "brrap", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f; SpriteBuilder.AddAnimation(companion.spriteAnimator, StagngerCollection, new List <int> { 31, 32, 33, 34, 35, 36, }, "tell", tk2dSpriteAnimationClip.WrapMode.Once).fps = 8f; SpriteBuilder.AddAnimation(companion.spriteAnimator, StagngerCollection, new List <int> { 37, 38, 39, 40, 41, 42, 43, 44, }, "fire1", tk2dSpriteAnimationClip.WrapMode.Once).fps = 5f; SpriteBuilder.AddAnimation(companion.spriteAnimator, StagngerCollection, new List <int> { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, }, "intro", tk2dSpriteAnimationClip.WrapMode.Once).fps = 5f; SpriteBuilder.AddAnimation(companion.spriteAnimator, StagngerCollection, new List <int> { 62, 63, 64, 65, 66, 67, 68, 69, 70, }, "death", tk2dSpriteAnimationClip.WrapMode.Once).fps = 6f; } var bs = fuckyouprefab.GetComponent <BehaviorSpeculator>(); BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator; bs.OverrideBehaviors = behaviorSpeculator.OverrideBehaviors; bs.OtherBehaviors = behaviorSpeculator.OtherBehaviors; shootpoint = new GameObject("attach"); shootpoint.transform.parent = companion.transform; shootpoint.transform.position = companion.sprite.WorldCenter; GameObject m_CachedGunAttachPoint = companion.transform.Find("attach").gameObject; bs.TargetBehaviors = new List <TargetBehaviorBase> { new TargetPlayerBehavior { Radius = 35f, LineOfSight = false, ObjectPermanence = true, SearchInterval = 0.25f, PauseOnTargetSwitch = false, PauseTime = 0.25f } }; bs.MovementBehaviors = new List <MovementBehaviorBase>() { new SeekTargetBehavior() { StopWhenInRange = true, CustomRange = 6, LineOfSight = true, ReturnToSpawn = true, SpawnTetherDistance = 0, PathInterval = 0.5f, SpecifyRange = false, MinActiveRange = 1, MaxActiveRange = 10 } }; bs.AttackBehaviorGroup.AttackBehaviors = new List <AttackBehaviorGroup.AttackGroupItem> { new AttackBehaviorGroup.AttackGroupItem() { Probability = 0.4f, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new BunnyMod.CustomBulletScriptSelector(typeof(SwirlScript)), LeadAmount = 0f, AttackCooldown = 1.5f, Cooldown = 5, InitialCooldown = 8f, FireAnimation = "flare", RequiresLineOfSight = false, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true, }, NickName = "FireFlare" }, new AttackBehaviorGroup.AttackGroupItem() { Probability = 1f, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new BunnyMod.CustomBulletScriptSelector(typeof(BrrapScript)), LeadAmount = 0f, AttackCooldown = 1.5f, FireAnimation = "brrap", RequiresLineOfSight = false, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true }, NickName = "BRRRRRRRRAP" }, new AttackBehaviorGroup.AttackGroupItem() { Probability = 0.25f, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new BunnyMod.CustomBulletScriptSelector(typeof(GrenadeChuck)), LeadAmount = 0f, MaxUsages = 3, Cooldown = 7f, InitialCooldown = 3f, AttackCooldown = 1.66f, TellAnimation = "tell", FireAnimation = "fire1", RequiresLineOfSight = false, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true }, NickName = "Grenade Toss." }, new AttackBehaviorGroup.AttackGroupItem() { Probability = 0.7f, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new BunnyMod.CustomBulletScriptSelector(typeof(CannonScript)), LeadAmount = 0f, AttackCooldown = 1.2f, TellAnimation = "tell", FireAnimation = "fire1", RequiresLineOfSight = false, Cooldown = 6f, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true }, NickName = "CANNON" }, new AttackBehaviorGroup.AttackGroupItem() { Probability = 1f, Behavior = new ShootBehavior { ShootPoint = m_CachedGunAttachPoint, BulletScript = new BunnyMod.CustomBulletScriptSelector(typeof(SniperScript)), LeadAmount = 0f, AttackCooldown = 2f, Cooldown = 5f, TellAnimation = "tell", FireAnimation = "fire1", RequiresLineOfSight = false, StopDuring = ShootBehavior.StopType.Attack, Uninterruptible = true }, NickName = "Sniper" }, }; bs.InstantFirstTick = behaviorSpeculator.InstantFirstTick; bs.TickInterval = behaviorSpeculator.TickInterval; bs.PostAwakenDelay = behaviorSpeculator.PostAwakenDelay; bs.RemoveDelayOnReinforce = behaviorSpeculator.RemoveDelayOnReinforce; bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection; bs.StartingFacingDirection = behaviorSpeculator.StartingFacingDirection; bs.SkipTimingDifferentiator = behaviorSpeculator.SkipTimingDifferentiator; Game.Enemies.Add("bny:the_stranger", companion.aiActor); } }
public override void Start() { try { ZipFilePath = this.Metadata.Archive; metadata = this.Metadata.Directory; metadataARCHIVE = this.Metadata.Archive; FilePath = this.Metadata.Directory + "/rooms"; path = "CakeMod.Resources.TurtSprites."; assembly = Assembly.GetExecutingAssembly(); list = new List <Texture2D>(); foreach (var item in assembly.GetManifestResourceNames()) { if (!item.EndsWith(".png")) { continue; } if (item.StartsWith(path)) { list.Add(ResourceExtractor.GetTextureFromResource(item)); } } ETGModConsole.Log(list.Count.ToString()); cosmoSpriteSheet = ResourceExtractor.GetTextureFromResource(cosmoSpriteSheetName); FloorSheet = ResourceExtractor.GetTextureFromResource(StringFloorSheet); FakePrefabHooks.Init(); ItemBuilder.Init(); EnemyTools.Init(); EnemyBuilder.Init(); Hooks.Init(); BossBuilder.Init(); SpecialBlankModificationItem.InitHooks(); ItemsMod.Strings = new AdvancedStringDB(); EasyGoopDefinitions.DefineDefaultGoops(); Cake.Init(); CircularKing.Init(); KinglyBullets.Init(); LockOfTheJammed.Init(); CakeBullets.Init(); BleakBullets.Init(); Jankan.Init(); Robohead.Init(); HatShells.Init(); DumbBullets.Init(); ControlledBullets.Init(); David.Init(); HeadCrab.Init(); GunJester.Init(); Waffle.Init(); BladeBullets.Init(); TheFool.Init(); BowlerHat.Init(); Depresso.Init(); FleshCake.Init(); BountyPoster.Init(); OneReverse.Init(); StrangeEffigy.Init(); ConcealedTreasure.Init(); Winpetster.Init(); RookGuonStone.Init(); IceOgreHead.Init(); MysteriousIdol.Init(); GlowingWomb.Init(); Honkhorn.Init(); HeartyLocket.Init(); FunnyHat.Init(); Radio.Init(); ChocolateBar.Init(); CluwneBullets.Init(); BowlerRainbowDust.Init(); StrangeArrow.Init(); testingitem.Init(); TestItem.Init(); glitchammolet.Init(); testbarrel.Init(); BlobHeart.Init(); WebAmmolet.Init(); StarNinja.Init(); PoisonBomb.Init(); RoboticHeart.Init(); ApprenticeScroll.Init(); amogus.Init(); ArmouredKey.Init(); BabyGoodChamber.Init(); SpringlockSuit.Init(); BirthdayCandle.Init(); DeadlyInsanity.Init(); Keysing.Init(); BabyGoodLovebulon.Init(); FreddyPizza.Init(); CultistHelm.Init(); Lime.Init(); CurseItemTest.Init(); GoopCurse.Init(); Jammolet.Init(); HoloProjection.Init(); Clumsy.Init(); MiniShroom.Init(); DrawnChamber.Init(); BabyGoodMagnum.Init(); SewingKit.Init(); PocketRedChest.Init(); PocketBlackChest.Init(); PocketGreenChest.Init(); PocketBlueChest.Init(); PocketBrownChest.Init(); ChestFriend.Init(); PricklyPear.Init(); StrangePotion.Init(); DevilContract.Init(); Hellfire.Init(); BloomingHeart.Init(); RatRound.Init(); FrozenFrog.Init(); BabyGoodApiary.Init(); ImmortalSmoke.Init(); UFO.Init(); VoodooHeart.Init(); GunslingKingRequest.Init(); HappyLad.Init(); Fez.Init(); NecromancerBook.Init(); PlatinumJunk.Init(); ToxicArmour.Init(); Notebook.Init(); TestJammedBullets.Init(); BulletKinBullets.Init(); LichHat.Init(); Skelebot.Init(); CosmoStatue.CosmoBuildPrefab(); LichHat2.Init(); PickleJar.Init(); Jawbreaker.Init(); Rift.Init(); SaveDisk.Init(); d20.Init(); ThirdEye.Init(); GhostlyBody.Init(); Butter.Init(); Cookie.Init(); JunkChestHandler.TheHooks(); CarpenterHandbook.Init(); Ipecac.Init(); Taurus.Init(); LifeLemon.Init(); ArmourGuonStone.Init(); JammedGunParts.Init(); CloningVat.Init(); DevilKey.Init(); TurtsMelon.Init(); SpareShell.Init(); FungalTurtle.Init(); PBullets.Init(); OddBullets.Init(); BloodTether.Init(); TableTechHolographic.Init(); NavySealCopypasta.Init(); RuneChalk.Init(); //RuneChalk2.Init(); Synergun.Add(); JackpotOfGreed.Add(); NoSpriteFound.Add(); boneblaster.Add(); KingGun.Add(); GungeonGun.Add(); Glockamole.Add(); CursedKatana.Add(); Blox.Add(); Terragun.Add(); SpongeGun.Add(); Horn.Add(); IHateGuns.Add(); gamefreeze.Add(); Bananastaff.Add(); Blackpistol.Add(); boomstick.Add(); SydneySleeper.Add(); Explodergun.Add(); Scrapgun.Add(); tinyshotgun.Add(); GunResource.Add(); Scrapper.Add(); Megaphone.Add(); MissGun.Add(); Drawn47.Add(); PirateShotgunKinGun.Add(); AnArrowkin.Add(); Timerase.Add(); Knife.Add(); firegun.Add(); Television.Add(); //Dupligun.Add(); //OneShot.Add(); MoneyDebuffEffect.Init(); money22DebuffEffect.Init(); hegemonyDebuffEffect.Init(); moneydebuff3DebuffEffect.Init(); DemonBuff.Init(); CasingBullets.Init(); UnlockHookInators.Init(); InkBooklet.Init(); Doodlelet.Init(); KoolAidMan.Init(); ammomimic.Init(); BulletBishop.Init(); FlameChamber.Init(); KillShrine.Init(); InflamedEye.Init(); FlameClone.Init(); Jesterlet.Init(); Mimekin.Init(); RoyalJesterlet.Init(); DrawnKin.Init(); HoveringGunsAdder.AddHovers(); CakeGunMods.Init(); BreachShopTool.AddBaseMetaShopTier(ETGMod.Databases.Items["Cultist Helm"].PickupObjectId, 80, ETGMod.Databases.Items["Rainbowllets"].PickupObjectId, 25, ETGMod.Databases.Items["Reloading Waffle"].PickupObjectId, 75, null); GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new SyngergraceThisMod.HatSynergy(), new SyngergraceThisMod.IceSynergy(), new SyngergraceThisMod.RainbowSynergy(), new SyngergraceThisMod.ChaosSynergy(), new SyngergraceThisMod.VoodooSynergy(), //new SyngergraceThisMod.OldSynergy(), new SyngergraceThisMod.LoveSynergy(), new SyngergraceThisMod.SoundSynergy(), }).ToArray <AdvancedSynergyEntry>(); //TinyBullet.Add(); //OldManBreach.Add(); //ArtistShrine.Add(); Chester.Add(); //LesGo.Add(); StaticReferences.Init(); StaticReferences2.Init(); DungeonHandlerTrueForm.Init(); ShrineFakePrefabHooks.Init(); ShrineFactory.Init(); OldShrineFactory.Init(); SaveAPIManager.Setup("cak"); ShrineFactory.PlaceBreachShrines(); ETGModConsole.Log("King's Items is up and running."); SyngergraceThisMod.Synergies(); SynergyFormInitialiser.AddSynergyForms(); ModPrefabs.InitCustomPrefabs(); ModRoomPrefabs.InitCustomRooms(); FloorNameDungeonFlows.InitDungeonFlows(); DoodleDungeon.InitCustomDungeon(); ETGModConsole.Commands.AddUnit("daflow", (args) => { DungeonHandlerTrueForm.debugFlow = !DungeonHandlerTrueForm.debugFlow; string status = DungeonHandlerTrueForm.debugFlow ? "enabled" : "disabled"; string color = DungeonHandlerTrueForm.debugFlow ? "00FF00" : "FF0000"; ETGModConsole.Log($"da flow is {status}", false); }); List <string> SpareVFXPaths = new List <string>() { "CakeMod/Resources/BulletBishop/incense_teleport_poof_001", "CakeMod/Resources/BulletBishop/incense_teleport_poof_002", "CakeMod/Resources/BulletBishop/incense_teleport_poof_003", "CakeMod/Resources/BulletBishop/incense_teleport_poof_004", "CakeMod/Resources/BulletBishop/incense_teleport_poof_005", "CakeMod/Resources/BulletBishop/incense_teleport_poof_006", "CakeMod/Resources/BulletBishop/incense_teleport_poof_007", "CakeMod/Resources/BulletBishop/incense_teleport_poof_008", }; GameObject spareVFX = VFXLibrary.CreateVFX("IncensePoof", SpareVFXPaths, 1, new IntVector2(10, 1), tk2dBaseSprite.Anchor.LowerCenter, true, 0.18f, 0, null); EasyVFXDatabase.IncenseVFX = spareVFX; List <string> SpareVFXPaths3 = new List <string>() { "CakeMod/Resources/FlameChamber/flamepoof_001", "CakeMod/Resources/FlameChamber/flamepoof_002", "CakeMod/Resources/FlameChamber/flamepoof_003", "CakeMod/Resources/FlameChamber/flamepoof_004", "CakeMod/Resources/FlameChamber/flamepoof_005", }; GameObject spareVFX3 = VFXLibrary.CreateVFX("FlamePoof", SpareVFXPaths3, 7, new IntVector2(10, 1), tk2dBaseSprite.Anchor.LowerCenter, true, 0.18f, 0, null); EasyVFXDatabase.FlameVFX = spareVFX3; List <string> SpareVFXPaths2 = new List <string>() { "CakeMod/Resources/BloodyLightning/blood1", "CakeMod/Resources/BloodyLightning/blood2", "CakeMod/Resources/BloodyLightning/blood3", "CakeMod/Resources/BloodyLightning/blood4", "CakeMod/Resources/BloodyLightning/blood5", "CakeMod/Resources/BloodyLightning/blood6", "CakeMod/Resources/BloodyLightning/blood7", "CakeMod/Resources/BloodyLightning/blood8", "CakeMod/Resources/BloodyLightning/blood9", "CakeMod/Resources/BloodyLightning/blood10", }; GameObject spareVFX2 = VFXLibrary.CreateVFX("String", SpareVFXPaths2, 16, new IntVector2(10, 1), tk2dBaseSprite.Anchor.LowerCenter, true, 0.18f, 0, null); EasyVFXDatabase.StringVFX = spareVFX2; //DoodleDungeon.InitCustomDungeon(); } catch (Exception e) { ETGModConsole.Log(e.ToString(), false); } }
public static void BuildPrefab() { // source = EnemyDatabase.GetOrLoadByGuid("c50a862d19fc4d30baeba54795e8cb93"); bool flag = prefab != null || BossBuilder.Dictionary.ContainsKey(guid); bool flag2 = flag; if (!flag2) { prefab = BossBuilder.BuildPrefab("Kill Shrine", guid, spritePaths[0], new IntVector2(0, 0), new IntVector2(8, 9), false, true); var companion = prefab.AddComponent <EnemyBehavior23>(); companion.aiActor.knockbackDoer.weight = 200; companion.aiActor.MovementSpeed = 6f; companion.aiActor.healthHaver.PreventAllDamage = false; companion.aiActor.CollisionDamage = 1f; companion.aiActor.HasShadow = true; companion.aiActor.IgnoreForRoomClear = false; companion.aiActor.aiAnimator.HitReactChance = 0.05f; companion.aiActor.specRigidbody.CollideWithOthers = true; companion.aiActor.specRigidbody.CollideWithTileMap = true; companion.aiActor.PreventFallingInPitsEver = true; companion.aiActor.healthHaver.ForceSetCurrentHealth(500f); companion.aiActor.healthHaver.SetHealthMaximum(500f); companion.aiActor.CollisionKnockbackStrength = 5f; companion.aiActor.procedurallyOutlined = true; companion.aiActor.CanTargetPlayers = true; ItemsMod.Strings.Enemies.Set("#KILLSHRINE", "Sepulchergiest"); ItemsMod.Strings.Enemies.Set("#????", "???"); ItemsMod.Strings.Enemies.Set("#KILLSHRINESUBTITLE", "KILL SHRINE"); ItemsMod.Strings.Enemies.Set("#KILLSHRINEQUOTE", "THE SHRINING"); companion.aiActor.healthHaver.overrideBossName = "#KILLSHRINE"; companion.aiActor.OverrideDisplayName = "#KILLSHRINE"; companion.aiActor.ActorName = "#KILLSHRINE"; companion.aiActor.name = "#KILLSHRINE"; companion.aiActor.SetIsFlying(true, "Flying Enemy", true, true); prefab.name = companion.aiActor.OverrideDisplayName; GenericIntroDoer miniBossIntroDoer = prefab.AddComponent <GenericIntroDoer>(); miniBossIntroDoer.triggerType = GenericIntroDoer.TriggerType.PlayerEnteredRoom; miniBossIntroDoer.initialDelay = 0.15f; miniBossIntroDoer.cameraMoveSpeed = 14; miniBossIntroDoer.specifyIntroAiAnimator = null; miniBossIntroDoer.BossMusicEvent = "Play_MUS_Boss_Theme_Beholster"; companion.aiActor.ShadowObject = EnemyDatabase.GetOrLoadByGuid("c00390483f394a849c36143eb878998f").ShadowObject; companion.aiActor.HasShadow = true; miniBossIntroDoer.PreventBossMusic = false; miniBossIntroDoer.InvisibleBeforeIntroAnim = false; miniBossIntroDoer.preIntroAnim = string.Empty; miniBossIntroDoer.preIntroDirectionalAnim = string.Empty; miniBossIntroDoer.introAnim = "intro"; miniBossIntroDoer.introDirectionalAnim = string.Empty; miniBossIntroDoer.continueAnimDuringOutro = false; miniBossIntroDoer.cameraFocus = null; miniBossIntroDoer.roomPositionCameraFocus = Vector2.zero; miniBossIntroDoer.restrictPlayerMotionToRoom = false; miniBossIntroDoer.fusebombLock = false; miniBossIntroDoer.AdditionalHeightOffset = 0; miniBossIntroDoer.portraitSlideSettings = new PortraitSlideSettings() { bossNameString = "#KILLSHRINE", bossSubtitleString = "#KILLSHRINESUBTITLE", bossQuoteString = "#KILLSHRINEQUOTE", bossSpritePxOffset = IntVector2.Zero, topLeftTextPxOffset = IntVector2.Zero, bottomRightTextPxOffset = IntVector2.Zero, bgColor = Color.cyan }; miniBossIntroDoer.SkipBossCard = false; miniBossIntroDoer.portraitSlideSettings.bossArtSprite = BossCardTexture; companion.aiActor.healthHaver.bossHealthBar = HealthHaver.BossBarType.MainBar; miniBossIntroDoer.SkipFinalizeAnimation = true; miniBossIntroDoer.RegenerateCache(); //BehaviorSpeculator aIActor = EnemyDatabase.GetOrLoadByGuid("465da2bb086a4a88a803f79fe3a27677").behaviorSpeculator; //Tools.DebugInformation(aIActor); ///// companion.aiActor.healthHaver.SetHealthMaximum(500f, null, false); companion.aiActor.specRigidbody.PixelColliders.Clear(); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyCollider, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 15, ManualOffsetY = 10, ManualWidth = 60, ManualHeight = 80, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0 }); companion.aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyHitBox, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 15, ManualOffsetY = 10, ManualWidth = 60, ManualHeight = 80, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0, }); companion.aiActor.CorpseObject = EnemyDatabase.GetOrLoadByGuid("c0ff3744760c4a2eb0bb52ac162056e6").CorpseObject; companion.aiActor.PreventBlackPhantom = false; AIAnimator aiAnimator = companion.aiAnimator; aiAnimator.IdleAnimation = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "idle", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; DirectionalAnimation almostdone = new DirectionalAnimation { Type = DirectionalAnimation.DirectionType.Single, Prefix = "intro", AnimNames = new string[1], Flipped = new DirectionalAnimation.FlipType[1] }; aiAnimator.OtherAnimations = new List <AIAnimator.NamedDirectionalAnimation> { new AIAnimator.NamedDirectionalAnimation { name = "intro", anim = almostdone } }; bool flag3 = BishopCollection == null; if (flag3) { BishopCollection = SpriteBuilder.ConstructCollection(prefab, "FlameChamber_Collection"); UnityEngine.Object.DontDestroyOnLoad(BishopCollection); for (int i = 0; i < spritePaths.Length; i++) { SpriteBuilder.AddSpriteToCollection(spritePaths[i], BishopCollection); } SpriteBuilder.AddAnimation(companion.spriteAnimator, BishopCollection, new List <int> { 0, 1 }, "idle", tk2dSpriteAnimationClip.WrapMode.Loop).fps = 7f; SpriteBuilder.AddAnimation(companion.spriteAnimator, BishopCollection, new List <int> { 2, 3, 4, 5, 6, 7, 8 }, "intro", tk2dSpriteAnimationClip.WrapMode.Once).fps = 7f; } var bs = prefab.GetComponent <BehaviorSpeculator>(); BehaviorSpeculator behaviorSpeculator = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator; bs.OverrideBehaviors = behaviorSpeculator.OverrideBehaviors; bs.OtherBehaviors = behaviorSpeculator.OtherBehaviors; shootpoint = new GameObject("attach"); shootpoint.transform.parent = companion.transform; shootpoint.transform.position = companion.sprite.WorldCenter; GameObject m_CachedGunAttachPoint = companion.transform.Find("attach").gameObject; bs.TargetBehaviors = new List <TargetBehaviorBase> { new TargetPlayerBehavior { Radius = 35f, LineOfSight = false, ObjectPermanence = true, SearchInterval = 0.25f, PauseOnTargetSwitch = false, PauseTime = 0.25f } }; float[] angles = { 45, 135, 225, 135 }; bs.MovementBehaviors = new List <MovementBehaviorBase> { }; bs.AttackBehaviorGroup.AttackBehaviors = new List <AttackBehaviorGroup.AttackGroupItem> { }; bs.InstantFirstTick = behaviorSpeculator.InstantFirstTick; bs.TickInterval = behaviorSpeculator.TickInterval; bs.PostAwakenDelay = behaviorSpeculator.PostAwakenDelay; bs.RemoveDelayOnReinforce = behaviorSpeculator.RemoveDelayOnReinforce; bs.OverrideStartingFacingDirection = behaviorSpeculator.OverrideStartingFacingDirection; bs.StartingFacingDirection = behaviorSpeculator.StartingFacingDirection; bs.SkipTimingDifferentiator = behaviorSpeculator.SkipTimingDifferentiator; Game.Enemies.Add("cak:killshrine", companion.aiActor); } }