private void StabilizeTargetedObject() { TargetedObject.SetLinearVelocity(Vector2.Zero); m_distanceJointObject = Game.CreateObject("InvisibleBlockSmall"); m_distanceJointObject.SetBodyType(BodyType.Dynamic); m_distanceJoint = (IObjectDistanceJoint)Game.CreateObject("DistanceJoint"); m_distanceJoint.SetLineVisual(LineVisual.None); m_distanceJoint.SetLengthType(DistanceJointLengthType.Fixed); m_targetedObjectJoint = (IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint"); var targetedObjPosition = TargetedObject.GetAABB().Center; m_distanceJointObject.SetWorldPosition(targetedObjPosition); TargetedObject.SetWorldPosition(targetedObjPosition); m_pullJoint.SetWorldPosition(targetedObjPosition); m_distanceJoint.SetWorldPosition(targetedObjPosition); // if DistanceJoint and TargetObjectJoint is at the same position, weird things may happen // uncomment the part below to stop it m_targetedObjectJoint.SetWorldPosition(m_distanceJointObject.GetWorldPosition() /* - Vector2.UnitY*/); m_pullJoint.SetTargetObject(m_distanceJointObject); m_distanceJoint.SetTargetObject(m_distanceJointObject); m_distanceJoint.SetTargetObjectJoint(m_targetedObjectJoint); m_targetedObjectJoint.SetTargetObject(TargetedObject); m_pullJoint.SetForce(15); IsTargetedObjectStabilized = true; }
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 void BAdder(TriggerArgs m73) { IObject obj = (IObject)m73.Sender; if (1 == 1) { IObject obje = Game.CreateObject("InvisibleBlockNoCollision", Game.GetSingleObjectByCustomId("BlackHole").GetWorldPosition()); IObjectPullJoint pull = (IObjectPullJoint)Game.CreateObject("PullJoint", Game.GetSingleObjectByCustomId("BlackHole").GetWorldPosition()); IObjectTargetObjectJoint targ = (IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint", obj.GetWorldPosition()); targ.SetTargetObject(obj); pull.SetTargetObjectJoint(targ); pull.SetTargetObject(obje); pull.SetForce(25.985459270084f * (float)obj.GetMass()); BObjects.Add(new GObject(obj, pull, obje)); } }
public void GAdder(TriggerArgs m73) { IObject obj = (IObject)m73.Sender; if (obj.GetBodyType() == BodyType.Dynamic && !(obj is IPlayer)) { IObject obje = Game.CreateObject("BgWall00", obj.GetWorldPosition() + new Vector2(0, 800)); IObjectPullJoint pull = (IObjectPullJoint)Game.CreateObject("PullJoint", obj.GetWorldPosition() + new Vector2(0, 800)); IObjectTargetObjectJoint targ = (IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint", obj.GetWorldPosition()); targ.SetTargetObject(obj); pull.SetTargetObjectJoint(targ); pull.SetTargetObject(obje); pull.SetForce(25.985459270084f * (float)obj.GetMass()); GObjects.Add(new GObject(obj, pull, obje)); } }
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 void Fast(TriggerArgs args) { foreach (IObject missile in Game.GetMissileObjects()) { if (missile is IObjectWeaponItem) { float speed = 100; if ((speed > 1 || ((IObjectWeaponItem)missile).WeaponItemType == WeaponItemType.Rifle) && !(missile.CustomId == "ScriptMarkedMissile") && (!(ThrownWeapons.Contains(missile.Name)) || AccelerateThrownWeapons) && !DisableThrowning) { missile.SetLinearVelocity(missile.GetLinearVelocity() * ThrowSpeedMultiply); missile.CustomId = "ScriptMarkedMissile"; if ((CreateFireCircleOnImpact || CreateExplosionOnImpact)) { IObjectTargetObjectJoint targetjoint = (IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint", missile.GetWorldPosition(), 0f, missile.GetLinearVelocity(), missile.GetAngularVelocity()); targetjoint.SetTargetObject(missile); targetjoint.CustomId = "destructjoint"; } if (CreateRandomImpact && Rnd.Next(0, RandomProb) == 0) { int x = Rnd.Next(0, 25); IObjectTargetObjectJoint targetjoint = (IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint", missile.GetWorldPosition(), 0f, missile.GetLinearVelocity(), missile.GetAngularVelocity()); targetjoint.SetTargetObject(missile); if (x < 25) { targetjoint.CustomId = "Minejoint"; missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f); IObjectTimerTrigger Timer = (IObjectTimerTrigger)Game.CreateObject("TimerTrigger"); Timer.SetIntervalTime(500); Timer.SetRepeatCount(1); Timer.SetScriptMethod("Mine"); Timer.Trigger(); } if (x >= 9 && x < 15) { targetjoint.CustomId = "Grenadejoint"; missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f); IObjectTimerTrigger Timer = (IObjectTimerTrigger)Game.CreateObject("TimerTrigger"); Timer.SetIntervalTime(250); Timer.SetRepeatCount(1); Timer.SetScriptMethod("grenade"); Timer.Trigger(); } if (x >= 3 && x < 9) { targetjoint.CustomId = "Bazookajoint"; missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f); IObjectTimerTrigger Timer = (IObjectTimerTrigger)Game.CreateObject("TimerTrigger"); Timer.SetIntervalTime(250); Timer.SetRepeatCount(1); Timer.SetScriptMethod("bazooka"); Timer.Trigger(); } if (x <= 2) { targetjoint.CustomId = "Electricjoint"; missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f); } } if (IncreaseMeleeWeaponMass && ((IObjectWeaponItem)missile).WeaponItemType == WeaponItemType.Melee) { missile.SetMass((float)0.8); } } if ((CreateFireCircleOnImpact || CreateExplosionOnImpact) && speed < 4 && missile.CustomId == "ScriptMarkedMissile") { missile.TrackAsMissile(false); } if (DisableThrownWeaponsCollision || DisableThrowning) { if (ThrownWeapons.Contains(missile.Name)) { missile.TrackAsMissile(false); } } if (DisableThrowning) { missile.TrackAsMissile(false); if (speed > 5) { missile.SetLinearVelocity(missile.GetLinearVelocity() / 3); } } if (SetMissileOnFire && !DisableThrowning && (missile.CustomId == "ScriptMarkedMissile")) { missile.SetMaxFire(); missile.SetHealth(100); } } } }