public bool PickupObject() { if (TargetedObject == null) { var results = RayCastTargetedObject(true); if (results.Count() > 0) { var result = results.First(); TargetedObject = result.HitObject; m_oldMass = TargetedObject.GetMass(); // if is player, make them staggering if (result.IsPlayer) { var player = (IPlayer)TargetedObject; MakePlayer(player, PlayerCommandType.StaggerInfinite); } // destroy Joints so hanging stuff can be pulled ScriptHelper.Unscrew(TargetedObject); // some objects that are in dynamic collision group but is static (SurveillanceCamera) if (TargetedObject.GetBodyType() == BodyType.Static) { TargetedObject.SetBodyType(BodyType.Dynamic); } // m_targetObjectJoint.Position is f****d up if key input event fires. idk why m_magnetJoint.SetWorldPosition(GetHoldPosition(true)); m_pullJoint.Remove(); m_pullJoint = CreatePullJointObject(); // The AI when using GravityGun is not very good so I give the bots a little edge advantage if (Owner.IsBot) { m_oldCollisionFilter = TargetedObject.GetCollisionFilter(); var noStaticCollision = TargetedObject.GetCollisionFilter(); // https://www.mythologicinteractiveforums.com/viewtopic.php?t=1012 noStaticCollision.CategoryBits = 0x1010; // marker or something noStaticCollision.MaskBits = (ushort)(noStaticCollision.MaskBits & 0x11); TargetedObject.SetCollisionFilter(noStaticCollision); } return(true); } } return(false); }
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 GObject(IObject main, IObjectPullJoint pull, IObject hang) { this.pullJoint = (IObjectPullJoint)pull; this.mainObject = main; this.hangerObject = hang; }