Example #1
0
        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);
            }
        }
Example #2
0
        // 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);
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }