protected override void OnHover() { base.OnHover(); Instance.FlagForRemoval(); // no blackhole too close with other blackholes foreach (var hole in BlackholeLocations) { if (ScriptHelper.GrowFromCenter(hole, DestroyRadius * 2).Contains(HoverPosition)) { Destroy(); return; } } BlackholeLocations.Add(HoverPosition); var noCollision = Constants.NoCollision; if (Size == BlackholeSize.Big) { Game.RunCommand("/settime .1"); ScriptHelper.Timeout(() => Game.RunCommand("/settime 1"), 2000); } m_blackhole = Game.CreateObject("Shadow00A"); m_blackhole.SetBodyType(BodyType.Dynamic); m_blackhole.SetCollisionFilter(noCollision); m_blackhole.SetWorldPosition(HoverPosition); ScriptHelper.RunIn(() => Game.DrawCircle(HoverPosition, .5f, Color.Green), 10000); for (var i = 1; i < 40; i++) { var egg = Game.CreateObject("Shadow00A"); egg.SetAngle(MathHelper.TwoPI * i / 39); egg.SetBodyType(BodyType.Static); egg.SetCollisionFilter(noCollision); egg.SetWorldPosition(HoverPosition); m_blackholes.Add(egg); } m_magnetJoint = (IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint"); m_magnetJoint.SetWorldPosition(HoverPosition); m_magnetJoint.SetTargetObject(m_blackhole); m_revoluteJoint = (IObjectRevoluteJoint)Game.CreateObject("RevoluteJoint"); m_revoluteJoint.SetWorldPosition(HoverPosition); m_revoluteJoint.SetTargetObjectA(m_blackhole); //m_revoluteJoint.SetMotorEnabled(true); m_revoluteJoint.SetMotorSpeed(3000); m_revoluteJoint.SetMaxMotorTorque(50000); m_activeTime = Game.TotalElapsedGameTime; }
public TTurret(int id, Vector2 position, int dir, PlayerTeam team) { Id = id; Team = team; if (dir < 0) { MainBlockAngle = (float)Math.PI / 2; DefaultAngle = (float)Math.PI; } else { MainBlockAngle = (float)Math.PI / 2; DefaultAngle = 0; } IObject leftLeg = null; IObject rightLeg = null; IObject hull2 = null; IObject hull3 = null; IObject hull4 = null; if (Id < 4) { leftLeg = GlobalGame.CreateObject("Duct00C_D", position + new Vector2(-3, -9), 1.2f); rightLeg = GlobalGame.CreateObject("Duct00C_D", position + new Vector2(3, -9), -1.2f); leftLeg.SetMass(leftLeg.GetMass() * 20); rightLeg.SetMass(rightLeg.GetMass() * 20); } else if (Id == 4 || Id == 5 || Id == 6 || Id == 7) { RotationLimit = 0; Hull = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(-4, 4), (float)Math.PI / 2); hull2 = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(4, 4), 0); hull3 = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(4, -4), -(float)Math.PI / 2); hull4 = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(-4, -4), -(float)Math.PI); hull2.SetBodyType(BodyType.Dynamic); hull3.SetBodyType(BodyType.Dynamic); hull4.SetBodyType(BodyType.Dynamic); } else if (Id == 6 || Id == 7) { RotationLimit = 0; Hull = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(-4, 4), (float)Math.PI / 2); hull2 = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(4, 4), 0); hull3 = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(4, -4), -(float)Math.PI / 2); hull4 = GlobalGame.CreateObject("BgMetal08H", position + new Vector2(-4, -4), -(float)Math.PI); hull2.SetBodyType(BodyType.Dynamic); hull3.SetBodyType(BodyType.Dynamic); hull4.SetBodyType(BodyType.Dynamic); } if (Id == 6 || Id == 7) { MainBlock = GlobalGame.CreateObject("CrabCan00", position, -(float)Math.PI / 2 * dir); } else { MainBlock = GlobalGame.CreateObject("Computer00", position, -(float)Math.PI / 2 * dir); } MainBlock.SetHealth(1000); if (Id >= 4) { IObjectAlterCollisionTile collisionDisabler = (IObjectAlterCollisionTile)GlobalGame.CreateObject("AlterCollisionTile", position); collisionDisabler.SetDisableCollisionTargetObjects(true); collisionDisabler.SetDisableProjectileHit(false); collisionDisabler.AddTargetObject(MainBlock); IObject[] platforms = GlobalGame.GetObjectsByName(new string[] { "MetalPlat01A", "Lift00C", "Lift00B", "MetalPlat00G", "Elevator02B", "InvisiblePlatform", "MetalPlat01F" }); for (int i = 0; i < platforms.Length; ++i) { collisionDisabler.AddTargetObject(platforms[i]); } } IObject antenna = GlobalGame.CreateObject("BgAntenna00B", position + new Vector2(-2 * dir, 9)); antenna.SetBodyType(BodyType.Dynamic); antenna.SetMass(0.0000001f); IObjectWeldJoint bodyJoint = (IObjectWeldJoint)GlobalGame.CreateObject("WeldJoint", position); IObjectWeldJoint hullJoint = (IObjectWeldJoint)GlobalGame.CreateObject("WeldJoint", position); if (Id < 4) { hullJoint.AddTargetObject(leftLeg); hullJoint.AddTargetObject(rightLeg); OtherObjects.Add(leftLeg); OtherObjects.Add(rightLeg); } else if (Id == 4 || Id == 5 || Id == 6 || Id == 7) { hullJoint.AddTargetObject(Hull); hullJoint.AddTargetObject(hull2); hullJoint.AddTargetObject(hull3); hullJoint.AddTargetObject(hull4); OtherObjects.Add(Hull); OtherObjects.Add(hull2); OtherObjects.Add(hull3); OtherObjects.Add(hull4); } bodyJoint.AddTargetObject(MainBlock); bodyJoint.AddTargetObject(antenna); bodyJoint.SetPlatformCollision(WeldJointPlatformCollision.PerObject); OtherObjects.Add(antenna); OtherObjects.Add(bodyJoint); OtherObjects.Add(hullJoint); DamagedObjects.Add(MainBlock); if (Id == 4 || Id == 5) { HackingProtection = true; EnableMovement = true; PathSize = 2; Speed = 3; RotationSpeed = 3f; DamageFactor = 1f; DroneMinDistance = 5 * 8; } else if (Id == 6) { HackingProtection = false; EnableMovement = true; PathSize = 2; Speed = 4; RotationSpeed = 2f; DamageFactor = 1.5f; DroneMinDistance = 4 * 8; } else if (Id == 7) { HackingProtection = false; EnableMovement = true; PathSize = 2; Speed = 4; RotationSpeed = 2f; DamageFactor = 1f; DroneMinDistance = 4 * 8; } if (id == 0) { Name = "Light Turret"; } else if (id == 1) { Name = "Rocket Turret"; } else if (id == 2) { Name = "Heavy Turret"; } else if (id == 3) { Name = "Sniper Turret"; } else if (id == 4) { Name = "Assault Drone"; } else if (id == 5) { Name = "Fire Drone"; } else if (id == 6) { Name = "Tazer Drone"; } else if (id == 7) { Name = "Melee Drone"; } if (id == 1 || id == 2) { //@0:5B=8F0 IObject gun2 = GlobalGame.CreateObject("BgBarberPole00", position + new Vector2(dir, -2), (float)Math.PI / 2); IObject gun1 = GlobalGame.CreateObject("BgBarberPole00", position + new Vector2(dir, 3), (float)Math.PI / 2); gun1.SetBodyType(BodyType.Dynamic); gun2.SetBodyType(BodyType.Dynamic); gun1.SetMass(0.0000001f); gun2.SetMass(0.0000001f); bodyJoint.AddTargetObject(gun1); bodyJoint.AddTargetObject(gun2); OtherObjects.Add(gun1); OtherObjects.Add(gun2); TTurretWeapon weapon = new TTurretWeapon { BulletType = (int)ProjectileItem.BAZOOKA, Sound = "Bazooka", ReloadingTime = 200 }; if (id == 2) { weapon.Ammo = 4; } else { weapon.Ammo = 6; weapon.SuppressiveFire = true; weapon.MaxFireDelay = 1; weapon.MaxBulletCount = 1; } weapon.Scatter = 0; WeaponList.Add(weapon); } if (id == 0 || id == 2 || id == 4) { //?C;5<5B IObject gun00 = GlobalGame.CreateObject("BgPipe02A", position + new Vector2(8 * dir, 0)); IObject gun01 = GlobalGame.CreateObject("BgPipe02B", position + new Vector2(14 * dir, 0)); IObject gun10 = GlobalGame.CreateObject("BgPipe02A", position + new Vector2(8 * dir, 2)); IObject gun11 = GlobalGame.CreateObject("BgPipe02B", position + new Vector2(14 * dir, 2)); gun00.SetBodyType(BodyType.Dynamic); gun01.SetBodyType(BodyType.Dynamic); gun10.SetBodyType(BodyType.Dynamic); gun11.SetBodyType(BodyType.Dynamic); gun00.SetMass(0.0000001f); gun01.SetMass(0.0000001f); gun10.SetMass(0.0000001f); gun11.SetMass(0.0000001f); bodyJoint.AddTargetObject(gun00); bodyJoint.AddTargetObject(gun01); bodyJoint.AddTargetObject(gun10); bodyJoint.AddTargetObject(gun11); OtherObjects.Add(gun00); OtherObjects.Add(gun01); OtherObjects.Add(gun10); OtherObjects.Add(gun11); TTurretWeapon weapon = new TTurretWeapon { BulletType = (int)ProjectileItem.UZI, Sound = "AssaultRifle", ReloadingTime = 7, Ammo = 150, Scatter = 2, SuppressiveFire = true, MaxFireDelay = 30, MaxBulletCount = 3 }; WeaponList.Add(weapon); } if (id == 3) { //A=09?5@:0 IObject gun1 = GlobalGame.CreateObject("BgPipe02A", position + new Vector2((dir == -1) ? -14 : 6, 0)); IObject gun2 = GlobalGame.CreateObject("BgPipe02B", position + new Vector2(22 * dir, 0)); IObject gun3 = GlobalGame.CreateObject("BgPipe02B", position + new Vector2(7 * dir, 2)); gun1.SetSizeFactor(new Point(2, 1)); gun1.SetBodyType(BodyType.Dynamic); gun2.SetBodyType(BodyType.Dynamic); gun3.SetBodyType(BodyType.Dynamic); gun1.SetMass(0.0000001f); gun2.SetMass(0.0000001f); gun3.SetMass(0.0000001f); bodyJoint.AddTargetObject(gun1); bodyJoint.AddTargetObject(gun2); bodyJoint.AddTargetObject(gun3); OtherObjects.Add(gun1); OtherObjects.Add(gun2); OtherObjects.Add(gun3); TTurretWeapon weapon = new TTurretWeapon { BulletType = (int)ProjectileItem.SNIPER, Sound = "Sniper", ReloadingTime = 150, Ammo = 10, Scatter = 0 }; WeaponList.Add(weapon); } if (id == 5) { //>3=5<QB IObject gun1 = GlobalGame.CreateObject("BgPipe02A", position + new Vector2((dir == -1) ? -14 : 6, 0)); IObject gun2 = GlobalGame.CreateObject("BgPipe02B", position + new Vector2(14 * dir, 0)); IObject gun3 = GlobalGame.CreateObject("BgPipe02B", position + new Vector2(7 * dir, 2)); IObject gun4 = GlobalGame.CreateObject("BgPipe02B", position + new Vector2(7 * dir, -2)); gun1.SetBodyType(BodyType.Dynamic); gun2.SetBodyType(BodyType.Dynamic); gun3.SetBodyType(BodyType.Dynamic); gun4.SetBodyType(BodyType.Dynamic); gun1.SetMass(0.0000001f); gun2.SetMass(0.0000001f); gun3.SetMass(0.0000001f); gun4.SetMass(0.0000001f); bodyJoint.AddTargetObject(gun1); bodyJoint.AddTargetObject(gun2); bodyJoint.AddTargetObject(gun3); bodyJoint.AddTargetObject(gun4); OtherObjects.Add(gun1); OtherObjects.Add(gun2); OtherObjects.Add(gun3); OtherObjects.Add(gun4); TTurretWeapon weapon = new TTurretWeapon { Distance = 150, BulletType = -1, Sound = "Flamethrower", ReloadingTime = 3, Ammo = 300, SuppressiveFire = true, Scatter = 10, TurretTarget = false }; WeaponList.Add(weapon); } if (Id == 6) { TTurretWeapon weapon = new TTurretWeapon { Distance = 50, BulletType = -2, Sound = "Splash", ReloadingTime = 150, SuppressiveFire = true, Ammo = 25, TurretTarget = false }; WeaponList.Add(weapon); } if (Id == 7) { TTurretWeapon weapon = new TTurretWeapon { Distance = 60, BulletType = -3, Sound = "MeleeSwing", ReloadingTime = 50, SuppressiveFire = true, Ammo = 15, TurretTarget = false }; WeaponList.Add(weapon); } TextName = (IObjectText)GlobalGame.CreateObject("Text", position); TextName.SetTextAlignment(TextAlignment.Middle); TextName.SetText(Name); TextName.SetTextScale(0.8f); OtherObjects.Add(TextName); MainMotor = (IObjectRevoluteJoint)GlobalGame.CreateObject("RevoluteJoint", position); MainMotor.SetTargetObjectB(MainBlock); if (Id < 4) { MainMotor.SetTargetObjectA(leftLeg); } else { MainMotor.SetTargetObjectA(hull2); } MainMotor.SetMotorEnabled(true); MainMotor.SetMaxMotorTorque(100000); MainMotor.SetMotorSpeed(0); OtherObjects.Add(MainMotor); InitHealth(); }