private void RegisterComponent(IObject obj) { if (!obj.CustomID.StartsWith("TurretLeg")) { m_bodyJoint.AddTargetObject(obj); } m_alterCollisionTile.AddTargetObject(obj); }
public void CallReinforcement(TPlayer player) { Area area = GlobalGame.GetCameraArea(); for (int i = 0; i < PlayerList.Count; i++) { TPlayer pl = PlayerList[i]; if (pl != null && pl.IsActive() && pl != player && pl.Team == player.Team && !pl.IsAlive()) { float x = GlobalRandom.Next((int)(area.Left + area.Width / 5), (int)(area.Right - area.Width / 5)); float y = WorldTop + 50; IObject crate = GlobalGame.CreateObject("SupplyCrate00", new Vector2(x, y)); IObject platf = GlobalGame.CreateObject("Lift00A", new Vector2(x, y - 10)); IObject leftBorder = GlobalGame.CreateObject("Lift00A", new Vector2(x - 10, y), (float)Math.PI / -2); IObject rightBorder = GlobalGame.CreateObject("Lift00A", new Vector2(x + 10, y), (float)Math.PI / 2); leftBorder.SetBodyType(BodyType.Dynamic); rightBorder.SetBodyType(BodyType.Dynamic); IObjectDestroyTargets destroy = (IObjectDestroyTargets)GlobalGame.CreateObject("DestroyTargets", new Vector2(x, y)); platf.SetMass(1e-3f); leftBorder.SetMass(1e-3f); rightBorder.SetMass(1e-3f); IObjectWeldJoint joint = (IObjectWeldJoint)GlobalGame.CreateObject("WeldJoint", new Vector2(x, y)); joint.AddTargetObject(crate); joint.AddTargetObject(platf); joint.AddTargetObject(rightBorder); joint.AddTargetObject(leftBorder); destroy.AddTriggerDestroyObject(crate); destroy.AddObjectToDestroy(joint); destroy.AddObjectToDestroy(platf); destroy.AddObjectToDestroy(leftBorder); destroy.AddObjectToDestroy(rightBorder); ObjectsToRemove.Add(destroy); ObjectsToRemove.Add(platf); ObjectsToRemove.Add(joint); ObjectsToRemove.Add(leftBorder); ObjectsToRemove.Add(rightBorder); pl.Equipment.Clear(); pl.Armor.SetId(0); pl.Revive(100, false, true, x, y); player.AddExp(5, 5); } } }
public TShieldGenerator(int power, Vector2 position, float radius, PlayerTeam team) { Team = team; Power = power; Radius = radius; CoreObject = GlobalGame.CreateObject("Computer00", position, 0); TextName = (IObjectText)GlobalGame.CreateObject("Text", position); TextName.SetTextAlignment(TextAlignment.Middle); TextName.SetTextScale(0.8f); IObject leftLeg = GlobalGame.CreateObject("Duct00C_D", position + new Vector2(-5, -2), (float)Math.PI / 2); IObject rightLeg = GlobalGame.CreateObject("Duct00C_D", position + new Vector2(6, -2), (float)Math.PI / 2); IObjectWeldJoint joint = (IObjectWeldJoint)GlobalGame.CreateObject("WeldJoint", position); joint.AddTargetObject(CoreObject); joint.AddTargetObject(leftLeg); joint.AddTargetObject(rightLeg); OtherObjects.Add(leftLeg); OtherObjects.Add(rightLeg); OtherObjects.Add(joint); OtherObjects.Add(TextName); }
public void OnStartup() { Game.RunCommand("/MSG Alt To Fly!"); book = new Dictionary <IPlayer, IObjectPullJoint>(); Gbook = new Dictionary <IPlayer, int>(); Bbook = new Dictionary <IPlayer, bool>(); concrete = Game.CreateObject("InvisibleBlockNoCollision", new Vector2(0, 500)); CreateTimer(300, 0, "JetPack", true); CreateTimer(100, 0, "FireEffect", true); foreach (IPlayer ply in Game.GetPlayers()) { Gbook.Add(ply, 2); Bbook.Add(ply, true); IObjectWeldJoint weld = (IObjectWeldJoint)Game.CreateObject("WeldJoint", ply.GetWorldPosition()); IObjectActivateTrigger trig = (IObjectActivateTrigger)Game.CreateObject("ActivateTrigger", ply.GetWorldPosition() + new Vector2(0, 8)); trig.SetBodyType(BodyType.Dynamic); trig.SetScriptMethod("Toggle"); weld.AddTargetObject(trig); weld.AddTargetObject(ply); } }
public void JetPack(TriggerArgs args) { foreach (IPlayer ply in Game.GetPlayers()) { IObjectPullJoint pullit = null; IObjectTargetObjectJoint targetit = null; float forc = 0; if (!Bbook.ContainsKey(ply) && !ply.IsDead) { ; Bbook.Add(ply, true); IObjectWeldJoint weld = (IObjectWeldJoint)Game.CreateObject("WeldJoint", ply.GetWorldPosition()); IObjectActivateTrigger trig = (IObjectActivateTrigger)Game.CreateObject("ActivateTrigger", ply.GetWorldPosition() + new Vector2(0, 8)); trig.SetBodyType(BodyType.Dynamic); trig.SetScriptMethod("Toggle"); weld.AddTargetObject(trig); weld.AddTargetObject(ply); } if (!Gbook.ContainsKey(ply) && !ply.IsDead) { ; Gbook.Add(ply, 2); } if (Gbook.ContainsKey(ply) && !ply.IsDead) { int c = Gbook[ply] % demforce.Length; forc = force * demforce[c] / 100; if (ply.IsBlocking && ply.IsWalking) { Gbook[ply] = (c + 1) % demforce.Length; Game.PlayEffect("CFTXT", ply.GetWorldPosition() + new Vector2(0, 8), demforce[Gbook[ply]].ToString() + " %"); } } if (book.ContainsKey(ply)) { pullit = book[ply]; targetit = pullit.GetTargetObjectJoint(); book[ply].SetWorldPosition(targetit.GetWorldPosition() + new Vector2(0, 500)); } bool jeton = (ply.IsWalking && !ply.IsDead && !ply.IsStaggering && !ply.IsRolling && (!ply.IsBlocking || ply.IsInMidAir) && !ply.IsManualAiming); bool mapborder = WorkOutsideBorders || Game.GetCameraArea().Contains(ply.GetWorldPosition()); if (jeton) { if (book.ContainsKey(ply)) { book[ply].Destroy(); book.Remove(ply); } pullit = (IObjectPullJoint)Game.CreateObject("PullJoint", ply.GetWorldPosition() + new Vector2(0, 500)); book.Add(ply, pullit); if (!mapborder) { forc = (float)(forc / 2); } pullit.SetForce(forc); targetit = (IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint", ply.GetWorldPosition()); targetit.SetTargetObject(ply); pullit.SetTargetObject(concrete); pullit.SetTargetObjectJoint(targetit); } if (!jeton) { if (pullit != null) { // pullit .SetWorldPosition(ply.GetWorldPosition() + new Vector2(0,50)); pullit.SetForce(0f); } } } }
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(); }