Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
 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);
             }
         }
     }
 }
Beispiel #5
0
 public GObject(IObject main, IObjectPullJoint pull, IObject hang)
 {
     this.pullJoint    = (IObjectPullJoint)pull;
     this.mainObject   = main;
     this.hangerObject = hang;
 }