protected override void Gen_PerRoom() { CPRequired = false; ////// JumpPads ////// #region JumpPad var jumppad = new JumpPad(0x530); //4000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 3000, Angle = new QuaternionAngle(-15, -45, 0) }); // short left jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 5300, Angle = new QuaternionAngle(3, -50, 0) }); // to right wall jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(2, -45, 0) }.SetRarity(0.5)); // skip 1 jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 70000, Angle = new QuaternionAngle(-2, -45, 0) }.SetRarity(0.3)); // teleport worldObjects.Add(jumppad); jumppad = new JumpPad(0x68); //4200 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(15, 0, 0) }); // to the 3 jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 5300, Angle = new QuaternionAngle(90, -70, 0) }); // to right wall jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(2, -45, 0) }.SetRarity(0.25)); // works only with dash worldObjects.Add(jumppad); jumppad = new JumpPad(0x508); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 66000, Angle = new QuaternionAngle(-1, -20, 0) }.SetRarity(0.25)); // i believe i can fly jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 22000, Angle = new QuaternionAngle(-8, -25, 0) }.SetRarity(0.5)); // BALLS jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(-60, -45, 0) }); // jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 12000, Angle = new QuaternionAngle(-30, -45, 0) }); // fast worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(-5650, 24330, -3380), new Vector3f(-3326, -22780, 420), new Vector3f(-7260, 31000, -3350), new Angle(-0.43f, 0.9f))); jumppad = new JumpPad(0x500); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(0, -92, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 15000, Angle = new QuaternionAngle(0, -92, 0) }); // troll worldObjects.Add(jumppad); jumppad = new JumpPad(0x90); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10000, Angle = new QuaternionAngle(-5, -35, 0) }); // to the next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 17000, Angle = new QuaternionAngle(-3, -35, 0) }.SetRarity(0.35)); // balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(-10, -85, 0) }); // upward worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(15930, 11630, -2340), new Vector3f(20660, 22620, 5300), new Vector3f(17570, 15760, 1200), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0x528); //6000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 11000, Angle = new QuaternionAngle(0, -45, 0) }); // to the next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 18500, Angle = new QuaternionAngle(0, -25, 0) }.SetRarity(0.5)); // skip half balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(0, -108, 0) }); // vertical worldObjects.Add(jumppad); jumppad = new JumpPad(0x520); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 12000, Angle = new QuaternionAngle(0, -35, 0) }.SetRarity(0.5)); // skip half balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 18000, Angle = new QuaternionAngle(0, -35, 0) }.SetRarity(0.5)); // almost balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 8500, Angle = new QuaternionAngle(0, -85, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 20000, Angle = new QuaternionAngle(7, -55, 0) }.SetRarity(0.25)); // skip balls worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(48840, 11170, 6050), new Vector3f(50875, 19764, 10680), new Vector3f(52500, 15700, 8000), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0x518); //5000 balls left jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(0, -45, 0) }); // skip next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 15000, Angle = new QuaternionAngle(28, -28, 0) }.SetRarity(0.35)); // skip 4 jumps jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 4700, Angle = new QuaternionAngle(90, -35, 0) }); // to the right jump worldObjects.Add(jumppad); jumppad = new JumpPad(0x510); //5000 balls right jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7500, Angle = new QuaternionAngle(-45, -45, 0) }); // skip next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6666, Angle = new QuaternionAngle(-18, -35, 0) }); // skip cp jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(5, -30, 0) }.SetRarity(0.5)); // to the right jump worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(86900, 10200, 8075), new Vector3f(105150, 31520, 17700), new Vector3f(86700, 15350, 9700), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0x558); //6000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 46850, Angle = new QuaternionAngle(3.19f, -25.5f, 0) }.SetRarity(0.25)); // i believe i can fly 2 jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 9200, Angle = new QuaternionAngle(3.5f, -40, 0) }); // skip platforms jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 66666, Angle = new QuaternionAngle(37, -25, 0) }); // reaction jump worldObjects.Add(jumppad); jumppad = new JumpPad(0x550); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(119, -42, 0) }); // skip 1 jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10000, Angle = new QuaternionAngle(-180, -80, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 66666, Angle = new QuaternionAngle(100, -25, 0) }); // reaction jump worldObjects.Add(jumppad); jumppad = new JumpPad(0x98); //6000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 5750, Angle = new QuaternionAngle(45, -45, 0) }); // skip 1 jump, short jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 100000, Angle = new QuaternionAngle(89, -23, 0) }.SetRarity(0.5)); // fast bounce jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 12500, Angle = new QuaternionAngle(15, -27, 0) }); // almost skip platforms worldObjects.Add(jumppad); jumppad = new JumpPad(0x548); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(0, -25, 0) }); // skip half platforms jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 8000, Angle = new QuaternionAngle(0, -88, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 35000, Angle = new QuaternionAngle(0, -7, 0) }.SetRarity(0.5)); // straight into balls worldObjects.Add(jumppad); jumppad = new JumpPad(0x560); //5800 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(0, -75, 0) }); // short ceiling bounce jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 80000, Angle = new QuaternionAngle(0, -25, 0) }); // bounce and fall jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 13000, Angle = new QuaternionAngle(0, -29, 0) }); // straight into balls worldObjects.Add(jumppad); jumppad = new JumpPad(0x538); //4200 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(0, -75, 0) }); // short ceiling bounce jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 220000, Angle = new QuaternionAngle(0, -25, 0) }.SetRarity(0.35)); // reacion grapple jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 15000, Angle = new QuaternionAngle(0, -25, 0) }); // straight into balls worldObjects.Add(jumppad); #endregion }
protected override void Gen_PerRoom() { ////// Green Platforms ////// platforms.Add(new GreenPlatform(0x9E0, 0xE88)); platforms.Add(new GreenPlatform(0x9F8, 0xDB0)); platforms.Add(new GreenPlatform(0xA00, 0xD68)); platforms.Add(new GreenPlatform(0xA08, 0xD20)); platforms.Add(new GreenPlatform(0xA30, 0xBB8)); platforms.Add(new GreenPlatform(0xA20, 0xC48)); platforms.Add(new GreenPlatform(0xA18, 0xC90)); platforms.Add(new GreenPlatform(0xA28, 0xC00)); platforms.Add(new GreenPlatform(0xA10, 0xCD8)); platforms.Add(new GreenPlatform(0x9F0, 0xDF8)); platforms.Add(new GreenPlatform(0x9E8, 0xE40)); platforms.Add(new GreenPlatform(0x9D8, 0xED0)); platforms.Add(new GreenPlatform(0x9D0, 0xF18)); platforms.Add(new GreenPlatform(0x9C8, 0xF60)); platforms.Add(new GreenPlatform(0x9C0, 0xFA8)); platforms.Add(new GreenPlatform(0x9B8, 0xFF0)); platforms.Add(new GreenPlatform(0x9B0, 0x1038)); platforms.Add(new GreenPlatform(0x9A8, 0x1080)); ////// Platforms layouts ////// #region GreenPlatforms //// going around right, splitting in middle platformLayouts.Add(new SpawnData(new Vector3f(50232.93f, -10371.06f, 2988.9f), new Angle(1.00f, 0.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50746.19f, -10623.07f, 3123.783f), new Angle(-0.45f, 0.89f))); platformLayouts.Add(new SpawnData(new Vector3f(51239.04f, -11337.36f, 3209.209f), new Angle(-0.72f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(51176.75f, -12164.8f, 3406.602f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(51293.42f, -12759.18f, 3573.017f), new Angle(-0.48f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(51762.2f, -13277.17f, 3737.203f), new Angle(-0.28f, 0.96f))); platformLayouts.Add(new SpawnData(new Vector3f(52215.43f, -13650.36f, 3941.672f), new Angle(-0.65f, 0.76f))); platformLayouts.Add(new SpawnData(new Vector3f(52200.01f, -14317.66f, 4140.634f), new Angle(-0.72f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(52099.57f, -14987.48f, 4318.261f), new Angle(-0.76f, 0.65f))); platformLayouts.Add(new SpawnData(new Vector3f(51784.11f, -15663.53f, 4455.74f), new Angle(-0.88f, 0.48f))); platformLayouts.Add(new SpawnData(new Vector3f(51317.89f, -16294.11f, 4584.072f), new Angle(-0.89f, 0.45f))); platformLayouts.Add(new SpawnData(new Vector3f(50883.04f, -16784.74f, 4716.091f), new Angle(-0.85f, 0.52f))); platformLayouts.Add(new SpawnData(new Vector3f(50659.76f, -17336.82f, 4764.241f), new Angle(-0.76f, 0.65f))); platformLayouts.Add(new SpawnData(new Vector3f(50223.77f, -18020.39f, 4812.391f), new Angle(-0.82f, 0.57f))); platformLayouts.Add(new SpawnData(new Vector3f(50428.26f, -12785.69f, 3529.526f), new Angle(-1.00f, 0.02f))); platformLayouts.Add(new SpawnData(new Vector3f(49754.46f, -13154.93f, 3900.068f), new Angle(-0.96f, 0.28f))); platformLayouts.Add(new SpawnData(new Vector3f(49187.71f, -13739.8f, 4251.918f), new Angle(-0.91f, 0.42f))); platformLayouts.Add(new SpawnData(new Vector3f(49155.66f, -14196.82f, 4731.175f), new Angle(-0.51f, 0.86f))); //// splits at start, 2 paths around platformLayouts.Add(new SpawnData(new Vector3f(49928, -10312, 3170), new Angle(-0.26f, 0.97f))); platformLayouts.Add(new SpawnData(new Vector3f(50252, -10700, 3345), new Angle(-0.59f, 0.81f))); platformLayouts.Add(new SpawnData(new Vector3f(50486, -11389, 3660), new Angle(-0.61f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(50709, -12114, 3992), new Angle(-0.59f, 0.80f))); platformLayouts.Add(new SpawnData(new Vector3f(50921, -12905, 4346), new Angle(-0.62f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(51068, -13386, 4590), new Angle(-0.57f, 0.82f))); platformLayouts.Add(new SpawnData(new Vector3f(51005, -14147, 4745), new Angle(-0.79f, 0.62f))); platformLayouts.Add(new SpawnData(new Vector3f(50599, -14875, 4823), new Angle(-0.86f, 0.50f))); platformLayouts.Add(new SpawnData(new Vector3f(50122, -15624, 4883), new Angle(-0.89f, 0.45f))); platformLayouts.Add(new SpawnData(new Vector3f(48998, -10505, 3185), new Angle(-0.94f, 0.35f))); platformLayouts.Add(new SpawnData(new Vector3f(48649, -10795, 3203), new Angle(0.35f, 0.94f))); platformLayouts.Add(new SpawnData(new Vector3f(48388, -11375, 3390), new Angle(-0.74f, 0.67f))); platformLayouts.Add(new SpawnData(new Vector3f(48372, -12026, 3607), new Angle(-0.67f, 0.74f))); platformLayouts.Add(new SpawnData(new Vector3f(48418, -12612, 3793), new Angle(-0.68f, 0.74f))); platformLayouts.Add(new SpawnData(new Vector3f(48496, -13244, 4021), new Angle(-0.65f, 0.76f))); platformLayouts.Add(new SpawnData(new Vector3f(48564, -13815, 4264), new Angle(-0.62f, 0.78f))); platformLayouts.Add(new SpawnData(new Vector3f(48692, -14364, 4559), new Angle(-0.29f, 0.96f))); platformLayouts.Add(new SpawnData(new Vector3f(49049, -14572, 4826), new Angle(-0.25f, 0.97f))); //// stair-like on main platform platformLayouts.Add(new SpawnData(new Vector3f(49656f, -10212f, 3430f), new Angle(1.00f, 0.01f))); platformLayouts.Add(new SpawnData(new Vector3f(49294f, -10239f, 3790f), new Angle(0.68f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(49335f, -9567f, 3732f), new Angle(0.70f, 0.72f))); platformLayouts.Add(new SpawnData(new Vector3f(49368f, -8924f, 3829f), new Angle(0.32f, 0.95f))); platformLayouts.Add(new SpawnData(new Vector3f(49854f, -8735f, 4073f), new Angle(0.06f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50363f, -8889f, 4317f), new Angle(-0.34f, 0.94f))); platformLayouts.Add(new SpawnData(new Vector3f(50665f, -9431f, 4532f), new Angle(-0.66f, 0.75f))); platformLayouts.Add(new SpawnData(new Vector3f(50815f, -10256f, 4561f), new Angle(-0.64f, 0.77f))); platformLayouts.Add(new SpawnData(new Vector3f(50789f, -11138f, 4572f), new Angle(-0.80f, 0.60f))); platformLayouts.Add(new SpawnData(new Vector3f(50577f, -11889f, 4677f), new Angle(-0.80f, 0.60f))); platformLayouts.Add(new SpawnData(new Vector3f(50588f, -12653f, 4775f), new Angle(-0.70f, 0.72f))); platformLayouts.Add(new SpawnData(new Vector3f(50730f, -13350f, 4952f), new Angle(-0.62f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(50693f, -14090f, 5075f), new Angle(-0.83f, 0.55f))); platformLayouts.Add(new SpawnData(new Vector3f(50364f, -14597f, 4911f), new Angle(-0.88f, 0.48f))); // hide rest platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); //// early stairs, around left side platformLayouts.Add(new SpawnData(new Vector3f(49422f, -8528f, 3183f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(49422f, -8894f, 3388f), new Angle(-0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49405f, -9388f, 3622f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(49411f, -9903f, 3865f), new Angle(-0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49411f, -10469f, 4102f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49411f, -10982f, 4353f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49350f, -11762f, 4421f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49346f, -12423f, 4632f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(48628f, -12405f, 4777f), new Angle(0.02f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(47640f, -12444f, 4825f), new Angle(0.00f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(47637f, -13124f, 4873f), new Angle(0.00f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(47666f, -13921f, 4921f), new Angle(0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(47668f, -14622f, 4969f), new Angle(0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(47692f, -15471f, 5017f), new Angle(0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(48138f, -15964f, 5065f), new Angle(-0.36f, 0.93f))); platformLayouts.Add(new SpawnData(new Vector3f(48829f, -16554f, 4893f), new Angle(-0.34f, 0.94f))); platformLayouts.Add(new SpawnData(new Vector3f(49241f, -16973f, 4857f), new Angle(-0.39f, 0.92f))); platformLayouts.Add(new SpawnData(new Vector3f(49531f, -17340f, 4829f), new Angle(-0.60f, 0.80f))); //// Inverted spiral platformLayouts.Add(new SpawnData(new Vector3f(49701f, -11128f, 3153f), new Angle(-0.42f, 0.91f))); platformLayouts.Add(new SpawnData(new Vector3f(50386f, -11533f, 3242f), new Angle(-0.18f, 0.98f))); platformLayouts.Add(new SpawnData(new Vector3f(51231f, -11638f, 3295f), new Angle(0.09f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51873f, -11280f, 3376f), new Angle(0.30f, 0.95f))); platformLayouts.Add(new SpawnData(new Vector3f(52293f, -10676f, 3505f), new Angle(0.56f, 0.83f))); platformLayouts.Add(new SpawnData(new Vector3f(52207f, -9967f, 3622f), new Angle(0.84f, 0.55f))); platformLayouts.Add(new SpawnData(new Vector3f(51557f, -9450f, 3694f), new Angle(0.98f, 0.21f))); platformLayouts.Add(new SpawnData(new Vector3f(50811f, -9420f, 3771f), new Angle(-0.99f, 0.13f))); platformLayouts.Add(new SpawnData(new Vector3f(50087f, -9632f, 3868f), new Angle(-0.99f, 0.17f))); platformLayouts.Add(new SpawnData(new Vector3f(49424f, -10042f, 3995f), new Angle(-0.94f, 0.33f))); platformLayouts.Add(new SpawnData(new Vector3f(48780f, -10568f, 4038f), new Angle(-0.92f, 0.39f))); platformLayouts.Add(new SpawnData(new Vector3f(48397f, -11260f, 4129f), new Angle(-0.81f, 0.59f))); platformLayouts.Add(new SpawnData(new Vector3f(48361f, -11940f, 4291f), new Angle(-0.68f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(48172f, -12515f, 4507f), new Angle(-0.84f, 0.54f))); platformLayouts.Add(new SpawnData(new Vector3f(47852f, -13104f, 4717f), new Angle(-0.79f, 0.62f))); platformLayouts.Add(new SpawnData(new Vector3f(48050f, -13880f, 5012f), new Angle(-0.59f, 0.80f))); platformLayouts.Add(new SpawnData(new Vector3f(48421f, -14681f, 4868f), new Angle(-0.42f, 0.91f))); platformLayouts.Add(new SpawnData(new Vector3f(49052f, -15132f, 4823f), new Angle(-0.22f, 0.97f))); //// high step stairs platformLayouts.Add(new SpawnData(new Vector3f(49863f, -10249f, 3185f), new Angle(-0.01f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50313f, -10302f, 3641f), new Angle(-0.04f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50613f, -10331f, 4008f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51077f, -10372f, 4508f), new Angle(0.00f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51078f, -10772f, 4969f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(51072f, -11467f, 4203f), new Angle(-0.69f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(51206f, -12384f, 4507f), new Angle(-0.74f, 0.67f))); platformLayouts.Add(new SpawnData(new Vector3f(51601f, -13060f, 4675f), new Angle(-0.49f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(51767f, -13788f, 4824f), new Angle(-0.79f, 0.61f))); platformLayouts.Add(new SpawnData(new Vector3f(51307f, -14580f, 4906f), new Angle(-0.90f, 0.43f))); platformLayouts.Add(new SpawnData(new Vector3f(50667f, -15140f, 4863f), new Angle(-0.95f, 0.32f))); platformLayouts.Add(new SpawnData(new Vector3f(50198f, -15678f, 4783f), new Angle(-0.88f, 0.47f))); platformLayouts.Add(new SpawnData(new Vector3f(51720f, -10804f, 5462f), new Angle(-0.01f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51666f, -12065f, 5532f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(51501f, -12952f, 5554f), new Angle(-0.76f, 0.65f))); platformLayouts.Add(new SpawnData(new Vector3f(51309f, -13913f, 5376f), new Angle(-0.79f, 0.62f))); // hide platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); //// down drop platformLayouts.Add(new SpawnData(new Vector3f(49582f, -10629f, 3170f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49576f, -10914f, 3218f), new Angle(-0.72f, 0.69f))); platformLayouts.Add(new SpawnData(new Vector3f(49562f, -11194f, 2615f), new Angle(0.68f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(49589f, -11915f, 2283f), new Angle(0.72f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(49300f, -12588f, 2331f), new Angle(0.50f, 0.86f))); platformLayouts.Add(new SpawnData(new Vector3f(48933f, -13232f, 2380f), new Angle(0.50f, 0.86f))); platformLayouts.Add(new SpawnData(new Vector3f(48533f, -13917f, 2674f), new Angle(0.50f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(48192f, -14490f, 2877f), new Angle(0.49f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(48006f, -15053f, 3024f), new Angle(0.62f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(47854f, -15695f, 3302f), new Angle(0.62f, 0.78f))); platformLayouts.Add(new SpawnData(new Vector3f(47739f, -16225f, 3643f), new Angle(0.67f, 0.74f))); platformLayouts.Add(new SpawnData(new Vector3f(47716f, -16740f, 3866f), new Angle(0.69f, 0.72f))); platformLayouts.Add(new SpawnData(new Vector3f(47880f, -17336f, 4067f), new Angle(0.79f, 0.61f))); platformLayouts.Add(new SpawnData(new Vector3f(48062f, -17837f, 4349f), new Angle(0.84f, 0.55f))); platformLayouts.Add(new SpawnData(new Vector3f(48393f, -18410f, 4501f), new Angle(0.88f, 0.47f))); platformLayouts.Add(new SpawnData(new Vector3f(48788f, -18990f, 4681f), new Angle(0.90f, 0.44f))); platformLayouts.Add(new SpawnData(new Vector3f(49206f, -19520f, 4820f), new Angle(-0.46f, 0.89f))); platformLayouts.Add(new SpawnData(new Vector3f(49448f, -19729f, 4828f), new Angle(-0.58f, 0.82f))); //// left, to middle and around the right platformLayouts.Add(new SpawnData(new Vector3f(48944f, -10468f, 3179f), new Angle(-0.97f, 0.23f))); platformLayouts.Add(new SpawnData(new Vector3f(48584f, -10659f, 3344f), new Angle(-0.95f, 0.30f))); platformLayouts.Add(new SpawnData(new Vector3f(48016f, -11026f, 3478f), new Angle(-0.95f, 0.31f))); platformLayouts.Add(new SpawnData(new Vector3f(47618f, -11548f, 3628f), new Angle(-0.81f, 0.59f))); platformLayouts.Add(new SpawnData(new Vector3f(47525f, -12080f, 3718f), new Angle(0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(48329f, -12072f, 3755f), new Angle(-1.00f, 0.00f))); platformLayouts.Add(new SpawnData(new Vector3f(49029f, -12035f, 3794f), new Angle(-1.00f, 0.00f))); platformLayouts.Add(new SpawnData(new Vector3f(49699f, -12038f, 3832f), new Angle(1.00f, 0.01f))); platformLayouts.Add(new SpawnData(new Vector3f(50417f, -12055f, 3850f), new Angle(1.00f, 0.02f))); platformLayouts.Add(new SpawnData(new Vector3f(51136f, -12137f, 3819f), new Angle(1.00f, 0.03f))); platformLayouts.Add(new SpawnData(new Vector3f(51832f, -12443f, 3965f), new Angle(0.96f, 0.29f))); platformLayouts.Add(new SpawnData(new Vector3f(52026f, -12993f, 4105f), new Angle(0.77f, 0.63f))); platformLayouts.Add(new SpawnData(new Vector3f(52078f, -13592f, 4237f), new Angle(0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(51743f, -14260f, 4361f), new Angle(0.54f, 0.84f))); platformLayouts.Add(new SpawnData(new Vector3f(51316f, -14702f, 4477f), new Angle(0.40f, 0.92f))); platformLayouts.Add(new SpawnData(new Vector3f(50878f, -15056f, 4650f), new Angle(0.31f, 0.95f))); platformLayouts.Add(new SpawnData(new Vector3f(50412f, -15582f, 4868f), new Angle(-0.93f, 0.37f))); platformLayouts.Add(new SpawnData(new Vector3f(50042f, -15943f, 4774f), new Angle(-0.92f, 0.38f))); #endregion // Fix green platform rotations by converting it to quaternion rotation for (int i = 0; i < platformLayouts.Count; i++) { platformLayouts[i].angle = ToQuaternion(platformLayouts[i].angle); } ////// keys ////// #region Keys Rooms = new List <RoomLayout>(); RoomLayout layout; List <WorldObject> keys = new List <WorldObject>(); keys.Add(new CVKey(0xA98, 0xCF8, 0x318)); keys.Add(new CVKey(0xAB0, 0xCD8, 0x408)); keys.Add(new CVKey(0xAA8, 0xCB8, 0x510)); keys.Add(new CVKey(0xAA0, 0xCA8, 0x570)); keys.Add(new CVKey(0xA90, 0xC88, 0x5D0)); // First Room layout = new RoomLayout(keys[0]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45823, -37582, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53754, -37374, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53697, -34409, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49089, -33463, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(47570, -39136, 8621))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(52143, -38772, 8643))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49757, -42331, 8593))); Rooms.Add(layout); // Second Room - 2 keys layout = new RoomLayout(keys[1], keys[2]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(47537, -34205, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45532, -35307, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45611, -37278, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45647, -38806, 11337))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45537, -40240, 11470))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49587, -36790, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53261, -38783, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53310, -41370, 12917))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53327, -37553, 12878))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53371, -35344, 12826))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(51016, -34844, 12878))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(51075, -33337, 12878))); Rooms.Add(layout); // Third Room - architect/mara scene layout = new RoomLayout(keys[3]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(54034, -33631, 14314), new Vector3f(45390, -36957, 14303))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(50890, -42501, 14314), new Vector3f(54199, -37696, 14303))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45326, -37232, 14303), new Vector3f(48101, -42259, 14314))); Rooms.Add(layout); // 4'th Room, long platform layout = new RoomLayout(keys[4]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(52483, -39739, 17498), new Vector3f(51113, -38894, 17498))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49968, -38949, 17498), new Vector3f(45421, -39878, 17498))); Rooms.Add(layout); #endregion ////// JumpPads ////// #region JumpPad NonPlaceableObject jumppad = new JumpPad(0xB78); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(90.0f, -60.0f, 0.0f), Speed = 6000 }); //backwards 1 platfrom jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(120.0f, -60.0f, 0.0f), Speed = 8000 }.SetRarity(0.5)); //backwards 2 platform jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -92.0f, 0.0f), Speed = 8500 }.SetRarity(0.35)); //3 platfrom jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -92.0f, 0.0f), Speed = 9500 }.SetRarity(0.2)); //to the last jumppad jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -95.0f, 0.0f), Speed = 14000 }.SetRarity(0.2)); //to the EOL worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(48575, -35900, 8230), new Vector3f(50500, -34860, 9450), new Vector3f(49740, -40875, 8650), new Angle(0.71f, 0.71f))); jumppad = new JumpPad(0xB70); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(90.0f, -50.0f, 0.0f), Speed = 6000 }); //front without cp jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-11.0f, -40.0f, 0.0f), Speed = 8200 }); //3 green platforms jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-135.0f, -40.0f, 0.0f), Speed = 6500 }); //left side //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -37.0f, 0.0f), Speed = 8000 }.SetRarity(0.2));//for hardcore worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(45000, -32900, 11000), new Vector3f(46350, -33875, 12000), new Vector3f(49655, -34680, 11550), new Angle(-0.71f, 0.71f))); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(45000, -40780, 11130), new Vector3f(46180, -39500, 11775), new Vector3f(49655, -34680, 11550), new Angle(-0.71f, 0.71f))); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(52345, -37325, 12145), new Vector3f(54945, -33385, 13470), new Vector3f(49655, -34680, 11550), new Angle(-0.71f, 0.71f))); jumppad = new JumpPad(0xB68); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -50.0f, 0.0f), Speed = 6000 }); //front without cp jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 10200 }.SetRarity(0.5)); // last jumppad jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 13200 }.SetRarity(0.25)); //to the EOL worldObjects.Add(jumppad); jumppad = new JumpPad(0xB60); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 6000 }); //1 up jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-125.0f, -30.0f, 0.0f), Speed = 12200 }.SetRarity(0.25)); // hard jump, easy with sideway jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(25.0f, -60.0f, 0.0f), Speed = 7500 }.SetRarity(0.35)); //2 up worldObjects.Add(jumppad); jumppad = new JumpPad(0xB88); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(65.0f, -60.0f, 0.0f), Speed = 5500 }); //1 up jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(135.0f, -45.0f, 0.0f), Speed = 8200 }); // right side jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(25.0f, -40.0f, 0.0f), Speed = 6500 }); //left side up worldObjects.Add(jumppad); jumppad = new JumpPad(0x6a8); //3500 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-36.0f, -20.0f, 0.0f), Speed = 8500 }); //climb on other side jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-33.0f, -20.0f, 0.0f), Speed = 13200 }.SetRarity(0.35)); // bounce jump,sideways(can make to the last jumppad) worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(53067, -35725, 19143), new Vector3f(54065, -36610, 20550), new Vector3f(50660, -34400, 19600), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0xB80); //10000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 9350 }); //short jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 150000 }); //teleport worldObjects.Add(jumppad); #endregion }
public void Gen_Hardcore() { // Gen - Hardcore(for in-game Hardcore mode, requires special attention) List <Enemy> AllEnemies = GetAllEnemies(GameHook.game, 0, 39); Rooms = new List <RoomLayout>(); RoomLayout layout; List <Enemy> enemies; // room 1 enemies = hc_room1.ReturnEnemiesInRoom(AllEnemies); enemies[4].SetEnemyType(Enemy.EnemyTypes.Weeb); RandomPickEnemiesWithoutCP(ref enemies, force: true, removeCP: false); layout = new RoomLayout(enemies); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-19224, -64141, 3598), new Vector3f(-18365, -63753, 3598), new Angle(0.02f, 1.00f)).Mask(SpawnPlane.Mask_Flatground)); // area before vent layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12260, -64194, 3099), new Vector3f(-11507, -63194, 3099), new Angle(-0.28f, 0.96f)).Mask(SpawnPlane.Mask_Flatground)); // fakeMantle platform // high/special layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-9969, -67666, 2778), new Vector3f(-10971, -67635, 2778), new Angle(0.97f, 0.23f)) .Mask(SpawnPlane.Mask_Highground).AsVerticalPlane()); // billboard left layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-9704, -63406, 3296), new Vector3f(-10746, -63403, 3296), new Angle(-0.66f, 0.75f)) .Mask(SpawnPlane.Mask_Highground).AsVerticalPlane()); // bilboard right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-13559, -64348, 3908), new Angle(0.21f, 0.98f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard before vent 1 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-14738, -63855, 3590), new Angle(0.03f, 1.00f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard before vent 2 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-9238, -63303, 3193), new Angle(-0.70f, 0.71f)).Mask(SpawnPlane.Mask_Highground)); // near 'billboard right' Rooms.Add(layout); // room 2 enemies = hc_room2.ReturnEnemiesInRoom(AllEnemies); enemies[1].SetEnemyType(Enemy.EnemyTypes.Waver); RandomPickEnemiesWithoutCP(ref enemies, force: true, removeCP: false); layout = new RoomLayout(enemies); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-26815, -64787, 2998), new Vector3f(-26243, -63621, 2998), new Angle(-0.03f, 1.00f)).Mask(SpawnPlane.Mask_Flatground)); // before fan layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-29552, -61256, 3798), new Angle(-0.62f, 0.79f)).Mask(SpawnPlane.Mask_Highground)); // after fan, platform ledge layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-20779, -60233, 4298), new Vector3f(-21916, -59283, 4298), new Angle(-1.00f, 0.07f)).Mask(SpawnPlane.Mask_Flatground)); // before vent layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-20364, -59342, 4708), new Angle(-0.96f, 0.27f)).Mask(SpawnPlane.Mask_Highground)); // vent frame Rooms.Add(layout); // room 3 - before big slide enemies = hc_room3.ReturnEnemiesInRoom(AllEnemies); //RandomPickEnemiesWithoutCP(ref enemies, force: true, removeCP: false, enemyIndexBesides: 1); // besides shifter var info = new ShifterSpawnInfo(); info.shiftPoints = new List <Tuple <Vector3f, Angle> >() { new Tuple <Vector3f, Angle>(new Vector3f(-11876, -56306, 4513), new Angle(0.03f, 1.00f)), new Tuple <Vector3f, Angle>(new Vector3f(-11181, -53500, 3772), new Angle(-0.56f, 0.83f)), new Tuple <Vector3f, Angle>(new Vector3f(-9615, -56984, 3788), new Angle(0.90f, 0.43f)), }; enemies[1] = new EnemyShifter(enemies[1], 3).AddFixedSpawnInfo(info); layout = new RoomLayout(enemies); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-8414, -56026, 3402), new Vector3f(-9987, -56690, 3402), new Angle(-1.00f, 0.02f)).Mask(SpawnPlane.Mask_Flatground)); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11531, -54906, 5040), new Angle(-0.99f, 0.17f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-10315, -54501, 4030), new Angle(-0.99f, 0.17f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-9994, -55723, 4030), new Angle(-1.00f, 0.09f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-8131, -54614, 3970), new Angle(-1.00f, 0.08f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-8112, -55647, 3970), new Angle(-1.00f, 0.06f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-9004, -57100, 4195), new Angle(0.94f, 0.34f)).Mask(SpawnPlane.Mask_Highground)); // wall lamp layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-10356, -52803, 4591), new Angle(-0.78f, 0.63f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // right wall ledge Rooms.Add(layout); // room 4 enemies = hc_room4.ReturnEnemiesInRoom(AllEnemies); enemies[0] = new EnemyDrone(enemies[0]); RemoveParentObjects(ref enemies); EnemiesWithoutCP.AddRange(enemies); // room 5 enemies = hc_room5.ReturnEnemiesInRoom(AllEnemies); enemies[2].SetEnemyType(Enemy.EnemyTypes.Waver); DetachEnemyFromCP(ref enemies, force: true); layout = new RoomLayout(enemies); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(6758, -62646, 2116), new Angle(0.87f, 0.50f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(6421, -64019, 2238), new Angle(0.77f, 0.64f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // pipes layout.AddSpawnPlane(new SpawnPlane(new Vector3f(6814, -67090, 2383), new Angle(0.86f, 0.51f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(6779, -69609, 2587), new Angle(0.85f, 0.53f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(5795, -68741, 2498), new Angle(0.68f, 0.73f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // rooftop layout.AddSpawnPlane(new SpawnPlane(new Vector3f(7050, -66729, 1982), new Angle(0.96f, 0.28f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // roofotop layout.AddSpawnPlane(new SpawnPlane(new Vector3f(5255, -67813, 2123), new Angle(0.47f, 0.88f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // small thin ad/sign // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(6485, -69383, 1868), new Vector3f(5827, -68615, 1868), new Angle(0.71f, 0.71f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(6450, -66512, 1681), new Vector3f(5834, -67095, 1678), new Angle(0.72f, 0.69f)).Mask(SpawnPlane.Mask_Flatground)); Rooms.Add(layout); // room 6 enemies = hc_room6.ReturnEnemiesInRoom(AllEnemies); enemies[0] = new EnemyShieldOrb(enemies[0]); enemies[1] = new EnemyDrone(enemies[1]); // shifter points info = new ShifterSpawnInfo(); info.shiftPoints = new List <Tuple <Vector3f, Angle> >() // 3 street lights + billboard { new Tuple <Vector3f, Angle>(new Vector3f(3311, -71903, 969), new Angle(0.57f, 0.82f)), new Tuple <Vector3f, Angle>(new Vector3f(906, -70209, 630), new Angle(-0.30f, 0.95f)), new Tuple <Vector3f, Angle>(new Vector3f(-1086, -70504, 545), new Angle(-0.27f, 0.96f)), new Tuple <Vector3f, Angle>(new Vector3f(-2056, -73103, 604), new Angle(-0.19f, 0.98f)) }; enemies[2] = new EnemyShifter(enemies[2], 4).AddFixedSpawnInfo(info); // orb layout = new RoomLayout(enemies.Take(1).Single()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-95, -74846, 966))); // top of billboard right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-1265, -75711, 2797), new Vector3f(-1224, -75844, 1457)).AsVerticalPlane()); // top-up curved billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(895, -70257, 811))); // street light, middle layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2705, -68480, 1051))); // top of curve billboard, near exit layout.AddSpawnPlane(new SpawnPlane(new Vector3f(4773, -71128, 1276))); // left billboard, high layout.AddSpawnPlane(new SpawnPlane(new Vector3f(2348, -70853, -2), new Vector3f(2340, -71890, 1275)).AsVerticalPlane()); // middle left wall/net layout.AddSpawnPlane(new SpawnPlane(new Vector3f(4054, -71784, -200))); // under slide layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2544, -69779, 289))); // near exit door layout.AddSpawnPlane(new SpawnPlane(new Vector3f(673, -75451, 565), new Vector3f(-583, -75460, 912)).AsVerticalPlane()); // right small billboard layout.DoNotReuse(); Rooms.Add(layout); // enemies enemies = enemies.Skip(1).ToList(); layout = new RoomLayout(enemies); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-1352, -70928, 605), new Angle(-0.32f, 0.95f)).Mask(SpawnPlane.Mask_Highground)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-1349, -72207, 605), new Angle(-0.31f, 0.95f)).Mask(SpawnPlane.Mask_Highground)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2038, -71712, 605), new Angle(-0.36f, 0.93f)).Mask(SpawnPlane.Mask_Highground)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(863, -75103, 1018), new Vector3f(2206, -75094, 1008), new Angle(-0.03f, 1.00f)).AsVerticalPlane().Mask(SpawnPlane.Mask_Highground)); // pipe right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(198, -69741, 913), new Angle(-0.59f, 0.81f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // wall lamp, far back layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-391, -69741, 913), new Angle(-0.66f, 0.75f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // wall lamp, far back layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2805, -68600, 1051), new Angle(-0.47f, 0.88f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // curved billboard near exit layout.AddSpawnPlane(new SpawnPlane(new Vector3f(744, -71932, 1408), new Angle(-0.45f, 0.89f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // middle high billboard/fence layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2606, -74004, 630), new Angle(-0.07f, 1.00f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // street light, far right corner // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2230, -70553, -80), new Vector3f(-1202, -69921, -80), new Angle(-0.02f, 1.00f)).Mask(SpawnPlane.Mask_Flatground)); // near exit layout.AddSpawnPlane(new SpawnPlane(new Vector3f(1130, -68547, -37), new Vector3f(1613, -70412, -40), new Angle(-0.31f, 0.95f)).Mask(SpawnPlane.Mask_Flatground)); // middle layout.AddSpawnPlane(new SpawnPlane(new Vector3f(4524, -71740, 307), new Angle(-0.92f, 0.39f)).Mask(SpawnPlane.Mask_Highground)); // slide middle platform // drone layout.AddSpawnPlane(new SpawnPlane(new Vector3f(3054, -72544, 787), new Vector3f(-1907, -73969, 787), new Angle(-0.22f, 0.97f)).Mask(SpawnPlane.Mask_Airborne)); // middle horizontal section layout.AddSpawnPlane(new SpawnPlane(new Vector3f(3838, -70256, 787), new Vector3f(-2210, -70176, 787), new Angle(-0.53f, 0.85f)).Mask(SpawnPlane.Mask_Airborne)); // back horizontal section layout.AddSpawnPlane(new SpawnPlane(new Vector3f(1456, -75623, 1655), new Angle(-0.02f, 1.00f)).Mask(SpawnPlane.Mask_Airborne)); // above right slide Rooms.Add(layout); //// EXTRA DRONES //// layout = new RoomLayout(); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-13297, -63905, 3287), new Angle(0.01f, 1.00f))); // first section, after fakeMantle platform layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-16909, -63726, 3334), new Angle(-0.01f, 1.00f))); // before first vent layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-15556, -55873, 4360), new Angle(-0.91f, 0.41f))); // after sensory boost layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-8338, -56423, 4049), new Vector3f(-9328, -55028, 4049), new Angle(1.00f, 0.02f))); // before big slide layout.AddSpawnPlane(new SpawnPlane(new Vector3f(6013, -68097, 2075), new Vector3f(6087, -63280, 2075), new Angle(0.70f, 0.71f)).AsVerticalPlane()); // across "3pistol hallway" layout.Mask(SpawnPlane.Mask_Airborne); Rooms.Add(layout); //// EXTRA //// layout = new RoomLayout(); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-4540, -70299, -80), new Angle(-0.02f, 1.00f)).Mask(SpawnPlane.Mask_Flatground)); // before elevator door Rooms.Add(layout); ////////////////// Combine enemies from LookInside to Awakening ////////////////// var LIenemiesAll = LookInside.ReturnEnemiesInRoom(AllEnemies); // remove any cp and attached doors RemoveParentObjects(ref LIenemiesAll); // LookInside Room1 var LIenemies = LookInisde_room1.ReturnEnemiesInRoom(LIenemiesAll); LIenemies[0] = new EnemyTurret(LIenemies[0]); LIenemies[1] = new EnemyTurret(LIenemies[1]); LIenemies[2] = new EnemyTurret(LIenemies[2]); LIenemies[3] = new EnemyDrone(LIenemies[3]); LIenemies[4] = new EnemyDrone(LIenemies[4]); EnemiesWithoutCP.AddRange(LIenemies.Skip(3).Take(2).ToList()); // both drones to EnemiesWithoutCP EnemiesWithoutCP.AddRange(LIenemies.Skip(5).Take(3).ToList()); // 3 normals LIenemies = LIenemies.Take(3).ToList(); // leave 3 turrets layout = new RoomLayout(LIenemies); // Last room, bottom right, scaffolding, aiming to door TurretSpawnInfo turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 0; turretSpawn.HorizontalSpeed = 50; turretSpawn.HorizontalAngle = 45; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-1082, -74877, 339), new Angle(0.76f, 0.65f)).SetSpawnInfo(turretSpawn)); // Last room, exit door platform, aiming to middle turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 10; turretSpawn.HorizontalSpeed = 30; turretSpawn.HorizontalAngle = 35; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-975, -70054, -80), new Angle(-0.02f, 1.00f)).SetSpawnInfo(turretSpawn)); // Last room, left bottom, aiming to middle/slide turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 30; turretSpawn.HorizontalSpeed = 30; turretSpawn.HorizontalAngle = 40; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(4739, -70409, -350), new Angle(1.00f, 0.02f)).SetSpawnInfo(turretSpawn)); // Last room, middle metal wall, aiming to door turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 20; turretSpawn.HorizontalSpeed = 40; turretSpawn.HorizontalAngle = 30; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-66, -69760, 256), new QuaternionAngle(0.00f, -0.71f, 0.71f, 0.00f)).SetSpawnInfo(turretSpawn)); // Before big slide, right far platform edge, aiming to middile platform turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 10; turretSpawn.HorizontalSpeed = 30; turretSpawn.HorizontalAngle = 30; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-8836, -54267, 3403), new Angle(-0.69f, 0.72f)).SetSpawnInfo(turretSpawn)); // Before big slide, on top of metal slide, aiming at slide turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 0; turretSpawn.HorizontalSpeed = 0; turretSpawn.HorizontalAngle = 0; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11887, -56304, 4500), new QuaternionAngle(0.00f, 0.22f, 0.00f, 0.98f)).SetSpawnInfo(turretSpawn)); // 3DudeHallway, middle platform left corner, aiming at platform 3 turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 30; turretSpawn.HorizontalSpeed = 30; turretSpawn.HorizontalAngle = 30; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(5282, -66960, 1678), new Angle(-0.47f, 0.88f)).SetSpawnInfo(turretSpawn)); // After fan, first platform turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 10; turretSpawn.HorizontalSpeed = 50; turretSpawn.HorizontalAngle = 45; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-30803, -63598, 3198), new Angle(0.39f, 0.92f)).SetSpawnInfo(turretSpawn)); // First classic pistol room, on billboard side, aiming towards main path turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 0; turretSpawn.HorizontalSpeed = 0; turretSpawn.HorizontalAngle = 0; turretSpawn.SetRange(3220); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-14269, -61957, 3503), new QuaternionAngle(-0.35f, 0.61f, -0.61f, 0.35f)).SetSpawnInfo(turretSpawn)); layout.DoNotReuse(); Rooms.Add(layout); enemies = LookInisde_room2.ReturnEnemiesInRoom(LIenemiesAll); // 2 shifters // SHIFTER 1 : Slide area, before last room info = new ShifterSpawnInfo() { shiftPoints = new List <Tuple <Vector3f, Angle> >() { new Tuple <Vector3f, Angle>(new Vector3f(8584, -79887, 878), new Angle(0.82f, 0.58f)), // platform new Tuple <Vector3f, Angle>(new Vector3f(7975, -80338, 1711), new Angle(0.70f, 0.71f)), // billboard new Tuple <Vector3f, Angle>(new Vector3f(6778, -79664, 1997), new Angle(0.27f, 0.96f)), // billboard mounted new Tuple <Vector3f, Angle>(new Vector3f(6363, -77943, 1348), new Angle(-0.40f, 0.91f)) // in wall, SR route(kinda) } }; enemies[0] = new EnemyShifter(enemies[0], 4).AddFixedSpawnInfo(info); layout = new RoomLayout(enemies[0]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(8295, -78141, 1093), new Angle(0.71f, 0.71f)).DoNotReuse()); // slide (before last room) Rooms.Add(layout); // SHIFTER 2: sensory boost info = new ShifterSpawnInfo() { shiftPoints = new List <Tuple <Vector3f, Angle> >() { new Tuple <Vector3f, Angle>(new Vector3f(-17375, -58267, 3909), new Angle(-0.47f, 0.88f)), // middle platform new Tuple <Vector3f, Angle>(new Vector3f(-17139, -56103, 4100), new Angle(-0.61f, 0.79f)), // 3rd platform new Tuple <Vector3f, Angle>(new Vector3f(-15815, -57200, 4266), new Angle(-0.89f, 0.45f)), // wall pipes (above SR route) new Tuple <Vector3f, Angle>(new Vector3f(-17518, -57571, 4325), new Angle(-0.34f, 0.94f)) // middle platform, street light } }; enemies[1] = new EnemyShifter(enemies[1], 4).AddFixedSpawnInfo(info); layout = new RoomLayout(enemies[1]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-15517, -59683, 2798), new Angle(1.00f, 0.01f)).DoNotReuse()); // sensory boost Rooms.Add(layout); // last slide, after 3dude hallway LIenemies = LookInisde_room3.ReturnEnemiesInRoom(LIenemiesAll); LIenemies[0] = new EnemyShieldOrb(LIenemies[0]); // 0 - orb layout = new RoomLayout(LIenemies.Take(1).Single()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(8990, -73925, 2302), new Vector3f(9006, -72959, 1917))); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(8149, -74709, 1975))); // middle platform layout.AddSpawnPlane(new SpawnPlane(new Vector3f(8988, -72344, 2383))); // collectible platform, right layout.DoNotReuse(); Rooms.Add(layout); layout = new RoomLayout(LIenemies.Skip(1).ToList()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(7479, -74629, 1948), new Angle(0.76f, 0.65f)).Mask(SpawnPlane.Mask_Flatground)); // middle platform, left layout.AddSpawnPlane(new SpawnPlane(new Vector3f(9033, -74727, 1948), new Angle(0.88f, 0.47f)).Mask(SpawnPlane.Mask_Flatground)); // middle platform, right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(9811, -74741, 1948), new Angle(-1.00f, 0.02f)).Mask(SpawnPlane.Mask_Flatground)); // middle platform, right corner layout.AddSpawnPlane(new SpawnPlane(new Vector3f(8281, -75940, 1682), new Angle(0.72f, 0.70f)).Mask(SpawnPlane.Mask_Highground)); // slide start layout.AddSpawnPlane(new SpawnPlane(new Vector3f(7000, -74212, 1807), new Angle(0.40f, 0.92f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // left, small wall ledge layout.AddSpawnPlane(new SpawnPlane(new Vector3f(7389, -76764, 2291), new Vector3f(8757, -76806, 2291), new Angle(0.81f, 0.58f)).AsVerticalPlane().SetMaxEnemies(2).Mask(SpawnPlane.Mask_Highground)); // SR beam // drone extra layout.AddSpawnPlane(new SpawnPlane(new Vector3f(8851, -75820, 2415), new Vector3f(7486, -75685, 2415), new Angle(0.69f, 0.72f)).Mask(SpawnPlane.Mask_Airborne)); Rooms.Add(layout); // Custom Checkpoints // after big slide, (just bigger/additional for speedrunners) CustomCheckPoints.Add(new GameObjects.CustomCP(mapType, new Vector3f(2546, -60309, 640), new Vector3f(5995, -58083, 3287), new Vector3f(4099, -58986, 1396), new Angle(-0.22f, 0.98f))); // after "3dudehallway" CustomCheckPoints.Add(new GameObjects.CustomCP(mapType, new Vector3f(5554, -73284, 2487), new Vector3f(7084, -72234, 1285), new Vector3f(6099, -72832, 1800), new Angle(-0.03f, 1.00f))); }
public void Gen_Hardcore() { List <Enemy> AllEnemies = GetAllEnemies(GameHook.game, 0, 39); Rooms = new List <RoomLayout>(); RoomLayout layout; List <Enemy> enemies; // Room 1 enemies = hc_room1.ReturnEnemiesInRoom(AllEnemies); enemies[0] = new EnemyTurret(enemies[0]); enemies[1] = new EnemyTurret(enemies[1]); enemies[2] = new EnemyTurret(enemies[2]); enemies[3] = new EnemyDrone(enemies[3]); enemies[4] = new EnemyDrone(enemies[4]); // turrets layout = new RoomLayout(enemies.Take(3).ToList()); // slide ledge TurretSpawnInfo turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 10; turretSpawn.HorizontalSpeed = 50; turretSpawn.HorizontalAngle = 60; turretSpawn.SetRange(3250); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153916, -52963, 3803), new Angle(-0.68f, 0.73f)).SetSpawnInfo(turretSpawn)); // platform near uplink turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 10; turretSpawn.HorizontalSpeed = 50; turretSpawn.HorizontalAngle = 90; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153093, -59742, 2832), new Angle(-0.35f, 0.94f)).SetSpawnInfo(turretSpawn)); // left billboard, aiming toward last raised platform turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = -30; turretSpawn.HorizontalSpeed = 0; turretSpawn.HorizontalAngle = 0; layout.AddSpawnPlane(new SpawnPlane(new Vector3f(158809, -58789, 4248), new Angle(0.94f, 0.34f)).SetSpawnInfo(turretSpawn)); // last room, middle ledge platform turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = -10; turretSpawn.HorizontalSpeed = 50; turretSpawn.HorizontalAngle = 45; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(155608, -45100, 3618), new Angle(0.46f, 0.89f)).SetSpawnInfo(turretSpawn)); // last room, around left serverrack turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 10; turretSpawn.HorizontalSpeed = 0; turretSpawn.HorizontalAngle = 0; turretSpawn.SetRange(3100); turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(159454, -42630, 3198), new Angle(-0.97f, 0.24f)).SetSpawnInfo(turretSpawn)); // last room, middle platform, aiming towards main entry turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 20; turretSpawn.HorizontalSpeed = 0; turretSpawn.HorizontalAngle = 0; layout.AddSpawnPlane(new SpawnPlane(new Vector3f(154429, -48413, 3198), new Angle(-0.99f, 0.13f)).SetSpawnInfo(turretSpawn)); // right platform billboard, aiming to uplink turretSpawn = new TurretSpawnInfo(); turretSpawn.VerticalAngle = 45; turretSpawn.SetRange(TurretSpawnInfo.DefaultRange); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(155018, -62253, 3356), new QuaternionAngle(0.09f, 0.70f, 0.70f, 0.09f)).SetSpawnInfo(turretSpawn)); layout.DoNotReuse(); Rooms.Add(layout); // Floating platforms layout = new RoomLayout(RemoveParentObjects(enemies.Skip(3).ToList())); // ground spawns layout.AddSpawnPlane(new SpawnPlane(new Vector3f(155878, -57543, 2833), new Vector3f(156530, -57130, 2833), new Angle(-0.72f, 0.70f)).AsVerticalPlane().Mask(SpawnPlane.Mask_Flatground)); // platform 1 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(158035, -59066, 2832), new Vector3f(158265, -60201, 2832), new Angle(-0.77f, 0.64f)).AsVerticalPlane().Mask(SpawnPlane.Mask_Flatground)); // platform 2 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(154542, -61364, 2832), new Vector3f(155412, -62000, 2832), new Angle(-0.18f, 0.98f)).AsVerticalPlane().Mask(SpawnPlane.Mask_Flatground)); // platform 3 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(154006, -58364, 2832), new Vector3f(153574, -59231, 2832), new Angle(-0.44f, 0.90f)).AsVerticalPlane().Mask(SpawnPlane.Mask_Flatground)); // platform 4 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(154862, -62325, 4234), new Angle(0.22f, 0.97f)).Mask(SpawnPlane.Mask_Highground)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(158603, -59749, 4248), new Angle(-0.98f, 0.18f)).Mask(SpawnPlane.Mask_Highground)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(155258, -56568, 4301), new Angle(-0.63f, 0.77f)).Mask(SpawnPlane.Mask_Highground)); // raised platform wall, left layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153344, -56715, 4301), new Angle(-0.58f, 0.82f)).Mask(SpawnPlane.Mask_Highground)); // raised platform wall, right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153884, -51710, 4517), new Angle(-0.71f, 0.71f)).Mask(SpawnPlane.Mask_Highground)); // above pipes, slide // drones layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153066, -60119, 3365), new Vector3f(157084, -59017, 3365), new Angle(-0.57f, 0.82f)).Mask(SpawnPlane.Mask_Airborne)); // middle floating platforms layout.AddSpawnPlane(new SpawnPlane(new Vector3f(157441, -56301, 3838), new Angle(-0.96f, 0.27f)).Mask(SpawnPlane.Mask_Airborne)); // ledge climb layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153447, -53383, 4042), new Vector3f(154392, -53333, 4042), new Angle(-0.72f, 0.70f)).Mask(SpawnPlane.Mask_Airborne)); // near slide frame layout.AddSpawnPlane(new SpawnPlane(new Vector3f(152182, -58956, 3312), new Vector3f(154446, -57679, 3312), new Angle(-0.52f, 0.85f)).Mask(SpawnPlane.Mask_Airborne)); // back, floating platforms layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153277, -46094, 3719), new Vector3f(155130, -47623, 3719), new Angle(-0.88f, 0.47f)).Mask(SpawnPlane.Mask_Airborne)); // last room, first section layout.AddSpawnPlane(new SpawnPlane(new Vector3f(156323, -42670, 4252), new Vector3f(157676, -43712, 4252), new Angle(-0.90f, 0.44f)).Mask(SpawnPlane.Mask_Airborne)); // last room, second section Rooms.Add(layout); // Last Room enemies = hc_room3.ReturnEnemiesInRoom(AllEnemies); // orb + 2 enemies enemies.AddRange(hc_room2.ReturnEnemiesInRoom(AllEnemies)); // shifters layout = new RoomLayout(new EnemyShieldOrb(enemies[0])); // orb layout.AddSpawnPlane(new SpawnPlane(new Vector3f(158199, -43323, 3363), new Vector3f(156247, -42835, 3363))); // default orb layout.AddSpawnPlane(new SpawnPlane(new Vector3f(158340, -44165, 4139))); // left serverrack layout.AddSpawnPlane(new SpawnPlane(new Vector3f(156293, -44027, 3288))); // floating in middle, last section layout.AddSpawnPlane(new SpawnPlane(new Vector3f(157757, -42117, 3517))); // near door layout.DoNotReuse(); Rooms.Add(layout); layout = new RoomLayout(enemies.Skip(1).ToList()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(154503, -43834, 3198), new Vector3f(154684, -45125, 3198), new Angle(-0.89f, 0.45f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(153952, -46586, 3198), new Vector3f(154822, -47930, 3198), new Angle(-0.87f, 0.49f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(152584, -47444, 3198), new Vector3f(151648, -47889, 3198), new Angle(-0.38f, 0.92f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(156773, -46517, 3198), new Vector3f(156409, -45096, 3198), new Angle(-0.88f, 0.48f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(157709, -43922, 3198), new Angle(-0.88f, 0.47f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(155972, -42788, 3198), new Angle(-0.86f, 0.52f)).Mask(SpawnPlane.Mask_Flatground)); Rooms.Add(layout); // EXTRA // layout = new RoomLayout(); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(158458, -42995, 3198), new Angle(-0.98f, 0.19f)).Mask(SpawnPlane.Mask_Flatground)); // last room spawns layout.AddSpawnPlane(new SpawnPlane(new Vector3f(156573, -41959, 3198), new Angle(-0.72f, 0.70f)).Mask(SpawnPlane.Mask_Flatground)); // last room spawns layout.AddSpawnPlane(new SpawnPlane(new Vector3f(132165, -69982, 2398), new Angle(0.83f, 0.56f)).Mask(SpawnPlane.Mask_Flatground)); // infront of elevator // first part of map layout.AddSpawnPlane(new SpawnPlane(new Vector3f(133134, -75252, 3298), new Vector3f(133859, -74498, 3298), new Angle(0.78f, 0.62f)).Mask(SpawnPlane.Mask_Flatground)); // first platform layout.AddSpawnPlane(new SpawnPlane(new Vector3f(137251, -73872, 4042), new Vector3f(138452, -74746, 4052), new Angle(-0.94f, 0.35f)).Mask(SpawnPlane.Mask_Highground).AsVerticalPlane()); // slide ledge layout.AddSpawnPlane(new SpawnPlane(new Vector3f(144243, -69072, 3887), new Vector3f(144299, -69784, 3887), new Angle(-0.98f, 0.20f)).Mask(SpawnPlane.Mask_Highground).AsVerticalPlane()); // ledge before grinder layout.AddSpawnPlane(new SpawnPlane(new Vector3f(147668, -69379, 4493), new Angle(0.99f, 0.10f)).Mask(SpawnPlane.Mask_Highground)); // billboard after grinder layout.AddSpawnPlane(new SpawnPlane(new Vector3f(150356, -67284, 4804), new Angle(-0.96f, 0.28f)).Mask(SpawnPlane.Mask_Highground)); // billboard between default drones layout.AddSpawnPlane(new SpawnPlane(new Vector3f(154819, -68148, 4848), new Angle(1.00f, 0.04f)).Mask(SpawnPlane.Mask_Highground)); // last billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(154675, -66714, 3938), new Vector3f(155200, -67550, 3937), new Angle(-0.99f, 0.12f)).Mask(SpawnPlane.Mask_Highground).AsVerticalPlane()); // last slide ledge Rooms.Add(layout); //// Awakening Enemies List <Enemy> AwakeningEnemies = new List <Enemy>(); enemies = Awakening_hc_room1.ReturnEnemiesInRoom(AllEnemies); //pistol, 2 uzi, weeb, frogger AwakeningEnemies.AddRange(enemies.Take(4).ToList()); enemies = Awakening_hc_room2.ReturnEnemiesInRoom(AllEnemies); // frogger, pistol, waver enemies[1].SetEnemyType(Enemy.EnemyTypes.Waver); AwakeningEnemies.AddRange(enemies); enemies = Awakening_hc_room4.ReturnEnemiesInRoom(AllEnemies); // drone, uzi, pistol enemies[0] = new EnemyDrone(enemies[0]); AwakeningEnemies.AddRange(enemies); enemies = Awakening_hc_room5.ReturnEnemiesInRoom(AllEnemies); // pistol, waver, shielder, frogger enemies[2].SetEnemyType(Enemy.EnemyTypes.Waver); AwakeningEnemies.AddRange(enemies); RemoveParentObjects(ref AwakeningEnemies); // remove parent objects EnemiesWithoutCP.AddRange(AwakeningEnemies); // just add them to enemy pool // custom checkpoints CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(152500, -56671, 5228), new Vector3f(155863, -53898, 2256), new Vector3f(153243, -56343, 3598), new Angle(0.57f, 0.82f))); // before last room }
private Room Awakening_hc_room5 = new Room(new Vector3f(4844, -62911, 3386), new Vector3f(7626, -72804, 1401)); // pistol, waver, shielder, frogger #endregion public LookInside() : base(MapType.LookInside) { CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(145063, -64312, 4484), new Vector3f(148462, -66128, 2459), new Vector3f(147344, -64958, 3353), new Angle(0.22f, 0.97f))); // SR route, wall extruded corner }
public void Gen_Hardcore() { List <Enemy> AllEnemies = GetAllEnemies(GameHook.game); Rooms = new List <RoomLayout>(); RoomLayout layout; //// Room 1 //// var enemies = room_HC_1.ReturnEnemiesInRoom(AllEnemies); enemies[0] = new EnemyDrone(enemies[0]); enemies[1].SetEnemyType(EnemyTypes.Splitter); RandomPickEnemiesWithoutCP(ref enemies, force: true); layout = new RoomLayout(enemies); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(20372, -159194, -1401), new Vector3f(20358, -158300, -1406), new Angle(-0.03f, 1.00f)) .Mask(SpawnPlane.Mask_Highground).AsVerticalPlane()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(16283, -161699, -2491), new Vector3f(17048, -160976, -2491), new Angle(0.28f, 0.96f)) .Mask(SpawnPlane.Mask_Flatground).AllowSplitter()); // drones layout.AddSpawnPlane(new SpawnPlane(new Vector3f(11145, -173357, -880), new Angle(0.25f, 0.97f)).Mask(SpawnPlane.Mask_Airborne)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(22151, -158628, -102), new Angle(0.21f, 0.98f)).Mask(SpawnPlane.Mask_Airborne)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(2159, -165656, -1289), new Angle(-0.52f, 0.85f)).Mask(SpawnPlane.Mask_Airborne)); Rooms.Add(layout); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(17292, -162103, -1956), new Vector3f(15817, -163058, -2805), new Vector3f(16081, -162398, -2492), new Angle(-0.47f, 0.88f))); //// Room 2 //// enemies = room_HC_2.ReturnEnemiesInRoom(AllEnemies); enemies[0] = new EnemyTurret(enemies[0]); enemies[1] = new EnemyTurret(enemies[1]); enemies[2] = new EnemyShieldOrb(enemies[2]); RandomPickEnemiesWithoutCP(ref enemies, enemyIndex: 4); // pistol RandomPickEnemiesWithoutCP(ref enemies, enemyIndex: 0); // turret // orb layout = new RoomLayout(enemies.Where(x => x is EnemyShieldOrb).First()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-6152, -160976, -1188))); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-7151, -163770, -1801))); // right of zipline layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-4205, -163386, -2299))); // floating between platforms, under grapple layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-7105, -167582, -1964))); // zipline 90 corner layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-4821, -161519, -1043))); // wall layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-5500, -164875, -2134))); // floating behind neon sign layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-6144, -161120, -799))); // rooftop above default Rooms.Add(layout); enemies.Remove(enemies.Where(x => x is EnemyShieldOrb).First()); // enemies layout = new RoomLayout(enemies); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2837, -161806, -1611), new Vector3f(-6734, -162384, -1611), new Angle(-0.52f, 0.86f)) .Mask(SpawnPlane.Mask_Flatground).SetMaxEnemies(3).AllowSplitter()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-6154, -166094, -2211), new Vector3f(-3888, -167198, -2191), new Angle(-0.01f, 1.00f)) .Mask(SpawnPlane.Mask_Flatground).SetMaxEnemies(2).AllowSplitter()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-4310, -165849, -2211), new Vector3f(-3764, -164550, -2191), new Angle(-0.71f, 0.70f)).Mask(SpawnPlane.Mask_Flatground)); // high/special layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-4640, -164518, -1602), new Angle(-0.18f, 0.98f)).Mask(SpawnPlane.Mask_Highground)); // neon sign in middle layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2986, -166533, -1141), new Angle(-0.16f, 0.99f)).Mask(SpawnPlane.Mask_Highground)); // billboard layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-7115, -162544, -1045), new Angle(-0.47f, 0.88f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // zipline pole layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-3639, -162424, -1258), new Angle(-0.59f, 0.80f)).Mask(SpawnPlane.Mask_Highground)); // city ad layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2430, -161829, -1043), new Angle(-0.39f, 0.92f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // zipline pole 2 // turrets layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-4467, -164457, -2191), new Angle(-0.54f, 0.84f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 10, HorizontalSpeed = 20, VerticalAngle = 5 })); // default platform corner layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2489, -162374, -1591), new Angle(1.00f, 0.09f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 0, HorizontalSpeed = 0, VerticalAngle = 5 })); // exit platform, near zipline layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-6289, -161081, -1611), new Angle(-0.72f, 0.69f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 30, HorizontalSpeed = 40, VerticalAngle = 5 })); // near exit layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-6522, -166968, -2191), new Angle(0.66f, 0.75f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 0, HorizontalSpeed = 0, VerticalAngle = 12 })); // first platform, right far corner layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-7429, -164705, -2101), new Angle(0.50f, 0.86f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 20, HorizontalSpeed = 20, VerticalAngle = 23 })); // net/fence wall near exit, right of zipline // drones layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-6368, -162295, -1062), new Vector3f(-2909, -161733, -871), new Angle(-0.73f, 0.69f)).Mask(SpawnPlane.Mask_Airborne)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-6294, -163232, -1390), new Vector3f(-5787, -166775, -1390), new Angle(-0.01f, 1.00f)).Mask(SpawnPlane.Mask_Airborne)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-4794, -167849, -1390), new Angle(0.16f, 0.99f)).Mask(SpawnPlane.Mask_Airborne)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-2711, -162876, -1055), new Angle(-0.41f, 0.91f)).Mask(SpawnPlane.Mask_Airborne)); Rooms.Add(layout); //// Room 3 //// enemies = room_HC_3.ReturnEnemiesInRoom(AllEnemies); enemies[0] = new EnemyTurret(enemies[0]); enemies[1] = new EnemyTurret(enemies[1]); enemies[2].SetEnemyType(EnemyTypes.Waver); enemies[3].SetEnemyType(EnemyTypes.Waver); enemies[5].SetEnemyType(EnemyTypes.Weeb); RandomPickEnemiesWithoutCP(ref enemies, force: true); layout = new RoomLayout(enemies); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-9584, -163504, -1651), new Vector3f(-10005, -162787, -1651), new Angle(0.72f, 0.69f)).Mask(SpawnPlane.Mask_Flatground).AllowSplitter()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-10144, -160860, -1651), new Angle(-0.70f, 0.71f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12161, -161969, -1647), new Vector3f(-10988, -162483, -1647), new Angle(0.01f, 1.00f)).Mask(SpawnPlane.Mask_Flatground).AllowSplitter()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-13875, -162394, -1647), new Vector3f(-13241, -161806, -1647), new Angle(0.01f, 1.00f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-17017, -162299, -1647), new Vector3f(-15992, -161779, -1647), new Angle(-0.01f, 1.00f)).Mask(SpawnPlane.Mask_Flatground).AllowSplitter()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12174, -162915, -1651), new Angle(0.37f, 0.93f)).Mask(SpawnPlane.Mask_Flatground)); // high/special layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-14173, -162144, -1199), new Angle(0.03f, 1.00f)).Mask(SpawnPlane.Mask_Highground)); // rooftop layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12536, -162454, -1342), new Vector3f(-12586, -161754, -1340), new Angle(0.01f, 1.00f)) .Mask(SpawnPlane.Mask_Highground).AsVerticalPlane()); // gateway arch layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-17966, -162279, -1244), new Angle(0.04f, 1.00f)).Mask(SpawnPlane.Mask_Highground)); // umbrella end layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-14240, -161740, -1025), new Angle(-0.05f, 1.00f)).Mask(SpawnPlane.Mask_HighgroundLimited)); // street light layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-18119, -158765, -770), new Angle(-0.48f, 0.88f)).Mask(SpawnPlane.Mask_Highground)); // shuriken target box layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11940, -163003, -1140), new Angle(0.42f, 0.91f)).Mask(SpawnPlane.Mask_Highground)); // rooftop layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11741, -161557, -1292), new Angle(-0.21f, 0.98f)).Mask(SpawnPlane.Mask_Highground)); // city ad // turrets layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11205, -163541, -1629), new Angle(0.89f, 0.46f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 20, HorizontalSpeed = 10, VerticalAngle = 10 })); // behind right building layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12258, -163524, -1139), new Angle(0.91f, 0.41f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 30, HorizontalSpeed = 20, VerticalAngle = -5 })); // rooftop layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-10810, -162952, -841), new Angle(0.97f, 0.24f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 10, HorizontalSpeed = 5, VerticalAngle = -5 })); // building rooftop layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-15700, -162602, -1641), new Angle(0.78f, 0.63f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 0, HorizontalSpeed = 0, VerticalAngle = 0, VisibleLaserLength = 0 })); // ninja behind last small building // drones layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-18062, -160207, -1379), new Vector3f(-15594, -160997, -938), new Angle(-0.24f, 0.97f)).Mask(SpawnPlane.Mask_Airborne)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-13518, -163157, -893), new Angle(0.30f, 0.95f)).Mask(SpawnPlane.Mask_Airborne)); Rooms.Add(layout); //// Room 4 - Train //// enemies = room_HC_4.ReturnEnemiesInRoom(AllEnemies); enemies[0].SetEnemyType(EnemyTypes.Splitter); enemies[2].SetEnemyType(EnemyTypes.Waver); RandomPickEnemiesWithoutCP(ref enemies, force: true); layout = new RoomLayout(enemies); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12322, 149132, 318), new Vector3f(-11349, 145602, 318), new Angle(-0.70f, 0.71f)) .Mask(SpawnPlane.Mask_Flatground).SetMaxEnemies(4).AllowSplitter()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11374, 144494, 308), new Angle(0.92f, 0.39f)).Mask(SpawnPlane.Mask_Highground)); // high/special layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11374, 144494, 308), new Angle(0.92f, 0.39f)).Mask(SpawnPlane.Mask_Highground)); // crate layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12190, 142962, 893), new Angle(-0.65f, 0.76f)).Mask(SpawnPlane.Mask_Highground)); // red crate // additional (drones) layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12227, 148569, 1005), new Vector3f(-11480, 145808, 1180), new Angle(-0.69f, 0.72f)).Mask(SpawnPlane.Mask_Airborne)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11193, 141624, 1425), new Angle(-0.91f, 0.41f)).Mask(SpawnPlane.Mask_Airborne)); // additional (turrets) layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12213, 143296, 303), new Angle(0.67f, 0.74f)).Mask(SpawnPlane.Mask_Turret) .SetSpawnInfo(new TurretSpawnInfo { HorizontalAngle = 0, HorizontalSpeed = 0, VerticalAngle = 5 })); // behind crates Rooms.Add(layout); //// Room 5 - Train //// enemies = room_HC_5.ReturnEnemiesInRoom(AllEnemies); enemies[0] = new EnemyShieldOrb(enemies[0]); enemies[2].SetEnemyType(EnemyTypes.Weeb); enemies[3].SetEnemyType(EnemyTypes.Weeb); // lonely weeb in next section, no cp needed enemies.Where(x => x.enemyType == EnemyTypes.Weeb && x.Pos.Y > 178000).ToList().ForEach(x => { EnemiesWithoutCP.Add(x); enemies.Remove(x); }); layout = new RoomLayout(enemies); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11495, 175989, 878), new Vector3f(-11495, 176952, 877)).Mask(SpawnPlane.Mask_ShieldOrb)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11438, 175606, 424)).Mask(SpawnPlane.Mask_ShieldOrb)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-12389, 177656, 485)).Mask(SpawnPlane.Mask_ShieldOrb)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11918, 175233, 318), new Vector3f(-12367, 177373, 317), new Angle(-0.70f, 0.71f)).Mask(SpawnPlane.Mask_Flatground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11244, 177967, 360), new Angle(-0.89f, 0.46f)).Mask(SpawnPlane.Mask_Highground)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11488, 178074, 661), new Angle(-0.76f, 0.65f)).Mask(SpawnPlane.Mask_Highground)); layout.DoNotReuse(); Rooms.Add(layout); //// Room 6 - Train //// enemies = room_HC_6.ReturnEnemiesInRoom(AllEnemies); // all uzi int r = Config.GetInstance().r.Next(1, 4); for (int i = 0; i < r; i++) { RandomPickEnemiesWithoutCP(ref enemies, force: true); } layout = new RoomLayout(enemies); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11558, 196728, 318), new Vector3f(-12011, 201301, 318), new Angle(-0.71f, 0.71f)) .Mask(SpawnPlane.Mask_Flatground).SetMaxEnemies(5).AllowSplitter()); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(-11798, 201592, 893), new Angle(-0.70f, 0.72f)).Mask(SpawnPlane.Mask_Highground)); // red boxes Rooms.Add(layout); //// Room 7 //// enemies from Hel level enemies = room_HC_7.ReturnEnemiesInRoom(AllEnemies); enemies.ForEach(x => { x.SetEnemyType(EnemyTypes.Drone); x.DisableAttachedCP(GameHook.game); }); EnemiesWithoutCP.AddRange(enemies); #region Uplinks // shuriken for fan NonPlaceableObject uplink = new UplinkShurikens(0x10, 0x368); uplink.AddSpawnInfo(new UplinkShurikensSpawnInfo { MaxAttacks = 1, Duration = 1 }); worldObjects.Add(uplink); // train slowmo uplink = new UplinkSlowmo(0x18, 0x1F8, 0xA0); uplink.AddSpawnInfo(new UplinkSlowmoSpawnInfo { TotalTime = 3 }); worldObjects.Add(uplink); #endregion }